prisma-effect-kysely 1.6.1 → 1.7.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,66 +5,31 @@ 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
8
+ ## [1.7.1] - 2025-10-12
19
9
 
20
10
  ### Changed
21
11
 
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
12
+ - **Enum naming convention improved**:
13
+ - Enum declarations preserve original Prisma schema names (e.g., `export enum ACTIVE_STATUS`)
14
+ - Schema wrappers use PascalCase for idiomatic TypeScript (e.g., `ActiveStatusSchema`)
15
+ - Type aliases use PascalCase (e.g., `ActiveStatusType`)
16
+ - **Usage**: Access enum values with original name: `ACTIVE_STATUS.ACTIVE`, validate with PascalCase schema: `ActiveStatusSchema`
24
17
 
25
- ## [1.6.0] - 2025-10-12
18
+ ### Example
26
19
 
27
- ### Changed
20
+ ```typescript
21
+ // Generated from: enum ACTIVE_STATUS { ACTIVE, INACTIVE }
22
+ export enum ACTIVE_STATUS {
23
+ ACTIVE = "ACTIVE",
24
+ INACTIVE = "INACTIVE"
25
+ }
26
+ export const ActiveStatusSchema = Schema.Enums(ACTIVE_STATUS);
27
+ export type ActiveStatusType = Schema.Schema.Type<typeof ActiveStatusSchema>;
28
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.
29
+ // Usage:
30
+ const status = ACTIVE_STATUS.ACTIVE; // Direct enum access
31
+ Schema.decodeSync(ActiveStatusSchema)(input); // Validation
32
+ ```
68
33
 
69
34
  ## [1.5.3] - 2025-10-12
70
35
 
package/README.md CHANGED
@@ -43,117 +43,38 @@ Generates three files in the configured output directory:
43
43
 
44
44
  ### enums.ts
45
45
 
46
- Native TypeScript enums with Effect Schema wrappers in namespaces:
46
+ Effect Schema enums from Prisma enums with exact literal types:
47
47
 
48
48
  ```typescript
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
49
+ export const UserRole = Schema.Literal('admin', 'user', 'guest');
50
+ export type UserRole = Schema.Schema.Type<typeof UserRole>;
64
51
  ```
65
52
 
66
53
  ### types.ts
67
54
 
68
- Effect Schema structs from Prisma models with Kysely integration:
55
+ Effect Schema structs from Prisma models:
69
56
 
70
57
  ```typescript
71
- // Base schema with underscore prefix
72
- export const _User = Schema.Struct({
73
- id: columnType(Schema.UUID, Schema.Never, Schema.Never), // Read-only ID
58
+ export const User = Schema.Struct({
59
+ id: Schema.UUID,
74
60
  email: Schema.String,
75
- name: Schema.Union(Schema.String, Schema.Undefined), // Optional field
76
- role: UserRole.Schema,
77
- createdAt: generated(Schema.Date), // Generated field
61
+ name: Schema.optional(Schema.String),
62
+ role: UserRole,
63
+ createdAt: Schema.Date,
78
64
  });
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
- }
65
+ export type User = Schema.Schema.Type<typeof User>;
100
66
  ```
101
67
 
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
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`
106
71
 
107
- This creates a complete bridge from Prisma Effect Kysely TypeScript with stable, predictable names.
72
+ This ensures consistent TypeScript identifier naming while preserving the original model names for internal schemas.
108
73
 
109
74
  ### index.ts
110
75
 
111
76
  Re-exports all generated types for easy importing
112
77
 
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
-
157
78
  ## Type Mappings
158
79
 
159
80
  | 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,UAqB7D;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,UAyB7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,UAMrE"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateEnumSchema = generateEnumSchema;
4
4
  exports.generateEnumsFile = generateEnumsFile;
5
5
  const enum_1 = require("../prisma/enum");
6
+ const naming_1 = require("../utils/naming");
6
7
  const codegen_1 = require("../utils/codegen");
7
8
  /**
8
9
  * Generate TypeScript enum + Effect Schema.Enums wrapper
@@ -15,31 +16,35 @@ const codegen_1 = require("../utils/codegen");
15
16
  * - Type alias for convenience
16
17
  */
17
18
  function generateEnumSchema(enumDef) {
18
- // Preserve original enum name from Prisma schema
19
+ // Preserve original enum name for the enum itself
19
20
  const enumName = enumDef.name;
20
- // Generate native TypeScript enum members
21
+ // Use PascalCase for Schema and Type exports
22
+ const pascalName = (0, naming_1.toPascalCase)(enumDef.name);
23
+ const schemaName = `${pascalName}Schema`;
24
+ const typeName = `${pascalName}Type`;
25
+ // Generate native TypeScript enum members (Tests 1-2)
21
26
  const enumMembers = enumDef.values
22
27
  .map((v) => {
23
28
  const value = (0, enum_1.getEnumValueDbName)(v);
24
29
  return ` ${v.name} = "${value}"`;
25
30
  })
26
31
  .join(",\n");
27
- // Generate: enum + namespace with Schema and Type
32
+ // Generate: enum + Schema.Enums() wrapper + type (Tests 3-4)
33
+ // Explicitly NOT using Schema.Literal (Test 6)
28
34
  return `export enum ${enumName} {
29
35
  ${enumMembers}
30
36
  }
31
37
 
32
- export namespace ${enumName} {
33
- export const Schema = Effect.Schema.Enums(${enumName});
34
- export type Type = Effect.Schema.Schema.Type<typeof Schema>;
35
- }`;
38
+ export const ${schemaName} = Schema.Enums(${enumName});
39
+
40
+ export type ${typeName} = Schema.Schema.Type<typeof ${schemaName}>;`;
36
41
  }
