prisma-effect-kysely 1.10.0 → 1.12.0

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 (44) hide show
  1. package/dist/effect/generator.d.ts +4 -0
  2. package/dist/effect/generator.d.ts.map +1 -1
  3. package/dist/effect/generator.js +7 -0
  4. package/dist/effect/generator.js.map +1 -1
  5. package/dist/effect/join-table.d.ts +4 -0
  6. package/dist/effect/join-table.d.ts.map +1 -1
  7. package/dist/effect/join-table.js +16 -0
  8. package/dist/effect/join-table.js.map +1 -1
  9. package/dist/effect/type.d.ts +1 -1
  10. package/dist/effect/type.d.ts.map +1 -1
  11. package/dist/effect/type.js +18 -12
  12. package/dist/effect/type.js.map +1 -1
  13. package/dist/generator/config.d.ts +58 -0
  14. package/dist/generator/config.d.ts.map +1 -0
  15. package/dist/generator/config.js +109 -0
  16. package/dist/generator/config.js.map +1 -0
  17. package/dist/generator/contract-scaffolder.d.ts +45 -0
  18. package/dist/generator/contract-scaffolder.d.ts.map +1 -0
  19. package/dist/generator/contract-scaffolder.js +244 -0
  20. package/dist/generator/contract-scaffolder.js.map +1 -0
  21. package/dist/generator/domain-detector.d.ts +50 -0
  22. package/dist/generator/domain-detector.d.ts.map +1 -0
  23. package/dist/generator/domain-detector.js +187 -0
  24. package/dist/generator/domain-detector.js.map +1 -0
  25. package/dist/generator/orchestrator.d.ts +24 -4
  26. package/dist/generator/orchestrator.d.ts.map +1 -1
  27. package/dist/generator/orchestrator.js +139 -21
  28. package/dist/generator/orchestrator.js.map +1 -1
  29. package/dist/kysely/generator.d.ts +4 -0
  30. package/dist/kysely/generator.d.ts.map +1 -1
  31. package/dist/kysely/generator.js +6 -0
  32. package/dist/kysely/generator.js.map +1 -1
  33. package/dist/kysely/helpers.d.ts +5 -1
  34. package/dist/kysely/helpers.d.ts.map +1 -1
  35. package/dist/kysely/helpers.js +54 -27
  36. package/dist/kysely/helpers.js.map +1 -1
  37. package/dist/kysely/type.d.ts +19 -2
  38. package/dist/kysely/type.d.ts.map +1 -1
  39. package/dist/kysely/type.js +82 -4
  40. package/dist/kysely/type.js.map +1 -1
  41. package/dist/utils/annotations.d.ts.map +1 -1
  42. package/dist/utils/codegen.d.ts.map +1 -1
  43. package/dist/utils/naming.d.ts.map +1 -1
  44. package/package.json +16 -13
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-scaffolder.js","sourceRoot":"","sources":["../../src/generator/contract-scaffolder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Domain Detection
3
+ *
4
+ * Detects domains from Prisma multi-file schema organization.
5
+ * Supports Prisma's multi-file schema feature (v5.15.0+) where schemas
6
+ * are organized in separate files per domain (e.g., user.prisma, product.prisma).
7
+ */
8
+ import type { DMMF } from '@prisma/generator-helper';
9
+ /**
10
+ * Information about a detected domain
11
+ */
12
+ export interface DomainInfo {
13
+ /**
14
+ * Domain name (e.g., "user", "product")
15
+ * Derived from schema file name
16
+ */
17
+ name: string;
18
+ /**
19
+ * Models belonging to this domain
20
+ */
21
+ models: readonly DMMF.Model[];
22
+ /**
23
+ * Source file path for this domain
24
+ * @example "prisma/schemas/user.prisma"
25
+ */
26
+ sourceFile?: string;
27
+ }
28
+ /**
29
+ * Detect domains from Prisma schema file structure
30
+ *
31
+ * Strategy:
32
+ * 1. If multiSchema preview feature is enabled, use DMMF schema information
33
+ * 2. Otherwise, scan prisma/schemas/ directory for *.prisma files
34
+ * 3. Group models by domain based on file names
35
+ * 4. Default domain is "shared" for models without explicit domain
36
+ *
37
+ * @param dmmf - Prisma DMMF (Data Model Meta Format)
38
+ * @param schemaPath - Path to prisma schema directory
39
+ * @returns Array of detected domains with their models
40
+ */
41
+ export declare function detectDomains(dmmf: DMMF.Document, schemaPath?: string): DomainInfo[];
42
+ /**
43
+ * Get all unique domain names from detected domains
44
+ */
45
+ export declare function getDomainNames(domains: DomainInfo[]): string[];
46
+ /**
47
+ * Get models for a specific domain
48
+ */
49
+ export declare function getModelsForDomain(domains: DomainInfo[], domainName: string): readonly DMMF.Model[];
50
+ //# sourceMappingURL=domain-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-detector.d.ts","sourceRoot":"","sources":["../../src/generator/domain-detector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAIrD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;IAE9B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CAsBpF;AAgHD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAE9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,UAAU,EAAE,EACrB,UAAU,EAAE,MAAM,GACjB,SAAS,IAAI,CAAC,KAAK,EAAE,CAGvB"}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ /**
3
+ * Domain Detection
4
+ *
5
+ * Detects domains from Prisma multi-file schema organization.
6
+ * Supports Prisma's multi-file schema feature (v5.15.0+) where schemas
7
+ * are organized in separate files per domain (e.g., user.prisma, product.prisma).
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.detectDomains = detectDomains;
44
+ exports.getDomainNames = getDomainNames;
45
+ exports.getModelsForDomain = getModelsForDomain;
46
+ const path = __importStar(require("path"));
47
+ const fs = __importStar(require("fs"));
48
+ /**
49
+ * Detect domains from Prisma schema file structure
50
+ *
51
+ * Strategy:
52
+ * 1. If multiSchema preview feature is enabled, use DMMF schema information
53
+ * 2. Otherwise, scan prisma/schemas/ directory for *.prisma files
54
+ * 3. Group models by domain based on file names
55
+ * 4. Default domain is "shared" for models without explicit domain
56
+ *
57
+ * @param dmmf - Prisma DMMF (Data Model Meta Format)
58
+ * @param schemaPath - Path to prisma schema directory
59
+ * @returns Array of detected domains with their models
60
+ */
61
+ function detectDomains(dmmf, schemaPath) {
62
+ // Strategy 1: Use DMMF schema locations if available (Prisma 5.15.0+)
63
+ const domainsByDmmf = detectDomainsFromDMMF(dmmf);
64
+ if (domainsByDmmf.length > 0) {
65
+ return domainsByDmmf;
66
+ }
67
+ // Strategy 2: Scan file system for schema files
68
+ if (schemaPath) {
69
+ const domainsByFiles = detectDomainsFromFiles(dmmf, schemaPath);
70
+ if (domainsByFiles.length > 0) {
71
+ return domainsByFiles;
72
+ }
73
+ }
74
+ // Fallback: Single "shared" domain with all models
75
+ return [
76
+ {
77
+ name: 'shared',
78
+ models: dmmf.datamodel.models,
79
+ },
80
+ ];
81
+ }
82
+ /**
83
+ * Detect domains from DMMF schema metadata (Prisma 5.15.0+)
84
+ */
85
+ function detectDomainsFromDMMF(dmmf) {
86
+ const domains = new Map();
87
+ // Check if models have schema location metadata
88
+ for (const model of dmmf.datamodel.models) {
89
+ // @ts-expect-error - schema location may not be in type definitions yet
90
+ const schemaLocation = model.schemaLocation;
91
+ if (schemaLocation && typeof schemaLocation === 'string') {
92
+ const domainName = extractDomainFromPath(schemaLocation);
93
+ const existing = domains.get(domainName) || [];
94
+ // Cast to readonly to match DMMF type signature
95
+ domains.set(domainName, [...existing, model]);
96
+ }
97
+ }
98
+ // Convert map to DomainInfo array
99
+ return Array.from(domains.entries()).map(([name, models]) => ({
100
+ name,
101
+ models,
102
+ }));
103
+ }
104
+ /**
105
+ * Detect domains by scanning prisma/schemas/ directory
106
+ */
107
+ function detectDomainsFromFiles(dmmf, schemaPath) {
108
+ const schemasDir = path.join(path.dirname(schemaPath), 'schemas');
109
+ // Check if schemas directory exists
110
+ if (!fs.existsSync(schemasDir)) {
111
+ return [];
112
+ }
113
+ const domainModels = new Map();
114
+ const domainSourceFiles = new Map();
115
+ // Read all .prisma files in schemas directory
116
+ const schemaFiles = fs.readdirSync(schemasDir).filter((file) => file.endsWith('.prisma'));
117
+ if (schemaFiles.length === 0) {
118
+ return [];
119
+ }
120
+ // Create domain entries for each schema file
121
+ for (const file of schemaFiles) {
122
+ const domainName = path.basename(file, '.prisma');
123
+ const sourceFile = path.join(schemasDir, file);
124
+ domainModels.set(domainName, []);
125
+ domainSourceFiles.set(domainName, sourceFile);
126
+ }
127
+ // Assign models to domains based on file content
128
+ // For now, we rely on naming conventions or explicit comments
129
+ // This is a heuristic - in practice, Prisma's DMMF should provide this
130
+ for (const model of dmmf.datamodel.models) {
131
+ const domainName = inferDomainFromModel(model, domainModels);
132
+ const models = domainModels.get(domainName);
133
+ if (models) {
134
+ domainModels.set(domainName, [...models, model]);
135
+ }
136
+ }
137
+ // Build final DomainInfo array
138
+ return Array.from(domainModels.entries()).map(([name, models]) => ({
139
+ name,
140
+ models: models,
141
+ sourceFile: domainSourceFiles.get(name),
142
+ }));
143
+ }
144
+ /**
145
+ * Extract domain name from schema file path
146
+ *
147
+ * @example
148
+ * extractDomainFromPath("prisma/schemas/user.prisma") // "user"
149
+ * extractDomainFromPath("schemas/product.prisma") // "product"
150
+ */
151
+ function extractDomainFromPath(filePath) {
152
+ const fileName = path.basename(filePath, '.prisma');
153
+ return fileName.toLowerCase();
154
+ }
155
+ /**
156
+ * Infer domain from model name using heuristics
157
+ *
158
+ * Strategy:
159
+ * 1. Check if model name starts with domain name (UserProfile → user)
160
+ * 2. Check for common prefixes (User, Product, Order, etc.)
161
+ * 3. Fall back to "shared" domain
162
+ */
163
+ function inferDomainFromModel(model, domainModels) {
164
+ const modelName = model.name.toLowerCase();
165
+ // Try exact domain prefix match
166
+ for (const domainName of domainModels.keys()) {
167
+ if (modelName.startsWith(domainName)) {
168
+ return domainName;
169
+ }
170
+ }
171
+ // Fall back to "shared" domain
172
+ return domainModels.has('shared') ? 'shared' : Array.from(domainModels.keys())[0] || 'shared';
173
+ }
174
+ /**
175
+ * Get all unique domain names from detected domains
176
+ */
177
+ function getDomainNames(domains) {
178
+ return domains.map((d) => d.name);
179
+ }
180
+ /**
181
+ * Get models for a specific domain
182
+ */
183
+ function getModelsForDomain(domains, domainName) {
184
+ const domain = domains.find((d) => d.name === domainName);
185
+ return domain?.models || [];
186
+ }
187
+ //# sourceMappingURL=domain-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-detector.js","sourceRoot":"","sources":["../../src/generator/domain-detector.ts"],"names":[],"mappings":"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"}
@@ -2,22 +2,42 @@ import type { GeneratorOptions } from '@prisma/generator-helper';
2
2
  /**
3
3
  * Orchestrates the generation of Effect Schema types from Prisma schema
4
4
  * Uses domain-driven generators: Prisma → Effect → Kysely
5
+ *
6
+ * Supports two modes:
7
+ * 1. Single output (default): All schemas in one directory
8
+ * 2. Multi-domain: Separate contract libraries per domain
5
9
  */
