prisma-effect-kysely 1.10.0 → 1.11.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/generator.d.ts +4 -0
- package/dist/effect/generator.d.ts.map +1 -1
- package/dist/effect/generator.js +7 -0
- package/dist/effect/generator.js.map +1 -1
- package/dist/effect/join-table.d.ts +4 -0
- package/dist/effect/join-table.d.ts.map +1 -1
- package/dist/effect/join-table.js +16 -0
- package/dist/effect/join-table.js.map +1 -1
- package/dist/generator/orchestrator.d.ts.map +1 -1
- package/dist/generator/orchestrator.js +15 -5
- package/dist/generator/orchestrator.js.map +1 -1
- package/dist/kysely/generator.d.ts +4 -0
- package/dist/kysely/generator.d.ts.map +1 -1
- package/dist/kysely/generator.js +6 -0
- package/dist/kysely/generator.js.map +1 -1
- package/dist/kysely/type.d.ts +19 -2
- package/dist/kysely/type.d.ts.map +1 -1
- package/dist/kysely/type.js +82 -4
- package/dist/kysely/type.js.map +1 -1
- package/package.json +16 -13
|
@@ -38,5 +38,9 @@ export declare class EffectGenerator {
|
|
|
38
38
|
* Generate schemas for all join tables
|
|
39
39
|
*/
|
|
40
40
|
generateJoinTableSchemas(joinTables: JoinTableInfo[]): string;
|
|
41
|
+
/**
|
|
42
|
+
* Generate Kysely table interfaces for join tables
|
|
43
|
+
*/
|
|
44
|
+
generateJoinTableKyselyInterfaces(joinTables: JoinTableInfo[]): string;
|
|
41
45
|
}
|
|
42
46
|
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAMrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,CAAC,QAAQ;IAEhD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE;IAIlD;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAgBnE;;OAEG;IACH,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAO5C;;;;OAIG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAgBrE;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;IAQ3D;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAMrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI,CAAC,QAAQ;IAEhD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE;IAIlD;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAgBnE;;OAEG;IACH,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAO5C;;;;OAIG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAgBrE;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;IAQ3D;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,OAAO;IA0BrC;;OAEG;IACH,wBAAwB,CAAC,UAAU,EAAE,aAAa,EAAE;IAIpD;;OAEG;IACH,iCAAiC,CAAC,UAAU,EAAE,aAAa,EAAE;CAG9D"}
|
package/dist/effect/generator.js
CHANGED
|
@@ -78,6 +78,7 @@ export type ${name}UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateab
|
|
|
78
78
|
const header = (0, codegen_1.generateFileHeader)();
|
|
79
79
|
const imports = [
|
|
80
80
|
`import { Schema } from "effect";`,
|
|
81
|
+
`import type { ColumnType } from "kysely";`,
|
|
81
82
|
`import { columnType, generated, getSchemas } from "prisma-effect-kysely";`,
|
|
82
83
|
];
|
|
83
84
|
if (hasEnums) {
|
|
@@ -100,6 +101,12 @@ export type ${name}UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateab
|
|
|
100
101
|
generateJoinTableSchemas(joinTables) {
|
|
101
102
|
return joinTables.map((jt) => (0, join_table_1.generateJoinTableSchema)(jt, this.dmmf)).join('\n\n');
|
|
102
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Generate Kysely table interfaces for join tables
|
|
106
|
+
*/
|
|
107
|
+
generateJoinTableKyselyInterfaces(joinTables) {
|
|
108
|
+
return joinTables.map(join_table_1.generateJoinTableKyselyInterface).join('\n\n');
|
|
109
|
+
}
|
|
103
110
|
}
|
|
104
111
|
exports.EffectGenerator = EffectGenerator;
|
|
105
112
|
//# sourceMappingURL=generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":";;;AACA,iCAA2C;AAC3C,iCAAwC;AACxC,4CAA+C;AAC/C,8CAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { DMMF } from '@prisma/generator-helper';
|
|
2
2
|
import type { JoinTableInfo } from '../prisma/relation';
|
|
3
|
+
/**
|
|
4
|
+
* Generate Kysely table interface for a join table
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateJoinTableKyselyInterface(joinTable: JoinTableInfo): string;
|
|
3
7
|
/**
|
|
4
8
|
* Generate Effect Schema for an implicit many-to-many join table
|
|
5
9
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join-table.d.ts","sourceRoot":"","sources":["../../src/effect/join-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"join-table.d.ts","sourceRoot":"","sources":["../../src/effect/join-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CAcjF;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAgD9F"}
|
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateJoinTableKyselyInterface = generateJoinTableKyselyInterface;
|
|
3
4
|
exports.generateJoinTableSchema = generateJoinTableSchema;
|
|
4
5
|
const naming_1 = require("../utils/naming");
|
|
6
|
+
/**
|
|
7
|
+
* Generate Kysely table interface for a join table
|
|
8
|
+
*/
|
|
9
|
+
function generateJoinTableKyselyInterface(joinTable) {
|
|
10
|
+
const { relationName, modelA, modelB, columnAIsUuid, columnBIsUuid } = joinTable;
|
|
11
|
+
const modelAField = (0, naming_1.toSnakeCase)(modelA);
|
|
12
|
+
const modelBField = (0, naming_1.toSnakeCase)(modelB);
|
|
13
|
+
const aType = columnAIsUuid ? 'string' : 'number';
|
|
14
|
+
const bType = columnBIsUuid ? 'string' : 'number';
|
|
15
|
+
return `// Kysely table interface for ${relationName}
|
|
16
|
+
export interface ${relationName}Table {
|
|
17
|
+
${modelAField}: ColumnType<${aType}, never, never>;
|
|
18
|
+
${modelBField}: ColumnType<${bType}, never, never>;
|
|
19
|
+
}`;
|
|
20
|
+
}
|
|
5
21
|
/**
|
|
6
22
|
* Map join table column type to Effect Schema type
|
|
7
23
|
* Uses same mapping as regular fields
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join-table.js","sourceRoot":"","sources":["../../src/effect/join-table.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"join-table.js","sourceRoot":"","sources":["../../src/effect/join-table.ts"],"names":[],"mappings":";;AAOA,4EAcC;AAkCD,0DAgDC;AArGD,4CAA8C;AAE9C;;GAEG;AACH,SAAgB,gCAAgC,CAAC,SAAwB;IACvE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAEjF,MAAM,WAAW,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClD,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAElD,OAAO,iCAAiC,YAAY;mBACnC,YAAY;IAC3B,WAAW,gBAAgB,KAAK;IAChC,WAAW,gBAAgB,KAAK;EAClC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,UAAkB,EAAE,MAAe;IACxD,IAAI,UAAU,KAAK,QAAQ,IAAI,MAAM,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,SAAS,GAA2B;QACxC,MAAM,EAAE,eAAe;QACvB,GAAG,EAAE,eAAe;QACpB,MAAM,EAAE,eAAe;KACxB,CAAC;IAEF,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,uBAAuB,CAAC,SAAwB,EAAE,KAAoB;IACpF,MAAM,EACJ,SAAS,EACT,YAAY,EACZ,MAAM,EACN,MAAM,EACN,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,GACd,GAAG,SAAS,CAAC;IAEd,0CAA0C;IAC1C,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEhE,4DAA4D;IAC5D,MAAM,WAAW,GAAG,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,KAAK,CAAC;IAChD,MAAM,WAAW,GAAG,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,KAAK,CAAC;IAEhD,0EAA0E;IAC1E,0FAA0F;IAC1F,MAAM,YAAY,GAAG,KAAK,WAAW,yCAAyC,aAAa,0DAA0D,CAAC;IACtJ,MAAM,YAAY,GAAG,KAAK,WAAW,yCAAyC,aAAa,0DAA0D,CAAC;IAEtJ,uBAAuB;IACvB,MAAM,UAAU,GAAG,MAAM,SAAS;0BACV,MAAM,SAAS,MAAM;wBACvB,WAAW,KAAK,WAAW;gBACnC,YAAY;EAC1B,YAAY;EACZ,YAAY;IACV,CAAC;IAEH,+BAA+B;IAC/B,MAAM,iBAAiB,GAAG,gBAAgB,YAAY,kBAAkB,YAAY,IAAI,CAAC;IAEzF,wBAAwB;IACxB,MAAM,WAAW,GAAG,eAAe,YAAY,sCAAsC,YAAY;cACrF,YAAY,sCAAsC,YAAY;cAC9D,YAAY,sCAAsC,YAAY,eAAe,CAAC;IAE1F,gCAAgC;IAChC,MAAM,cAAc,GAAG,eAAe,YAAY,gDAAgD,YAAY;cAClG,YAAY,gDAAgD,YAAY;cACxE,YAAY,gDAAgD,YAAY,eAAe,CAAC;IAEpG,OAAO,GAAG,UAAU,OAAO,iBAAiB,OAAO,WAAW,KAAK,cAAc,EAAE,CAAC;AACtF,CAAC"}
|
|
@@ -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;
|
|
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;IAwD3B;;OAEG;YACW,aAAa;IAK3B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;OAEG;IACH,OAAO,CAAC,WAAW;CAKpB"}
|
|
@@ -57,11 +57,13 @@ class GeneratorOrchestrator {
|
|
|
57
57
|
const hasEnums = this.prismaGen.getEnums().length > 0;
|
|
58
58
|
// Generate header with imports
|
|
59
59
|
const header = this.effectGen.generateTypesHeader(hasEnums);
|
|
60
|
-
// Generate all model schemas
|
|
60
|
+
// Generate all model schemas (Kysely tables + Effect schemas)
|
|
61
61
|
const modelSchemas = models
|
|
62
62
|
.map((model) => {
|
|
63
63
|
const fields = this.prismaGen.getModelFields(model);
|
|
64
64
|
const baseSchemaName = `_${model.name}`;
|
|
65
|
+
// Generate Kysely table interface
|
|
66
|
+
const kyselyTable = this.kyselyGen.generateTableInterface(model, fields);
|
|
65
67
|
// Generate base schema with Kysely fields
|
|
66
68
|
const kyselyFields = this.kyselyGen.generateModelFields(fields);
|
|
67
69
|
const baseSchema = `// ${model.name} Base Schema
|
|
@@ -71,16 +73,24 @@ ${kyselyFields}
|
|
|
71
73
|
// Generate operational schemas and type exports
|
|
72
74
|
const operationalSchema = this.effectGen.generateOperationalSchemas(model);
|
|
73
75
|
const typeExports = this.effectGen.generateTypeExports(model, fields);
|
|
74
|
-
return `${baseSchema}\n\n${operationalSchema}\n\n${typeExports}`;
|
|
76
|
+
return `${kyselyTable}\n\n${baseSchema}\n\n${operationalSchema}\n\n${typeExports}`;
|
|
75
77
|
})
|
|
76
78
|
.join('\n\n');
|
|
79
|
+
// Generate join table Kysely interfaces
|
|
80
|
+
const joinTableKyselyInterfaces = joinTables.length > 0 ? this.effectGen.generateJoinTableKyselyInterfaces(joinTables) : '';
|
|
77
81
|
// Generate join table schemas
|
|
78
82
|
const joinTableSchemas = joinTables.length > 0 ? this.effectGen.generateJoinTableSchemas(joinTables) : '';
|
|
79
83
|
// Generate DB interface with join tables
|
|
80
84
|
const dbInterface = this.kyselyGen.generateDBInterface(models, joinTables);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
// Assemble content with proper spacing
|
|
86
|
+
let content = `${header}\n\n${modelSchemas}`;
|
|
87
|
+
if (joinTableKyselyInterfaces) {
|
|
88
|
+
content += `\n\n${joinTableKyselyInterfaces}`;
|
|
89
|
+
}
|
|
90
|
+
if (joinTableSchemas) {
|
|
91
|
+
content += `\n\n${joinTableSchemas}`;
|
|
92
|
+
}
|
|
93
|
+
content += `\n\n${dbInterface}`;
|
|
84
94
|
await this.fileManager.writeFile('types.ts', content);
|
|
85
95
|
}
|
|
86
96
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":";;;AACA,wDAAoD;AACpD,mDAAsD;AACtD,mDAAsD;AACtD,mDAAsD;AAEtD;;;GAGG;AACH,MAAa,qBAAqB;IAMhC,YAAY,OAAyB;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,WAAW,GAAG,IAAI,0BAAW,CAAC,UAAU,CAAC,CAAC;QAC/C,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;;OAEG;IACK,kBAAkB,CAAC,OAAyB;QAClD,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;QAEnD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,wDAAwD;gBACtD,uDAAuD,CAC1D,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAyB;QACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvB,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;QAEtF,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,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,
|
|
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"}
|
package/dist/kysely/generator.js
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/kysely/type.d.ts
CHANGED
|
@@ -23,14 +23,31 @@ export declare function applyMapDirective(fieldType: string, field: DMMF.Field):
|
|
|
23
23
|
* Order: base type � Kysely helpers � @map wrapper
|
|
24
24
|
*/
|
|
25
25
|
export declare function buildKyselyFieldType(baseFieldType: string, field: DMMF.Field): string;
|
|
26
|
+
/**
|
|
27
|
+
* Map Prisma scalar types to plain TypeScript types (for Kysely)
|
|
28
|
+
*/
|
|
29
|
+
export declare function mapPrismaTypeToTS(field: DMMF.Field, _dmmf: DMMF.Document): string;
|
|
30
|
+
/**
|
|
31
|
+
* Generate ColumnType wrapper for a field based on Prisma metadata
|
|
32
|
+
* Returns parameters for ColumnType<SelectType, InsertType, UpdateType>
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateColumnTypeWrapper(field: DMMF.Field, baseType: string): string | null;
|
|
35
|
+
/**
|
|
36
|
+
* Generate field type for Kysely table interface
|
|
37
|
+
*/
|
|
38
|
+
export declare function generateKyselyFieldType(field: DMMF.Field, dmmf: DMMF.Document): string;
|
|
39
|
+
/**
|
|
40
|
+
* Generate Kysely table interface for a model
|
|
41
|
+
*/
|
|
42
|
+
export declare function generateKyselyTableInterface(model: DMMF.Model, fields: readonly DMMF.Field[], dmmf: DMMF.Document): string;
|
|
26
43
|
/**
|
|
27
44
|
* Generate DB interface entry for a model
|
|
28
|
-
* Uses
|
|
45
|
+
* Uses Kysely table interface for native compatibility
|
|
29
46
|
*/
|
|
30
47
|
export declare function generateDBInterfaceEntry(model: DMMF.Model): string;
|
|
31
48
|
/**
|
|
32
49
|
* Generate DB interface entry for a join table
|
|
33
|
-
* Uses
|
|
50
|
+
* Uses Kysely table interface for native compatibility
|
|
34
51
|
*/
|
|
35
52
|
export declare function generateJoinTableDBInterfaceEntry(joinTable: JoinTableInfo): string;
|
|
36
53
|
/**
|
|
@@ -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;;;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"}
|
|
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,GAAG,MAAM,CA0BjF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY5F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAetF;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"}
|
package/dist/kysely/type.js
CHANGED
|
@@ -5,6 +5,10 @@ exports.needsGenerated = needsGenerated;
|
|
|
5
5
|
exports.applyKyselyHelpers = applyKyselyHelpers;
|
|
6
6
|
exports.applyMapDirective = applyMapDirective;
|
|
7
7
|
exports.buildKyselyFieldType = buildKyselyFieldType;
|
|
8
|
+
exports.mapPrismaTypeToTS = mapPrismaTypeToTS;
|
|
9
|
+
exports.generateColumnTypeWrapper = generateColumnTypeWrapper;
|
|
10
|
+
exports.generateKyselyFieldType = generateKyselyFieldType;
|
|
11
|
+
exports.generateKyselyTableInterface = generateKyselyTableInterface;
|
|
8
12
|
exports.generateDBInterfaceEntry = generateDBInterfaceEntry;
|
|
9
13
|
exports.generateJoinTableDBInterfaceEntry = generateJoinTableDBInterfaceEntry;
|
|
10
14
|
exports.generateDBInterface = generateDBInterface;
|
|
@@ -57,22 +61,96 @@ function buildKyselyFieldType(baseFieldType, field) {
|
|
|
57
61
|
fieldType = applyMapDirective(fieldType, field);
|
|
58
62
|
return fieldType;
|
|
59
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Map Prisma scalar types to plain TypeScript types (for Kysely)
|
|
66
|
+
*/
|
|
67
|
+
function mapPrismaTypeToTS(field, _dmmf) {
|
|
68
|
+
// Handle enums
|
|
69
|
+
if (field.kind === 'enum') {
|
|
70
|
+
return field.type;
|
|
71
|
+
}
|
|
72
|
+
// UUID detection
|
|
73
|
+
if ((0, type_1.isUuidField)(field)) {
|
|
74
|
+
return 'string'; // Kysely uses string for UUIDs
|
|
75
|
+
}
|
|
76
|
+
// Standard Prisma → TS mappings
|
|
77
|
+
const typeMap = {
|
|
78
|
+
String: 'string',
|
|
79
|
+
Int: 'number',
|
|
80
|
+
Float: 'number',
|
|
81
|
+
Boolean: 'boolean',
|
|
82
|
+
DateTime: 'Date',
|
|
83
|
+
Json: 'unknown',
|
|
84
|
+
Bytes: 'Buffer',
|
|
85
|
+
Decimal: 'string',
|
|
86
|
+
BigInt: 'string', // Kysely convention
|
|
87
|
+
};
|
|
88
|
+
const baseType = typeMap[field.type] || field.type;
|
|
89
|
+
return field.isList ? `Array<${baseType}>` : baseType;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Generate ColumnType wrapper for a field based on Prisma metadata
|
|
93
|
+
* Returns parameters for ColumnType<SelectType, InsertType, UpdateType>
|
|
94
|
+
*/
|
|
95
|
+
function generateColumnTypeWrapper(field, baseType) {
|
|
96
|
+
// Read-only fields (ID with @default)
|
|
97
|
+
if ((0, type_1.hasDefaultValue)(field) && (0, type_1.isIdField)(field)) {
|
|
98
|
+
return 'never, never'; // ColumnType<T, never, never>
|
|
99
|
+
}
|
|
100
|
+
// Generated fields (@default, @updatedAt)
|
|
101
|
+
if ((0, type_1.hasDefaultValue)(field) || field.isUpdatedAt) {
|
|
102
|
+
return `${baseType} | undefined, ${baseType} | undefined`; // ColumnType<T, T?, T?>
|
|
103
|
+
}
|
|
104
|
+
return null; // Plain type, no wrapper needed
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Generate field type for Kysely table interface
|
|
108
|
+
*/
|
|
109
|
+
function generateKyselyFieldType(field, dmmf) {
|
|
110
|
+
const baseType = mapPrismaTypeToTS(field, dmmf);
|
|
111
|
+
const columnTypeParams = generateColumnTypeWrapper(field, baseType);
|
|
112
|
+
if (columnTypeParams) {
|
|
113
|
+
const [insertType, updateType] = columnTypeParams.split(', ');
|
|
114
|
+
return `ColumnType<${baseType}, ${insertType}, ${updateType}>`;
|
|
115
|
+
}
|
|
116
|
+
// Optional fields
|
|
117
|
+
if (!field.isRequired) {
|
|
118
|
+
return `${baseType} | null`;
|
|
119
|
+
}
|
|
120
|
+
return baseType;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Generate Kysely table interface for a model
|
|
124
|
+
*/
|
|
125
|
+
function generateKyselyTableInterface(model, fields, dmmf) {
|
|
126
|
+
const tableName = `${(0, naming_1.toPascalCase)(model.name)}Table`;
|
|
127
|
+
const fieldDefs = fields
|
|
128
|
+
.map((field) => {
|
|
129
|
+
const fieldType = generateKyselyFieldType(field, dmmf);
|
|
130
|
+
return ` ${field.name}: ${fieldType};`;
|
|
131
|
+
})
|
|
132
|
+
.join('\n');
|
|
133
|
+
return `// Kysely table interface for ${model.name}
|
|
134
|
+
export interface ${tableName} {
|
|
135
|
+
${fieldDefs}
|
|
136
|
+
}`;
|
|
137
|
+
}
|
|
60
138
|
/**
|
|
61
139
|
* Generate DB interface entry for a model
|
|
62
|
-
* Uses
|
|
140
|
+
* Uses Kysely table interface for native compatibility
|
|
63
141
|
*/
|
|
64
142
|
function generateDBInterfaceEntry(model) {
|
|
65
143
|
const tableName = model.dbName || model.name;
|
|
66
144
|
const pascalName = (0, naming_1.toPascalCase)(model.name);
|
|
67
|
-
return ` ${tableName}: ${pascalName}
|
|
145
|
+
return ` ${tableName}: ${pascalName}Table;`;
|
|
68
146
|
}
|
|
69
147
|
/**
|
|
70
148
|
* Generate DB interface entry for a join table
|
|
71
|
-
* Uses
|
|
149
|
+
* Uses Kysely table interface for native compatibility
|
|
72
150
|
*/
|
|
73
151
|
function generateJoinTableDBInterfaceEntry(joinTable) {
|
|
74
152
|
const { tableName, relationName } = joinTable;
|
|
75
|
-
return ` ${tableName}: ${relationName}
|
|
153
|
+
return ` ${tableName}: ${relationName}Table;`;
|
|
76
154
|
}
|
|
77
155
|
/**
|
|
78
156
|
* Generate complete DB interface including join tables
|
package/dist/kysely/type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/kysely/type.ts"],"names":[],"mappings":";;AASA,0CAEC;AAMD,wCAEC;AAKD,gDAOC;AAKD,8CAMC;AAMD,oDAQC;AAMD,4DAIC;AAMD,8EAGC;AAKD,kDAeC;
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/kysely/type.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prisma-effect-kysely",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"description": "Prisma generator that creates Effect Schema types from Prisma schema compatible with Kysely",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Samuel Ho",
|
|
@@ -47,6 +47,20 @@
|
|
|
47
47
|
"node": ">=18.0.0",
|
|
48
48
|
"pnpm": ">=8.0.0"
|
|
49
49
|
},
|
|
50
|
+
"packageManager": "pnpm@10.0.0",
|
|
51
|
+
"scripts": {
|
|
52
|
+
"build": "tsc -p tsconfig.lib.json",
|
|
53
|
+
"prepare": "husky",
|
|
54
|
+
"test": "jest",
|
|
55
|
+
"test:watch": "jest --watch",
|
|
56
|
+
"test:coverage": "jest --coverage",
|
|
57
|
+
"typecheck": "tsc --noEmit -p tsconfig.lib.json",
|
|
58
|
+
"lint": "eslint .",
|
|
59
|
+
"lint:fix": "eslint . --fix",
|
|
60
|
+
"format": "prettier --write .",
|
|
61
|
+
"format:check": "prettier --check .",
|
|
62
|
+
"prepublishOnly": "npm run lint && npm run typecheck && npm run test && npm run build"
|
|
63
|
+
},
|
|
50
64
|
"lint-staged": {
|
|
51
65
|
"*.ts": [
|
|
52
66
|
"eslint --fix",
|
|
@@ -87,16 +101,5 @@
|
|
|
87
101
|
"ts-node": "^10.9.2",
|
|
88
102
|
"typescript": "^5.9.3",
|
|
89
103
|
"typescript-eslint": "^8.47.0"
|
|
90
|
-
},
|
|
91
|
-
"scripts": {
|
|
92
|
-
"build": "tsc -p tsconfig.lib.json",
|
|
93
|
-
"test": "jest",
|
|
94
|
-
"test:watch": "jest --watch",
|
|
95
|
-
"test:coverage": "jest --coverage",
|
|
96
|
-
"typecheck": "tsc --noEmit -p tsconfig.lib.json",
|
|
97
|
-
"lint": "eslint .",
|
|
98
|
-
"lint:fix": "eslint . --fix",
|
|
99
|
-
"format": "prettier --write .",
|
|
100
|
-
"format:check": "prettier --check ."
|
|
101
104
|
}
|
|
102
|
-
}
|
|
105
|
+
}
|