prisma-effect-kysely 1.5.3 → 1.6.1

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 CHANGED
@@ -5,6 +5,67 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.6.1] - 2025-10-12
9
+
10
+ ### Fixed
11
+
12
+ - **TypeScript Namespace Collision (TS7022)**: Fixed circular reference error in generated enum code where namespace export `Schema` collided with imported `Schema` from Effect library
13
+ - Changed import pattern from `import { Schema } from "effect"` to `import * as Effect from "effect"`
14
+ - Added module-level alias `const Schema = Effect.Schema` for clean, readable code throughout generated files
15
+ - Only use fully-qualified `Effect.Schema` inside enum namespaces where collision occurs
16
+ - This maintains 95% of generated code with clean `Schema.*` patterns while avoiding namespace collision
17
+
18
+ - **Optional Field Pattern**: Updated optional field generation from `Schema.Union(type, Schema.Undefined)` to correct `Schema.UndefinedOr(type)` combinator per Effect Schema API
19
+
20
+ ### Changed
21
+
22
+ - Generated code now uses `import * as Effect from "effect"` pattern (industry standard)
23
+ - All generated files include module-level alias `const Schema = Effect.Schema` for clean API
24
+
25
+ ## [1.6.0] - 2025-10-12
26
+
27
+ ### Changed
28
+
29
+ - **BREAKING: TypeScript Namespace Pattern for Complete Name Preservation**
30
+ - **Zero name transformations** - All user-declared names from Prisma schema are preserved exactly throughout the generated code
31
+ - **Enums**: Now use TypeScript namespace pattern instead of suffix pattern
32
+ - Before v1.6.0: `ACTIVE_STATUS` enum generated `ACTIVE_STATUSSchema` and `ACTIVE_STATUSType` (awkward)
33
+ - v1.6.0+: Uses namespace merging for clean API:
34
+ ```typescript
35
+ export enum ACTIVE_STATUS { ACTIVE, INACTIVE }
36
+ export namespace ACTIVE_STATUS {
37
+ export const Schema = Schema.Enums(ACTIVE_STATUS);
38
+ export type Type = Schema.Schema.Type<typeof Schema>;
39
+ }
40
+ // Usage: ACTIVE_STATUS.ACTIVE, ACTIVE_STATUS.Schema, ACTIVE_STATUS.Type
41
+ ```
42
+ - **Models**: Operational schemas and type exports moved into namespaces
43
+ - Before v1.6.0: `export const User = getSchemas(_User)`, `export type UserSelect = ...`
44
+ - v1.6.0+: Everything grouped in namespace:
45
+ ```typescript
46
+ export namespace User {
47
+ const schemas = getSchemas(_User);
48
+ export const Selectable = schemas.Selectable;
49
+ export const Insertable = schemas.Insertable;
50
+ export const Updateable = schemas.Updateable;
51
+ export type Select = Schema.Schema.Type<typeof User.Selectable>;
52
+ export type Insert = Schema.Schema.Type<typeof User.Insertable>;
53
+ // ...
54
+ }
55
+ ```
56
+ - **Join Tables**: Same namespace pattern for consistency
57
+ - **No PascalCase conversion**: `session_model_preference` stays `session_model_preference` (not converted to `SessionModelPreference`)
58
+ - **Benefits**:
59
+ - ✨ Complete bridge from Prisma → Effect → Kysely → TypeScript with stable names
60
+ - ✨ No naming conflicts without transformations
61
+ - ✨ Cleaner API with grouped related exports
62
+ - ✨ User's Prisma schema names are the source of truth
63
+ - **Migration Guide**:
64
+ - Enum access: `ACTIVE_STATUSSchema` → `ACTIVE_STATUS.Schema`, `ACTIVE_STATUSType` → `ACTIVE_STATUS.Type`
65
+ - Model operational schemas: `User.Selectable` stays the same (namespace merging)
66
+ - Type imports: `UserSelect` → `User.Select`, `UserInsert` → `User.Insert`, etc.
67
+ - Encoded types: `UserSelectEncoded` → `User.SelectEncoded`, etc.
68
+
8
69
  ## [1.5.3] - 2025-10-12
9
70
 
10
71
  ### Changed
package/README.md CHANGED
@@ -43,38 +43,117 @@ Generates three files in the configured output directory:
43
43
 
44
44
  ### enums.ts
45
45
 
46
- Effect Schema enums from Prisma enums with exact literal types:
46
+ Native TypeScript enums with Effect Schema wrappers in namespaces:
47
47
 