6
10
  export declare class GeneratorOrchestrator {
11
+ private readonly config;
7
12
  private readonly fileManager;
8
13
  private readonly prismaGen;
9
14
  private readonly effectGen;
10
15
  private readonly kyselyGen;
11
16
  constructor(options: GeneratorOptions);
12
- /**
13
- * Validate and extract output path from generator options
14
- */
15
- private validateOutputPath;
16
17
  /**
17
18
  * Main generation entry point
18
19
  * Orchestrates all generation steps
20
+ *
21
+ * Flow:
22
+ * 1. Detect domains if multi-domain mode enabled
23
+ * 2. Scaffold contract libraries if scaffolding enabled
24
+ * 3. Generate schemas (single or per-domain)
19
25
  */
20
26
  generate(options: GeneratorOptions): Promise<void>;
27
+ /**
28
+ * Generate schemas in single-output mode (default)
29
+ * All schemas in one directory
30
+ */
31
+ private generateSingleOutput;
32
+ /**
33
+ * Generate schemas in multi-domain mode
34
+ * Separate contract libraries per domain
35
+ */
36
+ private generateMultiDomain;
37
+ /**
38
+ * Generate schemas for a specific domain
39
+ */
40
+ private generateForDomain;
21
41
  /**
22
42
  * Generate enums.ts file
23
43
  */
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAMjE;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;gBAEhC,OAAO,EAAE,gBAAgB;IASrC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,gBAAgB;IAYxC;;OAEG;YACW,aAAa;IAM3B;;OAEG;YACW,aAAa;IA0C3B;;OAEG;YACW,aAAa;IAK3B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;OAEG;IACH,OAAO,CAAC,WAAW;CAKpB"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAcjE;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;gBAEhC,OAAO,EAAE,gBAAgB;IASrC;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,EAAE,gBAAgB;IAaxC;;;OAGG;YACW,oBAAoB;IAQlC;;;OAGG;YACW,mBAAmB;IAsBjC;;OAEG;YACW,iBAAiB;IAmF/B;;OAEG;YACW,aAAa;IAM3B;;OAEG;YACW,aAAa;IAwD3B;;OAEG;YACW,aAAa;IAK3B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAehB;;OAEG;IACH,OAAO,CAAC,WAAW;CAWpB"}
@@ -5,40 +5,136 @@ const file_manager_1 = require("../utils/file-manager");
5
5
  const generator_1 = require("../prisma/generator");
