@memberjunction/codegen-lib 6.1.0-edge.3 → 6.1.0-edge.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +50 -21
  2. package/dist/Config/config.d.ts +290 -11
  3. package/dist/Config/config.d.ts.map +1 -1
  4. package/dist/Config/config.js +259 -9
  5. package/dist/Config/config.js.map +1 -1
  6. package/dist/Config/schema-output.d.ts +33 -0
  7. package/dist/Config/schema-output.d.ts.map +1 -0
  8. package/dist/Config/schema-output.js +52 -0
  9. package/dist/Config/schema-output.js.map +1 -0
  10. package/dist/Database/__tests__/exclude-schema-permissions.test.d.ts +2 -0
  11. package/dist/Database/__tests__/exclude-schema-permissions.test.d.ts.map +1 -0
  12. package/dist/Database/__tests__/exclude-schema-permissions.test.js +32 -0
  13. package/dist/Database/__tests__/exclude-schema-permissions.test.js.map +1 -0
  14. package/dist/Database/codeGenDatabaseProvider.d.ts +126 -2
  15. package/dist/Database/codeGenDatabaseProvider.d.ts.map +1 -1
  16. package/dist/Database/codeGenDatabaseProvider.js +203 -0
  17. package/dist/Database/codeGenDatabaseProvider.js.map +1 -1
  18. package/dist/Database/exclude-tables.d.ts +26 -0
  19. package/dist/Database/exclude-tables.d.ts.map +1 -0
  20. package/dist/Database/exclude-tables.js +38 -0
  21. package/dist/Database/exclude-tables.js.map +1 -0
  22. package/dist/Database/heal-schema-params.d.ts +33 -0
  23. package/dist/Database/heal-schema-params.d.ts.map +1 -0
  24. package/dist/Database/heal-schema-params.js +51 -0
  25. package/dist/Database/heal-schema-params.js.map +1 -0
  26. package/dist/Database/manage-metadata.d.ts +59 -0
  27. package/dist/Database/manage-metadata.d.ts.map +1 -1
  28. package/dist/Database/manage-metadata.js +157 -61
  29. package/dist/Database/manage-metadata.js.map +1 -1
  30. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts +25 -35
  31. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts.map +1 -1
  32. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js +97 -51
  33. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js.map +1 -1
  34. package/dist/Database/providers/postgresql/__tests__/SoftPrimaryKeyIndex.test.d.ts +2 -0
  35. package/dist/Database/providers/postgresql/__tests__/SoftPrimaryKeyIndex.test.d.ts.map +1 -0
  36. package/dist/Database/providers/postgresql/__tests__/SoftPrimaryKeyIndex.test.js +110 -0
  37. package/dist/Database/providers/postgresql/__tests__/SoftPrimaryKeyIndex.test.js.map +1 -0
  38. package/dist/Database/providers/postgresql/metadataSupportObjects.js +78 -10
  39. package/dist/Database/providers/postgresql/metadataSupportObjects.js.map +1 -1
  40. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts +14 -0
  41. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts.map +1 -1
  42. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js +38 -0
  43. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js.map +1 -1
  44. package/dist/Database/providers/sqlserver/__tests__/SQLServerCodeGenProvider.test.js +17 -0
  45. package/dist/Database/providers/sqlserver/__tests__/SQLServerCodeGenProvider.test.js.map +1 -1
  46. package/dist/Database/providers/sqlserver/__tests__/SoftPrimaryKeyIndex.test.d.ts +2 -0
  47. package/dist/Database/providers/sqlserver/__tests__/SoftPrimaryKeyIndex.test.d.ts.map +1 -0
  48. package/dist/Database/providers/sqlserver/__tests__/SoftPrimaryKeyIndex.test.js +195 -0
  49. package/dist/Database/providers/sqlserver/__tests__/SoftPrimaryKeyIndex.test.js.map +1 -0
  50. package/dist/Database/schema-filters.d.ts +23 -0
  51. package/dist/Database/schema-filters.d.ts.map +1 -0
  52. package/dist/Database/schema-filters.js +42 -0
  53. package/dist/Database/schema-filters.js.map +1 -0
  54. package/dist/Database/schema-scope.d.ts.map +1 -1
  55. package/dist/Database/schema-scope.js +4 -0
  56. package/dist/Database/schema-scope.js.map +1 -1
  57. package/dist/Database/sql_codegen.d.ts +33 -0
  58. package/dist/Database/sql_codegen.d.ts.map +1 -1
  59. package/dist/Database/sql_codegen.js +147 -56
  60. package/dist/Database/sql_codegen.js.map +1 -1
  61. package/dist/EntityNameScanner/EntityNameScanner.d.ts.map +1 -1
  62. package/dist/EntityNameScanner/EntityNameScanner.js +33 -2
  63. package/dist/EntityNameScanner/EntityNameScanner.js.map +1 -1
  64. package/dist/Manifest/GenerateClassRegistrationsManifest.d.ts +30 -4
  65. package/dist/Manifest/GenerateClassRegistrationsManifest.d.ts.map +1 -1
  66. package/dist/Manifest/GenerateClassRegistrationsManifest.js +175 -25
  67. package/dist/Manifest/GenerateClassRegistrationsManifest.js.map +1 -1
  68. package/dist/Misc/codegen-reporter.d.ts +3 -0
  69. package/dist/Misc/codegen-reporter.d.ts.map +1 -1
  70. package/dist/Misc/codegen-reporter.js +3 -0
  71. package/dist/Misc/codegen-reporter.js.map +1 -1
  72. package/dist/Misc/emit-stats.d.ts +28 -0
  73. package/dist/Misc/emit-stats.d.ts.map +1 -0
  74. package/dist/Misc/emit-stats.js +43 -0
  75. package/dist/Misc/emit-stats.js.map +1 -0
  76. package/dist/Misc/entity_subclasses_codegen.d.ts +42 -7
  77. package/dist/Misc/entity_subclasses_codegen.d.ts.map +1 -1
  78. package/dist/Misc/entity_subclasses_codegen.js +177 -52
  79. package/dist/Misc/entity_subclasses_codegen.js.map +1 -1
  80. package/dist/Misc/file-write.d.ts +15 -0
  81. package/dist/Misc/file-write.d.ts.map +1 -0
  82. package/dist/Misc/file-write.js +33 -0
  83. package/dist/Misc/file-write.js.map +1 -0
  84. package/dist/Misc/graphql_server_codegen.d.ts +12 -2
  85. package/dist/Misc/graphql_server_codegen.d.ts.map +1 -1
  86. package/dist/Misc/graphql_server_codegen.js +61 -12
  87. package/dist/Misc/graphql_server_codegen.js.map +1 -1
  88. package/dist/Misc/runCommand.d.ts +5 -0
  89. package/dist/Misc/runCommand.d.ts.map +1 -1
  90. package/dist/Misc/runCommand.js +43 -17
  91. package/dist/Misc/runCommand.js.map +1 -1
  92. package/dist/Misc/schema-emit.d.ts +123 -0
  93. package/dist/Misc/schema-emit.d.ts.map +1 -0
  94. package/dist/Misc/schema-emit.js +220 -0
  95. package/dist/Misc/schema-emit.js.map +1 -0
  96. package/dist/Misc/system_integrity.d.ts.map +1 -1
  97. package/dist/Misc/system_integrity.js +5 -0
  98. package/dist/Misc/system_integrity.js.map +1 -1
  99. package/dist/index.d.ts +6 -0
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +6 -0
  102. package/dist/index.js.map +1 -1
  103. package/dist/runCodeGen.d.ts +20 -2
  104. package/dist/runCodeGen.d.ts.map +1 -1
  105. package/dist/runCodeGen.js +147 -21
  106. package/dist/runCodeGen.js.map +1 -1
  107. package/package.json +29 -29
