prisma-effect-kysely 1.11.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.
- package/dist/effect/join-table.d.ts.map +1 -1
- package/dist/effect/type.d.ts +1 -1
- package/dist/effect/type.d.ts.map +1 -1
- package/dist/effect/type.js +18 -12
- package/dist/effect/type.js.map +1 -1
- package/dist/generator/config.d.ts +58 -0
- package/dist/generator/config.d.ts.map +1 -0
- package/dist/generator/config.js +109 -0
- package/dist/generator/config.js.map +1 -0
- package/dist/generator/contract-scaffolder.d.ts +45 -0
- package/dist/generator/contract-scaffolder.d.ts.map +1 -0
- package/dist/generator/contract-scaffolder.js +244 -0
- package/dist/generator/contract-scaffolder.js.map +1 -0
- package/dist/generator/domain-detector.d.ts +50 -0
- package/dist/generator/domain-detector.d.ts.map +1 -0
- package/dist/generator/domain-detector.js +187 -0
- package/dist/generator/domain-detector.js.map +1 -0
- package/dist/generator/orchestrator.d.ts +24 -4
- package/dist/generator/orchestrator.d.ts.map +1 -1
- package/dist/generator/orchestrator.js +124 -16
- package/dist/generator/orchestrator.js.map +1 -1
- package/dist/kysely/helpers.d.ts +5 -1
- package/dist/kysely/helpers.d.ts.map +1 -1
- package/dist/kysely/helpers.js +54 -27
- package/dist/kysely/helpers.js.map +1 -1
- package/dist/kysely/type.d.ts.map +1 -1
- package/dist/utils/annotations.d.ts.map +1 -1
- package/dist/utils/codegen.d.ts.map +1 -1
- package/dist/utils/naming.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
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
|
-
|
|
15
|
-
this.fileManager = new file_manager_1.FileManager(
|
|
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
|
-
|
|
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
|
|
@@ -108,14 +204,26 @@ ${kyselyFields}
|
|
|
108
204
|
const enumCount = options.dmmf.datamodel.enums.length;
|
|
109
205
|
console.log('[Prisma Effect Kysely Generator] Starting generation...');
|
|
110
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
|
+
}
|
|
111
213
|
}
|
|
112
214
|
/**
|
|
113
215
|
* Log generation completion
|
|
114
216
|
*/
|
|
115
217
|
logComplete() {
|
|
116
218
|
const outputPath = this.fileManager.getOutputPath();
|
|
117
|
-
|
|
118
|
-
|
|
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
|
+
}
|
|
119
227
|
}
|
|
120
228
|
}
|
|
121
229
|
exports.GeneratorOrchestrator = GeneratorOrchestrator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":";;;AACA,wDAAoD;AACpD,mDAAsD;AACtD,mDAAsD;AACtD,mDAAsD;
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":";;;AACA,wDAAoD;AACpD,mDAAsD;AACtD,mDAAsD;AACtD,mDAAsD;AACtD,qCAKkB;AAClB,uDAAmE;AACnE,+DAAsF;AAEtF;;;;;;;GAOG;AACH,MAAa,qBAAqB;IAOhC,YAAY,OAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,IAAA,6BAAoB,EAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC,WAAW,GAAG,IAAI,0BAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,2BAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,2BAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,2BAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAyB;QACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvB,wCAAwC;QACxC,IAAI,IAAA,6BAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,oBAAoB;QAChC,iCAAiC;QACjC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QAEzC,wDAAwD;QACxD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,mBAAmB,CAAC,OAAyB;QACzD,0CAA0C;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,MAAM,OAAO,GAAG,IAAA,+BAAa,EAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAExD,OAAO,CAAC,GAAG,CACT,2BAA2B,OAAO,CAAC,MAAM,WAAW,EACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACtC,CAAC;QAEF,4CAA4C;QAC5C,IAAI,IAAA,6BAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,MAAM,eAAe,GAAG,MAAM,IAAA,+CAAyB,EAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9E,IAAA,wCAAkB,EAAC,eAAe,CAAC,CAAC;QACtC,CAAC;QAED,sCAAsC;QACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,MAAkB;QAChD,MAAM,gBAAgB,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,gBAAgB,CAAC;QAC9E,MAAM,iBAAiB,GAAG,IAAI,0BAAW,CAAC,gBAAgB,CAAC,CAAC;QAE5D,MAAM,iBAAiB,CAAC,eAAe,EAAE,CAAC;QAE1C,OAAO,CAAC,GAAG,CAAC,6BAA6B,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;QAE3D,qDAAqD;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,iBAAiB,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC9D,CAAC;QAED,+CAA+C;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAElC,2DAA2D;QAC3D,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,MAAM,CAAC,CACxE,CAAC;QAEF,+BAA+B;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAE5D,8CAA8C;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAExC,kCAAkC;YAClC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEzE,0CAA0C;YAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAChE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,IAAI;eAC5B,cAAc;EAC3B,YAAY;IACV,CAAC;YAEG,gDAAgD;YAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEtE,OAAO,GAAG,WAAW,OAAO,UAAU,OAAO,iBAAiB,OAAO,WAAW,EAAE,CAAC;QACrF,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,wDAAwD;QACxD,MAAM,yBAAyB,GAC7B,gBAAgB,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,iCAAiC,CAAC,gBAAgB,CAAC;YACpE,CAAC,CAAC,EAAE,CAAC;QAET,8CAA8C;QAC9C,MAAM,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE/F,wCAAwC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAExF,uCAAuC;QACvC,IAAI,OAAO,GAAG,GAAG,MAAM,OAAO,YAAY,EAAE,CAAC;QAC7C,IAAI,yBAAyB,EAAE,CAAC;YAC9B,OAAO,IAAI,OAAO,yBAAyB,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,IAAI,OAAO,gBAAgB,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,OAAO,WAAW,EAAE,CAAC;QAEhC,MAAM,iBAAiB,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEvD,sBAAsB;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QACxD,MAAM,iBAAiB,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAE5D,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC;IAC5F,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAEtD,+BAA+B;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAE5D,8DAA8D;QAC9D,MAAM,YAAY,GAAG,MAAM;aACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAExC,kCAAkC;YAClC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEzE,0CAA0C;YAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAChE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,IAAI;eAC5B,cAAc;EAC3B,YAAY;IACV,CAAC;YAEG,gDAAgD;YAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEtE,OAAO,GAAG,WAAW,OAAO,UAAU,OAAO,iBAAiB,OAAO,WAAW,EAAE,CAAC;QACrF,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,wCAAwC;QACxC,MAAM,yBAAyB,GAC7B,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,iCAAiC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5F,8BAA8B;QAC9B,MAAM,gBAAgB,GACpB,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEnF,yCAAyC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE3E,uCAAuC;QACvC,IAAI,OAAO,GAAG,GAAG,MAAM,OAAO,YAAY,EAAE,CAAC;QAC7C,IAAI,yBAAyB,EAAE,CAAC;YAC9B,OAAO,IAAI,OAAO,yBAAyB,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,IAAI,OAAO,gBAAgB,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,OAAO,WAAW,EAAE,CAAC;QAEhC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QACnD,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,OAAyB;QACxC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/F,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,iCAAiC,UAAU,YAAY,SAAS,QAAQ,CAAC,CAAC;QAEtF,IAAI,IAAA,6BAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,IAAI,IAAA,6BAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;QAEpD,IAAI,IAAA,6BAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF;AA9QD,sDA8QC"}
|
package/dist/kysely/helpers.d.ts
CHANGED
|
@@ -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>) =>
|
|
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":"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,
|
|
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"}
|
package/dist/kysely/helpers.js
CHANGED
|
@@ -67,6 +67,57 @@ const generated = (schema) => {
|
|
|
67
67
|
return effect_1.Schema.asSchema(schema.annotations({ [exports.GeneratedId]: true }));
|
|
68
68
|
};
|
|
69
69
|
exports.generated = generated;
|
|
70
|
+
/**
|
|
71
|
+
* Schema for validating column type annotations structure
|
|
72
|
+
*/
|
|
73
|
+
const ColumnTypeSchemasValidator = effect_1.Schema.Struct({
|
|
74
|
+
selectSchema: effect_1.Schema.Any,
|
|
75
|
+
insertSchema: effect_1.Schema.Any,
|
|
76
|
+
updateSchema: effect_1.Schema.Any,
|
|
77
|
+
});
|
|
78
|
+
/**
|
|
79
|
+
* Extract and validate column type schemas from AST annotations
|
|
80
|
+
* Returns null if not a column type or validation fails
|
|
81
|
+
*/
|
|
82
|
+
function getColumnTypeSchemas(ast) {
|
|
83
|
+
if (!(exports.ColumnTypeId in ast.annotations)) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
const annotation = ast.annotations[exports.ColumnTypeId];
|
|
87
|
+
const decoded = effect_1.Schema.decodeUnknownOption(ColumnTypeSchemasValidator)(annotation);
|
|
88
|
+
if (decoded._tag === 'None') {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
// The decoded value has the correct structure, and the annotation
|
|
92
|
+
// was created by columnType() which ensures proper Schema types
|
|
93
|
+
return annotation;
|
|
94
|
+
}
|
|
95
|
+
const isGeneratedType = (ast) => exports.GeneratedId in ast.annotations;
|
|
96
|
+
const isOptionalType = (ast) => {
|
|
97
|
+
// Check for Union(T, Undefined) pattern
|
|
98
|
+
if (!AST.isUnion(ast)) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
return (ast.types.some((t) => AST.isUndefinedKeyword(t)) ||
|
|
102
|
+
ast.types.some((t) => isNullType(t)));
|
|
103
|
+
};
|
|
104
|
+
const isNullType = (ast) => AST.isLiteral(ast) &&
|
|
105
|
+
Object.entries(ast.annotations).find(([sym, value]) => sym === AST.IdentifierAnnotationId.toString() && value === 'null');
|
|
106
|
+
const extractParametersFromTypeLiteral = (ast, schemaType) => {
|
|
107
|
+
return ast.propertySignatures
|
|
108
|
+
.map((prop) => {
|
|
109
|
+
const columnSchemas = getColumnTypeSchemas(prop.type);
|
|
110
|
+
if (columnSchemas !== null) {
|
|
111
|
+
return new AST.PropertySignature(prop.name, columnSchemas[schemaType].ast, prop.isOptional, prop.isReadonly, prop.annotations);
|
|
112
|
+
}
|
|
113
|
+
// Generated fields are just markers now, return as-is
|
|
114
|
+
return prop;
|
|
115
|
+
})
|
|
116
|
+
.filter((prop) => prop.type._tag !== 'NeverKeyword');
|
|
117
|
+
};
|
|
118
|
+
// ============================================================================
|
|
119
|
+
// Schema Functions
|
|
120
|
+
// ============================================================================
|
|
70
121
|
/**
|
|
71
122
|
* Create selectable schema from base schema
|
|
72
123
|
*/
|
|
@@ -90,9 +141,9 @@ const insertable = (schema) => {
|
|
|
90
141
|
// Extract and filter out generated fields entirely
|
|
91
142
|
const extracted = ast.propertySignatures
|
|
92
143
|
.map((prop) => {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return new AST.PropertySignature(prop.name,
|
|
144
|
+
const columnSchemas = getColumnTypeSchemas(prop.type);
|
|
145
|
+
if (columnSchemas !== null) {
|
|
146
|
+
return new AST.PropertySignature(prop.name, columnSchemas.insertSchema.ast, prop.isOptional, prop.isReadonly, prop.annotations);
|
|
96
147
|
}
|
|
97
148
|
// For generated fields, mark them for filtering
|
|
98
149
|
if (isGeneratedType(prop.type)) {
|
|
@@ -136,28 +187,4 @@ const getSchemas = (baseSchema) => ({
|
|
|
136
187
|
Updateable: (0, exports.updateable)(baseSchema),
|
|
137
188
|
});
|
|
138
189
|
exports.getSchemas = getSchemas;
|
|
139
|
-
const extractParametersFromTypeLiteral = (ast, schemaType) => {
|
|
140
|
-
return ast.propertySignatures
|
|
141
|
-
.map((prop) => {
|
|
142
|
-
if (isColumnType(prop.type)) {
|
|
143
|
-
const schemas = prop.type.annotations[exports.ColumnTypeId];
|
|
144
|
-
return new AST.PropertySignature(prop.name, schemas[schemaType].ast, prop.isOptional, prop.isReadonly, prop.annotations);
|
|
145
|
-
}
|
|
146
|
-
// Generated fields are just markers now, return as-is
|
|
147
|
-
return prop;
|
|
148
|
-
})
|
|
149
|
-
.filter((prop) => prop.type._tag !== 'NeverKeyword');
|
|
150
|
-
};
|
|
151
|
-
const isColumnType = (ast) => exports.ColumnTypeId in ast.annotations;
|
|
152
|
-
const isGeneratedType = (ast) => exports.GeneratedId in ast.annotations;
|
|
153
|
-
const isOptionalType = (ast) => {
|
|
154
|
-
// Check for Union(T, Undefined) pattern
|
|
155
|
-
if (!AST.isUnion(ast)) {
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
return (ast.types.some((t) => AST.isUndefinedKeyword(t)) ||
|
|
159
|
-
ast.types.some((t) => isNullType(t)));
|
|
160
|
-
};
|
|
161
|
-
const isNullType = (ast) => AST.isLiteral(ast) &&
|
|
162
|
-
Object.entries(ast.annotations).find(([sym, value]) => sym === AST.IdentifierAnnotationId.toString() && value === 'null');
|
|
163
190
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/kysely/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AACxC,mCAAgC;AAGhC;;;GAGG;AAEU,QAAA,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC3C,QAAA,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAQtD;;;GAGG;AACI,MAAM,UAAU,GAAG,CACxB,YAAgD,EAChD,YAAgD,EAChD,YAAgD,EACZ,EAAE;IACtC,MAAM,OAAO,GACX;QACE,YAAY;QACZ,YAAY;QACZ,YAAY;KACb,CAAC;IACJ,OAAO,eAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,oBAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC;AAZW,QAAA,UAAU,cAYrB;AAEF;;;;;;;GAOG;AACI,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/kysely/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AACxC,mCAAgC;AAGhC;;;GAGG;AAEU,QAAA,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC3C,QAAA,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAQtD;;;GAGG;AACI,MAAM,UAAU,GAAG,CACxB,YAAgD,EAChD,YAAgD,EAChD,YAAgD,EACZ,EAAE;IACtC,MAAM,OAAO,GACX;QACE,YAAY;QACZ,YAAY;QACZ,YAAY;KACb,CAAC;IACJ,OAAO,eAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,oBAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC;AAZW,QAAA,UAAU,cAYrB;AAEF;;;;;;;GAOG;AACI,MAAM,SAAS,GAAG,CAAqB,MAAyC,EAAE,EAAE;IACzF,OAAO,eAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,mBAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB;AAkBF;;GAEG;AACH,MAAM,0BAA0B,GAAG,eAAM,CAAC,MAAM,CAAC;IAC/C,YAAY,EAAE,eAAM,CAAC,GAAG;IACxB,YAAY,EAAE,eAAM,CAAC,GAAG;IACxB,YAAY,EAAE,eAAM,CAAC,GAAG;CACzB,CAAC,CAAC;AAEH;;;GAGG;AACH,SAAS,oBAAoB,CAAC,GAAY;IACxC,IAAI,CAAC,CAAC,oBAAY,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,oBAAY,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,eAAM,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,CAAC,UAAU,CAAC,CAAC;IAEnF,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kEAAkE;IAClE,gEAAgE;IAChE,OAAO,UAAkC,CAAC;AAC5C,CAAC;AAED,MAAM,eAAe,GAAG,CAAC,GAAY,EAAW,EAAE,CAAC,mBAAW,IAAI,GAAG,CAAC,WAAW,CAAC;AAElF,MAAM,cAAc,GAAG,CAAC,GAAY,EAAW,EAAE;IAC/C,wCAAwC;IACxC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACzD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,EAAE,CAClC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC;IAClB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAClC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,KAAK,KAAK,MAAM,CACpF,CAAC;AAEJ,MAAM,gCAAgC,GAAG,CACvC,GAAoB,EACpB,UAAsC,EACtC,EAAE;IACF,OAAO,GAAG,CAAC,kBAAkB;SAC1B,GAAG,CAAC,CAAC,IAA2B,EAAE,EAAE;QACnC,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,IAAI,GAAG,CAAC,iBAAiB,CAC9B,IAAI,CAAC,IAAI,EACT,aAAa,CAAC,UAAU,CAAC,CAAC,GAAG,EAC7B,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,CACjB,CAAC;QACJ,CAAC;QACD,sDAAsD;QACtD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAA2B,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;AAChF,CAAC,CAAC;AAEF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACI,MAAM,UAAU,GAAG,CAAgB,MAAoC,EAAE,EAAE;IAChF,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,eAAM,CAAC,QAAQ,CAAC,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAItC,CAAC;IACJ,CAAC;IACD,OAAO,eAAM,CAAC,QAAQ,CACpB,eAAM,CAAC,IAAI,CACT,IAAI,GAAG,CAAC,WAAW,CACjB,gCAAgC,CAAC,GAAG,EAAE,cAAc,CAAC,EACrD,GAAG,CAAC,eAAe,EACnB,GAAG,CAAC,WAAW,CAChB,CACF,CAC6D,CAAC;AACnE,CAAC,CAAC;AAlBW,QAAA,UAAU,cAkBrB;AAEF;;;GAGG;AACI,MAAM,UAAU,GAAG,CACxB,MAAoC,EACyB,EAAE;IAC/D,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,eAAM,CAAC,QAAQ,CAAC,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAItC,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,MAAM,SAAS,GAAG,GAAG,CAAC,kBAAkB;SACrC,GAAG,CAAC,CAAC,IAA2B,EAAgC,EAAE;QACjE,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,IAAI,GAAG,CAAC,iBAAiB,CAC9B,IAAI,CAAC,IAAI,EACT,aAAa,CAAC,YAAY,CAAC,GAAG,EAC9B,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,CACjB,CAAC;QACJ,CAAC;QACD,gDAAgD;QAChD,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,CAAC,uBAAuB;QACtC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAiC,EAAE;QAC9C,qDAAqD;QACrD,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;IAC5D,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,IAAI,EAAyB,EAAE;QACnC,2CAA2C;QAC3C,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,OAAO,IAAI,GAAG,CAAC,iBAAiB,CAC9B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,EACT,UAAU,EACV,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACjF,OAAO,eAAM,CAAC,QAAQ,CAAC,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAItC,CAAC;AACJ,CAAC,CAAC;AAtDW,QAAA,UAAU,cAsDrB;AAEF;;GAEG;AACI,MAAM,UAAU,GAAG,CAAgB,MAAoC,EAAE,EAAE;IAChF,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,eAAM,CAAC,QAAQ,CAAC,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAItC,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,gCAAgC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAExE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAC7B,SAAS,CAAC,GAAG,CACX,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,GAAG,CAAC,iBAAiB,CACvB,IAAI,CAAC,IAAI,EACT,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,EACvD,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,CACjB,CACJ,EACD,GAAG,CAAC,eAAe,EACnB,GAAG,CAAC,WAAW,CAChB,CAAC;IAEF,OAAO,eAAM,CAAC,QAAQ,CAAC,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAItC,CAAC;AACJ,CAAC,CAAC;AAhCW,QAAA,UAAU,cAgCrB;AAQF;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAgB,UAAwC,EAAE,EAAE,CAAC,CAAC;IACtF,UAAU,EAAE,IAAA,kBAAU,EAAC,UAAU,CAAC;IAClC,UAAU,EAAE,IAAA,kBAAU,EAAC,UAAU,CAAC;IAClC,UAAU,EAAE,IAAA,kBAAU,EAAC,UAAU,CAAC;CACnC,CAAC,CAAC;AAJU,QAAA,UAAU,cAIpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/kysely/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAEhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAE/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAOtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAMrE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAQ5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/kysely/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAEhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,WAE/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAOtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAMrE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,UAQ5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,UA0BxE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAY5E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,UAe7E;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,EAC7B,IAAI,EAAE,IAAI,CAAC,QAAQ,GAClB,MAAM,CAcR;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,UAIzD;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,aAAa,UAGzE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,EAC7B,UAAU,GAAE,aAAa,EAAO,UAajC"}
|