prisma-effect-kysely 4.2.8 → 4.2.11
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 +11 -0
- package/dist/kysely/helpers.d.ts +37 -13
- package/dist/kysely/helpers.d.ts.map +1 -1
- package/dist/kysely/helpers.js +17 -1
- package/dist/kysely/helpers.js.map +1 -1
- package/package.json +19 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.2.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Fix type stripping for branded ColumnType and Generated types
|
|
8
|
+
|
|
9
|
+
The StripFieldBranding type utility now uses explicit primitive type checks instead of
|
|
10
|
+
conditional type inference with `infer`, which was unreliable for intersection types.
|
|
11
|
+
This ensures that Selectable schema types correctly resolve to plain types (string, number,
|
|
12
|
+
Date, etc.) without ColumnType/Generated branding.
|
|
13
|
+
|
|
3
14
|
## 4.2.8
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
package/dist/kysely/helpers.d.ts
CHANGED
|
@@ -32,6 +32,8 @@ export declare const GeneratedId: unique symbol;
|
|
|
32
32
|
* 2. Schema.make<KyselyColumnType<...>>(ast) doesn't work because AST represents S, not the struct
|
|
33
33
|
* 3. Our ColumnType<S,I,U> = S & Brand IS a subtype of S, so Schema.make works correctly
|
|
34
34
|
*
|
|
35
|
+
* Includes __select__ property for reliable type extraction in declaration emit.
|
|
36
|
+
*
|
|
35
37
|
* Usage is identical to Kysely's ColumnType:
|
|
36
38
|
* ```typescript
|
|
37
39
|
* type IdField = ColumnType<string, never, never>; // Read-only ID
|
|
@@ -43,6 +45,7 @@ export type ColumnType<S, I = S, U = S> = S & {
|
|
|
43
45
|
readonly __insert__: I;
|
|
44
46
|
readonly __update__: U;
|
|
45
47
|
};
|
|
48
|
+
readonly __select__: S;
|
|
46
49
|
};
|
|
47
50
|
/**
|
|
48
51
|
* Branded Generated type for database-generated fields.
|
|
@@ -51,6 +54,8 @@ export type ColumnType<S, I = S, U = S> = S & {
|
|
|
51
54
|
* - Required on select (T)
|
|
52
55
|
* - Optional on insert (T | undefined)
|
|
53
56
|
* - Allowed on update (T)
|
|
57
|
+
*
|
|
58
|
+
* Includes __select__ property for reliable type extraction in declaration emit.
|
|
54
59
|
*/
|
|
55
60
|
export type Generated<T> = T & {
|
|
56
61
|
readonly [GeneratedId]: true;
|
|
@@ -58,6 +63,7 @@ export type Generated<T> = T & {
|
|
|
58
63
|
readonly __insert__: T | undefined;
|
|
59
64
|
readonly __update__: T;
|
|
60
65
|
};
|
|
66
|
+
readonly __select__: T;
|
|
61
67
|
};
|
|
62
68
|
/**
|
|
63
69
|
* Mark a field as having different types for select/insert/update
|
|
@@ -123,14 +129,23 @@ type CustomUpdateable<T> = DeepMutable<{
|
|
|
123
129
|
type MutableInsert<Type> = CustomInsertable<Type>;
|
|
124
130
|
type MutableUpdate<Type> = CustomUpdateable<Type>;
|
|
125
131
|
/**
|
|
126
|
-
* Strip branding from a single field type
|
|
127
|
-
* Uses inference to extract the base type S from branded types.
|
|
132
|
+
* Strip branding from a single field type.
|
|
128
133
|
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
134
|
+
* Extracts the base select type from ColumnType<S,I,U> by checking for __select__ property.
|
|
135
|
+
* The branded types are defined as S & Brand, so S (the base type) extends the primitive.
|
|
136
|
+
*
|
|
137
|
+
* Note: Uses __select__ string literal key instead of unique symbol for reliable
|
|
138
|
+
* cross-module type checking in TypeScript declaration emit.
|
|
132
139
|
*/
|
|
133
|
-
type StripFieldBranding<T> = T extends
|
|
140
|
+
type StripFieldBranding<T> = T extends {
|
|
141
|
+
readonly __select__: infer S;
|
|
142
|
+
} ? S : T extends {
|
|
143
|
+
readonly [ColumnTypeId]: {
|
|
144
|
+
readonly __insert__: unknown;
|
|
145
|
+
};
|
|
146
|
+
} ? T extends string ? string : T extends number ? number : T extends boolean ? boolean : T extends Date ? Date : T extends readonly (infer E)[] ? readonly E[] : T extends (infer E)[] ? E[] : T : T extends {
|
|
147
|
+
readonly [GeneratedId]: true;
|
|
148
|
+
} ? T extends string ? string : T extends number ? number : T extends boolean ? boolean : T extends Date ? Date : T extends readonly (infer E)[] ? readonly E[] : T extends (infer E)[] ? E[] : T : T;
|
|
134
149
|
/**
|
|
135
150
|
* Strip branding from all properties in an object type.
|
|
136
151
|
* Converts ColumnType<S,I,U> to S and Generated<T> to T.
|
|
@@ -141,9 +156,13 @@ type StripBrandingFromObject<T> = {
|
|
|
141
156
|
/**
|
|
142
157
|
* Selectable type with branding stripped - used for Schema function return types.
|
|
143
158
|
* This ensures that `Schema.Type` returns plain types without ColumnType/Generated branding.
|
|
159
|
+
*
|
|
160
|
+
* Note: We apply StripBrandingFromObject directly instead of using KyselySelectable
|
|
161
|
+
* because KyselySelectable adds unnecessary complexity and our branding is already
|
|
162
|
+
* designed to extend the base type.
|
|
144
163
|
*/
|
|
145
|
-
type SelectableType<T> =
|
|
146
|
-
export declare const Selectable: <Type, Encoded>(schema: Schema.Schema<Type, Encoded>) => Schema.Schema<SelectableType<
|
|
164
|
+
type SelectableType<T> = StripBrandingFromObject<T>;
|
|
165
|
+
export declare const Selectable: <Type, Encoded>(schema: Schema.Schema<Type, Encoded>) => Schema.Schema<SelectableType<Encoded>, SelectableType<Encoded>, never>;
|
|
147
166
|
/**
|
|
148
167
|
* Create Insertable schema from base schema
|
|
149
168
|
* Filters out generated fields (@effect/sql Model.Generated pattern)
|
|
@@ -162,7 +181,7 @@ export declare const Updateable: <Type, Encoded>(schema: Schema.Schema<Type, Enc
|
|
|
162
181
|
*/
|
|
163
182
|
export interface Schemas<BaseSchema extends Schema.Schema<unknown, unknown, unknown>> {
|
|
164
183
|
readonly _base: BaseSchema;
|
|
165
|
-
readonly Selectable: Schema.Schema<SelectableType<Schema.Schema.
|
|
184
|
+
readonly Selectable: Schema.Schema<SelectableType<Schema.Schema.Encoded<BaseSchema>>, SelectableType<Schema.Schema.Encoded<BaseSchema>>, never>;
|
|
166
185
|
readonly Insertable: Schema.Schema<MutableInsert<Schema.Schema.Type<BaseSchema>>, MutableInsert<Schema.Schema.Encoded<BaseSchema>>, never>;
|
|
167
186
|
readonly Updateable: Schema.Schema<MutableUpdate<Schema.Schema.Type<BaseSchema>>, MutableUpdate<Schema.Schema.Encoded<BaseSchema>>, never>;
|
|
168
187
|
}
|
|
@@ -185,16 +204,21 @@ export declare function getSchemas<BaseSchema extends Schema.Schema<unknown, unk
|
|
|
185
204
|
/**
|
|
186
205
|
* Extract SELECT type from schema (matches Kysely's Selectable<T> pattern)
|
|
187
206
|
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
207
|
+
* Uses Schema.Encoded to get the unbranded type directly.
|
|
208
|
+
* The Selectable schema's Encoded type is already properly constructed
|
|
209
|
+
* with plain types (string, Date, number) without ColumnType/Generated branding.
|
|
210
|
+
*
|
|
211
|
+
* This ensures: Selectable<typeof User> produces plain types { id: string, ... }
|
|
190
212
|
*
|
|
191
|
-
*
|
|
213
|
+
* Note: We use Encoded instead of Type because the Selectable function
|
|
214
|
+
* already applies SelectableType to both Type and Encoded, and the Encoded
|
|
215
|
+
* side gets the clean unbranded types that match what Kysely returns.
|
|
192
216
|
*
|
|
193
217
|
* @example type UserSelect = Selectable<typeof User>
|
|
194
218
|
*/
|
|
195
219
|
export type Selectable<T extends {
|
|
196
220
|
readonly Selectable: Schema.Schema<any, any, any>;
|
|
197
|
-
}> = Schema.Schema.
|
|
221
|
+
}> = Schema.Schema.Encoded<T['Selectable']>;
|
|
198
222
|
/**
|
|
199
223
|
* Extract INSERT type from schema (matches Kysely's Insertable<T> pattern)
|
|
200
224
|
*
|
|
@@ -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,EACV,UAAU,IAAI,gBAAgB,EAC9B,UAAU,IAAI,gBAAgB,EAC9B,UAAU,IAAI,gBAAgB,EAC9B,UAAU,IAAI,gBAAgB,EAC9B,SAAS,IAAI,eAAe,EAC7B,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,CAAC;AAEF,eAAO,MAAM,YAAY,eAA8B,CAAC;AACxD,eAAO,MAAM,WAAW,eAA6B,CAAC;AAStD
|
|
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
|
@@ -94,12 +94,25 @@ const extractParametersFromTypeLiteral = (ast, schemaType) => {
|
|
|
94
94
|
const shouldBeMutable = schemaType === 'updateSchema' || schemaType === 'insertSchema';
|
|
95
95
|
return new AST.PropertySignature(prop.name, shouldBeMutable ? Schema.mutable(targetSchema).ast : targetSchema.ast, prop.isOptional, prop.isReadonly, prop.annotations);
|
|
96
96
|
}
|
|
97
|
+
// Handle Generated fields for Selectable - need to unwrap the base type
|
|
98
|
+
// Generated<T> annotates the schema but we want plain T for select
|
|
99
|
+
if (schemaType === 'selectSchema' && isGeneratedType(prop.type)) {
|
|
100
|
+
// Generated fields have the base schema stored in annotations
|
|
101
|
+
// The AST is the annotated version of the base schema, so just strip annotations
|
|
102
|
+
// Get the underlying type by removing the Generated annotation
|
|
103
|
+
const baseAst = AST.annotations(prop.type, {
|
|
104
|
+
...prop.type.annotations,
|
|
105
|
+
[GeneratedId]: undefined,
|
|
106
|
+
[ColumnTypeId]: undefined,
|
|
107
|
+
});
|
|
108
|
+
return new AST.PropertySignature(prop.name, baseAst, prop.isOptional, prop.isReadonly, prop.annotations);
|
|
109
|
+
}
|
|
97
110
|
// Apply Schema.mutable() to regular fields for insert/updateSchema to make arrays mutable
|
|
98
111
|
// Safe for all types - no-op for non-arrays
|
|
99
112
|
if (schemaType === 'updateSchema' || schemaType === 'insertSchema') {
|
|
100
113
|
return new AST.PropertySignature(prop.name, Schema.mutable(Schema.asSchema(Schema.make(prop.type))).ast, prop.isOptional, prop.isReadonly, prop.annotations);
|
|
101
114
|
}
|
|
102
|
-
//
|
|
115
|
+
// Regular fields - return as-is
|
|
103
116
|
return prop;
|
|
104
117
|
})
|
|
105
118
|
.filter((prop) => prop !== null);
|
|
@@ -108,6 +121,9 @@ const extractParametersFromTypeLiteral = (ast, schemaType) => {
|
|
|
108
121
|
// Schema Functions
|
|
109
122
|
// ============================================================================
|
|
110
123
|
export const Selectable = (schema) => {
|
|
124
|
+
// Use Encoded for both Type and Encoded to produce clean unbranded types
|
|
125
|
+
// This makes the schema an identity transformation (Type = Encoded)
|
|
126
|
+
// which matches what Kysely returns from queries
|
|
111
127
|
const { ast } = schema;
|
|
112
128
|
if (!AST.isTypeLiteral(ast)) {
|
|
113
129
|
return Schema.asSchema(Schema.make(ast));
|
|
@@ -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;AAwCxC,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/kysely/helpers.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": "4.2.
|
|
3
|
+
"version": "4.2.11",
|
|
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",
|
|
@@ -51,6 +51,23 @@
|
|
|
51
51
|
"node": ">=20.0.0",
|
|
52
52
|
"pnpm": ">=8.0.0"
|
|
53
53
|
},
|
|
54
|
+
"packageManager": "pnpm@10.0.0",
|
|
55
|
+
"scripts": {
|
|
56
|
+
"build": "tsc -p tsconfig.lib.json",
|
|
57
|
+
"prepare": "husky",
|
|
58
|
+
"test": "vitest run",
|
|
59
|
+
"test:watch": "vitest",
|
|
60
|
+
"test:coverage": "vitest run --coverage",
|
|
61
|
+
"typecheck": "tsc --noEmit -p tsconfig.lib.json",
|
|
62
|
+
"lint": "eslint .",
|
|
63
|
+
"lint:fix": "eslint . --fix",
|
|
64
|
+
"format": "prettier --write .",
|
|
65
|
+
"format:check": "prettier --check .",
|
|
66
|
+
"changeset": "changeset",
|
|
67
|
+
"changeset:version": "changeset version",
|
|
68
|
+
"changeset:publish": "changeset publish",
|
|
69
|
+
"prepublishOnly": "npm run lint && npm run typecheck && npm run test && npm run build"
|
|
70
|
+
},
|
|
54
71
|
"lint-staged": {
|
|
55
72
|
"*.ts": [
|
|
56
73
|
"eslint --fix",
|
|
@@ -93,19 +110,5 @@
|
|
|
93
110
|
"typescript": "^5.9.3",
|
|
94
111
|
"typescript-eslint": "^8.50.0",
|
|
95
112
|
"vitest": "^4.0.16"
|
|
96
|
-
},
|
|
97
|
-
"scripts": {
|
|
98
|
-
"build": "tsc -p tsconfig.lib.json",
|
|
99
|
-
"test": "vitest run",
|
|
100
|
-
"test:watch": "vitest",
|
|
101
|
-
"test:coverage": "vitest run --coverage",
|
|
102
|
-
"typecheck": "tsc --noEmit -p tsconfig.lib.json",
|
|
103
|
-
"lint": "eslint .",
|
|
104
|
-
"lint:fix": "eslint . --fix",
|
|
105
|
-
"format": "prettier --write .",
|
|
106
|
-
"format:check": "prettier --check .",
|
|
107
|
-
"changeset": "changeset",
|
|
108
|
-
"changeset:version": "changeset version",
|
|
109
|
-
"changeset:publish": "changeset publish"
|
|
110
113
|
}
|
|
111
|
-
}
|
|
114
|
+
}
|