48
48
  ```typescript
49
- export const UserRole = Schema.Literal('admin', 'user', 'guest');
50
- export type UserRole = Schema.Schema.Type<typeof UserRole>;
49
+ export enum UserRole {
50
+ ADMIN = "ADMIN",
51
+ USER = "USER",
52
+ GUEST = "GUEST"
53
+ }
54
+
55
+ export namespace UserRole {
56
+ export const Schema = Schema.Enums(UserRole);
57
+ export type Type = Schema.Schema.Type<typeof Schema>;
58
+ }
59
+
60
+ // Usage:
61
+ // - Access enum values: UserRole.ADMIN, UserRole.USER
62
+ // - Access Effect Schema: UserRole.Schema
63
+ // - Access TypeScript type: UserRole.Type
51
64
  ```
52
65
 
53
66
  ### types.ts
54
67
 
55
- Effect Schema structs from Prisma models:
68
+ Effect Schema structs from Prisma models with Kysely integration:
56
69
 
57
70
  ```typescript
58
- export const User = Schema.Struct({
59
- id: Schema.UUID,
71
+ // Base schema with underscore prefix
72
+ export const _User = Schema.Struct({
73
+ id: columnType(Schema.UUID, Schema.Never, Schema.Never), // Read-only ID
60
74
  email: Schema.String,
61
- name: Schema.optional(Schema.String),
62
- role: UserRole,
63
- createdAt: Schema.Date,
75
+ name: Schema.Union(Schema.String, Schema.Undefined), // Optional field
76
+ role: UserRole.Schema,
77
+ createdAt: generated(Schema.Date), // Generated field
64
78
  });
65
- export type User = Schema.Schema.Type<typeof User>;
79
+
80
+ // Operational schemas and types in namespace
81
+ export namespace User {
82
+ const schemas = getSchemas(_User);
83
+ export const Selectable = schemas.Selectable; // For SELECT queries
84
+ export const Insertable = schemas.Insertable; // For INSERT (generated fields optional)
85
+ export const Updateable = schemas.Updateable; // For UPDATE (all fields optional)
86
+
87
+ export type Select = Schema.Schema.Type<typeof User.Selectable>;
88
+ export type Insert = Schema.Schema.Type<typeof User.Insertable>;
89
+ export type Update = Schema.Schema.Type<typeof User.Updateable>;
90
+ export type SelectEncoded = Schema.Schema.Encoded<typeof User.Selectable>;
91
+ export type InsertEncoded = Schema.Schema.Encoded<typeof User.Insertable>;
92
+ export type UpdateEncoded = Schema.Schema.Encoded<typeof User.Updateable>;
93
+ }
94
+
95
+ // Kysely DB interface for type-safe queries
96
+ export interface DB {
97
+ User: Schema.Schema.Encoded<typeof _User>;
98
+ // ... other models
99
+ }
66
100
  ```
67
101
 
68
- **Naming Convention**: All exported schemas and types use PascalCase, regardless of the Prisma model naming convention:
69
- - Model `User` → `User`, `UserSelect`, `UserInsert`
70
- - Model `session_preference` → `SessionPreference`, `SessionPreferenceSelect`, `SessionPreferenceInsert`
102
+ **Name Preservation**: All names from your Prisma schema are preserved exactly:
103
+ - Model `User` → `User` namespace with `User.Select`, `User.Insert`, `User.Update`
104
+ - Model `session_preference` → `session_preference` namespace
105
+ - Enum `ACTIVE_STATUS` → `ACTIVE_STATUS` enum and namespace
71
106
 
72
- This ensures consistent TypeScript identifier naming while preserving the original model names for internal schemas.
107
+ This creates a complete bridge from Prisma Effect Kysely TypeScript with stable, predictable names.
73
108
 
74
109
  ### index.ts
75
110
 
76
111
  Re-exports all generated types for easy importing
77
112
 