@@ -437,6 +437,9 @@ export class CodeGenReporter extends BaseSingleton {
437
437
  entitiesRegenerated: 0,
438
438
  sqlStatements: 0,
439
439
  filesWritten: 0,
440
+ filesSkipped: 0,
441
+ schemasEmitted: 0,
442
+ schemasSkipped: 0,
440
443
  spCalls: {},
441
444
  };
442
445
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codegen-reporter.js","sourceRoot":"","sources":["../../src/Misc/codegen-reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codegen-reporter.js","sourceRoot":"","sources":["../../src/Misc/codegen-reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * In-process counters for one CodeGen file-emit pass.
3
+ *
4
+ * Kept as a tiny module with no config / reporter / EntityInfo imports so unit
5
+ * tests can drive it (and `writeFileIfChanged`) without booting the CodeGen
6
+ * graph. `runCodeGen` copies the snapshot onto `CodeGenReporter` at the end of
7
+ * the file-generation phase.
8
+ */
9
+ export type EmitStatsSnapshot = {
10
+ filesWritten: number;
11
+ filesSkipped: number;
12
+ schemasEmitted: number;
13
+ schemasSkipped: number;
14
+ assembleMs: number;
15
+ };
16
+ export declare class EmitStats {
17
+ private static _filesWritten;
18
+ private static _filesSkipped;
19
+ private static _schemasEmitted;
20
+ private static _schemasSkipped;
21
+ private static _assembleMs;
22
+ static Reset(): void;
23
+ static RecordFileWrite(wrote: boolean): void;
24
+ static RecordSchemaEmit(emitted: boolean): void;
25
+ static AddAssembleMs(ms: number): void;
26
+ static Snapshot(): EmitStatsSnapshot;
27
+ }
28
+ //# sourceMappingURL=emit-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-stats.d.ts","sourceRoot":"","sources":["../../src/Misc/emit-stats.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAK;IACjC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAK;IACjC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAK;IACnC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAK;IACnC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAK;WAEjB,KAAK,IAAI,IAAI;WAQb,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;WAQrC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;WAQxC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;WAI/B,QAAQ,IAAI,iBAAiB;CAS5C"}
@@ -0,0 +1,43 @@
1
+ export class EmitStats {
2
+ static { this._filesWritten = 0; }
3
+ static { this._filesSkipped = 0; }
4
+ static { this._schemasEmitted = 0; }
5
+ static { this._schemasSkipped = 0; }
6
+ static { this._assembleMs = 0; }
7
+ static Reset() {
8
+ this._filesWritten = 0;
9
+ this._filesSkipped = 0;
10
+ this._schemasEmitted = 0;
11
+ this._schemasSkipped = 0;
12
+ this._assembleMs = 0;
13
+ }
14
+ static RecordFileWrite(wrote) {
15
+ if (wrote) {
16
+ this._filesWritten += 1;
17
+ }
18
+ else {
19
+ this._filesSkipped += 1;
20
+ }
21
+ }
22
+ static RecordSchemaEmit(emitted) {
23
+ if (emitted) {
24
+ this._schemasEmitted += 1;
25
+ }
26
+ else {
27
+ this._schemasSkipped += 1;
28
+ }
29
+ }
30
+ static AddAssembleMs(ms) {
31
+ this._assembleMs += ms;
32
+ }
33
+ static Snapshot() {
34
+ return {
35
+ filesWritten: this._filesWritten,
36
+ filesSkipped: this._filesSkipped,
37
+ schemasEmitted: this._schemasEmitted,
38
+ schemasSkipped: this._schemasSkipped,
39
+ assembleMs: this._assembleMs,
40
+ };
41
+ }
42
+ }
43
+ //# sourceMappingURL=emit-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-stats.js","sourceRoot":"","sources":["../../src/Misc/emit-stats.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,SAAS;aACL,kBAAa,GAAG,CAAC,CAAC;aAClB,kBAAa,GAAG,CAAC,CAAC;aAClB,oBAAe,GAAG,CAAC,CAAC;aACpB,oBAAe,GAAG,CAAC,CAAC;aACpB,gBAAW,GAAG,CAAC,CAAC;IAExB,MAAM,CAAC,KAAK;QACjB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,KAAc;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,OAAgB;QAC7C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,EAAU;QACpC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IACzB,CAAC;IAEM,MAAM,CAAC,QAAQ;QACpB,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC;IACJ,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { EntityFieldInfo, EntityInfo, EntityRelationshipInfo } from '@memberjunction/core';
2
2
  import { ValidatorResult } from '../Database/manage-metadata.js';
