prisma-effect-kysely 4.2.4 → 4.2.5
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/generator/index.js
CHANGED
|
File without changes
|
package/dist/kysely/helpers.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
|
-
import type { Insertable as KyselyInsertable, Selectable as KyselySelectable, Updateable as KyselyUpdateable } from 'kysely';
|
|
2
|
+
import type { Insertable as KyselyInsertable, Selectable as KyselySelectable, Updateable as KyselyUpdateable, ColumnType as KyselyColumnType, Generated as KyselyGenerated } from 'kysely';
|
|
3
3
|
import type { DeepMutable } from 'effect/Types';
|
|
4
4
|
/**
|
|
5
5
|
* Runtime helpers for Kysely schema integration
|
|
@@ -7,31 +7,58 @@ import type { DeepMutable } from 'effect/Types';
|
|
|
7
7
|
*
|
|
8
8
|
* ## Type Extraction Patterns
|
|
9
9
|
*
|
|
10
|
-
* For
|
|
10
|
+
* For Effect Schemas (recommended - full type safety):
|
|
11
11
|
* ```typescript
|
|
12
|
-
* import
|
|
13
|
-
* import { UserTable } from './generated/types';
|
|
14
|
-
*
|
|
15
|
-
* type UserSelect = Selectable<UserTable>; // All fields
|
|
16
|
-
* type UserInsert = Insertable<UserTable>; // Excludes ColumnType<S, never, U>
|
|
17
|
-
* type UserUpdate = Updateable<UserTable>; // Excludes ColumnType<S, I, never>
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* For Effect Schemas (runtime validation):
|
|
21
|
-
* ```typescript
|
|
22
|
-
* import { Selectable, Insertable, Updateable } from 'prisma-effect-kysely/kysely';
|
|
12
|
+
* import { Selectable, Insertable, Updateable, ColumnType, Generated } from 'prisma-effect-kysely/kysely';
|
|
23
13
|
* import { User } from './generated/types';
|
|
24
14
|
*
|
|
25
15
|
* type UserSelect = Selectable<typeof User>;
|
|
26
16
|
* type UserInsert = Insertable<typeof User>;
|
|
27
17
|
* type UserUpdate = Updateable<typeof User>;
|
|
28
18
|
* ```
|
|
19
|
+
*
|
|
20
|
+
* Note: This package exports branded versions of ColumnType and Generated that
|
|
21
|
+
* are compatible with Effect Schema's type inference. These extend the base
|
|
22
|
+
* select type (S) while carrying phantom insert/update type information.
|
|
29
23
|
*/
|
|
30
|
-
export type { KyselySelectable, KyselyInsertable, KyselyUpdateable };
|
|
24
|
+
export type { KyselySelectable, KyselyInsertable, KyselyUpdateable, KyselyColumnType, KyselyGenerated, };
|
|
31
25
|
export declare const ColumnTypeId: unique symbol;
|
|
32
26
|
export declare const GeneratedId: unique symbol;
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Branded ColumnType that extends S while carrying phantom insert/update type information.
|
|
29
|
+
*
|
|
30
|
+
* This replaces Kysely's ColumnType because:
|
|
31
|
+
* 1. Kysely's ColumnType<S,I,U> = { __select__: S, __insert__: I, __update__: U } is NOT a subtype of S
|
|
32
|
+
* 2. Schema.make<KyselyColumnType<...>>(ast) doesn't work because AST represents S, not the struct
|
|
33
|
+
* 3. Our ColumnType<S,I,U> = S & Brand IS a subtype of S, so Schema.make works correctly
|
|
34
|
+
*
|
|
35
|
+
* Usage is identical to Kysely's ColumnType:
|
|
36
|
+
* ```typescript
|
|
37
|
+
* type IdField = ColumnType<string, never, never>; // Read-only ID
|
|
38
|
+
* type CreatedAt = ColumnType<Date, Date | undefined, Date>; // Optional on insert
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export type ColumnType<S, I = S, U = S> = S & {
|
|
42
|
+
readonly [ColumnTypeId]: {
|
|
43
|
+
readonly __insert__: I;
|
|
44
|
+
readonly __update__: U;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Branded Generated type for database-generated fields.
|
|
49
|
+
*
|
|
50
|
+
* Equivalent to ColumnType<T, T | undefined, T> - the field is:
|
|
51
|
+
* - Required on select (T)
|
|
52
|
+
* - Optional on insert (T | undefined)
|
|
53
|
+
* - Allowed on update (T)
|
|
54
|
+
*/
|
|
55
|
+
export type Generated<T> = T & {
|
|
56
|
+
readonly [GeneratedId]: true;
|
|
57
|
+
readonly [ColumnTypeId]: {
|
|
58
|
+
readonly __insert__: T | undefined;
|
|
59
|
+
readonly __update__: T;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
35
62
|
/**
|
|
36
63
|
* Mark a field as having different types for select/insert/update
|
|
37
64
|
* Used for ID fields with @default (read-only)
|
|
@@ -39,8 +66,10 @@ export type { ColumnType, Generated };
|
|
|
39
66
|
* The insert/update schemas are stored in annotations and used at runtime
|
|
40
67
|
* to determine which fields to include in Insertable/Updateable schemas.
|
|
41
68
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
69
|
+
* Returns a schema with our branded ColumnType<S,I,U> that extends S, ensuring:
|
|
70
|
+
* 1. TypeScript correctly infers the return type across module boundaries
|
|
71
|
+
* 2. Runtime decode returns S values (not wrapped structs)
|
|
72
|
+
* 3. Type utilities can extract I and U from the brand
|
|
44
73
|
*/
|
|
45
74
|
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<ColumnType<SType, IType, UType>, SEncoded, SR>;
|
|
46
75
|
/**
|
|
@@ -51,23 +80,33 @@ export declare const columnType: <SType, SEncoded, SR, IType, IEncoded, IR, UTyp
|
|
|
51
80
|
* - Present in select and update schemas
|
|
52
81
|
* - OMITTED from insert schema (not optional, completely absent)
|
|
53
82
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
83
|
+
* Returns a schema with our branded Generated<T> that extends T, ensuring:
|
|
84
|
+
* 1. TypeScript correctly infers the return type across module boundaries
|
|
85
|
+
* 2. Runtime decode returns T values (not wrapped structs)
|
|
56
86
|
*/
|
|
57
87
|
export declare const generated: <SType, SEncoded, R>(schema: Schema.Schema<SType, SEncoded, R>) => Schema.Schema<Generated<SType>, SEncoded, R>;
|
|
58
88
|
/**
|
|
59
89
|
* Extract the insert type from a field:
|
|
60
|
-
* - ColumnType<S, I, U> -> I
|
|
61
|
-
* - Generated<T> -> T | undefined (
|
|
90
|
+
* - ColumnType<S, I, U> -> I (via brand)
|
|
91
|
+
* - Generated<T> -> T | undefined (via brand)
|
|
62
92
|
* - Other types -> as-is
|
|
63
93
|
*/
|
|
64
|
-
type ExtractInsertType<T> = T extends
|
|
94
|
+
type ExtractInsertType<T> = T extends {
|
|
95
|
+
readonly [ColumnTypeId]: {
|
|
96
|
+
readonly __insert__: infer I;
|
|
97
|
+
};
|
|
98
|
+
} ? I : T;
|
|
65
99
|
/**
|
|
66
100
|
* Extract the update type from a field:
|
|
67
|
-
* - ColumnType<S, I, U> -> U
|
|
101
|
+
* - ColumnType<S, I, U> -> U (via brand)
|
|
102
|
+
* - Generated<T> -> T (via brand)
|
|
68
103
|
* - Other types -> as-is
|
|
69
104
|
*/
|
|
70
|
-
type ExtractUpdateType<T> = T extends
|
|
105
|
+
type ExtractUpdateType<T> = T extends {
|
|
106
|
+
readonly [ColumnTypeId]: {
|
|
107
|
+
readonly __update__: infer U;
|
|
108
|
+
};
|
|
109
|
+
} ? U : T;
|
|
71
110
|
/**
|
|
72
111
|
* Custom Insertable type that properly omits fields with `never` insert types.
|
|
73
112
|
* This is needed because Kysely's Insertable includes never fields which makes types unusable.
|
|
@@ -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,
|
|
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
|
@@ -9,8 +9,10 @@ export const GeneratedId = Symbol.for('/GeneratedId');
|
|
|
9
9
|
* The insert/update schemas are stored in annotations and used at runtime
|
|
10
10
|
* to determine which fields to include in Insertable/Updateable schemas.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* Returns a schema with our branded ColumnType<S,I,U> that extends S, ensuring:
|
|
13
|
+
* 1. TypeScript correctly infers the return type across module boundaries
|
|
14
|
+
* 2. Runtime decode returns S values (not wrapped structs)
|
|
15
|
+
* 3. Type utilities can extract I and U from the brand
|
|
14
16
|
*/
|
|
15
17
|
export const columnType = (selectSchema, insertSchema, updateSchema) => {
|
|
16
18
|
const schemas = {
|
|
@@ -19,6 +21,8 @@ export const columnType = (selectSchema, insertSchema, updateSchema) => {
|
|
|
19
21
|
updateSchema,
|
|
20
22
|
};
|
|
21
23
|
const annotated = selectSchema.annotations({ [ColumnTypeId]: schemas });
|
|
24
|
+
// ColumnType<S,I,U> extends S, so this type assertion is valid
|
|
25
|
+
// because the runtime value IS of type S
|
|
22
26
|
return Schema.make(annotated.ast);
|
|
23
27
|
};
|
|
24
28
|
/**
|
|
@@ -29,11 +33,13 @@ 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
|
-
*
|
|
33
|
-
*
|
|
36
|
+
* Returns a schema with our branded Generated<T> that extends T, ensuring:
|
|
37
|
+
* 1. TypeScript correctly infers the return type across module boundaries
|
|
38
|
+
* 2. Runtime decode returns T values (not wrapped structs)
|
|
34
39
|
*/
|
|
35
40
|
export const generated = (schema) => {
|
|
36
41
|
const annotated = schema.annotations({ [GeneratedId]: true });
|
|
42
|
+
// Generated<T> extends T, so this type assertion is valid
|
|
37
43
|
return Schema.make(annotated.ast);
|
|
38
44
|
};
|
|
39
45
|
/**
|
|
@@ -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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"}
|