113
+ ## Namespace Pattern
114
+
115
+ The generator uses TypeScript namespaces to organize generated code while preserving your Prisma schema names exactly.
116
+
117
+ ### Benefits
118
+
119
+ - **Zero Name Transformations**: Your Prisma names flow unchanged through Effect, Kysely, and TypeScript
120
+ - **No Naming Conflicts**: Namespaces eliminate collisions without requiring name transformations
121
+ - **Grouped Exports**: Related schemas, types, and values are logically grouped
122
+ - **Clean API**: Access everything through a single identifier (e.g., `User.Select`, `User.Insertable`)
123
+
124
+ ### Structure
125
+
126
+ **For Enums:**
127
+ ```typescript
128
+ export enum ACTIVE_STATUS { ACTIVE, INACTIVE } // Native TypeScript enum
129
+ export namespace ACTIVE_STATUS { // Namespace merging
130
+ export const Schema = Schema.Enums(ACTIVE_STATUS); // Effect Schema
131
+ export type Type = Schema.Schema.Type<typeof Schema>; // TypeScript type
132
+ }
133
+ ```
134
+
135
+ **For Models:**
136
+ ```typescript
137
+ export const _User = Schema.Struct({ ... }); // Base schema (underscore prefix)
138
+ export namespace User { // Namespace for operational schemas
139
+ const schemas = getSchemas(_User);
140
+ export const Selectable = schemas.Selectable;
141
+ export const Insertable = schemas.Insertable;
142
+ export const Updateable = schemas.Updateable;
143
+ export type Select = ...;
144
+ export type Insert = ...;
145
+ // ... more types
146
+ }
147
+ ```
148
+
149
+ **For Join Tables:**
150
+ ```typescript
151
+ export const _CategoryToPost = Schema.Struct({ A, B });
152
+ export namespace CategoryToPost {
153
+ // Same pattern as models
154
+ }
155
+ ```
156
+
78
157
  ## Type Mappings
79
158
 
80
159
  | Prisma Type | Effect Schema Type | Notes |