6
6
  const generator_2 = require("../effect/generator");
7
7
  const generator_3 = require("../kysely/generator");
8
+ const config_1 = require("./config");
9
+ const domain_detector_1 = require("./domain-detector");
10
+ const contract_scaffolder_1 = require("./contract-scaffolder");
8
11
  /**
9
12
  * Orchestrates the generation of Effect Schema types from Prisma schema
10
13
  * Uses domain-driven generators: Prisma → Effect → Kysely
14
+ *
15
+ * Supports two modes:
16
+ * 1. Single output (default): All schemas in one directory
17
+ * 2. Multi-domain: Separate contract libraries per domain
11
18
  */
12
19
  class GeneratorOrchestrator {
13
20
  constructor(options) {
14
- const outputPath = this.validateOutputPath(options);
15
- this.fileManager = new file_manager_1.FileManager(outputPath);
21
+ this.config = (0, config_1.parseGeneratorConfig)(options);
22
+ this.fileManager = new file_manager_1.FileManager(this.config.output);
16
23
  this.prismaGen = new generator_1.PrismaGenerator(options.dmmf);
17
24
  this.effectGen = new generator_2.EffectGenerator(options.dmmf);
18
25
  this.kyselyGen = new generator_3.KyselyGenerator(options.dmmf);
19
26
  }
20
- /**
21
- * Validate and extract output path from generator options
22
- */
23
- validateOutputPath(options) {
24
- const outputPath = options.generator.output?.value;
25
- if (!outputPath) {
26
- throw new Error('Prisma Effect Generator: output path not configured.\n' +
27
- 'Add "output" to your generator block in schema.prisma');
28
- }
29
- return outputPath;
30
- }
31
27
  /**
32
28
  * Main generation entry point
33
29
  * Orchestrates all generation steps
30
+ *
31
+ * Flow:
32
+ * 1. Detect domains if multi-domain mode enabled
33
+ * 2. Scaffold contract libraries if scaffolding enabled
34
+ * 3. Generate schemas (single or per-domain)
34
35
  */
35
36
  async generate(options) {
36
37
  this.logStart(options);
38
+ // Check if multi-domain mode is enabled
39
+ if ((0, config_1.isMultiDomainEnabled)(this.config)) {
40
+ await this.generateMultiDomain(options);
41
+ }
42
+ else {
43
+ await this.generateSingleOutput();
44
+ }
45
+ this.logComplete();
46
+ }
47
+ /**
48
+ * Generate schemas in single-output mode (default)
49
+ * All schemas in one directory
50
+ */
51
+ async generateSingleOutput() {
37
52
  // Ensure output directory exists
38
53
  await this.fileManager.ensureDirectory();
39
54
  // Generate all files in parallel for better performance
40
55
  await Promise.all([this.generateEnums(), this.generateTypes(), this.generateIndex()]);
41
- this.logComplete();
56
+ }
57
+ /**
58
+ * Generate schemas in multi-domain mode
59
+ * Separate contract libraries per domain
60
+ */
61
+ async generateMultiDomain(options) {
62
+ // 1. Detect domains from schema structure
63
+ const schemaPath = options.schemaPath;
64
+ const domains = (0, domain_detector_1.detectDomains)(options.dmmf, schemaPath);
65
+ console.log(`[Multi-Domain] Detected ${domains.length} domains:`, domains.map((d) => d.name).join(', '));
66
+ // 2. Scaffold contract libraries if enabled
67
+ if ((0, config_1.isScaffoldingEnabled)(this.config)) {
68
+ const scaffoldResults = await (0, contract_scaffolder_1.scaffoldContractLibraries)(domains, this.config);
69
+ (0, contract_scaffolder_1.logScaffoldResults)(scaffoldResults);
70
+ }
71
+ // 3. Generate schemas for each domain
72
+ for (const domain of domains) {
73
+ await this.generateForDomain(domain);
74
+ }
75
+ }
76
+ /**
77
+ * Generate schemas for a specific domain
78
+ */
79
+ async generateForDomain(domain) {
80
+ const domainOutputPath = `${this.config.output}/${domain.name}/src/generated`;
81
+ const domainFileManager = new file_manager_1.FileManager(domainOutputPath);
82
+ await domainFileManager.ensureDirectory();
83
+ console.log(`[Multi-Domain] Generating ${domain.name}...`);
84
+ // Generate enums (shared across all domains for now)
85
+ const enums = this.prismaGen.getEnums();
86
+ if (enums.length > 0) {
87
+ const enumsContent = this.effectGen.generateEnums(enums);
88
+ await domainFileManager.writeFile('enums.ts', enumsContent);
89
+ }
90
+ // Generate types for this domain's models only
91
+ const joinTables = this.prismaGen.getManyToManyJoinTables();
92
+ const hasEnums = enums.length > 0;
93
+ // Filter join tables to only those relevant to this domain
94
+ const domainJoinTables = joinTables.filter((jt) => domain.models.some((m) => m.name === jt.modelA || m.name === jt.modelB));
95
+ // Generate header with imports
96
+ const header = this.effectGen.generateTypesHeader(hasEnums);
97
+ // Generate model schemas for this domain only
98
+ const modelSchemas = domain.models
99
+ .map((model) => {
100
+ const fields = this.prismaGen.getModelFields(model);
101
+ const baseSchemaName = `_${model.name}`;
102
+ // Generate Kysely table interface
103
+ const kyselyTable = this.kyselyGen.generateTableInterface(model, fields);
104
+ // Generate base schema with Kysely fields
105
+ const kyselyFields = this.kyselyGen.generateModelFields(fields);
106
+ const baseSchema = `// ${model.name} Base Schema
107
+ export const ${baseSchemaName} = Schema.Struct({
108
+ ${kyselyFields}
109
+ });`;
110
+ // Generate operational schemas and type exports
111
+ const operationalSchema = this.effectGen.generateOperationalSchemas(model);
112
+ const typeExports = this.effectGen.generateTypeExports(model, fields);
113
+ return `${kyselyTable}\n\n${baseSchema}\n\n${operationalSchema}\n\n${typeExports}`;
114
+ })
115
+ .join('\n\n');
116
+ // Generate join table Kysely interfaces for this domain
117
+ const joinTableKyselyInterfaces = domainJoinTables.length > 0
118
+ ? this.effectGen.generateJoinTableKyselyInterfaces(domainJoinTables)
119
+ : '';
120
+ // Generate join table schemas for this domain
121
+ const joinTableSchemas = domainJoinTables.length > 0 ? this.effectGen.generateJoinTableSchemas(domainJoinTables) : '';
122
+ // Generate DB interface for this domain
123
+ const dbInterface = this.kyselyGen.generateDBInterface(domain.models, domainJoinTables);
124
+ // Assemble content with proper spacing
125
+ let content = `${header}\n\n${modelSchemas}`;
126
+ if (joinTableKyselyInterfaces) {
127
+ content += `\n\n${joinTableKyselyInterfaces}`;
128
+ }
129
+ if (joinTableSchemas) {
130
+ content += `\n\n${joinTableSchemas}`;
131
+ }
132
+ content += `\n\n${dbInterface}`;
133
+ await domainFileManager.writeFile('types.ts', content);
134
+ // Generate index file
135
+ const indexContent = this.kyselyGen.generateIndexFile();
136
+ await domainFileManager.writeFile('index.ts', indexContent);
137
+ console.log(`[Multi-Domain] ✓ Generated ${domain.name} (${domain.models.length} models)`);
42
138
  }
43
139
  /**
44
140
  * Generate enums.ts file
@@ -57,11 +153,13 @@ class GeneratorOrchestrator {
57
153
  const hasEnums = this.prismaGen.getEnums().length > 0;
58
154
  // Generate header with imports
59
155
  const header = this.effectGen.generateTypesHeader(hasEnums);
60
- // Generate all model schemas
156
+ // Generate all model schemas (Kysely tables + Effect schemas)
61
157
  const modelSchemas = models
62
158
  .map((model) => {
63
159
  const fields = this.prismaGen.getModelFields(model);
64
160
  const baseSchemaName = `_${model.name}`;
161
+ // Generate Kysely table interface
162
+ const kyselyTable = this.kyselyGen.generateTableInterface(model, fields);
65
163
  // Generate base schema with Kysely fields
66
164
  const kyselyFields = this.kyselyGen.generateModelFields(fields);
67
165
  const baseSchema = `// ${model.name} Base Schema
@@ -71,16 +169,24 @@ ${kyselyFields}
71
169
  // Generate operational schemas and type exports
72
170
  const operationalSchema = this.effectGen.generateOperationalSchemas(model);
73
171
  const typeExports = this.effectGen.generateTypeExports(model, fields);
74
- return `${baseSchema}\n\n${operationalSchema}\n\n${typeExports}`;
172
+ return `${kyselyTable}\n\n${baseSchema}\n\n${operationalSchema}\n\n${typeExports}`;
75
173
  })
76
174
  .join('\n\n');
175
+ // Generate join table Kysely interfaces
176
+ const joinTableKyselyInterfaces = joinTables.length > 0 ? this.effectGen.generateJoinTableKyselyInterfaces(joinTables) : '';
77
177
  // Generate join table schemas
78
178
  const joinTableSchemas = joinTables.length > 0 ? this.effectGen.generateJoinTableSchemas(joinTables) : '';
79
179
  // Generate DB interface with join tables
80
180
  const dbInterface = this.kyselyGen.generateDBInterface(models, joinTables);
81
- const content = joinTableSchemas
82
- ? `${header}\n\n${modelSchemas}\n\n${joinTableSchemas}\n\n${dbInterface}`
83
- : `${header}\n\n${modelSchemas}\n\n${dbInterface}`;
181
+ // Assemble content with proper spacing
182
+ let content = `${header}\n\n${modelSchemas}`;
183
+ if (joinTableKyselyInterfaces) {
184
+ content += `\n\n${joinTableKyselyInterfaces}`;
185
+ }
186
+ if (joinTableSchemas) {
187
+ content += `\n\n${joinTableSchemas}`;
188
+ }
189
+ content += `\n\n${dbInterface}`;
84
190
  await this.fileManager.writeFile('types.ts', content);
85
191
  }
86
192
  /**
@@ -98,14 +204,26 @@ ${kyselyFields}
98
204
  const enumCount = options.dmmf.datamodel.enums.length;
99
205
  console.log('[Prisma Effect Kysely Generator] Starting generation...');
100
206
  console.log(`[Effect Generator] Processing ${modelCount} models, ${enumCount} enums`);
207
+ if ((0, config_1.isMultiDomainEnabled)(this.config)) {
208
+ console.log('[Effect Generator] Multi-domain mode: ENABLED');
209
+ if ((0, config_1.isScaffoldingEnabled)(this.config)) {
210
+ console.log('[Effect Generator] Library scaffolding: ENABLED');
211
+ }
212
+ }
101
213
  }
102
214
  /**
103
215
  * Log generation completion
104
216
  */
105
217
  logComplete() {
106
218
  const outputPath = this.fileManager.getOutputPath();
107
- console.log(`[Effect Generator] ✓ Generated to ${outputPath}`);
108
- console.log(`[Effect Generator] Files: enums.ts, types.ts, index.ts`);
219
+ if ((0, config_1.isMultiDomainEnabled)(this.config)) {
220
+ console.log(`[Effect Generator] Multi-domain generation complete`);
221
+ console.log(`[Effect Generator] Base output: ${this.config.output}`);
222
+ }
223
+ else {
224
+ console.log(`[Effect Generator] ✓ Generated to ${outputPath}`);
225
+ console.log(`[Effect Generator] Files: enums.ts, types.ts, index.ts`);
226
+ }
109
227
  }
110
228
  }