3
+ import { type ConfigInfo } from '../Config/config.js';
3
4
  import { CodeGenConnection } from '../Database/codeGenDatabaseProvider.js';
5
+ import { SchemaEmitOptions } from './schema-emit.js';
4
6
  /**
5
7
  * The parsed shape of `EntityRelationship.RelatedRecordCollection` — the policy half of a
6
8
  * `DeclareRelatedRecords(...)` declaration.
@@ -12,6 +14,14 @@ import { CodeGenConnection } from '../Database/codeGenDatabaseProvider.js';
12
14
  * `RelatedEntity` and `RelatedEntityJoinField` are deliberately absent — they are columns on the
13
15
  * same `EntityRelationship` row, and duplicating them here would create two sources of truth.
14
16
  */
17
+ /**
18
+ * A generated subclass that is referenced from this file (embed or related-record
19
+ * collection) but is not itself being emitted here, so it must be imported.
20
+ */
21
+ export type PeerClassImport = {
22
+ className: string;
23
+ packageName: string;
24
+ };
15
25
  export type RelatedRecordCollectionConfig = {
16
26
  /** Generated property name on the entity subclass, e.g. `Lines`. Must be a valid TS identifier. */
17
27
  Name: string;
@@ -70,10 +80,27 @@ export declare class EntitySubClassGeneratorBase {
70
80
  * @param entities
71
81
  * @param directory
72
82
  * @param skipDBUpdate - when set to true, no updates are written back to the database - which happens after code generation when newly generated code from AI has been generated, but in the case where this flag is true, we don't ever write back to the DB because the assumption is we are only emitting code to the file that was already in the DB.
83
+ * @param options - per-schema emit / dirty-schema / parallelism. Defaults come from `configInfo.fileEmit`.
73
84
  * @returns
74
85
  */
75
- generateAllEntitySubClasses(pool: CodeGenConnection, entities: EntityInfo[], directory: string, skipDBUpdate: boolean): Promise<boolean>;
76
- generateEntitySubClassFileHeader(): string;
86
+ generateAllEntitySubClasses(pool: CodeGenConnection, entities: EntityInfo[], directory: string, skipDBUpdate: boolean, options?: SchemaEmitOptions): Promise<boolean>;
87
+ /**
88
+ * Build the TypeScript source for one emit file (one schema, or the legacy monolith).
89
+ * Hoists and de-duplicates two kinds of import into the file header: the generated
90
+ * base class each entity extends, and the embedded-record peers an entity references.
91
+ * Emitting each once per file — instead of once per entity — prevents a TS2300
92
+ * duplicate-identifier error in a file holding 2+ external entities.
93
+ *
94
+ * Entities without primary keys are excluded because {@link generateEntitySubClass}
95
+ * emits nothing for them; hoisting their imports would leave an unused import that
96
+ * fails a downstream consumer's `noUnusedLocals`.
97
+ */
98
+ assembleEntitySubclassFile(pool: CodeGenConnection, entities: EntityInfo[], skipDBUpdate: boolean, includeLoadModule: boolean): Promise<string>;
99
+ /** Delegates so both generators share one set of defaults; override to change them. */
100
+ protected resolveEmitOptions(options?: SchemaEmitOptions): Required<SchemaEmitOptions>;
101
+ /** Delegates so both generators write identically; override to change that. */
102
+ protected emitFile(filePath: string, content: string, useWriteIfChanged: boolean): void;
103
+ generateEntitySubClassFileHeader(includeLoadModule?: boolean): string;
77
104
  /**
78
105
  * Resolves an entity's generated base class and the import statement that class requires.
79
106
  * Pure (no side effects) so BOTH {@link generateEntitySubClass} and the file assembler can call it —
@@ -158,12 +185,20 @@ export declare class EntitySubClassGeneratorBase {
158
185
  */
159
186
  static GenerateHierarchyMethods(entity: EntityInfo, sClassName: string): string;
160
187
  /**
161
- * Import statements for embedded peers that live in another generated file.
162
- *
163
- * @param entity - The owning entity.
164
- * @param localClassNames - Class names already emitted in this file.
188
+ * One peer class that must be imported because it is referenced by an embed or
189
+ * related-record collection and is not being emitted in this file.
190
+ */
191
+ static CollectPeerClassImports(entity: EntityInfo, localClassNames: Set<string>, config?: ConfigInfo): PeerClassImport[];
192
+ /**
193
+ * Groups peer imports into one `import { A, B } from 'pkg'` line per npm package.
194
+ * `@memberjunction/core-entities` is emitted first; remaining packages are alphabetical.
195
+ */
196
+ static FormatPeerImportStatements(imports: PeerClassImport[]): string[];
197
+ /**
198
+ * @deprecated Use {@link CollectPeerClassImports} + {@link FormatPeerImportStatements}.
199
+ * Kept so existing call sites still compile; includes related-record collections as well as embeds.
165
200
  */
166
- static CollectEmbeddedImports(entity: EntityInfo, localClassNames: Set<string>): string[];
201
+ static CollectEmbeddedImports(entity: EntityInfo, localClassNames: Set<string>, config?: ConfigInfo): string[];
167
202
  /**
168
203
  * Parses and validates one field's `EmbeddedRecord` JSON.
169
204
  * Invalid metadata is skipped with a logged error rather than throwing.
@@ -1 +1 @@
1
- {"version":3,"file":"entity_subclasses_codegen.d.ts","sourceRoot":"","sources":["../../src/Misc/entity_subclasses_codegen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity_subclasses_codegen.d.ts","sourceRoot":"","sources":["../../src/Misc/entity_subclasses_codegen.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,10 @@ import ts from 'typescript';
6
6
  import { makeDir, sortBySequenceAndCreatedAt } from '../Misc/util.js';
7
7
  import { logError, logStatus, logWarning } from './status_logging.js';
8
8
  import { ManageMetadataBase } from '../Database/manage-metadata.js';
9
- import { mj_core_schema, resolveEntityPackageName } from '../Config/config.js';
9
+ import { configInfo, mj_core_schema, resolveEntityImportPackage } from '../Config/config.js';
10
10
  import { SQLLogging } from './sql_logging.js';
11
+ import { EmitStats } from './emit-stats.js';
12
+ import { buildSchemaBarrel, groupEntitiesBySchema, mapLimit, emitSchemaFile, pruneOrphanedSchemaFiles, resolveSchemaEmitOptions, sanitizeSchemaFileName, schemasToEmit, } from './schema-emit.js';
11
13
  /**
12
14
  * Dynamically collects all own property names from BaseEntity's prototype chain
13
15
  * (excluding Object.prototype). Any entity field whose CodeName matches one of
@@ -103,49 +105,111 @@ export class EntitySubClassGeneratorBase {
103
105
  * @param entities
104
106
  * @param directory
105
107
  * @param skipDBUpdate - when set to true, no updates are written back to the database - which happens after code generation when newly generated code from AI has been generated, but in the case where this flag is true, we don't ever write back to the DB because the assumption is we are only emitting code to the file that was already in the DB.
108
+ * @param options - per-schema emit / dirty-schema / parallelism. Defaults come from `configInfo.fileEmit`.
106
109
  * @returns
107
110
  */
108
- async generateAllEntitySubClasses(pool, entities, directory, skipDBUpdate) {
111
+ async generateAllEntitySubClasses(pool, entities, directory, skipDBUpdate, options) {
109
112
  try {
110
- // Entities are already sorted by name in PostProcessEntityMetadata (see providerBase.ts)
111
- const zodContent = entities.map((entity) => this.GenerateSchemaAndType(entity)).join('');
112
- let sContent = "";
113
- for (const e of entities) {
114
- sContent += await this.generateEntitySubClass(pool, e, false, skipDBUpdate);
115
- }
116
- // Hoist the base-class imports (e.g. ReadOnlyExternalBaseEntity for external entities, or custom
117
- // subclass imports) into the file header, de-duplicated. Emitting each once — instead of once per
118
- // entity — prevents a TS2300 duplicate-identifier error in files with 2+ external entities.
119
- // Only consider entities that actually emit a class: generateEntitySubClass skips PK-less entities
120
- // (returns ''), so hoisting their import would leave a dangling/unused import (a build error under
121
- // a downstream consumer's noUnusedLocals). Match that skip condition here.
122
- const localClassNames = new Set(entities.filter((e) => e.PrimaryKeys.length > 0).map((e) => `${e.ClassName}Entity`));
123
- const subclassImports = [...new Set(entities
124
- .filter((e) => e.PrimaryKeys.length > 0)
125
- .flatMap((e) => [
126
- this.resolveEntityBaseClass(e).importStatement,
127
- ...EntitySubClassGeneratorBase.CollectEmbeddedImports(e, localClassNames),
128
- ])
129
- .filter((s) => s.length > 0))].join('');
130
- const allContent = `${this.generateEntitySubClassFileHeader()} \n ${subclassImports}${zodContent} \n ${sContent}`;
113
+ const emit = this.resolveEmitOptions(options);
131
114
  makeDir(directory);
132
- fs.writeFileSync(path.join(directory, 'entity_subclasses.ts'), allContent);
115
+ if (!emit.perSchema) {
116
+ const allContent = await this.assembleEntitySubclassFile(pool, entities, skipDBUpdate, true);
117
+ this.emitFile(path.join(directory, 'entity_subclasses.ts'), allContent, emit.writeIfChanged);
118
+ return true;
119
+ }
120
+ const grouped = groupEntitiesBySchema(entities);
121
+ const schemas = [...grouped.keys()].sort((a, b) => a.localeCompare(b));
122
+ const schemasDir = path.join(directory, 'entities');
123
+ makeDir(schemasDir);
124
+ const toEmit = schemasToEmit(schemas, emit.dirtySchemas, (schemaName) => fs.existsSync(path.join(schemasDir, `${sanitizeSchemaFileName(schemaName)}.ts`)));
125
+ const emitSet = new Set(toEmit);
126
+ for (const schemaName of schemas) {
127
+ EmitStats.RecordSchemaEmit(emitSet.has(schemaName));
128
+ }
129
+ const concurrency = emit.parallel ? emit.concurrency : 1;
130
+ const assembleStarted = Date.now();
131
+ await mapLimit(toEmit, concurrency, async (schemaName) => {
132
+ const schemaEntities = grouped.get(schemaName) ?? [];
133
+ const content = await this.assembleEntitySubclassFile(pool, schemaEntities, skipDBUpdate, false);
134
+ const filePath = path.join(schemasDir, `${sanitizeSchemaFileName(schemaName)}.ts`);
135
+ this.emitFile(filePath, content, emit.writeIfChanged);
136
+ });
137
+ EmitStats.AddAssembleMs(Date.now() - assembleStarted);
138
+ // Before the barrel, so the directory and the barrel always agree.
139
+ const pruned = pruneOrphanedSchemaFiles(schemasDir, schemas);
140
+ if (pruned.length > 0) {
141
+ logStatus(` Removed ${pruned.length} orphaned entity schema file(s): ${pruned.join(', ')}`);
142
+ }
143
+ const barrel = buildSchemaBarrel(schemas, 'entities', `export const loadModule = () => {
144
+ // no-op — importing this barrel loads every per-schema module via the re-exports below
145
+ }
146
+
147
+ `);
148
+ this.emitFile(path.join(directory, 'entity_subclasses.ts'), barrel, emit.writeIfChanged);
133
149
  return true;
134
150
  }
135
151
  catch (err) {
152
+ const message = err instanceof Error ? err.message : String(err);
153
+ logError(message);
136
154
  console.error(err);
137
155
  return false;
138
156
  }
139
157
  }
140
- generateEntitySubClassFileHeader() {
141
- return `import { BaseEntity, EntitySaveOptions, EntityDeleteOptions, CompositeKey, ValidationResult, ValidationErrorInfo, ValidationErrorType, Metadata, ProviderType, DatabaseProviderBase, RunView } from "@memberjunction/core";
142
- import { RegisterClass } from "@memberjunction/global";
143
- import { z } from "zod";
144
-
158
+ /**
159
+ * Build the TypeScript source for one emit file (one schema, or the legacy monolith).
160
+ * Hoists and de-duplicates two kinds of import into the file header: the generated
161
+ * base class each entity extends, and the embedded-record peers an entity references.
162
+ * Emitting each once per file — instead of once per entity — prevents a TS2300
163
+ * duplicate-identifier error in a file holding 2+ external entities.
164
+ *
165
+ * Entities without primary keys are excluded because {@link generateEntitySubClass}
166
+ * emits nothing for them; hoisting their imports would leave an unused import that
167
+ * fails a downstream consumer's `noUnusedLocals`.
168
+ */
169
+ async assembleEntitySubclassFile(pool, entities, skipDBUpdate, includeLoadModule) {
170
+ const zodContent = entities.map((entity) => this.GenerateSchemaAndType(entity)).join('');
171
+ let sContent = '';
172
+ for (const e of entities) {
173
+ sContent += await this.generateEntitySubClass(pool, e, false, skipDBUpdate);
174
+ }
175
+ // Only entities that actually emit a class: generateEntitySubClass skips PK-less entities
176
+ // (returns ''), so hoisting their imports would leave a dangling/unused import that fails a
177
+ // downstream consumer's noUnusedLocals.
178
+ const entitiesWithPK = entities.filter((e) => e.PrimaryKeys.length > 0);
179
+ const localClassNames = new Set(entitiesWithPK.map((e) => `${e.ClassName}Entity`));
180
+ // De-duplicated so a file holding 2+ external entities does not emit
181
+ // `import { ReadOnlyExternalBaseEntity }` twice (TS2300).
182
+ const baseClassImports = [...new Set(entitiesWithPK
183
+ .map((e) => this.resolveEntityBaseClass(e).importStatement)
184
+ .filter((s) => s.length > 0))].join('');
185
+ // Collect every embed + related-record-collection peer across the file, then emit
186
+ // one grouped `import { A, B } from 'pkg'` per npm package. Per-entity import
187
+ // lines would duplicate packages (Address on two owners → two import lines).
188
+ const peerImports = entitiesWithPK.flatMap((e) => EntitySubClassGeneratorBase.CollectPeerClassImports(e, localClassNames));
189
+ const peerImportStatements = EntitySubClassGeneratorBase.FormatPeerImportStatements(peerImports).join('');
190
+ const subclassImports = `${baseClassImports}${peerImportStatements}`;
191
+ return `${this.generateEntitySubClassFileHeader(includeLoadModule)} \n ${subclassImports}${zodContent} \n ${sContent}`;
192
+ }
193
+ /** Delegates so both generators share one set of defaults; override to change them. */
194
+ resolveEmitOptions(options) {
195
+ return resolveSchemaEmitOptions(options, configInfo?.fileEmit);
196
+ }
197
+ /** Delegates so both generators write identically; override to change that. */
198
+ emitFile(filePath, content, useWriteIfChanged) {
199
+ emitSchemaFile(filePath, content, useWriteIfChanged);
200
+ }
201
+ generateEntitySubClassFileHeader(includeLoadModule = true) {
202
+ const loadModule = includeLoadModule
203
+ ? `
145
204
  export const loadModule = () => {
146
205
  // no-op, only used to ensure this file is a valid module and to allow easy loading
147
206
  }
148
-
207
+ `
208
+ : '';
209
+ return `import { BaseEntity, EntitySaveOptions, EntityDeleteOptions, CompositeKey, ValidationResult, ValidationErrorInfo, ValidationErrorType, Metadata, ProviderType, DatabaseProviderBase, RunView } from "@memberjunction/core";
210
+ import { RegisterClass } from "@memberjunction/global";
211
+ import { z } from "zod";
212
+ ${loadModule}
149
213
  `;
150
214
  }
151
215
  /**
@@ -778,36 +842,97 @@ ${fields}
778
842
  return methods.length > 0 ? '\n' + methods.join('\n') : '';
779
843
  }
780
844
  /**
781
- * Import statements for embedded peers that live in another generated file.
782
- *
783
- * @param entity - The owning entity.
784
- * @param localClassNames - Class names already emitted in this file.
845
+ * One peer class that must be imported because it is referenced by an embed or
846
+ * related-record collection and is not being emitted in this file.
785
847
  */
786
- static CollectEmbeddedImports(entity, localClassNames) {
787
- const declared = (entity.Fields ?? []).filter(f => f.EmbeddedRecord && String(f.EmbeddedRecord).trim().length > 0 && f.RelatedEntityID);
788
- if (declared.length === 0) {
789
- return [];
848
+ static CollectPeerClassImports(entity, localClassNames, config) {
849
+ const owningSchema = (entity.SchemaName ?? '').trim();
850
+ if (!owningSchema) {
851
+ throw new Error(`[CodeGen] entity import: entity '${entity.Name}' has no SchemaName; cannot resolve peer import packages.`);
790
852
  }
791
853
  const md = new Metadata(); // global-provider-ok: codegen runs offline against a single provider
792
- const imports = [];
793
- const seen = new Set();
794
- for (const field of declared) {
795
- const related = md.EntityByID(field.RelatedEntityID);
854
+ const byClass = new Map();
855
+ const addPeer = (className, relatedSchema, context) => {
856
+ if (!className || className === 'BaseEntity') {
857
+ return;
858
+ }
859
+ if (localClassNames.has(className)) {
860
+ return;
861
+ }
862
+ const schema = (relatedSchema ?? '').trim();
863
+ if (!schema) {
864
+ throw new Error(`[CodeGen] entity import: ${context} refers to class '${className}' but the related entity has no SchemaName. ` +
865
+ `CodeGen cannot pick an npm package to import it from.`);
866
+ }
867
+ const packageName = resolveEntityImportPackage(schema, owningSchema, config);
868
+ const existing = byClass.get(className);
869
+ if (existing && existing !== packageName) {
870
+ throw new Error(`[CodeGen] entity import: class '${className}' resolved to both '${existing}' and '${packageName}' on entity '${entity.Name}'.`);
871
+ }
872
+ byClass.set(className, packageName);
873
+ };
874
+ for (const field of (entity.Fields ?? []).filter((f) => f.EmbeddedRecord && String(f.EmbeddedRecord).trim().length > 0 && f.RelatedEntityID)) {
875
+ const related = md.EntityByID?.(field.RelatedEntityID);
796
876
  if (!related) {
797
877
  continue;
798
878
  }
799
- const className = `${related.ClassName}Entity`;
800
- if (localClassNames.has(className) || seen.has(className)) {
879
+ addPeer(`${related.ClassName}Entity`, related.SchemaName, `${entity.Name}.${field.Name} (embedded record)`);
880
+ }
881
+ for (const relationship of (entity.RelatedEntities ?? []).filter((r) => r.RelatedRecordCollection && r.RelatedRecordCollection.trim().length > 0)) {
882
+ const parsed = EntitySubClassGeneratorBase.ParseRelatedRecordCollectionConfig(entity, relationship);
883
+ if (!parsed) {
884
+ continue;
885
+ }
886
+ const relatedBase = relationship.RelatedEntityClassName?.trim();
887
+ if (!relatedBase) {
801
888
  continue;
802
889
  }
803
- seen.add(className);
804
- const coreSchema = typeof mj_core_schema === 'function' ? mj_core_schema() : String(mj_core_schema);
805
- const pkg = related.SchemaName && related.SchemaName.toLowerCase() === String(coreSchema).toLowerCase()
806
- ? '@memberjunction/core-entities'
807
- : resolveEntityPackageName(related.SchemaName);
808
- imports.push(`import { ${className} } from '${pkg}';\n`);
809
- }
810
- return imports;
890
+ let related;
891
+ if (relationship.RelatedEntityID && typeof md.EntityByID === 'function') {
892
+ related = md.EntityByID(relationship.RelatedEntityID);
893
+ }
894
+ if (!related && relationship.RelatedEntity && typeof md.EntityByName === 'function') {
895
+ related = md.EntityByName(relationship.RelatedEntity);
896
+ }
897
+ addPeer(`${relatedBase}Entity`, related?.SchemaName, `${entity.Name} → ${relationship.RelatedEntity} (related-record collection)`);
898
+ }
899
+ return [...byClass.entries()].map(([className, packageName]) => ({ className, packageName }));
900
+ }
901
+ /**
902
+ * Groups peer imports into one `import { A, B } from 'pkg'` line per npm package.
903
+ * `@memberjunction/core-entities` is emitted first; remaining packages are alphabetical.
904
+ */
905
+ static FormatPeerImportStatements(imports) {
906
+ const byPackage = new Map();
907
+ for (const item of imports) {
908
+ if (!item.className || !item.packageName) {
909
+ continue;
910
+ }
911
+ let set = byPackage.get(item.packageName);
912
+ if (!set) {
913
+ set = new Set();
914
+ byPackage.set(item.packageName, set);
915
+ }
916
+ set.add(item.className);
917
+ }
918
+ const packages = [...byPackage.keys()].sort((a, b) => {
919
+ if (a === '@memberjunction/core-entities')
920
+ return -1;
921
+ if (b === '@memberjunction/core-entities')
922
+ return 1;
923
+ return a.localeCompare(b);
924
+ });
925
+ return packages.map((pkg) => {
926
+ const names = [...byPackage.get(pkg)].sort((a, b) => a.localeCompare(b));
927
+ return `import { ${names.join(', ')} } from '${pkg}';\n`;
928
+ });
929
+ }
930
+ /**
931
+ * @deprecated Use {@link CollectPeerClassImports} + {@link FormatPeerImportStatements}.
932
+ * Kept so existing call sites still compile; includes related-record collections as well as embeds.
933
+ */
934
+ static CollectEmbeddedImports(entity, localClassNames, config) {
935
+ return EntitySubClassGeneratorBase.FormatPeerImportStatements(EntitySubClassGeneratorBase.CollectPeerClassImports(entity, localClassNames, config));
811
936
  }
812
937
  /**
813
938
  * Parses and validates one field's `EmbeddedRecord` JSON.