prisma-effect-kysely 1.13.1 → 1.14.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.
Files changed (78) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +78 -6
  3. package/dist/effect/enum.d.ts +1 -1
  4. package/dist/effect/enum.d.ts.map +1 -1
  5. package/dist/effect/enum.js +19 -22
  6. package/dist/effect/enum.js.map +1 -1
  7. package/dist/effect/generator.d.ts +1 -1
  8. package/dist/effect/generator.d.ts.map +1 -1
  9. package/dist/effect/generator.js +17 -20
  10. package/dist/effect/generator.js.map +1 -1
  11. package/dist/effect/join-table.d.ts +1 -1
  12. package/dist/effect/join-table.d.ts.map +1 -1
  13. package/dist/effect/join-table.js +7 -11
  14. package/dist/effect/join-table.js.map +1 -1
  15. package/dist/effect/type.js +10 -14
  16. package/dist/effect/type.js.map +1 -1
  17. package/dist/generator/config.d.ts +1 -1
  18. package/dist/generator/config.d.ts.map +1 -1
  19. package/dist/generator/config.js +10 -15
  20. package/dist/generator/config.js.map +1 -1
  21. package/dist/generator/contract-scaffolder.d.ts +2 -2
  22. package/dist/generator/contract-scaffolder.d.ts.map +1 -1
  23. package/dist/generator/contract-scaffolder.js +21 -65
  24. package/dist/generator/contract-scaffolder.js.map +1 -1
  25. package/dist/generator/domain-detector.d.ts.map +1 -1
  26. package/dist/generator/domain-detector.js +5 -43
  27. package/dist/generator/domain-detector.js.map +1 -1
  28. package/dist/generator/index.d.ts +2 -1
  29. package/dist/generator/index.d.ts.map +1 -1
  30. package/dist/generator/index.js +10 -27
  31. package/dist/generator/index.js.map +1 -1
  32. package/dist/generator/orchestrator.d.ts.map +1 -1
  33. package/dist/generator/orchestrator.js +33 -40
  34. package/dist/generator/orchestrator.js.map +1 -1
  35. package/dist/kysely/generator.d.ts +1 -1
  36. package/dist/kysely/generator.d.ts.map +1 -1
  37. package/dist/kysely/generator.js +9 -12
  38. package/dist/kysely/generator.js.map +1 -1
  39. package/dist/kysely/helpers.d.ts +4 -8
  40. package/dist/kysely/helpers.d.ts.map +1 -1
  41. package/dist/kysely/helpers.js +29 -71
  42. package/dist/kysely/helpers.js.map +1 -1
  43. package/dist/kysely/type.d.ts +1 -1
  44. package/dist/kysely/type.d.ts.map +1 -1
  45. package/dist/kysely/type.js +24 -38
  46. package/dist/kysely/type.js.map +1 -1
  47. package/dist/prisma/enum.d.ts +1 -1
  48. package/dist/prisma/enum.d.ts.map +1 -1
  49. package/dist/prisma/enum.js +3 -8
  50. package/dist/prisma/enum.js.map +1 -1
  51. package/dist/prisma/generator.d.ts +2 -2
  52. package/dist/prisma/generator.d.ts.map +1 -1
  53. package/dist/prisma/generator.js +6 -42
  54. package/dist/prisma/generator.js.map +1 -1
  55. package/dist/prisma/relation.d.ts.map +1 -1
  56. package/dist/prisma/relation.js +45 -48
  57. package/dist/prisma/relation.js.map +1 -1
  58. package/dist/prisma/type.d.ts +1 -1
  59. package/dist/prisma/type.d.ts.map +1 -1
  60. package/dist/prisma/type.js +16 -29
  61. package/dist/prisma/type.js.map +1 -1
  62. package/dist/utils/annotations.d.ts.map +1 -1
  63. package/dist/utils/annotations.js +3 -9
  64. package/dist/utils/annotations.js.map +1 -1
  65. package/dist/utils/codegen.js +1 -4
  66. package/dist/utils/codegen.js.map +1 -1
  67. package/dist/utils/file-manager.js +9 -12
  68. package/dist/utils/file-manager.js.map +1 -1
  69. package/dist/utils/naming.js +3 -8
  70. package/dist/utils/naming.js.map +1 -1
  71. package/dist/utils/templates.d.ts.map +1 -1
  72. package/dist/utils/templates.js +5 -43
  73. package/dist/utils/templates.js.map +1 -1
  74. package/package.json +33 -25
  75. package/dist/utils/unsupported-config.d.ts +0 -26
  76. package/dist/utils/unsupported-config.d.ts.map +0 -1
  77. package/dist/utils/unsupported-config.js +0 -36
  78. package/dist/utils/unsupported-config.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.14.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`11d09a7`](https://github.com/samuelho-dev/prisma-effect-kysely/commit/11d09a71ed233549a3bd591793b3f423cad71950) Thanks [@samuelho-dev](https://github.com/samuelho-dev)! - Fix ESM/CJS interop for Prisma 7.x compatibility
8
+
9
+ Node.js ESM cannot use named imports from CJS modules. Changed `@prisma/generator-helper` import to use default import pattern:
10
+
11
+ ```typescript
12
+ // Before (broken in ESM)
13
+ import { generatorHandler } from '@prisma/generator-helper';
14
+
15
+ // After (works)
16
+ import pkg from '@prisma/generator-helper';
17
+ const { generatorHandler } = pkg;
18
+ ```
19
+
20
+ Added ESM compatibility tests to prevent future regressions.
21
+
22
+ ## 1.14.0
23
+
24
+ ### Minor Changes
25
+
26
+ - 48451f3: Migrate to Pure ESM standards.
27
+ - Change package type to module and update exports.
28
+ - Switch to ESNext module and Bundler resolution in tsconfig.
29
+ - Update test suite for ESM compatibility using @jest/globals and import.meta.dirname.
30
+ - Standardize imports with node: prefix and explicit re-exports.
31
+ - Ensure generated code and build output follow ESM standards.
32
+
33
+ ### Patch Changes
34
+
35
+ - 2c75314: Fix critical Effect Schema type errors and migrate to Biome linting
36
+ - Fix Schema.make context preservation in kysely helpers
37
+ - Replace Jest with Vitest for ESM compatibility
38
+ - Migrate from ESLint to Biome for modern linting
39
+ - Update all test files to use Vitest APIs
40
+ - Fix enum generation redeclaration conflicts
41
+ - Refactor complex functions to reduce cognitive complexity
42
+ - Remove all non-null assertions with proper null checks
43
+ - Update Node.js minimum version to 20.0.0
44
+
3
45
  ## 1.13.1
4
46
 
5
47
  ### Patch Changes
package/README.md CHANGED
@@ -66,6 +66,7 @@ export type User = Schema.Schema.Type<typeof User>;
66
66
  ```
67
67
 
68
68
  **Naming Convention**: All exported schemas and types use PascalCase, regardless of the Prisma model naming convention:
69
+
69
70
  - Model `User` → `User`, `UserSelect`, `UserInsert`
70
71
  - Model `session_preference` → `SessionPreference`, `SessionPreferenceSelect`, `SessionPreferenceInsert`
71
72
 
@@ -112,24 +113,93 @@ model User {
112
113
 
113
114
  ```bash
114
115
  # Install dependencies
115
- npm install
116
+ pnpm install
116
117
 
117
118
  # Run tests
118
- npm test
119
+ pnpm test
119
120
 
120
121
  # Run tests in watch mode
121
- npm run test:watch
122
+ pnpm run test:watch
122
123
 
123
124
  # Run tests with coverage
124
- npm run test:coverage
125
+ pnpm run test:coverage
125
126
 
126
127
  # Type check
127
- npm run typecheck
128
+ pnpm run typecheck
128
129
 
129
130
  # Build
130
- npm run build
131
+ pnpm run build
131
132
  ```
132
133
 
134
+ ## Release Process
135
+
136
+ This project uses [Changesets](https://github.com/changesets/changesets) for automated versioning and publishing:
137
+
138
+ ### Creating a Release
139
+
140
+ 1. **Add a changeset** for your changes:
141
+
142
+ ```bash
143
+ pnpm changeset
144
+ ```
145
+
146
+ Follow the prompts to describe your changes (patch/minor/major).
147
+
148
+ 2. **Commit the changeset**:
149
+
150
+ ```bash
151
+ git add .changeset/
152
+ git commit -m "docs: add changeset for [feature/fix]"
153
+ git push
154
+ ```
155
+
156
+ 3. **Automated Release PR**: The CI will automatically:
157
+ - Create or update a "Version Packages" PR
158
+ - Update `package.json` version
159
+ - Update `CHANGELOG.md`
160
+
161
+ 4. **Publish**: When you merge the "Version Packages" PR:
162
+ - CI automatically publishes to npm using Bun
163
+ - Creates a git tag (e.g., `v1.15.0`)
164
+ - Creates a GitHub release with auto-generated notes
165
+
166
+ ### Manual Publishing (if needed)
167
+
168
+ ```bash
169
+ # Build and run all checks
170
+ pnpm run prepublishOnly
171
+
172
+ # Publish with Bun (recommended)
173
+ bun publish --access public
174
+ ```
175
+
176
+ ## Releasing (CI/CD)
177
+
178
+ This repo uses **Changesets** to automate versioning, changelog updates, npm publishing, git tags, and GitHub Releases.
179
+
180
+ ### For PR authors
181
+
182
+ Add a changeset for any user-facing change:
183
+
184
+ ```bash
185
+ pnpm changeset
186
+ ```
187
+
188
+ Commit the generated file in `.changeset/`.
189
+
190
+ ### What happens on `main`
191
+
192
+ - When changesets land on `main`, CI opens/updates a **Version Packages** PR.
193
+ - When the **Version Packages** PR is merged, CI:
194
+ - updates `package.json` + `CHANGELOG.md`
195
+ - publishes to npm (with provenance)
196
+ - creates/pushes `vX.Y.Z` tag
197
+ - creates a GitHub Release
198
+
199
+ ### Required GitHub repo secrets
200
+
201
+ - `NPM_TOKEN`: npm access token with permission to publish `prisma-effect-kysely`
202
+
133
203
  ## Architecture
134
204
 
135
205
  ### Type Safety
@@ -168,12 +238,14 @@ model User {
168
238
  **Supported for**: All Prisma scalar types (String, Int, Float, Boolean, DateTime, BigInt, Decimal, Json, Bytes)
169
239
 
170
240
  **Use cases**:
241
+
171
242
  - Email/URL validation
172
243
  - Number constraints (positive, range, etc.)
173
244
  - Custom branded types
174
245
  - Refined string patterns
175
246
 
176
247
  **Examples**:
248
+
177
249
  ```typescript
178
250
  // Generated from Prisma schema with @customType annotations
179
251
  export const _User = Schema.Struct({
@@ -1,4 +1,4 @@
1
- import type { DMMF } from "@prisma/generator-helper";
1
+ import type { DMMF } from '@prisma/generator-helper';
2
2
  /**
3
3
  * Generate TypeScript enum + Effect Schema.Enums wrapper
4
4
  *
@@ -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,UAiC7D;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,UAoC7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,UAMrE"}
@@ -1,10 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateEnumSchema = generateEnumSchema;
4
- exports.generateEnumsFile = generateEnumsFile;
5
- const enum_1 = require("../prisma/enum");
6
- const naming_1 = require("../utils/naming");
7
- const codegen_1 = require("../utils/codegen");
1
+ import { getEnumValueDbName } from '../prisma/enum.js';
2
+ import { generateFileHeader } from '../utils/codegen.js';
3
+ import { toPascalCase } from '../utils/naming.js';
8
4
  /**
9
5
  * Generate TypeScript enum + Effect Schema.Enums wrapper
10
6
  *
@@ -15,45 +11,46 @@ const codegen_1 = require("../utils/codegen");
15
11
  * - Effect Schema.Enums() wrapper for validation
16
12
  * - Type alias for convenience
17
13
  */
18
- function generateEnumSchema(enumDef) {
14
+ export function generateEnumSchema(enumDef) {
19
15
  // Preserve original enum name for the enum itself
20
16
  const enumName = enumDef.name;
21
17
  // Use PascalCase for Schema and Type exports
22
- const pascalName = (0, naming_1.toPascalCase)(enumDef.name);
18
+ const pascalName = toPascalCase(enumDef.name);
23
19
  const schemaName = `${pascalName}Schema`;
24
20
  const typeName = `${pascalName}Type`;
25
21
  // Generate native TypeScript enum members (Tests 1-2)
26
22
  const enumMembers = enumDef.values
27
23
  .map((v) => {
28
- const value = (0, enum_1.getEnumValueDbName)(v);
24
+ const value = getEnumValueDbName(v);
29
25
  return ` ${v.name} = "${value}"`;
30
26
  })
31
- .join(",\n");
27
+ .join(',\n');
32
28
  // Generate: enum + Schema.Enums() wrapper + type (Tests 3-4)
33
29
  // Explicitly NOT using Schema.Literal (Test 6)
34
30
  //
35
- // Also generate PascalCase aliases for better ergonomics:
36
- // - const alias: allows using PascalCase in runtime code
37
- // - type alias: provides PascalCase type name
31
+ // Also generate PascalCase aliases for better ergonomics if name is different
32
+ const aliases = pascalName !== enumName
33
+ ? `
34
+
35
+ // PascalCase aliases for better ergonomics
36
+ export const ${pascalName} = ${enumName};
37
+ export type ${pascalName} = ${typeName};`
38
+ : '';
38
39
  return `export enum ${enumName} {
39
40
  ${enumMembers}
40
41
  }
41
42
 
42
43
  export const ${schemaName} = Schema.Enums(${enumName});
43
44
 
44
- export type ${typeName} = Schema.Schema.Type<typeof ${schemaName}>;
45
-
46
- // PascalCase aliases for better ergonomics
47
- export const ${pascalName} = ${enumName};
48
- export type ${pascalName} = ${typeName};`;
45
+ export type ${typeName} = Schema.Schema.Type<typeof ${schemaName}>;${aliases}`;
49
46
  }
50
47
  /**
51
48
  * Generate all enum schemas as a single file content
52
49
  */
53
- function generateEnumsFile(enums) {
54
- const header = (0, codegen_1.generateFileHeader)();
50
+ export function generateEnumsFile(enums) {
51
+ const header = generateFileHeader();
55
52
  const imports = `import { Schema } from "effect";`;
56
- const enumSchemas = enums.map(generateEnumSchema).join("\n\n");
53
+ const enumSchemas = enums.map(generateEnumSchema).join('\n\n');
57
54
  return `${header}\n\n${imports}\n\n${enumSchemas}`;
58
55
  }
59
56
  //# sourceMappingURL=enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/effect/enum.ts"],"names":[],"mappings":";;AAeA,gDAiCC;AAKD,8CAMC;AA1DD,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,EAAE;IACF,0DAA0D;IAC1D,yDAAyD;IACzD,8CAA8C;IAC9C,OAAO,eAAe,QAAQ;EAC9B,WAAW;;;eAGE,UAAU,mBAAmB,QAAQ;;cAEtC,QAAQ,gCAAgC,UAAU;;;eAGjD,UAAU,MAAM,QAAQ;cACzB,UAAU,MAAM,QAAQ,GAAG,CAAC;AAC1C,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":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA2B;IAC5D,kDAAkD;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9B,6CAA6C;IAC7C,MAAM,UAAU,GAAG,YAAY,CAAC,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,kBAAkB,CAAC,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,EAAE;IACF,8EAA8E;IAC9E,MAAM,OAAO,GACX,UAAU,KAAK,QAAQ;QACrB,CAAC,CAAC;;;eAGO,UAAU,MAAM,QAAQ;cACzB,UAAU,MAAM,QAAQ,GAAG;QACnC,CAAC,CAAC,EAAE,CAAC;IAET,OAAO,eAAe,QAAQ;EAC9B,WAAW;;;eAGE,UAAU,mBAAmB,QAAQ;;cAEtC,QAAQ,gCAAgC,UAAU,KAAK,OAAO,EAAE,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAoC;IACpE,MAAM,MAAM,GAAG,kBAAkB,EAAE,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,5 +1,5 @@
1
1
  import type { DMMF } from '@prisma/generator-helper';
2
- import type { JoinTableInfo } from '../prisma/relation';
2
+ import type { JoinTableInfo } from '../prisma/relation.js';
3
3
  /**
4
4
  * Effect domain generator - orchestrates Effect Schema generation
5
5
  */
@@ -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;AAMrD,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;;;;OAIG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAgBrE;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;IAQ3D;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,OAAO;IA0BrC;;OAEG;IACH,wBAAwB,CAAC,UAAU,EAAE,aAAa,EAAE;IAIpD;;OAEG;IACH,iCAAiC,CAAC,UAAU,EAAE,aAAa,EAAE;CAG9D"}
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;AAO3D;;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;;;;OAIG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;IAgBrE;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;IAQ3D;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,OAAO;IA0BrC;;OAEG;IACH,wBAAwB,CAAC,UAAU,EAAE,aAAa,EAAE;IAIpD;;OAEG;IACH,iCAAiC,CAAC,UAAU,EAAE,aAAa,EAAE;CAG9D"}
@@ -1,15 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EffectGenerator = void 0;
4
- const enum_1 = require("./enum");
5
- const type_1 = require("./type");
6
- const naming_1 = require("../utils/naming");
7
- const codegen_1 = require("../utils/codegen");
8
- const join_table_1 = require("./join-table");
1
+ import { generateFileHeader } from '../utils/codegen.js';
2
+ import { toPascalCase } from '../utils/naming.js';
3
+ import { generateEnumsFile } from './enum.js';
4
+ import { generateJoinTableKyselyInterface, generateJoinTableSchema } from './join-table.js';
5
+ import { buildFieldType } from './type.js';
9
6
  /**
10
7
  * Effect domain generator - orchestrates Effect Schema generation
11
8
  */
12
- class EffectGenerator {
9
+ export class EffectGenerator {
10
+ dmmf;
13
11
  constructor(dmmf) {
14
12
  this.dmmf = dmmf;
15
13
  }
@@ -17,7 +15,7 @@ class EffectGenerator {
17
15
  * Generate enums.ts file content
18
16
  */
19
17
  generateEnums(enums) {
20
- return (0, enum_1.generateEnumsFile)(enums);
18
+ return generateEnumsFile(enums);
21
19
  }
22
20
  /**
23
21
  * Generate base schema for a model (_ModelName)
@@ -25,7 +23,7 @@ class EffectGenerator {
25
23
  generateBaseSchema(model, fields) {
26
24
  const fieldDefinitions = fields
27
25
  .map((field) => {
28
- const fieldType = (0, type_1.buildFieldType)(field, this.dmmf);
26
+ const fieldType = buildFieldType(field, this.dmmf);
29
27
  return ` ${field.name}: ${fieldType}`;
30
28
  })
31
29
  .join(',\n');
@@ -40,7 +38,7 @@ ${fieldDefinitions}
40
38
  */
41
39
  generateOperationalSchemas(model) {
42
40
  const baseSchemaName = `_${model.name}`;
43
- const operationalSchemaName = (0, naming_1.toPascalCase)(model.name);
41
+ const operationalSchemaName = toPascalCase(model.name);
44
42
  return `export const ${operationalSchemaName} = getSchemas(${baseSchemaName});`;
45
43
  }
46
44
  /**
@@ -49,7 +47,7 @@ ${fieldDefinitions}
49
47
  * Trusts runtime schema transformation - insertable() helper filters generated fields
50
48
  */
51
49
  generateTypeExports(model, _fields) {
52
- const name = (0, naming_1.toPascalCase)(model.name);
50
+ const name = toPascalCase(model.name);
53
51
  // Application-side types (decoded - for repository layer)
54
52
  const applicationTypes = `export type ${name}Select = Schema.Schema.Type<typeof ${name}.Selectable>;
55
53
  export type ${name}Insert = Schema.Schema.Type<typeof ${name}.Insertable>;
@@ -58,7 +56,7 @@ export type ${name}Update = Schema.Schema.Type<typeof ${name}.Updateable>;`;
58
56
  const encodedTypes = `export type ${name}SelectEncoded = Schema.Schema.Encoded<typeof ${name}.Selectable>;
59
57
  export type ${name}InsertEncoded = Schema.Schema.Encoded<typeof ${name}.Insertable>;
60
58
  export type ${name}UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateable>;`;
61
- return applicationTypes + '\n' + encodedTypes;
59
+ return `${applicationTypes}\n${encodedTypes}`;
62
60
  }
63
61
  /**
64
62
  * Generate complete model schema (base + operational + types)
@@ -75,7 +73,7 @@ export type ${name}UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateab
75
73
  * TDD: Satisfies tests 13-15 in import-generation.test.ts
76
74
  */
77
75
  generateTypesHeader(hasEnums) {
78
- const header = (0, codegen_1.generateFileHeader)();
76
+ const header = generateFileHeader();
79
77
  const imports = [
80
78
  `import { Schema } from "effect";`,
81
79
  `import type { ColumnType } from "kysely";`,
@@ -87,11 +85,11 @@ export type ${name}UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateab
87
85
  // No SCREAMING_SNAKE_CASE
88
86
  const enumImports = this.dmmf.datamodel.enums
89
87
  .map((e) => {
90
- const baseName = (0, naming_1.toPascalCase)(e.name);
88
+ const baseName = toPascalCase(e.name);
91
89
  return `${baseName}Schema`;
92
90
  })
93
91
  .join(', ');
94
- imports.push(`import { ${enumImports} } from "./enums";`);
92
+ imports.push(`import { ${enumImports} } from "./enums.js";`);
95
93
  }
96
94
  return `${header}\n\n${imports.join('\n')}`;
97
95
  }
@@ -99,14 +97,13 @@ export type ${name}UpdateEncoded = Schema.Schema.Encoded<typeof ${name}.Updateab
99
97
  * Generate schemas for all join tables
100
98
  */
101
99
  generateJoinTableSchemas(joinTables) {
102
- return joinTables.map((jt) => (0, join_table_1.generateJoinTableSchema)(jt, this.dmmf)).join('\n\n');
100
+ return joinTables.map((jt) => generateJoinTableSchema(jt, this.dmmf)).join('\n\n');
103
101
  }
104
102
  /**
105
103
  * Generate Kysely table interfaces for join tables
106
104
  */
107
105
  generateJoinTableKyselyInterfaces(joinTables) {
108
- return joinTables.map(join_table_1.generateJoinTableKyselyInterface).join('\n\n');
106
+ return joinTables.map(generateJoinTableKyselyInterface).join('\n\n');
109
107
  }
110
108
  }
111
- exports.EffectGenerator = EffectGenerator;
112
109
  //# sourceMappingURL=generator.js.map
@@ -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":"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;AAE3C;;GAEG;AACH,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;OAEG;IACH,aAAa,CAAC,KAAoC;QAChD,OAAO,iBAAiB,CAAC,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,cAAc,CAAC,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,qBAAqB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvD,OAAO,gBAAgB,qBAAqB,iBAAiB,cAAc,IAAI,CAAC;IAClF,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,KAAiB,EAAE,OAA8B;QACnE,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEtC,0DAA0D;QAC1D,MAAM,gBAAgB,GAAG,eAAe,IAAI,sCAAsC,IAAI;cAC5E,IAAI,sCAAsC,IAAI;cAC9C,IAAI,sCAAsC,IAAI,eAAe,CAAC;QAExE,kDAAkD;QAClD,MAAM,YAAY,GAAG,eAAe,IAAI,gDAAgD,IAAI;cAClF,IAAI,gDAAgD,IAAI;cACxD,IAAI,gDAAgD,IAAI,eAAe,CAAC;QAElF,OAAO,GAAG,gBAAgB,KAAK,YAAY,EAAE,CAAC;IAChD,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,EAAE,MAAM,CAAC,CAAC;QAE5D,OAAO,GAAG,UAAU,OAAO,iBAAiB,OAAO,WAAW,EAAE,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,QAAiB;QACnC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QAEpC,MAAM,OAAO,GAAG;YACd,kCAAkC;YAClC,2CAA2C;YAC3C,2EAA2E;SAC5E,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,qDAAqD;YACrD,2CAA2C;YAC3C,0BAA0B;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK;iBAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACtC,OAAO,GAAG,QAAQ,QAAQ,CAAC;YAC7B,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,OAAO,CAAC,IAAI,CAAC,YAAY,WAAW,uBAAuB,CAAC,CAAC;QAC/D,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,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,iCAAiC,CAAC,UAA2B;QAC3D,OAAO,UAAU,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import type { DMMF } from '@prisma/generator-helper';
2
- import type { JoinTableInfo } from '../prisma/relation';
2
+ import type { JoinTableInfo } from '../prisma/relation.js';
3
3
  /**
4
4
  * Generate Kysely table interface for a join table
5
5
  */
@@ -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;AAGxD;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,aAAa,UAcxE;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,UAgDrF"}
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;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,UAgDrF"}
@@ -1,15 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateJoinTableKyselyInterface = generateJoinTableKyselyInterface;
4
- exports.generateJoinTableSchema = generateJoinTableSchema;
5
- const naming_1 = require("../utils/naming");
1
+ import { toSnakeCase } from '../utils/naming.js';
6
2
  /**
7
3
  * Generate Kysely table interface for a join table
8
4
  */
9
- function generateJoinTableKyselyInterface(joinTable) {
5
+ export function generateJoinTableKyselyInterface(joinTable) {
10
6
  const { relationName, modelA, modelB, columnAIsUuid, columnBIsUuid } = joinTable;
11
- const modelAField = (0, naming_1.toSnakeCase)(modelA);
12
- const modelBField = (0, naming_1.toSnakeCase)(modelB);
7
+ const modelAField = toSnakeCase(modelA);
8
+ const modelBField = toSnakeCase(modelB);
13
9
  const aType = columnAIsUuid ? 'string' : 'number';
14
10
  const bType = columnBIsUuid ? 'string' : 'number';
15
11
  return `// Kysely table interface for ${relationName}
@@ -47,14 +43,14 @@ function mapColumnType(columnType, isUuid) {
47
43
  * - TypeScript fields: product_id, product_tag_id (semantic snake_case)
48
44
  * - Mapping: product_id → A, product_tag_id → B (via Schema.fromKey)
49
45
  */
50
- function generateJoinTableSchema(joinTable, _dmmf) {
46
+ export function generateJoinTableSchema(joinTable, _dmmf) {
51
47
  const { tableName, relationName, modelA, modelB, columnAType, columnBType, columnAIsUuid, columnBIsUuid, } = joinTable;
52
48
  // Map column types to Effect Schema types
53
49
  const columnASchema = mapColumnType(columnAType, columnAIsUuid);
54
50
  const columnBSchema = mapColumnType(columnBType, columnBIsUuid);
55
51
  // Generate semantic snake_case field names from model names
56
- const columnAName = `${(0, naming_1.toSnakeCase)(modelA)}_id`;
57
- const columnBName = `${(0, naming_1.toSnakeCase)(modelB)}_id`;
52
+ const columnAName = `${toSnakeCase(modelA)}_id`;
53
+ const columnBName = `${toSnakeCase(modelB)}_id`;
58
54
  // Both columns are foreign keys, so use columnType for read-only behavior
59
55
  // Use propertySignature with fromKey to map semantic names to actual A/B database columns
60
56
  const columnAField = ` ${columnAName}: Schema.propertySignature(columnType(${columnASchema}, Schema.Never, Schema.Never)).pipe(Schema.fromKey("A"))`;
@@ -1 +1 @@
1
- {"version":3,"file":"join-table.js","sourceRoot":"","sources":["../../src/effect/join-table.ts"],"names":[],"mappings":";;AAOA,4EAcC;AAkCD,0DAgDC;AArGD,4CAA8C;AAE9C;;GAEG;AACH,SAAgB,gCAAgC,CAAC,SAAwB;IACvE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAEjF,MAAM,WAAW,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,IAAA,oBAAW,EAAC,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;;;;;;;;;;;;;GAaG;AACH,SAAgB,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,IAAA,oBAAW,EAAC,MAAM,CAAC,KAAK,CAAC;IAChD,MAAM,WAAW,GAAG,GAAG,IAAA,oBAAW,EAAC,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,+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":"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;;;;;;;;;;;;;GAaG;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,+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,10 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapFieldToEffectType = mapFieldToEffectType;
4
- exports.buildFieldType = buildFieldType;
5
- const type_1 = require("../prisma/type");
6
- const annotations_1 = require("../utils/annotations");
7
- const naming_1 = require("../utils/naming");
1
+ import { hasDefaultValue, isListField, isRequiredField, isUuidField } from '../prisma/type.js';
2
+ import { extractEffectTypeOverride } from '../utils/annotations.js';
3
+ import { toPascalCase } from '../utils/naming.js';
8
4
  /**
9
5
  * Prisma scalar type mapping to Effect Schema types
10
6
  * Uses const assertion to avoid type guards
@@ -30,14 +26,14 @@ const PRISMA_SCALAR_MAP = {
30
26
  * Map Prisma field type to Effect Schema type
31
27
  * Priority order: annotation → UUID → scalar → enum → unknown fallback
32
28
  */
33
- function mapFieldToEffectType(field, dmmf) {
29
+ export function mapFieldToEffectType(field, dmmf) {
34
30
  // PRIORITY 1: Check for @customType annotation
35
- const typeOverride = (0, annotations_1.extractEffectTypeOverride)(field);
31
+ const typeOverride = extractEffectTypeOverride(field);
36
32
  if (typeOverride) {
37
33
  return typeOverride;
38
34
  }
39
35
  // PRIORITY 2: Handle String type with UUID detection
40
- if (field.type === 'String' && (0, type_1.isUuidField)(field)) {
36
+ if (field.type === 'String' && isUuidField(field)) {
41
37
  return 'Schema.UUID';
42
38
  }
43
39
  // PRIORITY 3: Handle scalar types with const assertion lookup
@@ -51,7 +47,7 @@ function mapFieldToEffectType(field, dmmf) {
51
47
  if (enumDef) {
52
48
  // Return Schema wrapper, not raw enum (Test 11)
53
49
  // Use PascalCase + Schema suffix (Test 12)
54
- return (0, naming_1.toPascalCase)(field.type, 'Schema');
50
+ return toPascalCase(field.type, 'Schema');
55
51
  }
56
52
  // PRIORITY 5: Fallback to Unknown
57
53
  return 'Schema.Unknown';
@@ -59,14 +55,14 @@ function mapFieldToEffectType(field, dmmf) {
59
55
  /**
60
56
  * Build complete field type with array and optional wrapping
61
57
  */
62
- function buildFieldType(field, dmmf) {
58
+ export function buildFieldType(field, dmmf) {
63
59
  let baseType = mapFieldToEffectType(field, dmmf);
64
60
  // Handle arrays
65
- if ((0, type_1.isListField)(field)) {
61
+ if (isListField(field)) {
66
62
  baseType = `Schema.Array(${baseType})`;
67
63
  }
68
64
  // Handle optional fields (only if NOT already has @default)
69
- if (!(0, type_1.isRequiredField)(field) && !(0, type_1.hasDefaultValue)(field)) {
65
+ if (!(isRequiredField(field) || hasDefaultValue(field))) {
70
66
  baseType = `Schema.UndefinedOr(${baseType})`;
71
67
  }
72
68
  return baseType;
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/effect/type.ts"],"names":[],"mappings":";;AA+BA,oDA6BC;AAKD,wCAcC;AA9ED,yCAA4F;AAC5F,sDAAiE;AACjE,4CAA+C;AAE/C;;;;;;;;;GASG;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,qBAAqB,EAAE,4CAA4C;IAC7E,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,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAsC,CAAC,CAAC;IACnF,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":"AACA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;;GASG;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,qBAAqB,EAAE,4CAA4C;IAC7E,IAAI,EAAE,gBAAgB,EAAE,oBAAoB;IAC5C,KAAK,EAAE,mBAAmB;CAClB,CAAC;AAEX;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAiB,EAAE,IAAmB;IACzE,+CAA+C;IAC/C,MAAM,YAAY,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,8DAA8D;IAC9D,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAsC,CAAC,CAAC;IACnF,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,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,kCAAkC;IAClC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAiB,EAAE,IAAmB;IACnE,IAAI,QAAQ,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEjD,gBAAgB;IAChB,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,QAAQ,GAAG,gBAAgB,QAAQ,GAAG,CAAC;IACzC,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxD,QAAQ,GAAG,sBAAsB,QAAQ,GAAG,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -5,8 +5,8 @@
5
5
  * with support for multi-domain organization and library scaffolding.
6
6
  * Uses Effect Schema for strict validation.
7
7
  */
8
- import { Schema } from 'effect';
9
8
  import type { GeneratorOptions } from '@prisma/generator-helper';
9
+ import { Schema } from 'effect';
10
10
  /**
11
11
  * Generator configuration schema
12
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/generator/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAOjE;;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"}
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"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Generator Configuration
4
3
  *
@@ -6,23 +5,19 @@
6
5
  * with support for multi-domain organization and library scaffolding.
7
6
  * Uses Effect Schema for strict validation.
8
7
  */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.parseGeneratorConfig = parseGeneratorConfig;
11
- exports.isMultiDomainEnabled = isMultiDomainEnabled;
12
- exports.isScaffoldingEnabled = isScaffoldingEnabled;
13
- const effect_1 = require("effect");
8
+ import { Schema } from 'effect';
14
9
  /**
15
10
  * Boolean string schema - strictly validates 'true' or 'false'
16
11
  */
17
- const BooleanString = effect_1.Schema.Literal('true', 'false');
12
+ const BooleanString = Schema.Literal('true', 'false');
18
13
  /**
19
14
  * Generator configuration schema
20
15
  */
21
- const GeneratorConfigSchema = effect_1.Schema.Struct({
16
+ const GeneratorConfigSchema = Schema.Struct({
22
17
  /**
23
18
  * Output directory for generated Effect schemas
24
19
  */
25
- output: effect_1.Schema.String,
20
+ output: Schema.String,
26
21
  /**
27
22
  * Enable multi-domain detection from schema file structure
28
23
  */
@@ -34,16 +29,16 @@ const GeneratorConfigSchema = effect_1.Schema.Struct({
34
29
  /**
35
30
  * Path to monorepo-library-generator for library scaffolding
36
31
  */
37
- libraryGenerator: effect_1.Schema.optional(effect_1.Schema.String),
32
+ libraryGenerator: Schema.optional(Schema.String),
38
33
  /**
39
34
  * Preview features to enable
40
35
  */
41
- previewFeatures: effect_1.Schema.Array(effect_1.Schema.String),
36
+ previewFeatures: Schema.Array(Schema.String),
42
37
  });
43
38
  /**
44
39
  * Parse and validate generator configuration from Prisma options
45
40
  */
46
- function parseGeneratorConfig(options) {
41
+ export function parseGeneratorConfig(options) {
47
42
  const { generator } = options;
48
43
  // Validate required output path
49
44
  const output = generator.output?.value;
@@ -61,7 +56,7 @@ function parseGeneratorConfig(options) {
61
56
  previewFeatures: getArrayValue(config, 'previewFeatures'),
62
57
  };
63
58
  // Validate with Effect Schema - throws on invalid input
64
- return effect_1.Schema.decodeUnknownSync(GeneratorConfigSchema)(rawConfig);
59
+ return Schema.decodeUnknownSync(GeneratorConfigSchema)(rawConfig);
65
60
  }
66
61
  /**
67
62
  * Extract string value from config
@@ -97,13 +92,13 @@ function getArrayValue(config, key) {
97
92
  /**
98
93
  * Check if multi-domain mode is enabled
99
94
  */
100
- function isMultiDomainEnabled(config) {
95
+ export function isMultiDomainEnabled(config) {
101
96
  return config.multiFileDomains === 'true';
102
97
  }
103
98
  /**
104
99
  * Check if library scaffolding is enabled
105
100
  */
106
- function isScaffoldingEnabled(config) {
101
+ export function isScaffoldingEnabled(config) {
107
102
  return config.scaffoldLibraries === 'true' && isMultiDomainEnabled(config);
108
103
  }
109
104
  //# sourceMappingURL=config.js.map