111
229
  exports.GeneratorOrchestrator = GeneratorOrchestrator;
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,10 @@ export declare class KyselyGenerator {
15
15
  * Generate all fields for a model with Kysely integration
16
16
  */
17
17
  generateModelFields(fields: readonly DMMF.Field[]): string;
18
+ /**
19
+ * Generate Kysely table interface for a model
20
+ */
21
+ generateTableInterface(model: DMMF.Model, fields: readonly DMMF.Field[]): string;
18
22
  /**
19
23
  * Generate DB interface for all models and join tables
20
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/kysely/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;GAGG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,CAAC,QAAQ;IAEhD;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAUzC;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAMjD;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,GAAE,aAAa,EAAO;IAInF;;OAEG;IACH,iBAAiB;CAGlB"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/kysely/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;GAGG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,CAAC,QAAQ;IAEhD;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAUzC;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAMjD;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAIvE;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,GAAE,aAAa,EAAO;IAInF;;OAEG;IACH,iBAAiB;CAGlB"}
@@ -29,6 +29,12 @@ class KyselyGenerator {
29
29
  .map((field) => this.generateFieldWithKysely(field))
30
30
  .join(',\n');
31
31
  }
32
+ /**
33
+ * Generate Kysely table interface for a model
34
+ */
35
+ generateTableInterface(model, fields) {
36
+ return (0, type_1.generateKyselyTableInterface)(model, fields, this.dmmf);
37
+ }
32
38
  /**
33
39
  * Generate DB interface for all models and join tables
34
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/kysely/generator.ts"],"names":[],"mappings":";;;AACA,iCAAmE;AACnE,yCAAgD;AAGhD;;;GAGG;AACH,MAAa,eAAe;IAC1B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;OAEG;IACH,uBAAuB,CAAC,KAAiB;QACvC,uBAAuB;QACvB,MAAM,aAAa,GAAG,IAAA,qBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,gCAAgC;QAChC,MAAM,eAAe,GAAG,IAAA,2BAAoB,EAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAEnE,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAA6B;QAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;aACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;aACnD,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAA6B,EAAE,aAA8B,EAAE;QACjF,OAAO,IAAA,0BAAmB,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,oDAAoD,CAAC;IAC9D,CAAC;CACF;AAtCD,0CAsCC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/kysely/generator.ts"],"names":[],"mappings":";;;AACA,iCAAiG;AACjG,yCAAgD;AAGhD;;;GAGG;AACH,MAAa,eAAe;IAC1B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;OAEG;IACH,uBAAuB,CAAC,KAAiB;QACvC,uBAAuB;QACvB,MAAM,aAAa,GAAG,IAAA,qBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,gCAAgC;QAChC,MAAM,eAAe,GAAG,IAAA,2BAAoB,EAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAEnE,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAA6B;QAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;aACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;aACnD,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,KAAiB,EAAE,MAA6B;QACrE,OAAO,IAAA,mCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAA6B,EAAE,aAA8B,EAAE;QACjF,OAAO,IAAA,0BAAmB,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,oDAAoD,CAAC;IAC9D,CAAC;CACF;AA7CD,0CA6CC"}
@@ -42,7 +42,11 @@ export interface Schemas<Type, Encoded> {
42
42
  * Generate all operational schemas (Selectable/Insertable/Updateable) from base schema
43
43
  * Used in generated code
44
44
  */
45
- export declare const getSchemas: <Type, Encoded>(baseSchema: Schema.Schema<Type, Encoded>) => Schemas<Type, Encoded>;
45
+ export declare const getSchemas: <Type, Encoded>(baseSchema: Schema.Schema<Type, Encoded>) => {
46
+ Selectable: Schema.Schema<import("kysely/dist/cjs/util/type-utils").DrainOuterGeneric<{ [K_1 in { [K in keyof Type]: import("kysely").SelectType<Type[K]> extends infer T ? T extends import("kysely").SelectType<Type[K]> ? T extends never ? never : K : never : never; }[keyof Type]]: import("kysely").SelectType<Type[K_1]>; }>, import("kysely/dist/cjs/util/type-utils").DrainOuterGeneric<{ [K_3 in { [K_2 in keyof Encoded]: import("kysely").SelectType<Encoded[K_2]> extends infer T ? T extends import("kysely").SelectType<Encoded[K_2]> ? T extends never ? never : K_2 : never : never; }[keyof Encoded]]: import("kysely").SelectType<Encoded[K_3]>; }>, never>;
47
+ Insertable: Schema.Schema<import("kysely/dist/cjs/util/type-utils").DrainOuterGeneric<{ [K_4 in import("kysely").NonNullableInsertKeys<Type>]: import("kysely").InsertType<Type[K_4]>; } & { [K_5 in import("kysely").NullableInsertKeys<Type>]?: import("kysely").InsertType<Type[K_5]> | undefined; }>, import("kysely/dist/cjs/util/type-utils").DrainOuterGeneric<{ [K_6 in import("kysely").NonNullableInsertKeys<Encoded>]: import("kysely").InsertType<Encoded[K_6]>; } & { [K_7 in import("kysely").NullableInsertKeys<Encoded>]?: import("kysely").InsertType<Encoded[K_7]> | undefined; }>, never>;
48
+ Updateable: Schema.Schema<import("kysely/dist/cjs/util/type-utils").DrainOuterGeneric<{ [K_8 in import("kysely").UpdateKeys<Type>]?: import("kysely").UpdateType<Type[K_8]> | undefined; }>, import("kysely/dist/cjs/util/type-utils").DrainOuterGeneric<{ [K_9 in import("kysely").UpdateKeys<Encoded>]?: import("kysely").UpdateType<Encoded[K_9]> | undefined; }>, never>;
49
+ };
46
50
  export interface GetTypes<T extends Schemas<unknown, unknown>> {
47
51
  Selectable: Schema.Schema.Type<T['Selectable']>;
48
52
  Insertable: Schema.Schema.Type<T['Insertable']>;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/kysely/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/kysely/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEjE;;;GAGG;AAEH,eAAO,MAAM,YAAY,eAA8B,CAAC;AACxD,eAAO,MAAM,WAAW,eAA6B,CAAC;AAQtD;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EACtF,cAAc,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,EAChD,cAAc,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,EAChD,cAAc,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,KAC/C,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAQnC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,sCAEtF,CAAC;AA8FF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,EAAE,OAAO,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,gEAkB7E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,EAAE,OAAO,EACtC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,KACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,CAoD5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,EAAE,OAAO,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,gEAgC7E,CAAC;AAEF,MAAM,WAAW,OAAO,CAAC,IAAI,EAAE,OAAO;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;CAClE;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,EAAE,OAAO,EAAE,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;;;;CAIhF,CAAC;AAEH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3D,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;CACjD"}