prisma-effect-kysely 2.0.0 → 2.0.2
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/CHANGELOG.md +12 -0
- package/dist/effect/generator.d.ts +2 -2
- package/dist/effect/generator.d.ts.map +1 -1
- package/dist/effect/generator.js +13 -4
- package/dist/effect/generator.js.map +1 -1
- package/dist/kysely/helpers.d.ts +8 -4
- package/dist/kysely/helpers.d.ts.map +1 -1
- package/dist/kysely/helpers.js +23 -29
- package/dist/kysely/helpers.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Fix the 2.0.1 release so TypeScript sees mutable arrays on insert/update schemas and userland insert types omit generated fields.
|
|
8
|
+
|
|
9
|
+
## 2.0.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`a54e7ff`](https://github.com/samuelho-dev/prisma-effect-kysely/commit/a54e7ff6b701f37be911e4f798c1aabb76d3a2fb) Thanks [@samuelho-dev](https://github.com/samuelho-dev)! - Fix mutable array types for Kysely insert/update operations. Schema.Array(...) now produces mutable T[] instead of readonly T[] for Insertable and Updateable schemas.
|
|
14
|
+
|
|
3
15
|
## 2.0.0
|
|
4
16
|
|
|
5
17
|
### Major Changes
|
|
@@ -21,9 +21,9 @@ export declare class EffectGenerator {
|
|
|
21
21
|
/**
|
|
22
22
|
* Generate TypeScript type exports
|
|
23
23
|
*
|
|
24
|
-
*
|
|
24
|
+
* Insert types omit generated fields so TS matches runtime schema filtering
|
|
25
25
|
*/
|
|
26
|
-
generateTypeExports(model: DMMF.Model,
|
|
26
|
+
generateTypeExports(model: DMMF.Model, fields: readonly DMMF.Field[]): string;
|
|
27
27
|
/**
|
|
28
28
|
* Generate complete model schema (base + operational + types)
|
|
29
29
|
*/
|
|
@@ -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;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQ3D;;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,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IA2BpE;;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
|
@@ -3,6 +3,7 @@ import { toPascalCase } from '../utils/naming.js';
|
|
|
3
3
|
import { generateEnumsFile } from './enum.js';
|
|
4
4
|
import { generateJoinTableKyselyInterface, generateJoinTableSchema } from './join-table.js';
|
|
5
5
|
import { buildFieldType } from './type.js';
|
|
6
|
+
import { needsGenerated } from '../kysely/type.js';
|
|
6
7
|
/**
|
|
7
8
|
* Effect domain generator - orchestrates Effect Schema generation
|
|
8
9
|
*/
|
|
@@ -44,17 +45,25 @@ ${fieldDefinitions}
|
|
|
44
45
|
/**
|
|
45
46
|
* Generate TypeScript type exports
|
|
46
47
|
*
|
|
47
|
-
*
|
|
48
|
+
* Insert types omit generated fields so TS matches runtime schema filtering
|
|
48
49
|
*/
|
|
49
|
-
generateTypeExports(model,
|
|
50
|
+
generateTypeExports(model, fields) {
|
|
50
51
|
const name = toPascalCase(model.name);
|
|
52
|
+
const generatedFieldNames = fields.filter(needsGenerated).map((field) => `"${field.name}"`);
|
|
53
|
+
const generatedFieldsUnion = generatedFieldNames.join(' | ');
|
|
54
|
+
const insertType = generatedFieldNames.length > 0
|
|
55
|
+
? `Omit<Schema.Schema.Type<typeof ${name}.Insertable>, ${generatedFieldsUnion}>`
|
|
56
|
+
: `Schema.Schema.Type<typeof ${name}.Insertable>`;
|
|
57
|
+
const insertEncodedType = generatedFieldNames.length > 0
|
|
58
|
+
? `Omit<Schema.Schema.Encoded<typeof ${name}.Insertable>, ${generatedFieldsUnion}>`
|
|
59
|
+
: `Schema.Schema.Encoded<typeof ${name}.Insertable>`;
|
|
51
60
|
// Application-side types (decoded - for repository layer)
|
|
52
61
|
const applicationTypes = `export type ${name}Select = Schema.Schema.Type<typeof ${name}.Selectable>;
|
|
53
|
-
export type ${name}Insert =
|
|
62
|
+
export type ${name}Insert = ${insertType};
|
|
54
63
|
export type ${name}Update = Schema.Schema.Type<typeof ${name}.Updateable>;`;
|
|
55
64
|
// Database-side encoded types (for queries layer)
|
|
56
65
|
const encodedTypes = `export type ${name}SelectEncoded = Schema.Schema.Encoded<typeof ${name}.Selectable>;
|
|
57
|
-
export type ${name}InsertEncoded =
|
|
66
|
+
export type ${name}InsertEncoded = ${insertEncodedType};
|
|
58
67
|
export type ${name}UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateable>;`;
|
|
59
68
|
return `${applicationTypes}\n${encodedTypes}`;
|
|
60
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,gCAAgC,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/kysely/helpers.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
2
|
import type { Insertable, Selectable, Updateable } from 'kysely';
|
|
3
|
+
import type { DeepMutable } from 'effect/Types';
|
|
3
4
|
/**
|
|
4
5
|
* Runtime helpers for Kysely schema integration
|
|
5
6
|
* These are imported by generated code
|
|
@@ -23,20 +24,22 @@ export declare const generated: <SType, SEncoded, R>(schema: Schema.Schema<SType
|
|
|
23
24
|
/**
|
|
24
25
|
* Create selectable schema from base schema
|
|
25
26
|
*/
|
|
27
|
+
type MutableInsert<Type> = DeepMutable<Insertable<Type>>;
|
|
28
|
+
type MutableUpdate<Type> = DeepMutable<Updateable<Type>>;
|
|
26
29
|
export declare const selectable: <Type, Encoded>(schema: Schema.Schema<Type, Encoded>) => Schema.Schema<Selectable<Type>, Selectable<Encoded>, never>;
|
|
27
30
|
/**
|
|
28
31
|
* Create insertable schema from base schema
|
|
29
32
|
* Filters out generated fields (@effect/sql Model.Generated pattern)
|
|
30
33
|
*/
|
|
31
|
-
export declare const insertable: <Type, Encoded>(schema: Schema.Schema<Type, Encoded>) => Schema.Schema<
|
|
34
|
+
export declare const insertable: <Type, Encoded>(schema: Schema.Schema<Type, Encoded>) => Schema.Schema<MutableInsert<Type>, MutableInsert<Encoded>, never>;
|
|
32
35
|
/**
|
|
33
36
|
* Create updateable schema from base schema
|
|
34
37
|
*/
|
|
35
|
-
export declare const updateable: <Type, Encoded>(schema: Schema.Schema<Type, Encoded>) => Schema.Schema<
|
|
38
|
+
export declare const updateable: <Type, Encoded>(schema: Schema.Schema<Type, Encoded>) => Schema.Schema<MutableUpdate<Type>, MutableUpdate<Encoded>, never>;
|
|
36
39
|
export interface Schemas<Type, Encoded> {
|
|
37
40
|
Selectable: Schema.Schema<Selectable<Type>, Selectable<Encoded>, never>;
|
|
38
|
-
Insertable: Schema.Schema<
|
|
39
|
-
Updateable: Schema.Schema<
|
|
41
|
+
Insertable: Schema.Schema<MutableInsert<Type>, MutableInsert<Encoded>, never>;
|
|
42
|
+
Updateable: Schema.Schema<MutableUpdate<Type>, MutableUpdate<Encoded>, never>;
|
|
40
43
|
}
|
|
41
44
|
/**
|
|
42
45
|
* Generate all operational schemas (Selectable/Insertable/Updateable) from base schema
|
|
@@ -48,4 +51,5 @@ export interface GetTypes<T extends Schemas<unknown, unknown>> {
|
|
|
48
51
|
Insertable: Schema.Schema.Type<T['Insertable']>;
|
|
49
52
|
Updateable: Schema.Schema.Type<T['Updateable']>;
|
|
50
53
|
}
|
|
54
|
+
export {};
|
|
51
55
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/kysely/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/kysely/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/kysely/helpers.js
CHANGED
|
@@ -70,19 +70,23 @@ const extractParametersFromTypeLiteral = (ast, schemaType) => {
|
|
|
70
70
|
.map((prop) => {
|
|
71
71
|
const columnSchemas = getColumnTypeSchemas(prop.type);
|
|
72
72
|
if (columnSchemas !== null) {
|
|
73
|
-
|
|
73
|
+
// Use Schema.mutable() for insert/update schema to make arrays mutable
|
|
74
|
+
// Kysely expects mutable T[] for insert/update operations
|
|
75
|
+
const shouldBeMutable = schemaType === 'updateSchema' || schemaType === 'insertSchema';
|
|
76
|
+
return new AST.PropertySignature(prop.name, shouldBeMutable
|
|
77
|
+
? Schema.mutable(columnSchemas[schemaType]).ast
|
|
78
|
+
: columnSchemas[schemaType].ast, prop.isOptional, prop.isReadonly, prop.annotations);
|
|
79
|
+
}
|
|
80
|
+
// Apply Schema.mutable() to regular fields for insert/updateSchema to make arrays mutable
|
|
81
|
+
// Safe for all types - no-op for non-arrays
|
|
82
|
+
if (schemaType === 'updateSchema' || schemaType === 'insertSchema') {
|
|
83
|
+
return new AST.PropertySignature(prop.name, Schema.mutable(Schema.make(prop.type)).ast, prop.isOptional, prop.isReadonly, prop.annotations);
|
|
74
84
|
}
|
|
75
85
|
// Generated fields are just markers now, return as-is
|
|
76
86
|
return prop;
|
|
77
87
|
})
|
|
78
88
|
.filter((prop) => prop.type._tag !== 'NeverKeyword');
|
|
79
89
|
};
|
|
80
|
-
// ============================================================================
|
|
81
|
-
// Schema Functions
|
|
82
|
-
// ============================================================================
|
|
83
|
-
/**
|
|
84
|
-
* Create selectable schema from base schema
|
|
85
|
-
*/
|
|
86
90
|
export const selectable = (schema) => {
|
|
87
91
|
const { ast } = schema;
|
|
88
92
|
if (!AST.isTypeLiteral(ast)) {
|
|
@@ -97,32 +101,20 @@ export const selectable = (schema) => {
|
|
|
97
101
|
export const insertable = (schema) => {
|
|
98
102
|
const { ast } = schema;
|
|
99
103
|
if (!AST.isTypeLiteral(ast)) {
|
|
100
|
-
|
|
104
|
+
const baseSchema = Schema.make(ast);
|
|
105
|
+
return baseSchema;
|
|
101
106
|
}
|
|
102
107
|
// Extract and filter out generated fields entirely
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
return new AST.PropertySignature(prop.name, columnSchemas.insertSchema.ast, prop.isOptional, prop.isReadonly, prop.annotations);
|
|
108
|
-
}
|
|
109
|
-
// For generated fields, mark them for filtering
|
|
110
|
-
if (isGeneratedType(prop.type)) {
|
|
111
|
-
return null; // Will be filtered out
|
|
112
|
-
}
|
|
113
|
-
return prop;
|
|
114
|
-
})
|
|
115
|
-
.filter((prop) => {
|
|
116
|
-
// Filter out generated fields (null) and Never types
|
|
117
|
-
return prop !== null && prop.type._tag !== 'NeverKeyword';
|
|
118
|
-
})
|
|
119
|
-
.map((prop) => {
|
|
108
|
+
const nonGeneratedProps = ast.propertySignatures.filter((prop) => !isGeneratedType(prop.type));
|
|
109
|
+
const filteredAst = new AST.TypeLiteral(nonGeneratedProps, ast.indexSignatures, ast.annotations);
|
|
110
|
+
const extracted = extractParametersFromTypeLiteral(filteredAst, 'insertSchema');
|
|
111
|
+
const fields = extracted.map((prop) => {
|
|
120
112
|
// Make Union(T, Undefined) fields optional
|
|
121
113
|
const isOptional = isOptionalType(prop.type);
|
|
122
114
|
return new AST.PropertySignature(prop.name, prop.type, isOptional, prop.isReadonly, prop.annotations);
|
|
123
115
|
});
|
|
124
|
-
const
|
|
125
|
-
return
|
|
116
|
+
const insertSchema = Schema.make(new AST.TypeLiteral(fields, ast.indexSignatures, ast.annotations));
|
|
117
|
+
return insertSchema;
|
|
126
118
|
};
|
|
127
119
|
/**
|
|
128
120
|
* Create updateable schema from base schema
|
|
@@ -130,11 +122,13 @@ export const insertable = (schema) => {
|
|
|
130
122
|
export const updateable = (schema) => {
|
|
131
123
|
const { ast } = schema;
|
|
132
124
|
if (!AST.isTypeLiteral(ast)) {
|
|
133
|
-
|
|
125
|
+
const baseSchema = Schema.make(ast);
|
|
126
|
+
return baseSchema;
|
|
134
127
|
}
|
|
135
128
|
const extracted = extractParametersFromTypeLiteral(ast, 'updateSchema');
|
|
136
129
|
const res = new AST.TypeLiteral(extracted.map((prop) => new AST.PropertySignature(prop.name, AST.Union.make([prop.type, new AST.UndefinedKeyword()]), true, prop.isReadonly, prop.annotations)), ast.indexSignatures, ast.annotations);
|
|
137
|
-
|
|
130
|
+
const updateSchema = Schema.make(res);
|
|
131
|
+
return updateSchema;
|
|
138
132
|
};
|
|
139
133
|
/**
|
|
140
134
|
* Generate all operational schemas (Selectable/Insertable/Updateable) from base schema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/kysely/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/kysely/helpers.ts"],"names":[],"mappings":"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"}
|