Skip to content

Commit 08c11e7

Browse files
ymc9claude
andauthored
fix(better-auth): keep schema-generator import lazy in CJS output (#2658)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent b53e908 commit 08c11e7

3 files changed

Lines changed: 23 additions & 3 deletions

File tree

packages/auth-adapters/better-auth/src/adapter.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,9 @@ export const zenstackAdapter = <Schema extends SchemaDef>(db: ClientContract<Sch
187187
options: config,
188188

189189
createSchema: async ({ file, tables }) => {
190-
const generateSchema = (await import('./schema-generator')).generateSchema;
190+
// Self-import via package subpath (not a relative './schema-generator') so the
191+
// bundler treats it as external and keeps it lazy in the CJS output — see tsdown.config.ts.
192+
const generateSchema = (await import('@zenstackhq/better-auth/schema-generator')).generateSchema;
191193
return generateSchema(file, tables, config, options);
192194
},
193195
};

packages/auth-adapters/better-auth/tsconfig.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
"compilerOptions": {
44
"rootDir": ".",
55
"noPropertyAccessFromIndexSignature": false,
6-
"types": ["node"]
6+
"types": ["node"],
7+
"paths": {
8+
"@zenstackhq/better-auth/schema-generator": ["./src/schema-generator.ts"]
9+
}
710
},
811
"include": ["src/**/*"]
912
}
Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
11
import { createConfig } from '@zenstackhq/tsdown-config';
22

3-
export default createConfig({ entry: { index: 'src/index.ts', 'schema-generator': 'src/schema-generator.ts' } });
3+
// `index` and `schema-generator` are built as two separate tsdown invocations so that
4+
// the lazy `await import('@zenstackhq/better-auth/schema-generator')` in the adapter
5+
// stays lazy in the CJS output. When both entries live in a single build, Rolldown
6+
// treats them as siblings and injects a top-level `require('./schema-generator.cjs')`
7+
// into `index.cjs`, which eagerly pulls in `@zenstackhq/language` (Langium) at adapter
8+
// load time. Splitting the builds hides that relationship; `neverBundle` then keeps
9+
// the dynamic import as a package-name reference that Node resolves at first call.
10+
export default [
11+
createConfig({
12+
entry: { index: 'src/index.ts' },
13+
deps: { neverBundle: ['@zenstackhq/better-auth/schema-generator'] },
14+
}),
15+
createConfig({
16+
entry: { 'schema-generator': 'src/schema-generator.ts' },
17+
}),
18+
];

0 commit comments

Comments
 (0)