@@ -1 +1 @@
1
- {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../src/effect/enum.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAKrD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,UAuB7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,UAMrE"}
1
+ {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../src/effect/enum.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAKrD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,UAqB7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,UAMrE"}
@@ -17,31 +17,29 @@ const codegen_1 = require("../utils/codegen");
17
17
  function generateEnumSchema(enumDef) {
18
18
  // Preserve original enum name from Prisma schema
19
19
  const enumName = enumDef.name;
20
- const schemaName = `${enumName}Schema`;
21
- const typeName = `${enumName}Type`;
22
- // Generate native TypeScript enum members (Tests 1-2)
20
+ // Generate native TypeScript enum members
23
21
  const enumMembers = enumDef.values
24
22
  .map((v) => {
25
23
  const value = (0, enum_1.getEnumValueDbName)(v);
26
24
  return ` ${v.name} = "${value}"`;
27
25
  })
28
26
  .join(",\n");
29
- // Generate: enum + Schema.Enums() wrapper + type (Tests 3-4)
30
- // Explicitly NOT using Schema.Literal (Test 6)
27
+ // Generate: enum + namespace with Schema and Type
31
28
  return `export enum ${enumName} {
32
29
  ${enumMembers}
33
30
  }
34
31
 
35
- export const ${schemaName} = Schema.Enums(${enumName});
36
-
37
- export type ${typeName} = Schema.Schema.Type<typeof ${schemaName}>;`;
32
+ export namespace ${enumName} {
33
+ export const Schema = Effect.Schema.Enums(${enumName});
34
+ export type Type = Effect.Schema.Schema.Type<typeof Schema>;
35
+ }`;
38
36
  }
39
37
  /**
40
38
  * Generate all enum schemas as a single file content
41
39
  */
42
40
  function generateEnumsFile(enums) {
43
41
  const header = (0, codegen_1.generateFileHeader)();
44
- const imports = `import { Schema } from "effect";`;
42
+ const imports = `import * as Effect from "effect";\nconst Schema = Effect.Schema;`;
45
43
  const enumSchemas = enums.map(generateEnumSchema).join("\n\n");
46
44
  return `${header}\n\n${imports}\n\n${enumSchemas}`;
47
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/effect/enum.ts"],"names":[],"mappings":";;AAeA,gDAuBC;AAKD,8CAMC;AAhDD,yCAAoD;AAEpD,8CAAsD;AAEtD;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAAC,OAA2B;IAC5D,iDAAiD;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9B,MAAM,UAAU,GAAG,GAAG,QAAQ,QAAQ,CAAC;IACvC,MAAM,QAAQ,GAAG,GAAG,QAAQ,MAAM,CAAC;IAEnC,sDAAsD;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM;SAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,KAAK,GAAG,IAAA,yBAAkB,EAAC,CAAC,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC;IACpC,CAAC,CAAC;SACD,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,6DAA6D;IAC7D,+CAA+C;IAC/C,OAAO,eAAe,QAAQ;EAC9B,WAAW;;;eAGE,UAAU,mBAAmB,QAAQ;;cAEtC,QAAQ,gCAAgC,UAAU,IAAI,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,KAAoC;IACpE,MAAM,MAAM,GAAG,IAAA,4BAAkB,GAAE,CAAC;IACpC,MAAM,OAAO,GAAG,kCAAkC,CAAC;IACnD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE/D,OAAO,GAAG,MAAM,OAAO,OAAO,OAAO,WAAW,EAAE,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/effect/enum.ts"],"names":[],"mappings":";;AAeA,gDAqBC;AAKD,8CAMC;AA9CD,yCAAoD;AAEpD,8CAAsD;AAEtD;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAAC,OAA2B;IAC5D,iDAAiD;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9B,0CAA0C;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM;SAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,KAAK,GAAG,IAAA,yBAAkB,EAAC,CAAC,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC;IACpC,CAAC,CAAC;SACD,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,kDAAkD;IAClD,OAAO,eAAe,QAAQ;EAC9B,WAAW;;;mBAGM,QAAQ;8CACmB,QAAQ;;EAEpD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,KAAoC;IACpE,MAAM,MAAM,GAAG,IAAA,4BAAkB,GAAE,CAAC;IACpC,MAAM,OAAO,GAAG,kEAAkE,CAAC;IACnF,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE/D,OAAO,GAAG,MAAM,OAAO,OAAO,OAAO,WAAW,EAAE,CAAC;AACrD,CAAC"}
@@ -15,11 +15,11 @@ export declare class EffectGenerator {
15
15
  */
16
16
  generateBaseSchema(model: DMMF.Model, fields: readonly DMMF.Field[]): string;
17
17
  /**
18
- * Generate operational schemas (ModelName.Selectable, etc.)
18
+ * Generate operational schemas as namespace (ModelName.Selectable, etc.)
19
19
  */
20
20
  generateOperationalSchemas(model: DMMF.Model): string;
21
21
  /**
22
- * Generate TypeScript type exports
22
+ * Generate TypeScript type exports as namespace
23
23
  */
24
24
  generateTypeExports(model: DMMF.Model): string;
25
25
  /**
@@ -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;AAOrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;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;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAiBrC;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;IAQ3D;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,OAAO;IAyBrC;;OAEG;IACH,wBAAwB,CAAC,UAAU,EAAE,aAAa,EAAE;CAKrD"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAOrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;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;IAY5C;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;IAarC;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;IAQ3D;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,OAAO;IAsBrC;;OAEG;IACH,wBAAwB,CAAC,UAAU,EAAE,aAAa,EAAE;CAKrD"}
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EffectGenerator = void 0;
4
4
  const enum_1 = require("./enum");
5
5
  const type_1 = require("./type");
6
- const naming_1 = require("../utils/naming");
7
6
  const codegen_1 = require("../utils/codegen");
8
7
  const join_table_1 = require("./join-table");
9
8
  /**
@@ -36,28 +35,31 @@ ${fieldDefinitions}
36
35
  });`;
37
36
  }
38
37
  /**
39
- * Generate operational schemas (ModelName.Selectable, etc.)
38
+ * Generate operational schemas as namespace (ModelName.Selectable, etc.)
40
39
  */
41
40
  generateOperationalSchemas(model) {
42
41
  const baseSchemaName = `_${model.name}`;
43
- const operationalSchemaName = (0, naming_1.toPascalCase)(model.name);
44
- return `export const ${operationalSchemaName} = getSchemas(${baseSchemaName});`;
42
+ const modelName = model.name;
43
+ return `export namespace ${modelName} {
44
+ const schemas = getSchemas(${baseSchemaName});
45
+ export const Selectable = schemas.Selectable;
46
+ export const Insertable = schemas.Insertable;
47
+ export const Updateable = schemas.Updateable;
48
+ }`;
45
49
  }
46
50
  /**
47
- * Generate TypeScript type exports
51
+ * Generate TypeScript type exports as namespace
48
52
  */
49
53
  generateTypeExports(model) {
50
- const name = (0, naming_1.toPascalCase)(model.name);
51
- // Application-side types (decoded - for repository layer)
52
- const applicationTypes = `export type ${name}Select = Schema.Schema.Type<typeof ${name}.Selectable>;
53
- export type ${name}Insert = Schema.Schema.Type<typeof ${name}.Insertable>;
54
- export type ${name}Update = Schema.Schema.Type<typeof ${name}.Updateable>;`;
55
- // Database-side encoded types (for queries layer)
56
- const encodedTypes = `
57
- export type ${name}SelectEncoded = Schema.Schema.Encoded<typeof ${name}.Selectable>;
58
- export type ${name}InsertEncoded = Schema.Schema.Encoded<typeof ${name}.Insertable>;
59
- export type ${name}UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateable>;`;
60
- return applicationTypes + encodedTypes;
54
+ const name = model.name;
55
+ return `export namespace ${name} {
56
+ export type Select = Schema.Schema.Type<typeof ${name}.Selectable>;
57
+ export type Insert = Schema.Schema.Type<typeof ${name}.Insertable>;
58
+ export type Update = Schema.Schema.Type<typeof ${name}.Updateable>;
59
+ export type SelectEncoded = Schema.Schema.Encoded<typeof ${name}.Selectable>;
60
+ export type InsertEncoded = Schema.Schema.Encoded<typeof ${name}.Insertable>;
61
+ export type UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateable>;
62
+ }`;
61
63
  }
62
64
  /**
63
65
  * Generate complete model schema (base + operational + types)
@@ -76,18 +78,15 @@ export type ${name}UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateab
76
78
  generateTypesHeader(hasEnums) {
77
79
  const header = (0, codegen_1.generateFileHeader)();
78
80
  const imports = [
79
- `import { Schema } from "effect";`,
81
+ `import * as Effect from "effect";`,
82
+ `const Schema = Effect.Schema;`,
80
83
  `import { columnType, generated, getSchemas } from "prisma-effect-kysely";`,
81
84
  ];
82
85
  if (hasEnums) {
83
- // Test 13: Import both enum and Schema wrapper
84
- // Test 14: Use PascalCase naming
85
- // Test 15: No SCREAMING_SNAKE_CASE
86
+ // With namespace pattern, we only import the enum itself
87
+ // Access Schema through namespace: EnumName.Schema
86
88
  const enumImports = this.dmmf.datamodel.enums
87
- .flatMap((e) => {
88
- const baseName = (0, naming_1.toPascalCase)(e.name);
89
- return [baseName, `${baseName}Schema`];
90
- })
89
+ .map((e) => e.name) // Preserve original enum names
91
90
  .join(', ');
92
91
  imports.push(`import { ${enumImports} } from "./enums";`);
93
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":";;;AACA,iCAA2C;AAC3C,iCAAwC;AAGxC,8CAAsD;AACtD,6CAAuD;AAGvD;;GAEG;AACH,MAAa,eAAe;IAC1B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;OAEG;IACH,aAAa,CAAC,KAAoC;QAChD,OAAO,IAAA,wBAAiB,EAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,KAAiB,EAAE,MAA6B;QACjE,MAAM,gBAAgB,GAAG,MAAM;aAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,SAAS,GAAG,IAAA,qBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzC,CAAC,CAAC;aACD,IAAI,CAAC,KAAK,CAAC,CAAC;QAEf,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAExC,OAAO,MAAM,KAAK,CAAC,IAAI;eACZ,cAAc;EAC3B,gBAAgB;IACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,0BAA0B,CAAC,KAAiB;QAC1C,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAE7B,OAAO,oBAAoB,SAAS;+BACT,cAAc;;;;EAI3C,CAAC;IACD,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,KAAiB;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAExB,OAAO,oBAAoB,IAAI;mDACgB,IAAI;mDACJ,IAAI;mDACJ,IAAI;6DACM,IAAI;6DACJ,IAAI;6DACJ,IAAI;EAC/D,CAAC;IACD,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,KAAiB,EAAE,MAAoB;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,iBAAiB,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEpD,OAAO,GAAG,UAAU,OAAO,iBAAiB,OAAO,WAAW,EAAE,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,QAAiB;QACnC,MAAM,MAAM,GAAG,IAAA,4BAAkB,GAAE,CAAC;QAEpC,MAAM,OAAO,GAAG;YACd,mCAAmC;YACnC,+BAA+B;YAC/B,2EAA2E;SAC5E,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,yDAAyD;YACzD,mDAAmD;YACnD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK;iBAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAE,+BAA+B;iBACnD,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,OAAO,CAAC,IAAI,CAAC,YAAY,WAAW,oBAAoB,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,GAAG,MAAM,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,UAA2B;QAClD,OAAO,UAAU;aACd,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,oCAAuB,EAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;aACnD,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;CACF;AA1GD,0CA0GC"}
@@ -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,oBAAoB,CAAC;AAuBxD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,IAAI,CAAC,QAAQ,GAClB,MAAM,CAgCR"}
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,oBAAoB,CAAC;AAuBxD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,IAAI,CAAC,QAAQ,GAClB,MAAM,CAqCR"}
@@ -39,16 +39,22 @@ export const _${relationName} = Schema.Struct({
39
39
  ${columnAField},
40
40
  ${columnBField},
41
41
  });`;
42
- // Generate operational schemas
43
- const operationalSchema = `export const ${relationName} = getSchemas(_${relationName});`;
44
- // Generate Type exports
45
- const typeExports = `export type ${relationName}Select = Schema.Schema.Type<typeof ${relationName}.Selectable>;
46
- export type ${relationName}Insert = Schema.Schema.Type<typeof ${relationName}.Insertable>;
47
- export type ${relationName}Update = Schema.Schema.Type<typeof ${relationName}.Updateable>;`;
48
- // Generate Encoded type exports
49
- const encodedExports = `export type ${relationName}SelectEncoded = Schema.Schema.Encoded<typeof ${relationName}.Selectable>;
50
- export type ${relationName}InsertEncoded = Schema.Schema.Encoded<typeof ${relationName}.Insertable>;
51
- export type ${relationName}UpdateEncoded = Schema.Schema.Encoded<typeof ${relationName}.Updateable>;`;
52
- return `${baseSchema}\n\n${operationalSchema}\n\n${typeExports}\n${encodedExports}`;
42
+ // Generate operational schemas as namespace
43
+ const operationalSchema = `export namespace ${relationName} {
44
+ const schemas = getSchemas(_${relationName});
45
+ export const Selectable = schemas.Selectable;
46
+ export const Insertable = schemas.Insertable;
47
+ export const Updateable = schemas.Updateable;
48
+ }`;
49
+ // Generate Type exports as namespace
50
+ const typeExports = `export namespace ${relationName} {
51
+ export type Select = Schema.Schema.Type<typeof ${relationName}.Selectable>;
52
+ export type Insert = Schema.Schema.Type<typeof ${relationName}.Insertable>;
53
+ export type Update = Schema.Schema.Type<typeof ${relationName}.Updateable>;
54
+ export type SelectEncoded = Schema.Schema.Encoded<typeof ${relationName}.Selectable>;
55
+ export type InsertEncoded = Schema.Schema.Encoded<typeof ${relationName}.Insertable>;
56
+ export type UpdateEncoded = Schema.Schema.Encoded<typeof ${relationName}.Updateable>;
57
+ }`;
58
+ return `${baseSchema}\n\n${operationalSchema}\n\n${typeExports}`;
53
59
  }
54
60
  //# sourceMappingURL=join-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"join-table.js","sourceRoot":"","sources":["../../src/effect/join-table.ts"],"names":[],"mappings":";;AAiCA,0DAmCC;AAjED;;;GAGG;AACH,SAAS,aAAa,CACpB,UAAkB,EAClB,MAAe;IAEf,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;;;;;;;;GAQG;AACH,SAAgB,uBAAuB,CACrC,SAAwB,EACxB,IAAmB;IAEnB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAEtG,0CAA0C;IAC1C,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEhE,0EAA0E;IAC1E,MAAM,YAAY,GAAG,mBAAmB,aAAa,+BAA+B,CAAC;IACrF,MAAM,YAAY,GAAG,mBAAmB,aAAa,+BAA+B,CAAC;IAErF,uBAAuB;IACvB,MAAM,UAAU,GAAG,MAAM,SAAS;gBACpB,YAAY;EAC1B,YAAY;EACZ,YAAY;IACV,CAAC;IAEH,+BAA+B;IAC/B,MAAM,iBAAiB,GAAG,gBAAgB,YAAY,kBAAkB,YAAY,IAAI,CAAC;IAEzF,wBAAwB;IACxB,MAAM,WAAW,GAAG,eAAe,YAAY,sCAAsC,YAAY;cACrF,YAAY,sCAAsC,YAAY;cAC9D,YAAY,sCAAsC,YAAY,eAAe,CAAC;IAE1F,gCAAgC;IAChC,MAAM,cAAc,GAAG,eAAe,YAAY,gDAAgD,YAAY;cAClG,YAAY,gDAAgD,YAAY;cACxE,YAAY,gDAAgD,YAAY,eAAe,CAAC;IAEpG,OAAO,GAAG,UAAU,OAAO,iBAAiB,OAAO,WAAW,KAAK,cAAc,EAAE,CAAC;AACtF,CAAC"}
1
+ {"version":3,"file":"join-table.js","sourceRoot":"","sources":["../../src/effect/join-table.ts"],"names":[],"mappings":";;AAiCA,0DAwCC;AAtED;;;GAGG;AACH,SAAS,aAAa,CACpB,UAAkB,EAClB,MAAe;IAEf,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;;;;;;;;GAQG;AACH,SAAgB,uBAAuB,CACrC,SAAwB,EACxB,IAAmB;IAEnB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAEtG,0CAA0C;IAC1C,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEhE,0EAA0E;IAC1E,MAAM,YAAY,GAAG,mBAAmB,aAAa,+BAA+B,CAAC;IACrF,MAAM,YAAY,GAAG,mBAAmB,aAAa,+BAA+B,CAAC;IAErF,uBAAuB;IACvB,MAAM,UAAU,GAAG,MAAM,SAAS;gBACpB,YAAY;EAC1B,YAAY;EACZ,YAAY;IACV,CAAC;IAEH,4CAA4C;IAC5C,MAAM,iBAAiB,GAAG,oBAAoB,YAAY;gCAC5B,YAAY;;;;EAI1C,CAAC;IAED,qCAAqC;IACrC,MAAM,WAAW,GAAG,oBAAoB,YAAY;mDACH,YAAY;mDACZ,YAAY;mDACZ,YAAY;6DACF,YAAY;6DACZ,YAAY;6DACZ,YAAY;EACvE,CAAC;IAED,OAAO,GAAG,UAAU,OAAO,iBAAiB,OAAO,WAAW,EAAE,CAAC;AACnE,CAAC"}
@@ -4,7 +4,6 @@ exports.mapFieldToEffectType = mapFieldToEffectType;
4
4
  exports.buildFieldType = buildFieldType;
5
5
  const type_1 = require("../prisma/type");
6
6
  const annotations_1 = require("../utils/annotations");
7
- const naming_1 = require("../utils/naming");
8
7
  /**
9
8
  * Prisma scalar type mapping to Effect Schema types
10
9
  * Uses const assertion to avoid type guards
@@ -43,9 +42,9 @@ function mapFieldToEffectType(field, dmmf) {
43
42
  // TDD: Satisfies tests 11-12 in field-type-generation.test.ts
44
43
  const enumDef = dmmf.datamodel.enums.find((e) => e.name === field.type);
45
44
  if (enumDef) {
46
- // Return Schema wrapper, not raw enum (Test 11)
47
- // Use PascalCase + Schema suffix (Test 12)
48
- return (0, naming_1.toPascalCase)(field.type, 'Schema');
45
+ // Return Schema via namespace pattern (v1.6.0+)
46
+ // Preserve original enum name, access Schema through namespace
47
+ return `${enumDef.name}.Schema`;
49
48
  }
50
49
  // PRIORITY 5: Fallback to Unknown
51
50
  return "Schema.Unknown";
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/effect/type.ts"],"names":[],"mappings":";;AA8BA,oDA8BC;AAKD,wCAcC;AA9ED,yCAKwB;AACxB,sDAAiE;AACjE,4CAA+C;AAE/C;;;GAGG;AACH,MAAM,iBAAiB,GAAG;IACxB,MAAM,EAAE,eAAe;IACvB,GAAG,EAAE,eAAe;IACpB,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,eAAe,EAAE,gBAAgB;IAC1C,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,gBAAgB,EAAE,oBAAoB;IAC5C,KAAK,EAAE,mBAAmB;CAClB,CAAC;AAEX;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,KAAiB,EAAE,IAAmB;IACzE,+CAA+C;IAC/C,MAAM,YAAY,GAAG,IAAA,uCAAyB,EAAC,KAAK,CAAC,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAA,kBAAW,EAAC,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,8DAA8D;IAC9D,MAAM,UAAU,GACd,iBAAiB,CAAC,KAAK,CAAC,IAAsC,CAAC,CAAC;IAClE,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,oCAAoC;IACpC,8DAA8D;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,OAAO,EAAE,CAAC;QACZ,gDAAgD;QAChD,2CAA2C;QAC3C,OAAO,IAAA,qBAAY,EAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,kCAAkC;IAClC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAiB,EAAE,IAAmB;IACnE,IAAI,QAAQ,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEjD,gBAAgB;IAChB,IAAI,IAAA,kBAAW,EAAC,KAAK,CAAC,EAAE,CAAC;QACvB,QAAQ,GAAG,gBAAgB,QAAQ,GAAG,CAAC;IACzC,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,IAAA,sBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,IAAA,sBAAe,EAAC,KAAK,CAAC,EAAE,CAAC;QACvD,QAAQ,GAAG,sBAAsB,QAAQ,GAAG,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/effect/type.ts"],"names":[],"mappings":";;AA8BA,oDA8BC;AAKD,wCAcC;AA9ED,yCAKwB;AACxB,sDAAiE;AAGjE;;;GAGG;AACH,MAAM,iBAAiB,GAAG;IACxB,MAAM,EAAE,eAAe;IACvB,GAAG,EAAE,eAAe;IACpB,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,eAAe,EAAE,gBAAgB;IAC1C,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,gBAAgB,EAAE,oBAAoB;IAC5C,KAAK,EAAE,mBAAmB;CAClB,CAAC;AAEX;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,KAAiB,EAAE,IAAmB;IACzE,+CAA+C;IAC/C,MAAM,YAAY,GAAG,IAAA,uCAAyB,EAAC,KAAK,CAAC,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAA,kBAAW,EAAC,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,8DAA8D;IAC9D,MAAM,UAAU,GACd,iBAAiB,CAAC,KAAK,CAAC,IAAsC,CAAC,CAAC;IAClE,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,oCAAoC;IACpC,8DAA8D;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,OAAO,EAAE,CAAC;QACZ,gDAAgD;QAChD,+DAA+D;QAC/D,OAAO,GAAG,OAAO,CAAC,IAAI,SAAS,CAAC;IAClC,CAAC;IAED,kCAAkC;IAClC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAiB,EAAE,IAAmB;IACnE,IAAI,QAAQ,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEjD,gBAAgB;IAChB,IAAI,IAAA,kBAAW,EAAC,KAAK,CAAC,EAAE,CAAC;QACvB,QAAQ,GAAG,gBAAgB,QAAQ,GAAG,CAAC;IACzC,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,IAAA,sBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,IAAA,sBAAe,EAAC,KAAK,CAAC,EAAE,CAAC;QACvD,QAAQ,GAAG,sBAAsB,QAAQ,GAAG,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -22,7 +22,7 @@ const orchestrator_1 = require("./orchestrator");
22
22
  __exportStar(require("../kysely/helpers"), exports);
23
23
  exports.generator = (0, generator_helper_1.generatorHandler)({
24
24
  onManifest: () => ({
25
- version: '1.5.3',
25
+ version: '1.6.0',
26
26
  defaultOutput: './generated',
27
27
  prettyName: 'Prisma Effect Kysely Generator',
28
28
  }),
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Configuration for a single Unsupported field
3
+ */
4
+ export interface UnsupportedFieldConfig {
5
+ effectType: string;
6
+ dbType: string;
7
+ dbName: string;
8
+ required: boolean;
9
+ comment?: string;
10
+ }
11
+ /**
12
+ * Full configuration structure
13
+ */
14
+ export interface UnsupportedConfig {
15
+ models: Record<string, Record<string, UnsupportedFieldConfig>>;
16
+ }
17
+ /**
18
+ * Load unsupported fields configuration from JSON file
19
+ * Looks for prisma/unsupported-fields.json relative to schema location
20
+ */
21
+ export declare function loadUnsupportedConfig(schemaPath: string): UnsupportedConfig | null;
22
+ /**
23
+ * Get unsupported fields for a specific model
24
+ */
25
+ export declare function getUnsupportedFields(config: UnsupportedConfig | null, modelName: string): Record<string, UnsupportedFieldConfig>;
26
+ //# sourceMappingURL=unsupported-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported-config.d.ts","sourceRoot":"","sources":["../../src/utils/unsupported-config.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;CAChE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAiBlF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAChC,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAGxC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadUnsupportedConfig = loadUnsupportedConfig;
4
+ exports.getUnsupportedFields = getUnsupportedFields;
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
7
+ /**
8
+ * Load unsupported fields configuration from JSON file
9
+ * Looks for prisma/unsupported-fields.json relative to schema location
10
+ */
11
+ function loadUnsupportedConfig(schemaPath) {
12
+ try {
13
+ // Assume schema is in prisma/schema/ directory
14
+ // Config should be in prisma/unsupported-fields.json
15
+ const schemaDir = (0, path_1.dirname)((0, path_1.dirname)(schemaPath)); // Go up to prisma/
16
+ const configPath = (0, path_1.join)(schemaDir, 'unsupported-fields.json');
17
+ if (!(0, fs_1.existsSync)(configPath)) {
18
+ return null;
19
+ }
20
+ const content = (0, fs_1.readFileSync)(configPath, 'utf-8');
21
+ return JSON.parse(content);
22
+ }
23
+ catch (error) {
24
+ console.warn(`⚠️ Failed to load unsupported-fields.json: ${error}`);
25
+ return null;
26
+ }
27
+ }
28
+ /**
29
+ * Get unsupported fields for a specific model
30
+ */
31
+ function getUnsupportedFields(config, modelName) {
32
+ if (!config)
33
+ return {};
34
+ return config.models[modelName] || {};
35
+ }
36
+ //# sourceMappingURL=unsupported-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported-config.js","sourceRoot":"","sources":["../../src/utils/unsupported-config.ts"],"names":[],"mappings":";;AAyBA,sDAiBC;AAKD,oDAMC;AArDD,2BAA8C;AAC9C,+BAAqC;AAoBrC;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,UAAkB;IACtD,IAAI,CAAC;QACH,+CAA+C;QAC/C,qDAAqD;QACrD,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,IAAA,cAAO,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB;QACnE,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;QAE9D,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,+CAA+C,KAAK,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,MAAgC,EAChC,SAAiB;IAEjB,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prisma-effect-kysely",
3
- "version": "1.5.3",
3
+ "version": "1.6.1",
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",