prisma-effect-kysely 2.1.0 → 3.0.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 +92 -7
- package/README.md +15 -37
- package/dist/effect/generator.d.ts +9 -11
- package/dist/effect/generator.d.ts.map +1 -1
- package/dist/effect/generator.js +38 -49
- package/dist/effect/generator.js.map +1 -1
- package/dist/effect/join-table.d.ts +1 -2
- package/dist/effect/join-table.d.ts.map +1 -1
- package/dist/effect/join-table.js +4 -12
- package/dist/effect/join-table.js.map +1 -1
- package/dist/generator/config.d.ts +0 -18
- package/dist/generator/config.d.ts.map +1 -1
- package/dist/generator/config.js +0 -22
- package/dist/generator/config.js.map +1 -1
- package/dist/generator/index.d.ts +2 -2
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +1 -2
- package/dist/generator/index.js.map +1 -1
- package/dist/generator/orchestrator.d.ts.map +1 -1
- package/dist/generator/orchestrator.js +23 -9
- package/dist/generator/orchestrator.js.map +1 -1
- package/dist/kysely/helpers.d.ts +33 -18
- package/dist/kysely/helpers.d.ts.map +1 -1
- package/dist/kysely/helpers.js +15 -19
- package/dist/kysely/helpers.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,90 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [`40a2a5e`](https://github.com/samuelho-dev/prisma-effect-kysely/commit/40a2a5ed0ec35c40cc4e4c8c58dfe34437c54050) Thanks [@samuelho-dev](https://github.com/samuelho-dev)! - **BREAKING**: Kysely-native type utility pattern
|
|
8
|
+
|
|
9
|
+
This release changes how consumers access types from generated schemas, aligning with Kysely's native patterns.
|
|
10
|
+
|
|
11
|
+
## Breaking Changes
|
|
12
|
+
|
|
13
|
+
### Removed type exports
|
|
14
|
+
|
|
15
|
+
Generated code no longer exports individual type aliases:
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// REMOVED - these no longer exist
|
|
19
|
+
export type UserSelect = ...
|
|
20
|
+
export type UserInsert = ...
|
|
21
|
+
export type UserUpdate = ...
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### New pattern: Type utilities
|
|
25
|
+
|
|
26
|
+
Import type utilities from the library and use with generated schemas:
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { Selectable, Insertable, Updateable, Id } from 'prisma-effect-kysely';
|
|
30
|
+
import { User } from './generated';
|
|
31
|
+
|
|
32
|
+
type UserRow = Selectable<typeof User>;
|
|
33
|
+
type NewUser = Insertable<typeof User>;
|
|
34
|
+
type UserPatch = Updateable<typeof User>;
|
|
35
|
+
type UserId = Id<typeof User>;
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## New Features
|
|
39
|
+
|
|
40
|
+
### Branded ID types
|
|
41
|
+
|
|
42
|
+
Each model with an `@id` field now includes a branded ID schema:
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
export const User = {
|
|
46
|
+
...getSchemas(_User),
|
|
47
|
+
Id: UserIdSchema, // Branded type: Schema.UUID.pipe(Schema.brand("UserId"))
|
|
48
|
+
} as const;
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Type utilities exported from library
|
|
52
|
+
- `Selectable<T>` - Row type for SELECT queries
|
|
53
|
+
- `Insertable<T>` - Type for INSERT operations
|
|
54
|
+
- `Updateable<T>` - Type for UPDATE operations
|
|
55
|
+
- `Id<T>` - Branded ID type
|
|
56
|
+
|
|
57
|
+
## Migration
|
|
58
|
+
|
|
59
|
+
Replace direct type imports with type utilities:
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
// Before
|
|
63
|
+
import { UserSelect, UserInsert } from './generated';
|
|
64
|
+
|
|
65
|
+
// After
|
|
66
|
+
import { Selectable, Insertable } from 'prisma-effect-kysely';
|
|
67
|
+
import { User } from './generated';
|
|
68
|
+
type UserSelect = Selectable<typeof User>;
|
|
69
|
+
type UserInsert = Insertable<typeof User>;
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Documentation
|
|
73
|
+
- Fixed README.md: DateTime correctly maps to `Schema.DateFromSelf` (not `Schema.Date`)
|
|
74
|
+
- Updated CLAUDE.md with new architecture documentation
|
|
75
|
+
|
|
76
|
+
## 2.2.0
|
|
77
|
+
|
|
78
|
+
### Minor Changes
|
|
79
|
+
|
|
80
|
+
- [`5b1bbea`](https://github.com/samuelho-dev/prisma-effect-kysely/commit/5b1bbea2f160d84049877b655f874974c47fe4b5) Thanks [@samuelho-dev](https://github.com/samuelho-dev)! - Select/Insert/Update aliases now use `StrictType` directly, so they match Effect schemas without index signatures and the old `*Strict` exports are gone.
|
|
81
|
+
|
|
82
|
+
- [`1590bc9`](https://github.com/samuelho-dev/prisma-effect-kysely/commit/1590bc9e7d02ad6e1ae4df0b465fa84de2eafcd1) Thanks [@samuelho-dev](https://github.com/samuelho-dev)! - Default `Select` / `Insert` / `Update` aliases now use strict typing (no `[key: string]: unknown`), so there is a single canonical type per schema and the extra `*Strict` exports/config switches have been removed.
|
|
83
|
+
|
|
84
|
+
### Patch Changes
|
|
85
|
+
|
|
86
|
+
- [`33fdc8e`](https://github.com/samuelho-dev/prisma-effect-kysely/commit/33fdc8e40e4658ceadef5ec64d78a0aeded4d96e) Thanks [@samuelho-dev](https://github.com/samuelho-dev)! - Ensure every generated Kysely schema returns the `Schema` interface by wrapping `Schema.make(...)` results with `Schema.asSchema()` and updating the mutable insert/update helpers to keep their runtime types aligned.
|
|
87
|
+
|
|
3
88
|
## 2.1.0
|
|
4
89
|
|
|
5
90
|
### Minor Changes
|
|
@@ -346,7 +431,7 @@ None - This is a non-breaking enhancement. The change is purely additive at the
|
|
|
346
431
|
- **Solution**: OMIT generated fields entirely from Insertable schema (not make them optional) following @effect/sql's `Model.Generated` pattern
|
|
347
432
|
- **Implementation**:
|
|
348
433
|
- Simplified `generated()` to be just a marker annotation (no schema transformation)
|
|
349
|
-
- Updated `
|
|
434
|
+
- Updated `Insertable()` to filter out fields with `GeneratedId` annotation during AST reconstruction
|
|
350
435
|
- Removed unnecessary `GeneratedSchemas` interface
|
|
351
436
|
- Simplified `extractParametersFromTypeLiteral` (generated fields are now just markers)
|
|
352
437
|
- Removed `OptionalType` detection from `isOptionalType()` (only checks for `Union(T, Undefined)` pattern)
|
|
@@ -791,7 +876,7 @@ const status = ProductStatus.ACTIVE; // "ACTIVE"
|
|
|
791
876
|
### Fixed
|
|
792
877
|
|
|
793
878
|
- **Declaration File Type Preservation** - Fixed type inference when using compiled `.d.ts` files
|
|
794
|
-
- Added explicit return type annotations to `
|
|
879
|
+
- Added explicit return type annotations to `Selectable()`, `Insertable()`, and `Updateable()` helper functions
|
|
795
880
|
- Added explicit return type annotation to `getSchemas()` function
|
|
796
881
|
- Ensures TypeScript preserves `Selectable<Type>`, `Insertable<Type>`, and `Updateable<Type>` mapped types in declaration files
|
|
797
882
|
- Resolves type inference failures when consuming libraries use dist/ paths instead of source paths
|
|
@@ -799,13 +884,13 @@ const status = ProductStatus.ACTIVE; // "ACTIVE"
|
|
|
799
884
|
|
|
800
885
|
### Technical Details
|
|
801
886
|
|
|
802
|
-
**Problem**: When TypeScript compiled helper functions to `.d.ts` files, the return types of AST transformation functions (`
|
|
887
|
+
**Problem**: When TypeScript compiled helper functions to `.d.ts` files, the return types of AST transformation functions (`Selectable()`, `Insertable()`, `Updateable()`) were inferred as `S.Schema<unknown, unknown, never>` instead of preserving the Kysely mapped types. This caused downstream type resolution to fail when consumers used compiled declaration files (dist/ paths) instead of source files.
|
|
803
888
|
|
|
804
889
|
**Solution**: Added explicit return type annotations with type assertions to all helper functions:
|
|
805
890
|
|
|
806
|
-
- `
|
|
807
|
-
- `
|
|
808
|
-
- `
|
|
891
|
+
- `Selectable()` → `: S.Schema<Selectable<Type>, Selectable<Encoded>, never>`
|
|
892
|
+
- `Insertable()` → `: S.Schema<Insertable<Type>, Insertable<Encoded>, never>`
|
|
893
|
+
- `Updateable()` → `: S.Schema<Updateable<Type>, Updateable<Encoded>, never>`
|
|
809
894
|
- `getSchemas()` → `: Schemas<Type, Encoded>`
|
|
810
895
|
|
|
811
896
|
**Impact**: Projects using prisma-effect-kysely with TypeScript path aliases pointing to `dist/` directories (compiled output) will now have proper type inference. Generated types like `EmbeddingOperationSelect` will resolve to proper object types instead of `unknown`.
|
|
@@ -824,7 +909,7 @@ const status = ProductStatus.ACTIVE; // "ACTIVE"
|
|
|
824
909
|
### Fixed
|
|
825
910
|
|
|
826
911
|
- **TypeScript Type Compatibility** - Fixed `SchemaClass` to `Schema` conversion issues
|
|
827
|
-
- Added `S.asSchema()` wrapper to `
|
|
912
|
+
- Added `S.asSchema()` wrapper to `Selectable()`, `Insertable()`, and `Updateable()` helper functions
|
|
828
913
|
- Ensures generated schemas return `S.Schema<A, I, R>` interface instead of `S.SchemaClass<A, I, R>`
|
|
829
914
|
- Resolves TypeScript compilation errors when passing schemas to Effect's decode functions
|
|
830
915
|
- Uses Effect's official identity function for zero-runtime overhead type conversion
|
package/README.md
CHANGED
|
@@ -37,30 +37,6 @@ generator effect_schemas {
|
|
|
37
37
|
npx prisma generate
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
### Generator Options
|
|
41
|
-
|
|
42
|
-
Alongside `output`, the generator accepts the following options inside the Prisma `generator` block:
|
|
43
|
-
|
|
44
|
-
| Option | Type | Default | Description |
|
|
45
|
-
| -------------------- | ------- | -------- | --------------------------------------------------------------------------- |
|
|
46
|
-
| `multiFileDomains` | string | `"false"`| Enable multi-domain detection and generation |
|
|
47
|
-
| `scaffoldLibraries` | string | `"false"`| Scaffold contract libraries per detected domain |
|
|
48
|
-
| `libraryGenerator` | string? | `null` | Path to the monorepo library scaffolder |
|
|
49
|
-
| `previewFeatures` | string[]| `[]` | Forwarded preview features |
|
|
50
|
-
| `generateStrictTypes`| string | `"true"` | Emit strict Select/Insert/Update aliases without index signatures |
|
|
51
|
-
| `strictTypeSuffix` | string | `"Strict"`| Suffix appended to strict aliases (e.g., `UserSelectStrict`) |
|
|
52
|
-
|
|
53
|
-
Example disabling strict aliases and using a custom suffix:
|
|
54
|
-
|
|
55
|
-
```prisma
|
|
56
|
-
generator effect_schemas {
|
|
57
|
-
provider = "prisma-effect-kysely"
|
|
58
|
-
output = "./generated/effect"
|
|
59
|
-
generateStrictTypes = "false"
|
|
60
|
-
strictTypeSuffix = "Types"
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
40
|
## Output
|
|
65
41
|
|
|
66
42
|
Generates three files in the configured output directory:
|
|
@@ -84,7 +60,7 @@ export const User = Schema.Struct({
|
|
|
84
60
|
email: Schema.String,
|
|
85
61
|
name: Schema.optional(Schema.String),
|
|
86
62
|
role: UserRole,
|
|
87
|
-
createdAt: Schema.
|
|
63
|
+
createdAt: Schema.DateFromSelf,
|
|
88
64
|
});
|
|
89
65
|
export type User = Schema.Schema.Type<typeof User>;
|
|
90
66
|
```
|
|
@@ -102,21 +78,23 @@ Re-exports all generated types for easy importing
|
|
|
102
78
|
|
|
103
79
|
## Strict Type Aliases
|
|
104
80
|
|
|
105
|
-
|
|
81
|
+
The generator always emits strict `Select` / `Insert` / `Update` aliases (no extra suffix) that remove index signatures introduced by TypeScript’s structural typing rules. Under the hood we wrap the Effect schema output with the `StrictType<T>` helper:
|
|
106
82
|
|
|
107
83
|
```typescript
|
|
108
|
-
import type {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
84
|
+
import type { StrictType } from 'prisma-effect-kysely';
|
|
85
|
+
|
|
86
|
+
export type UserSelect = StrictType<Schema.Schema.Type<typeof User.Selectable>>;
|
|
87
|
+
export type UserInsert = StrictType<Omit<Schema.Schema.Type<typeof User.Insertable>, 'id'>>;
|
|
88
|
+
export type UserUpdate = StrictType<Schema.Schema.Type<typeof User.Updateable>>;
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
If you need the original Effect schema type (with the index signature), read it directly from the schema:
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
type RawUserSelect = Schema.Schema.Type<typeof User.Selectable>;
|
|
117
95
|
```
|
|
118
96
|
|
|
119
|
-
|
|
97
|
+
The `StrictSelectable`, `StrictInsertable`, and `StrictUpdateable` helpers remain exported for advanced scenarios, but the generated aliases already apply the strict typing by default.
|
|
120
98
|
|
|
121
99
|
## Type Mappings
|
|
122
100
|
|
|
@@ -127,7 +105,7 @@ Use these when you want repository code like `updateValues.name` to benefit from
|
|
|
127
105
|
| BigInt | `Schema.BigInt` | Exact bigint type |
|
|
128
106
|
| Decimal | `Schema.String` | String for precision |
|
|
129
107
|
| Boolean | `Schema.Boolean` | - |
|
|
130
|
-
| DateTime | `Schema.
|
|
108
|
+
| DateTime | `Schema.DateFromSelf` | Native Date for Kysely |
|
|
131
109
|
| Json | `Schema.Unknown` | Safe unknown type |
|
|
132
110
|
| Bytes | `Schema.Uint8Array` | - |
|
|
133
111
|
| Enum | Enum Schema | With `Schema.Literal` values |
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import type { DMMF } from '@prisma/generator-helper';
|
|
2
2
|
import type { JoinTableInfo } from '../prisma/relation.js';
|
|
3
|
-
import { type GeneratorConfig } from '../generator/config.js';
|
|
4
3
|
/**
|
|
5
4
|
* Effect domain generator - orchestrates Effect Schema generation
|
|
6
5
|
*/
|
|
7
6
|
export declare class EffectGenerator {
|
|
8
7
|
private readonly dmmf;
|
|
9
|
-
|
|
10
|
-
constructor(dmmf: DMMF.Document, config: GeneratorConfig);
|
|
8
|
+
constructor(dmmf: DMMF.Document);
|
|
11
9
|
/**
|
|
12
10
|
* Generate enums.ts file content
|
|
13
11
|
*/
|
|
@@ -17,17 +15,18 @@ export declare class EffectGenerator {
|
|
|
17
15
|
*/
|
|
18
16
|
generateBaseSchema(model: DMMF.Model, fields: readonly DMMF.Field[]): string;
|
|
19
17
|
/**
|
|
20
|
-
* Generate
|
|
18
|
+
* Generate branded ID schema for a model
|
|
19
|
+
* @returns The branded ID schema declaration, or null if no ID field
|
|
21
20
|
*/
|
|
22
|
-
|
|
21
|
+
generateBrandedIdSchema(model: DMMF.Model, fields: readonly DMMF.Field[]): string | null;
|
|
23
22
|
/**
|
|
24
|
-
* Generate
|
|
25
|
-
*
|
|
26
|
-
* Insert types omit generated fields so TS matches runtime schema filtering
|
|
23
|
+
* Generate operational schemas with branded Id
|
|
24
|
+
* Exports: { Selectable, Insertable, Updateable, Id }
|
|
27
25
|
*/
|
|
28
|
-
|
|
26
|
+
generateOperationalSchemas(model: DMMF.Model, fields: readonly DMMF.Field[]): string;
|
|
29
27
|
/**
|
|
30
|
-
* Generate complete model schema (base +
|
|
28
|
+
* Generate complete model schema (base + branded ID + operational)
|
|
29
|
+
* No type exports - consumers use type utilities: Selectable<typeof User>
|
|
31
30
|
*/
|
|
32
31
|
generateModelSchema(model: DMMF.Model, fields: DMMF.Field[]): string;
|
|
33
32
|
/**
|
|
@@ -44,6 +43,5 @@ export declare class EffectGenerator {
|
|
|
44
43
|
* Generate Kysely table interfaces for join tables
|
|
45
44
|
*/
|
|
46
45
|
generateJoinTableKyselyInterfaces(joinTables: JoinTableInfo[]): string;
|
|
47
|
-
private shouldEmitStrictTypes;
|
|
48
46
|
}
|
|
49
47
|
//# 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;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;;;OAGG;IACH,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAAG,MAAM,GAAG,IAAI;IAaxF;;;OAGG;IACH,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAe3E;;;OAGG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;IAkB3D;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,OAAO;IA2BrC;;OAEG;IACH,wBAAwB,CAAC,UAAU,EAAE,aAAa,EAAE;IAIpD;;OAEG;IACH,iCAAiC,CAAC,UAAU,EAAE,aAAa,EAAE;CAG9D"}
|
package/dist/effect/generator.js
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
|
+
import { isUuidField } from '../prisma/type.js';
|
|
1
2
|
import { generateFileHeader } from '../utils/codegen.js';
|
|
2
3
|
import { toPascalCase } from '../utils/naming.js';
|
|
3
4
|
import { generateEnumsFile } from './enum.js';
|
|
4
5
|
import { generateJoinTableKyselyInterface, generateJoinTableSchema } from './join-table.js';
|
|
5
6
|
import { buildFieldType } from './type.js';
|
|
6
|
-
import { needsOmitFromInsert } from '../kysely/type.js';
|
|
7
|
-
import { getStrictTypeSuffix, shouldGenerateStrictTypes, } from '../generator/config.js';
|
|
8
7
|
/**
|
|
9
8
|
* Effect domain generator - orchestrates Effect Schema generation
|
|
10
9
|
*/
|
|
11
10
|
export class EffectGenerator {
|
|
12
11
|
dmmf;
|
|
13
|
-
|
|
14
|
-
constructor(dmmf, config) {
|
|
12
|
+
constructor(dmmf) {
|
|
15
13
|
this.dmmf = dmmf;
|
|
16
|
-
this.config = config;
|
|
17
14
|
}
|
|
18
15
|
/**
|
|
19
16
|
* Generate enums.ts file content
|
|
@@ -38,54 +35,51 @@ ${fieldDefinitions}
|
|
|
38
35
|
});`;
|
|
39
36
|
}
|
|
40
37
|
/**
|
|
41
|
-
* Generate
|
|
38
|
+
* Generate branded ID schema for a model
|
|
39
|
+
* @returns The branded ID schema declaration, or null if no ID field
|
|
42
40
|
*/
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
generateBrandedIdSchema(model, fields) {
|
|
42
|
+
const idField = fields.find((f) => f.isId);
|
|
43
|
+
if (!idField) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
const name = toPascalCase(model.name);
|
|
47
|
+
const isUuid = isUuidField(idField);
|
|
48
|
+
const baseType = isUuid ? 'Schema.UUID' : 'Schema.String';
|
|
49
|
+
return `const ${name}IdSchema = ${baseType}.pipe(Schema.brand("${name}Id"));`;
|
|
47
50
|
}
|
|
48
51
|
/**
|
|
49
|
-
* Generate
|
|
50
|
-
*
|
|
51
|
-
* Insert types omit generated fields so TS matches runtime schema filtering
|
|
52
|
+
* Generate operational schemas with branded Id
|
|
53
|
+
* Exports: { Selectable, Insertable, Updateable, Id }
|
|
52
54
|
*/
|
|
53
|
-
|
|
55
|
+
generateOperationalSchemas(model, fields) {
|
|
56
|
+
const baseSchemaName = `_${model.name}`;
|
|
54
57
|
const name = toPascalCase(model.name);
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
? `Omit<Schema.Schema.Encoded<typeof ${name}.Insertable>, ${omittedFieldsUnion}>`
|
|
62
|
-
: `Schema.Schema.Encoded<typeof ${name}.Insertable>`;
|
|
63
|
-
// Application-side types (decoded - for repository layer)
|
|
64
|
-
const applicationTypes = `export type ${name}Select = Schema.Schema.Type<typeof ${name}.Selectable>;
|
|
65
|
-
export type ${name}Insert = ${insertType};
|
|
66
|
-
export type ${name}Update = Schema.Schema.Type<typeof ${name}.Updateable>;`;
|
|
67
|
-
// Database-side encoded types (for queries layer)
|
|
68
|
-
const encodedTypes = `export type ${name}SelectEncoded = Schema.Schema.Encoded<typeof ${name}.Selectable>;
|
|
69
|
-
export type ${name}InsertEncoded = ${insertEncodedType};
|
|
70
|
-
export type ${name}UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateable>;`;
|
|
71
|
-
let strictTypes = '';
|
|
72
|
-
if (this.shouldEmitStrictTypes()) {
|
|
73
|
-
const strictSuffix = getStrictTypeSuffix(this.config);
|
|
74
|
-
strictTypes = `
|
|
75
|
-
export type ${name}Select${strictSuffix} = StrictSelectable<typeof ${name}>;
|
|
76
|
-
export type ${name}Insert${strictSuffix} = StrictInsertable<typeof ${name}>;
|
|
77
|
-
export type ${name}Update${strictSuffix} = StrictUpdateable<typeof ${name}>;`;
|
|
58
|
+
const idField = fields.find((f) => f.isId);
|
|
59
|
+
if (idField) {
|
|
60
|
+
return `export const ${name} = {
|
|
61
|
+
...getSchemas(${baseSchemaName}),
|
|
62
|
+
Id: ${name}IdSchema,
|
|
63
|
+
} as const;`;
|
|
78
64
|
}
|
|
79
|
-
return
|
|
65
|
+
return `export const ${name} = getSchemas(${baseSchemaName});`;
|
|
80
66
|
}
|
|
81
67
|
/**
|
|
82
|
-
* Generate complete model schema (base +
|
|
68
|
+
* Generate complete model schema (base + branded ID + operational)
|
|
69
|
+
* No type exports - consumers use type utilities: Selectable<typeof User>
|
|
83
70
|
*/
|
|
84
71
|
generateModelSchema(model, fields) {
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
const
|
|
88
|
-
|
|
72
|
+
const parts = [];
|
|
73
|
+
// Branded ID schema (if model has ID field)
|
|
74
|
+
const brandedIdSchema = this.generateBrandedIdSchema(model, fields);
|
|
75
|
+
if (brandedIdSchema) {
|
|
76
|
+
parts.push(brandedIdSchema);
|
|
77
|
+
}
|
|
78
|
+
// Base schema
|
|
79
|
+
parts.push(this.generateBaseSchema(model, fields));
|
|
80
|
+
// Operational schemas with Id
|
|
81
|
+
parts.push(this.generateOperationalSchemas(model, fields));
|
|
82
|
+
return parts.join('\n\n');
|
|
89
83
|
}
|
|
90
84
|
/**
|
|
91
85
|
* Generate types.ts file header
|
|
@@ -94,14 +88,12 @@ export type ${name}Update${strictSuffix} = StrictUpdateable<typeof ${name}>;`;
|
|
|
94
88
|
*/
|
|
95
89
|
generateTypesHeader(hasEnums) {
|
|
96
90
|
const header = generateFileHeader();
|
|
91
|
+
// No StrictType import - consumers use type utilities: Selectable<typeof User>
|
|
97
92
|
const imports = [
|
|
98
93
|
`import { Schema } from "effect";`,
|
|
99
94
|
`import type { ColumnType } from "kysely";`,
|
|
100
95
|
`import { columnType, generated, getSchemas } from "prisma-effect-kysely";`,
|
|
101
96
|
];
|
|
102
|
-
if (this.shouldEmitStrictTypes()) {
|
|
103
|
-
imports.push(`import type { StrictInsertable, StrictSelectable, StrictUpdateable } from "prisma-effect-kysely";`);
|
|
104
|
-
}
|
|
105
97
|
if (hasEnums) {
|
|
106
98
|
// Only import Schema wrappers (not plain enum types)
|
|
107
99
|
// Use PascalCase naming with Schema suffix
|
|
@@ -128,8 +120,5 @@ export type ${name}Update${strictSuffix} = StrictUpdateable<typeof ${name}>;`;
|
|
|
128
120
|
generateJoinTableKyselyInterfaces(joinTables) {
|
|
129
121
|
return joinTables.map(generateJoinTableKyselyInterface).join('\n\n');
|
|
130
122
|
}
|
|
131
|
-
shouldEmitStrictTypes() {
|
|
132
|
-
return shouldGenerateStrictTypes(this.config);
|
|
133
|
-
}
|
|
134
123
|
}
|
|
135
124
|
//# sourceMappingURL=generator.js.map
|
|
@@ -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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"}
|
|
@@ -10,8 +10,7 @@ export declare function generateJoinTableKyselyInterface(joinTable: JoinTableInf
|
|
|
10
10
|
* Structure:
|
|
11
11
|
* - Base schema with semantic snake_case field names mapped to A/B via fromKey
|
|
12
12
|
* - Operational schemas via getSchemas()
|
|
13
|
-
* -
|
|
14
|
-
* - Encoded type exports
|
|
13
|
+
* - No type exports - consumers use type utilities: Selectable<typeof JoinTable>
|
|
15
14
|
*
|
|
16
15
|
* Example:
|
|
17
16
|
* - Database columns: A, B (Prisma requirement)
|
|
@@ -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,uBAAuB,CAAC;AAG3D;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,aAAa,UAcxE;AAoBD
|
|
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,uBAAuB,CAAC;AAG3D;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,aAAa,UAcxE;AAoBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,UAuCrF"}
|
|
@@ -35,8 +35,7 @@ function mapColumnType(columnType, isUuid) {
|
|
|
35
35
|
* Structure:
|
|
36
36
|
* - Base schema with semantic snake_case field names mapped to A/B via fromKey
|
|
37
37
|
* - Operational schemas via getSchemas()
|
|
38
|
-
* -
|
|
39
|
-
* - Encoded type exports
|
|
38
|
+
* - No type exports - consumers use type utilities: Selectable<typeof JoinTable>
|
|
40
39
|
*
|
|
41
40
|
* Example:
|
|
42
41
|
* - Database columns: A, B (Prisma requirement)
|
|
@@ -63,16 +62,9 @@ export const _${relationName} = Schema.Struct({
|
|
|
63
62
|
${columnAField},
|
|
64
63
|
${columnBField},
|
|
65
64
|
});`;
|
|
66
|
-
// Generate operational schemas
|
|
65
|
+
// Generate operational schemas (no Id for join tables - they use composite keys)
|
|
67
66
|
const operationalSchema = `export const ${relationName} = getSchemas(_${relationName});`;
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
export type ${relationName}Insert = Schema.Schema.Type<typeof ${relationName}.Insertable>;
|
|
71
|
-
export type ${relationName}Update = Schema.Schema.Type<typeof ${relationName}.Updateable>;`;
|
|
72
|
-
// Generate Encoded type exports
|
|
73
|
-
const encodedExports = `export type ${relationName}SelectEncoded = Schema.Schema.Encoded<typeof ${relationName}.Selectable>;
|
|
74
|
-
export type ${relationName}InsertEncoded = Schema.Schema.Encoded<typeof ${relationName}.Insertable>;
|
|
75
|
-
export type ${relationName}UpdateEncoded = Schema.Schema.Encoded<typeof ${relationName}.Updateable>;`;
|
|
76
|
-
return `${baseSchema}\n\n${operationalSchema}\n\n${typeExports}\n${encodedExports}`;
|
|
67
|
+
// No type exports - consumers use: Selectable<typeof JoinTable>
|
|
68
|
+
return `${baseSchema}\n\n${operationalSchema}`;
|
|
77
69
|
}
|
|
78
70
|
//# sourceMappingURL=join-table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join-table.js","sourceRoot":"","sources":["../../src/effect/join-table.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAAC,SAAwB;IACvE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAEjF,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,WAAW,CAAC,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
|
|
1
|
+
{"version":3,"file":"join-table.js","sourceRoot":"","sources":["../../src/effect/join-table.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAAC,SAAwB;IACvE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAEjF,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,WAAW,CAAC,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;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,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,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;IAChD,MAAM,WAAW,GAAG,GAAG,WAAW,CAAC,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,iFAAiF;IACjF,MAAM,iBAAiB,GAAG,gBAAgB,YAAY,kBAAkB,YAAY,IAAI,CAAC;IAEzF,gEAAgE;IAChE,OAAO,GAAG,UAAU,OAAO,iBAAiB,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -31,14 +31,6 @@ declare const GeneratorConfigSchema: Schema.Struct<{
|
|
|
31
31
|
* Preview features to enable
|
|
32
32
|
*/
|
|
33
33
|
previewFeatures: Schema.Array$<typeof Schema.String>;
|
|
34
|
-
/**
|
|
35
|
-
* Emit stricter Select/Insert/Update aliases without index signatures
|
|
36
|
-
*/
|
|
37
|
-
generateStrictTypes: Schema.Literal<["true", "false"]>;
|
|
38
|
-
/**
|
|
39
|
-
* Custom suffix used for strict aliases (e.g., SelectStrict)
|
|
40
|
-
*/
|
|
41
|
-
strictTypeSuffix: typeof Schema.String;
|
|
42
34
|
}>;
|
|
43
35
|
/**
|
|
44
36
|
* Generator configuration type derived from schema
|
|
@@ -53,8 +45,6 @@ export declare function parseGeneratorConfig(options: GeneratorOptions): {
|
|
|
53
45
|
readonly scaffoldLibraries: "true" | "false";
|
|
54
46
|
readonly libraryGenerator?: string | undefined;
|
|
55
47
|
readonly previewFeatures: readonly string[];
|
|
56
|
-
readonly generateStrictTypes: "true" | "false";
|
|
57
|
-
readonly strictTypeSuffix: string;
|
|
58
48
|
};
|
|
59
49
|
/**
|
|
60
50
|
* Check if multi-domain mode is enabled
|
|
@@ -64,13 +54,5 @@ export declare function isMultiDomainEnabled(config: GeneratorConfig): boolean;
|
|
|
64
54
|
* Check if library scaffolding is enabled
|
|
65
55
|
*/
|
|
66
56
|
export declare function isScaffoldingEnabled(config: GeneratorConfig): boolean;
|
|
67
|
-
/**
|
|
68
|
-
* Check if strict Select/Insert/Update aliases should be emitted
|
|
69
|
-
*/
|
|
70
|
-
export declare function shouldGenerateStrictTypes(config: GeneratorConfig): boolean;
|
|
71
|
-
/**
|
|
72
|
-
* Suffix to append to strict alias names
|
|
73
|
-
*/
|
|
74
|
-
export declare function getStrictTypeSuffix(config: GeneratorConfig): string;
|
|
75
57
|
export {};
|
|
76
58
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/generator/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC;;GAEG;AACH,QAAA,MAAM,qBAAqB;IACzB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/generator/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC;;GAEG;AACH,QAAA,MAAM,qBAAqB;IACzB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;EAEH,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE/E;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB;;;;;;EAwB7D;AAoCD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,WAE3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,WAE3D"}
|
package/dist/generator/config.js
CHANGED
|
@@ -34,14 +34,6 @@ const GeneratorConfigSchema = Schema.Struct({
|
|
|
34
34
|
* Preview features to enable
|
|
35
35
|
*/
|
|
36
36
|
previewFeatures: Schema.Array(Schema.String),
|
|
37
|
-
/**
|
|
38
|
-
* Emit stricter Select/Insert/Update aliases without index signatures
|
|
39
|
-
*/
|
|
40
|
-
generateStrictTypes: BooleanString,
|
|
41
|
-
/**
|
|
42
|
-
* Custom suffix used for strict aliases (e.g., SelectStrict)
|
|
43
|
-
*/
|
|
44
|
-
strictTypeSuffix: Schema.String,
|
|
45
37
|
});
|
|
46
38
|
/**
|
|
47
39
|
* Parse and validate generator configuration from Prisma options
|
|
@@ -62,8 +54,6 @@ export function parseGeneratorConfig(options) {
|
|
|
62
54
|
scaffoldLibraries: getStringValue(config, 'scaffoldLibraries') ?? 'false',
|
|
63
55
|
libraryGenerator: getStringValue(config, 'libraryGenerator'),
|
|
64
56
|
previewFeatures: getArrayValue(config, 'previewFeatures'),
|
|
65
|
-
generateStrictTypes: getStringValue(config, 'generateStrictTypes') ?? 'true',
|
|
66
|
-
strictTypeSuffix: getStringValue(config, 'strictTypeSuffix') ?? 'Strict',
|
|
67
57
|
};
|
|
68
58
|
// Validate with Effect Schema - throws on invalid input
|
|
69
59
|
return Schema.decodeUnknownSync(GeneratorConfigSchema)(rawConfig);
|
|
@@ -111,16 +101,4 @@ export function isMultiDomainEnabled(config) {
|
|
|
111
101
|
export function isScaffoldingEnabled(config) {
|
|
112
102
|
return config.scaffoldLibraries === 'true' && isMultiDomainEnabled(config);
|
|
113
103
|
}
|
|
114
|
-
/**
|
|
115
|
-
* Check if strict Select/Insert/Update aliases should be emitted
|
|
116
|
-
*/
|
|
117
|
-
export function shouldGenerateStrictTypes(config) {
|
|
118
|
-
return config.generateStrictTypes === 'true';
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Suffix to append to strict alias names
|
|
122
|
-
*/
|
|
123
|
-
export function getStrictTypeSuffix(config) {
|
|
124
|
-
return config.strictTypeSuffix;
|
|
125
|
-
}
|
|
126
104
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/generator/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM;IAErB;;OAEG;IACH,gBAAgB,EAAE,aAAa;IAE/B;;OAEG;IACH,iBAAiB,EAAE,aAAa;IAEhC;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAEhD;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/generator/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export type {
|
|
3
|
-
export { columnType, generated, getSchemas
|
|
2
|
+
export type { Schemas, Selectable, Insertable, Updateable, Id } from '../kysely/helpers.js';
|
|
3
|
+
export { columnType, generated, getSchemas } from '../kysely/helpers.js';
|
|
4
4
|
export declare const generator: void;
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";AAaA,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEzE,eAAO,MAAM,SAAS,MAUpB,CAAC"}
|
package/dist/generator/index.js
CHANGED
|
@@ -5,8 +5,7 @@ import { GeneratorOrchestrator } from './orchestrator.js';
|
|
|
5
5
|
const { generatorHandler } = pkg;
|
|
6
6
|
const require = createRequire(import.meta.url);
|
|
7
7
|
const packageJson = require('../../package.json');
|
|
8
|
-
|
|
9
|
-
export { columnType, generated, getSchemas, insertable, selectable, updateable, } from '../kysely/helpers.js';
|
|
8
|
+
export { columnType, generated, getSchemas } from '../kysely/helpers.js';
|
|
10
9
|
export const generator = generatorHandler({
|
|
11
10
|
onManifest: () => ({
|
|
12
11
|
version: packageJson.version,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,GAAG,MAAM,0BAA0B,CAAC;AAE3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC;AAEjC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,GAAG,MAAM,0BAA0B,CAAC;AAE3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC;AAEjC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAIzE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEzE,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;IACxC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,aAAa,EAAE,aAAa;QAC5B,UAAU,EAAE,gCAAgC;KAC7C,CAAC;IACF,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC5B,MAAM,YAAY,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF,CAAC,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;AAcjE;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,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;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,EAAE,gBAAgB;IAaxC;;;OAGG;YACW,oBAAoB;IAQlC;;;OAGG;YACW,mBAAmB;IAiBjC;;OAEG;YACW,iBAAiB;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAcjE;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,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;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,EAAE,gBAAgB;IAaxC;;;OAGG;YACW,oBAAoB;IAQlC;;;OAGG;YACW,mBAAmB;IAiBjC;;OAEG;YACW,iBAAiB;IAwF/B;;OAEG;YACW,aAAa;IAM3B;;OAEG;YACW,aAAa;IAiE3B;;OAEG;YACW,aAAa;IAK3B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAWhB;;OAEG;IACH,OAAO,CAAC,WAAW;CASpB"}
|
|
@@ -23,7 +23,7 @@ export class GeneratorOrchestrator {
|
|
|
23
23
|
this.config = parseGeneratorConfig(options);
|
|
24
24
|
this.fileManager = new FileManager(this.config.output);
|
|
25
25
|
this.prismaGen = new PrismaGenerator(options.dmmf);
|
|
26
|
-
this.effectGen = new EffectGenerator(options.dmmf
|
|
26
|
+
this.effectGen = new EffectGenerator(options.dmmf);
|
|
27
27
|
this.kyselyGen = new KyselyGenerator(options.dmmf);
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
@@ -107,10 +107,17 @@ export class GeneratorOrchestrator {
|
|
|
107
107
|
export const ${baseSchemaName} = Schema.Struct({
|
|
108
108
|
${kyselyFields}
|
|
109
109
|
});`;
|
|
110
|
-
// Generate
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
// Generate branded ID schema (if model has ID field)
|
|
111
|
+
const brandedIdSchema = this.effectGen.generateBrandedIdSchema(model, fields);
|
|
112
|
+
// Generate operational schemas (no type exports - consumers use type utilities)
|
|
113
|
+
const operationalSchema = this.effectGen.generateOperationalSchemas(model, fields);
|
|
114
|
+
// Assemble model output
|
|
115
|
+
const parts = [kyselyTable, baseSchema];
|
|
116
|
+
if (brandedIdSchema) {
|
|
117
|
+
parts.push(brandedIdSchema);
|
|
118
|
+
}
|
|
119
|
+
parts.push(operationalSchema);
|
|
120
|
+
return parts.join('\n\n');
|
|
114
121
|
})
|
|
115
122
|
.join('\n\n');
|
|
116
123
|
// Generate join table Kysely interfaces for this domain
|
|
@@ -165,10 +172,17 @@ ${kyselyFields}
|
|
|
165
172
|
export const ${baseSchemaName} = Schema.Struct({
|
|
166
173
|
${kyselyFields}
|
|
167
174
|
});`;
|
|
168
|
-
// Generate
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
175
|
+
// Generate branded ID schema (if model has ID field)
|
|
176
|
+
const brandedIdSchema = this.effectGen.generateBrandedIdSchema(model, fields);
|
|
177
|
+
// Generate operational schemas (no type exports - consumers use type utilities)
|
|
178
|
+
const operationalSchema = this.effectGen.generateOperationalSchemas(model, fields);
|
|
179
|
+
// Assemble model output
|
|
180
|
+
const parts = [kyselyTable, baseSchema];
|
|
181
|
+
if (brandedIdSchema) {
|
|
182
|
+
parts.push(brandedIdSchema);
|
|
183
|
+
}
|
|
184
|
+
parts.push(operationalSchema);
|
|
185
|
+
return parts.join('\n\n');
|
|
172
186
|
})
|
|
173
187
|
.join('\n\n');
|
|
174
188
|
// Generate join table Kysely interfaces
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAEL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAmB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAqB;IACf,MAAM,CAAkB;IACxB,WAAW,CAAc;IACzB,SAAS,CAAkB;IAC3B,SAAS,CAAkB;IAC3B,SAAS,CAAkB;IAE5C,YAAY,OAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/generator/orchestrator.ts"],"names":[],"mappings":"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"}
|
package/dist/kysely/helpers.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
|
-
import type { Insertable, Selectable, Updateable } from 'kysely';
|
|
2
|
+
import type { Insertable as KyselyInsertable, Selectable as KyselySelectable, Updateable as KyselyUpdateable } from 'kysely';
|
|
3
3
|
import type { DeepMutable } from 'effect/Types';
|
|
4
4
|
/**
|
|
5
5
|
* Runtime helpers for Kysely schema integration
|
|
@@ -22,22 +22,22 @@ export declare const columnType: <SType, SEncoded, SR, IType, IEncoded, IR, UTyp
|
|
|
22
22
|
*/
|
|
23
23
|
export declare const generated: <SType, SEncoded, R>(schema: Schema.Schema<SType, SEncoded, R>) => Schema.Schema<SType, SEncoded, R>;
|
|
24
24
|
/**
|
|
25
|
-
* Create
|
|
25
|
+
* Create Selectable schema from base schema
|
|
26
26
|
*/
|
|
27
|
-
type MutableInsert<Type> = DeepMutable<
|
|
28
|
-
type MutableUpdate<Type> = DeepMutable<
|
|
29
|
-
export declare const
|
|
27
|
+
type MutableInsert<Type> = DeepMutable<KyselyInsertable<Type>>;
|
|
28
|
+
type MutableUpdate<Type> = DeepMutable<KyselyUpdateable<Type>>;
|
|
29
|
+
export declare const Selectable: <Type, Encoded>(schema: Schema.Schema<Type, Encoded>) => Schema.Schema<KyselySelectable<Type>, KyselySelectable<Encoded>, never>;
|
|
30
30
|
/**
|
|
31
|
-
* Create
|
|
31
|
+
* Create Insertable schema from base schema
|
|
32
32
|
* Filters out generated fields (@effect/sql Model.Generated pattern)
|
|
33
33
|
*/
|
|
34
|
-
export declare const
|
|
34
|
+
export declare const Insertable: <Type, Encoded>(schema: Schema.Schema<Type, Encoded>) => Schema.Schema<MutableInsert<Type>, MutableInsert<Encoded>, never>;
|
|
35
35
|
/**
|
|
36
|
-
* Create
|
|
36
|
+
* Create Updateable schema from base schema
|
|
37
37
|
*/
|
|
38
|
-
export declare const
|
|
38
|
+
export declare const Updateable: <Type, Encoded>(schema: Schema.Schema<Type, Encoded>) => Schema.Schema<MutableUpdate<Type>, MutableUpdate<Encoded>, never>;
|
|
39
39
|
export interface Schemas<Type, Encoded> {
|
|
40
|
-
Selectable: Schema.Schema<
|
|
40
|
+
Selectable: Schema.Schema<KyselySelectable<Type>, KyselySelectable<Encoded>, never>;
|
|
41
41
|
Insertable: Schema.Schema<MutableInsert<Type>, MutableInsert<Encoded>, never>;
|
|
42
42
|
Updateable: Schema.Schema<MutableUpdate<Type>, MutableUpdate<Encoded>, never>;
|
|
43
43
|
}
|
|
@@ -46,16 +46,31 @@ export interface Schemas<Type, Encoded> {
|
|
|
46
46
|
* Used in generated code
|
|
47
47
|
*/
|
|
48
48
|
export declare const getSchemas: <Type, Encoded>(baseSchema: Schema.Schema<Type, Encoded>) => Schemas<Type, Encoded>;
|
|
49
|
-
export interface GetTypes<T extends Schemas<unknown, unknown>> {
|
|
50
|
-
Selectable: Schema.Schema.Type<T['Selectable']>;
|
|
51
|
-
Insertable: Schema.Schema.Type<T['Insertable']>;
|
|
52
|
-
Updateable: Schema.Schema.Type<T['Updateable']>;
|
|
53
|
-
}
|
|
54
49
|
type RemoveIndexSignature<T> = {
|
|
55
50
|
[K in keyof T as K extends string ? string extends K ? never : K : K extends number ? number extends K ? never : K : K extends symbol ? symbol extends K ? never : K : K]: T[K];
|
|
56
51
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
52
|
+
type StrictType<T> = RemoveIndexSignature<T>;
|
|
53
|
+
/**
|
|
54
|
+
* Extract SELECT type from schema (matches Kysely's Selectable<T> pattern)
|
|
55
|
+
* @example type UserSelect = Selectable<typeof User>
|
|
56
|
+
*/
|
|
57
|
+
export type Selectable<T extends Schemas<unknown, unknown>> = StrictType<Schema.Schema.Type<T['Selectable']>>;
|
|
58
|
+
/**
|
|
59
|
+
* Extract INSERT type from schema (matches Kysely's Insertable<T> pattern)
|
|
60
|
+
* @example type UserInsert = Insertable<typeof User>
|
|
61
|
+
*/
|
|
62
|
+
export type Insertable<T extends Schemas<unknown, unknown>> = StrictType<Schema.Schema.Type<T['Insertable']>>;
|
|
63
|
+
/**
|
|
64
|
+
* Extract UPDATE type from schema (matches Kysely's Updateable<T> pattern)
|
|
65
|
+
* @example type UserUpdate = Updateable<typeof User>
|
|
66
|
+
*/
|
|
67
|
+
export type Updateable<T extends Schemas<unknown, unknown>> = StrictType<Schema.Schema.Type<T['Updateable']>>;
|
|
68
|
+
/**
|
|
69
|
+
* Extract branded ID type from schema
|
|
70
|
+
* @example type UserId = Id<typeof User>
|
|
71
|
+
*/
|
|
72
|
+
export type Id<T extends {
|
|
73
|
+
Id: Schema.Schema<unknown, unknown, unknown>;
|
|
74
|
+
}> = Schema.Schema.Type<T['Id']>;
|
|
60
75
|
export {};
|
|
61
76
|
//# 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,
|
|
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
|
@@ -80,29 +80,28 @@ const extractParametersFromTypeLiteral = (ast, schemaType) => {
|
|
|
80
80
|
// Apply Schema.mutable() to regular fields for insert/updateSchema to make arrays mutable
|
|
81
81
|
// Safe for all types - no-op for non-arrays
|
|
82
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);
|
|
83
|
+
return new AST.PropertySignature(prop.name, Schema.mutable(Schema.asSchema(Schema.make(prop.type))).ast, prop.isOptional, prop.isReadonly, prop.annotations);
|
|
84
84
|
}
|
|
85
85
|
// Generated fields are just markers now, return as-is
|
|
86
86
|
return prop;
|
|
87
87
|
})
|
|
88
88
|
.filter((prop) => prop.type._tag !== 'NeverKeyword');
|
|
89
89
|
};
|
|
90
|
-
export const
|
|
90
|
+
export const Selectable = (schema) => {
|
|
91
91
|
const { ast } = schema;
|
|
92
92
|
if (!AST.isTypeLiteral(ast)) {
|
|
93
|
-
return Schema.make(ast);
|
|
93
|
+
return Schema.asSchema(Schema.make(ast));
|
|
94
94
|
}
|
|
95
|
-
return Schema.make(new AST.TypeLiteral(extractParametersFromTypeLiteral(ast, 'selectSchema'), ast.indexSignatures, ast.annotations));
|
|
95
|
+
return Schema.asSchema(Schema.make(new AST.TypeLiteral(extractParametersFromTypeLiteral(ast, 'selectSchema'), ast.indexSignatures, ast.annotations)));
|
|
96
96
|
};
|
|
97
97
|
/**
|
|
98
|
-
* Create
|
|
98
|
+
* Create Insertable schema from base schema
|
|
99
99
|
* Filters out generated fields (@effect/sql Model.Generated pattern)
|
|
100
100
|
*/
|
|
101
|
-
export const
|
|
101
|
+
export const Insertable = (schema) => {
|
|
102
102
|
const { ast } = schema;
|
|
103
103
|
if (!AST.isTypeLiteral(ast)) {
|
|
104
|
-
|
|
105
|
-
return baseSchema;
|
|
104
|
+
return Schema.asSchema(Schema.make(ast));
|
|
106
105
|
}
|
|
107
106
|
// Extract and filter out generated fields entirely
|
|
108
107
|
const nonGeneratedProps = ast.propertySignatures.filter((prop) => !isGeneratedType(prop.type));
|
|
@@ -113,30 +112,27 @@ export const insertable = (schema) => {
|
|
|
113
112
|
const isOptional = isOptionalType(prop.type);
|
|
114
113
|
return new AST.PropertySignature(prop.name, prop.type, isOptional, prop.isReadonly, prop.annotations);
|
|
115
114
|
});
|
|
116
|
-
|
|
117
|
-
return insertSchema;
|
|
115
|
+
return Schema.asSchema(Schema.make(new AST.TypeLiteral(fields, ast.indexSignatures, ast.annotations)));
|
|
118
116
|
};
|
|
119
117
|
/**
|
|
120
|
-
* Create
|
|
118
|
+
* Create Updateable schema from base schema
|
|
121
119
|
*/
|
|
122
|
-
export const
|
|
120
|
+
export const Updateable = (schema) => {
|
|
123
121
|
const { ast } = schema;
|
|
124
122
|
if (!AST.isTypeLiteral(ast)) {
|
|
125
|
-
|
|
126
|
-
return baseSchema;
|
|
123
|
+
return Schema.asSchema(Schema.make(ast));
|
|
127
124
|
}
|
|
128
125
|
const extracted = extractParametersFromTypeLiteral(ast, 'updateSchema');
|
|
129
126
|
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);
|
|
130
|
-
|
|
131
|
-
return updateSchema;
|
|
127
|
+
return Schema.asSchema(Schema.make(res));
|
|
132
128
|
};
|
|
133
129
|
/**
|
|
134
130
|
* Generate all operational schemas (Selectable/Insertable/Updateable) from base schema
|
|
135
131
|
* Used in generated code
|
|
136
132
|
*/
|
|
137
133
|
export const getSchemas = (baseSchema) => ({
|
|
138
|
-
Selectable:
|
|
139
|
-
Insertable:
|
|
140
|
-
Updateable:
|
|
134
|
+
Selectable: Selectable(baseSchema),
|
|
135
|
+
Insertable: Insertable(baseSchema),
|
|
136
|
+
Updateable: Updateable(baseSchema),
|
|
141
137
|
});
|
|
142
138
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -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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"}
|