prisma-effect-kysely 4.5.4 → 4.6.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/CHANGELOG.md +35 -0
- package/dist/kysely/helpers.d.ts +63 -33
- package/dist/kysely/helpers.d.ts.map +1 -1
- package/dist/kysely/helpers.js +11 -2
- package/dist/kysely/helpers.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- fix: Use mapped type pattern to survive TypeScript declaration emit
|
|
8
|
+
|
|
9
|
+
Previously, the `Generated<T>` type used static properties that TypeScript would inline/simplify during declaration emit (.d.ts generation). This caused the brand to be lost when consumers imported the types, making `CustomInsertable` unable to properly filter out generated fields.
|
|
10
|
+
|
|
11
|
+
This release adopts Effect's proven `Brand<K>` pattern using mapped types:
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
// Effect's Brand pattern - mapped types cannot be simplified
|
|
15
|
+
interface Brand<K> {
|
|
16
|
+
readonly [BrandTypeId]: { readonly [k in K]: K };
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Our new VariantMarker pattern
|
|
20
|
+
interface VariantMarker<I, U> {
|
|
21
|
+
readonly [VariantTypeId]: {
|
|
22
|
+
readonly [K in 'insert' | 'update']: K extends 'insert' ? I : U;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Key changes:
|
|
28
|
+
- Added `VariantMarker<I, U>` interface with mapped type that survives declaration emit
|
|
29
|
+
- Updated `Generated<T>` to use `VariantMarker<never, T>`
|
|
30
|
+
- Updated `ColumnType<S, I, U>` to use `VariantMarker<I, U>`
|
|
31
|
+
- Added `GeneratedSchema<S>` named interface for `generated()` return type (named interfaces are preserved)
|
|
32
|
+
- Updated type extractors to use `VariantMarker` for reliable type inference
|
|
33
|
+
|
|
34
|
+
This is a **breaking change** for internal type structure but **not breaking** for consumers:
|
|
35
|
+
- `Insertable<T>`, `Selectable<T>`, `Updateable<T>` work identically
|
|
36
|
+
- Generated types must be regenerated after upgrading
|
|
37
|
+
|
|
3
38
|
## 4.5.4
|
|
4
39
|
|
|
5
40
|
### Patch Changes
|
package/dist/kysely/helpers.d.ts
CHANGED
|
@@ -24,6 +24,32 @@ import type { DeepMutable } from 'effect/Types';
|
|
|
24
24
|
export type { KyselySelectable, KyselyInsertable, KyselyUpdateable, KyselyColumnType, KyselyGenerated, };
|
|
25
25
|
export declare const ColumnTypeId: unique symbol;
|
|
26
26
|
export declare const GeneratedId: unique symbol;
|
|
27
|
+
/**
|
|
28
|
+
* Symbol for VariantMarker - used in mapped type pattern that survives declaration emit.
|
|
29
|
+
*/
|
|
30
|
+
export declare const VariantTypeId: unique symbol;
|
|
31
|
+
export type VariantTypeId = typeof VariantTypeId;
|
|
32
|
+
/**
|
|
33
|
+
* Variant marker using mapped type pattern from Effect's Brand.
|
|
34
|
+
*
|
|
35
|
+
* TypeScript cannot simplify mapped types that depend on generic parameters.
|
|
36
|
+
* This ensures the variant information survives declaration emit (.d.ts generation).
|
|
37
|
+
*
|
|
38
|
+
* Pattern derived from Effect's Brand<K>:
|
|
39
|
+
* ```typescript
|
|
40
|
+
* readonly [BrandTypeId]: { readonly [k in K]: K } // Mapped type - cannot be simplified!
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* Our pattern uses a conditional type within the mapped type to encode both I and U:
|
|
44
|
+
* ```typescript
|
|
45
|
+
* readonly [VariantTypeId]: { readonly [K in "insert" | "update"]: K extends "insert" ? I : U }
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export interface VariantMarker<in out I, in out U> {
|
|
49
|
+
readonly [VariantTypeId]: {
|
|
50
|
+
readonly [K in 'insert' | 'update']: K extends 'insert' ? I : U;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
27
53
|
/**
|
|
28
54
|
* Branded ColumnType that extends S while carrying phantom insert/update type information.
|
|
29
55
|
*
|
|
@@ -32,7 +58,7 @@ export declare const GeneratedId: unique symbol;
|
|
|
32
58
|
* 2. Schema.make<KyselyColumnType<...>>(ast) doesn't work because AST represents S, not the struct
|
|
33
59
|
* 3. Our ColumnType<S,I,U> = S & Brand IS a subtype of S, so Schema.make works correctly
|
|
34
60
|
*
|
|
35
|
-
*
|
|
61
|
+
* Uses VariantMarker with mapped types to survive TypeScript declaration emit.
|
|
36
62
|
*
|
|
37
63
|
* Usage is identical to Kysely's ColumnType:
|
|
38
64
|
* ```typescript
|
|
@@ -40,13 +66,7 @@ export declare const GeneratedId: unique symbol;
|
|
|
40
66
|
* type CreatedAt = ColumnType<Date, Date | undefined, Date>; // Optional on insert
|
|
41
67
|
* ```
|
|
42
68
|
*/
|
|
43
|
-
export type ColumnType<S, I = S, U = S> = S &
|
|
44
|
-
readonly [ColumnTypeId]: {
|
|
45
|
-
readonly __insert__: I;
|
|
46
|
-
readonly __update__: U;
|
|
47
|
-
};
|
|
48
|
-
readonly __select__: S;
|
|
49
|
-
};
|
|
69
|
+
export type ColumnType<S, I = S, U = S> = S & VariantMarker<I, U>;
|
|
50
70
|
/**
|
|
51
71
|
* Branded Generated type for database-generated fields.
|
|
52
72
|
*
|
|
@@ -58,15 +78,12 @@ export type ColumnType<S, I = S, U = S> = S & {
|
|
|
58
78
|
* This matches the runtime behavior of Insertable() which filters out
|
|
59
79
|
* generated fields entirely (not optional, completely absent).
|
|
60
80
|
*
|
|
61
|
-
*
|
|
81
|
+
* Uses VariantMarker with mapped types to survive TypeScript declaration emit.
|
|
82
|
+
* The mapped type pattern `[_ in "insert"]: I` cannot be simplified by TypeScript,
|
|
83
|
+
* ensuring the brand is preserved in .d.ts files.
|
|
62
84
|
*/
|
|
63
|
-
export type Generated<T> = T & {
|
|
85
|
+
export type Generated<T> = T & VariantMarker<never, T> & {
|
|
64
86
|
readonly [GeneratedId]: true;
|
|
65
|
-
readonly [ColumnTypeId]: {
|
|
66
|
-
readonly __insert__: never;
|
|
67
|
-
readonly __update__: T;
|
|
68
|
-
};
|
|
69
|
-
readonly __select__: T;
|
|
70
87
|
};
|
|
71
88
|
/**
|
|
72
89
|
* Mark a field as having different types for select/insert/update
|
|
@@ -79,6 +96,18 @@ export type Generated<T> = T & {
|
|
|
79
96
|
* in generated code via type declarations, not via runtime type assertions.
|
|
80
97
|
*/
|
|
81
98
|
export declare const columnType: <SType, SEncoded, SR, IType, IEncoded, IR, UType, UEncoded, UR>(selectSchema: Schema.Schema<SType, SEncoded, SR>, insertSchema: Schema.Schema<IType, IEncoded, IR>, updateSchema: Schema.Schema<UType, UEncoded, UR>) => Schema.Schema<SType, SEncoded, SR>;
|
|
99
|
+
/**
|
|
100
|
+
* Interface for Generated schema - preserves type parameter in declaration emit.
|
|
101
|
+
*
|
|
102
|
+
* Named interfaces with type parameters are preserved by TypeScript in declaration files,
|
|
103
|
+
* unlike anonymous intersection types which may be simplified.
|
|
104
|
+
*
|
|
105
|
+
* This follows the Schema.brand pattern from Effect which returns a named interface.
|
|
106
|
+
*/
|
|
107
|
+
export interface GeneratedSchema<S extends Schema.Schema.All> extends Schema.Schema<Generated<Schema.Schema.Type<S>>, Generated<Schema.Schema.Encoded<S>>, Schema.Schema.Context<S>> {
|
|
108
|
+
/** The original schema before Generated wrapper */
|
|
109
|
+
readonly from: S;
|
|
110
|
+
}
|
|
82
111
|
/**
|
|
83
112
|
* Mark a field as database-generated (omitted from insert)
|
|
84
113
|
* Used for fields with @default
|
|
@@ -87,32 +116,33 @@ export declare const columnType: <SType, SEncoded, SR, IType, IEncoded, IR, UTyp
|
|
|
87
116
|
* - Present in select and update schemas
|
|
88
117
|
* - OMITTED from insert schema (not optional, completely absent)
|
|
89
118
|
*
|
|
90
|
-
* Returns
|
|
119
|
+
* Returns a GeneratedSchema<S> which:
|
|
120
|
+
* 1. Is a named interface (preserved in declaration emit)
|
|
121
|
+
* 2. Contains the Generated<T> brand using VariantMarker (mapped types survive emit)
|
|
122
|
+
* 3. Includes the original schema via `from` property
|
|
123
|
+
*
|
|
91
124
|
* This enables CustomInsertable to filter out generated fields at compile time.
|
|
92
125
|
*/
|
|
93
|
-
export declare const generated: <
|
|
126
|
+
export declare const generated: <S extends Schema.Schema.All>(schema: S) => GeneratedSchema<S>;
|
|
94
127
|
/**
|
|
95
|
-
* Extract the insert type from a field:
|
|
96
|
-
* - ColumnType<S, I, U> -> I (via
|
|
97
|
-
* - Generated<T> ->
|
|
128
|
+
* Extract the insert type from a field using VariantMarker:
|
|
129
|
+
* - ColumnType<S, I, U> -> I (via VariantMarker)
|
|
130
|
+
* - Generated<T> -> never (via VariantMarker)
|
|
98
131
|
* - Other types -> as-is
|
|
132
|
+
*
|
|
133
|
+
* Uses the mapped type in VariantMarker which survives declaration emit.
|
|
134
|
+
* TypeScript cannot simplify `[_ in "insert"]: I` so the type information is preserved.
|
|
99
135
|
*/
|
|
100
|
-
type ExtractInsertType<T> = T extends
|
|
101
|
-
readonly [ColumnTypeId]: {
|
|
102
|
-
readonly __insert__: infer I;
|
|
103
|
-
};
|
|
104
|
-
} ? I : T;
|
|
136
|
+
type ExtractInsertType<T> = T extends VariantMarker<infer I, unknown> ? I : T;
|
|
105
137
|
/**
|
|
106
|
-
* Extract the update type from a field:
|
|
107
|
-
* - ColumnType<S, I, U> -> U (via
|
|
108
|
-
* - Generated<T> -> T (via
|
|
138
|
+
* Extract the update type from a field using VariantMarker:
|
|
139
|
+
* - ColumnType<S, I, U> -> U (via VariantMarker)
|
|
140
|
+
* - Generated<T> -> T (via VariantMarker)
|
|
109
141
|
* - Other types -> as-is
|
|
142
|
+
*
|
|
143
|
+
* Uses the mapped type in VariantMarker which survives declaration emit.
|
|
110
144
|
*/
|
|
111
|
-
type ExtractUpdateType<T> = T extends
|
|
112
|
-
readonly [ColumnTypeId]: {
|
|
113
|
-
readonly __update__: infer U;
|
|
114
|
-
};
|
|
115
|
-
} ? U : T;
|
|
145
|
+
type ExtractUpdateType<T> = T extends VariantMarker<unknown, infer U> ? U : T;
|
|
116
146
|
/**
|
|
117
147
|
* Custom Insertable type that properly omits fields with `never` insert types.
|
|
118
148
|
* This handles ColumnType<S, never, U> fields (read-only ID fields).
|
|
@@ -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;
|
|
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
|
@@ -2,6 +2,10 @@ import { Schema } from 'effect';
|
|
|
2
2
|
import * as AST from 'effect/SchemaAST';
|
|
3
3
|
export const ColumnTypeId = Symbol.for('/ColumnTypeId');
|
|
4
4
|
export const GeneratedId = Symbol.for('/GeneratedId');
|
|
5
|
+
/**
|
|
6
|
+
* Symbol for VariantMarker - used in mapped type pattern that survives declaration emit.
|
|
7
|
+
*/
|
|
8
|
+
export const VariantTypeId = Symbol.for('prisma-effect-kysely/VariantType');
|
|
5
9
|
/**
|
|
6
10
|
* Mark a field as having different types for select/insert/update
|
|
7
11
|
* Used for ID fields with @default (read-only)
|
|
@@ -29,14 +33,19 @@ export const columnType = (selectSchema, insertSchema, updateSchema) => {
|
|
|
29
33
|
* - Present in select and update schemas
|
|
30
34
|
* - OMITTED from insert schema (not optional, completely absent)
|
|
31
35
|
*
|
|
32
|
-
* Returns
|
|
36
|
+
* Returns a GeneratedSchema<S> which:
|
|
37
|
+
* 1. Is a named interface (preserved in declaration emit)
|
|
38
|
+
* 2. Contains the Generated<T> brand using VariantMarker (mapped types survive emit)
|
|
39
|
+
* 3. Includes the original schema via `from` property
|
|
40
|
+
*
|
|
33
41
|
* This enables CustomInsertable to filter out generated fields at compile time.
|
|
34
42
|
*/
|
|
35
43
|
export const generated = (schema) => {
|
|
36
44
|
// Return annotated schema with Generated brand at type level
|
|
37
45
|
// The runtime annotation enables filtering in Insertable() function
|
|
38
46
|
// The type-level brand enables filtering in CustomInsertable type utility
|
|
39
|
-
|
|
47
|
+
const annotated = schema.annotations({ [GeneratedId]: true });
|
|
48
|
+
return Object.assign(annotated, { from: schema });
|
|
40
49
|
};
|
|
41
50
|
/**
|
|
42
51
|
* Schema for validating column type annotations structure
|
|
@@ -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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"}
|