37
42
  /**
38
43
  * Generate all enum schemas as a single file content
39
44
  */
40
45
  function generateEnumsFile(enums) {
41
46
  const header = (0, codegen_1.generateFileHeader)();
42
- const imports = `import * as Effect from "effect";\nconst Schema = Effect.Schema;`;
47
+ const imports = `import { Schema } from "effect";`;
43
48
  const enumSchemas = enums.map(generateEnumSchema).join("\n\n");
44
49
  return `${header}\n\n${imports}\n\n${enumSchemas}`;
45
50
  }
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/effect/enum.ts"],"names":[],"mappings":";;AAeA,gDAyBC;AAKD,8CAMC;AAlDD,yCAAoD;AACpD,4CAA+C;AAC/C,8CAAsD;AAEtD;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAAC,OAA2B;IAC5D,kDAAkD;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9B,6CAA6C;IAC7C,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,GAAG,UAAU,QAAQ,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,UAAU,MAAM,CAAC;IAErC,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"}
@@ -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 as namespace (ModelName.Selectable, etc.)
18
+ * Generate operational schemas (ModelName.Selectable, etc.)
19
19
  */
20
20
  generateOperationalSchemas(model: DMMF.Model): string;
21
21
  /**
22
- * Generate TypeScript type exports as namespace
22
+ * Generate TypeScript type exports
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;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"}
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"}
@@ -3,6 +3,7 @@ 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");
6
7
  const codegen_1 = require("../utils/codegen");
7
8
  const join_table_1 = require("./join-table");
8
9
  /**
@@ -35,31 +36,28 @@ ${fieldDefinitions}
35
36
  });`;
36
37
  }
37
38
  /**
38
- * Generate operational schemas as namespace (ModelName.Selectable, etc.)
39
+ * Generate operational schemas (ModelName.Selectable, etc.)
39
40
  */
40
41
  generateOperationalSchemas(model) {
41
42
  const baseSchemaName = `_${model.name}`;
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
- }`;
43
+ const operationalSchemaName = (0, naming_1.toPascalCase)(model.name);
44
+ return `export const ${operationalSchemaName} = getSchemas(${baseSchemaName});`;
49
45
  }
50
46
  /**
51
- * Generate TypeScript type exports as namespace
47
+ * Generate TypeScript type exports
52
48
  */
53
49
  generateTypeExports(model) {
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
- }`;
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;
63
61
  }
64
62
  /**
65
63
  * Generate complete model schema (base + operational + types)
@@ -78,15 +76,18 @@ ${fieldDefinitions}
78
76
  generateTypesHeader(hasEnums) {
79
77
  const header = (0, codegen_1.generateFileHeader)();
80
78
  const imports = [
81
- `import * as Effect from "effect";`,
82
- `const Schema = Effect.Schema;`,
79
+ `import { Schema } from "effect";`,
83
80
  `import { columnType, generated, getSchemas } from "prisma-effect-kysely";`,
84
81
  ];
85
82
  if (hasEnums) {
86
- // With namespace pattern, we only import the enum itself
87
- // Access Schema through namespace: EnumName.Schema
83
+ // Test 13: Import both enum and Schema wrapper
84
+ // Test 14: Use PascalCase naming
85
+ // Test 15: No SCREAMING_SNAKE_CASE
88
86
  const enumImports = this.dmmf.datamodel.enums
89
- .map((e) => e.name) // Preserve original enum names
87
+ .flatMap((e) => {
88
+ const baseName = (0, naming_1.toPascalCase)(e.name);
89
+ return [baseName, `${baseName}Schema`];
90
+ })
90
91
  .join(', ');
91
92
  imports.push(`import { ${enumImports} } from "./enums";`);
92
93
  }
@@ -1 +1 @@
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
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/effect/generator.ts"],"names":[],"mappings":"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"}
@@ -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,CAqCR"}
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"}
@@ -39,22 +39,16 @@ export const _${relationName} = Schema.Struct({
39
39
  ${columnAField},
40
40
  ${columnBField},
41
41
  });`;
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}`;
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}`;
59
53
  }
60
54
  //# sourceMappingURL=join-table.js.map
@@ -1 +1 @@
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"}
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"}
@@ -4,6 +4,7 @@ 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");
7
8
  /**
8
9
  * Prisma scalar type mapping to Effect Schema types
9
10
  * Uses const assertion to avoid type guards
@@ -42,9 +43,9 @@ function mapFieldToEffectType(field, dmmf) {
42
43
  // TDD: Satisfies tests 11-12 in field-type-generation.test.ts
43
44
  const enumDef = dmmf.datamodel.enums.find((e) => e.name === field.type);
44
45
  if (enumDef) {
45
- // Return Schema via namespace pattern (v1.6.0+)
46
- // Preserve original enum name, access Schema through namespace
47
- return `${enumDef.name}.Schema`;
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');
48
49
  }
49
50
  // PRIORITY 5: Fallback to Unknown
50
51
  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;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"}
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"}
@@ -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.6.0',
25
+ version: '1.7.1',
26
26
  defaultOutput: './generated',
27
27
  prettyName: 'Prisma Effect Kysely Generator',
28
28
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prisma-effect-kysely",
3
- "version": "1.6.1",
3
+ "version": "1.7.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",
@@ -1,26 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,36 +0,0 @@
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
@@ -1 +0,0 @@
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"}