prisma-effect-kysely 1.14.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,16 +1,54 @@
1
1
  # Changelog
2
2
 
3
- ## 1.14.2
3
+ ## 2.0.0
4
4
 
5
- ### Patch Changes
5
+ ### Major Changes
6
+
7
+ - BREAKING: Switch from Schema.UndefinedOr to Schema.NullOr for nullable fields
8
+
9
+ This change aligns the generated schemas with SQL semantics where `null` represents missing values.
10
+
11
+ **Before:**
12
+
13
+ ```typescript
14
+ optionalField: Schema.UndefinedOr(Schema.String); // string | undefined
15
+ ```
16
+
17
+ **After:**
6
18
 
7
- - [`b012d87`](https://github.com/samuelho-dev/prisma-effect-kysely/commit/b012d87262b8558dd5a7adc0af1ec59fa3e62a5f) Thanks [@samuelho-dev](https://github.com/samuelho-dev)! - Test workflow with PR creation permissions enabled
19
+ ```typescript
20
+ optionalField: Schema.NullOr(Schema.String); // string | null
21
+ ```
22
+
23
+ **Migration:**
24
+ 1. Regenerate schemas with `prisma generate`
25
+ 2. Update code that uses `undefined` for optional fields to use `null` instead
26
+ 3. Nullable fields must now be explicitly passed (with `null` or a value)
27
+
28
+ **Rationale:**
29
+ - SQL databases use `null` for missing values, not `undefined`
30
+ - Aligns with Prisma Client which uses `T | null`
31
+ - `null` is preserved in JSON serialization (unlike `undefined`)
32
+ - Provides semantic clarity: `null` = "explicitly no value"
8
33
 
9
34
  ## 1.14.1
10
35
 
11
36
  ### Patch Changes
12
37
 
13
- - [`77a8de3`](https://github.com/samuelho-dev/prisma-effect-kysely/commit/77a8de3b790369455eed093d9d59baa4810e36d2) Thanks [@samuelho-dev](https://github.com/samuelho-dev)! - Test Changesets CI/CD integration workflow
38
+ - [`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
39
+
40
+ Node.js ESM cannot use named imports from CJS modules. Changed `@prisma/generator-helper` import to use default import pattern:
41
+
42
+ ```typescript
43
+ // Before (broken in ESM)
44
+ import { generatorHandler } from '@prisma/generator-helper';
45
+
46
+ // After (works)
47
+ import pkg from '@prisma/generator-helper';
48
+ const { generatorHandler } = pkg;
49
+ ```
50
+
51
+ Added ESM compatibility tests to prevent future regressions.
14
52
 
15
53
  ## 1.14.0
16
54
 
package/README.md CHANGED
@@ -113,22 +113,64 @@ model User {
113
113
 
114
114
  ```bash
115
115
  # Install dependencies
116
- npm install
116
+ pnpm install
117
117
 
118
118
  # Run tests
119
- npm test
119
+ pnpm test
120
120
 
121
121
  # Run tests in watch mode
122
- npm run test:watch
122
+ pnpm run test:watch
123
123
 
124
124
  # Run tests with coverage
125
- npm run test:coverage
125
+ pnpm run test:coverage
126
126
 
127
127
  # Type check
128
- npm run typecheck
128
+ pnpm run typecheck
129
129
 
130
130
  # Build
131
- npm run build
131
+ pnpm run build
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
132
174
  ```
133
175
 
134
176
  ## Releasing (CI/CD)
@@ -63,7 +63,7 @@ export function buildFieldType(field, dmmf) {
63
63
  }
64
64
  // Handle optional fields (only if NOT already has @default)
65
65
  if (!(isRequiredField(field) || hasDefaultValue(field))) {
66
- baseType = `Schema.UndefinedOr(${baseType})`;
66
+ baseType = `Schema.NullOr(${baseType})`;
67
67
  }
68
68
  return baseType;
69
69
  }
@@ -1 +1 @@
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"}
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,iBAAiB,QAAQ,GAAG,CAAC;IAC1C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";AAUA,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,SAAS,MAUpB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";AAYA,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,SAAS,MAUpB,CAAC"}
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { generatorHandler } from '@prisma/generator-helper';
3
+ import pkg from '@prisma/generator-helper';
4
4
  import { GeneratorOrchestrator } from './orchestrator.js';
5
+ const { generatorHandler } = pkg;
5
6
  const require = createRequire(import.meta.url);
6
7
  const packageJson = require('../../package.json');
7
8
  // Re-export kysely helpers for generated code
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAGzE,8CAA8C;AAC9C,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;IACxC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,aAAa,EAAE,aAAa;QAC5B,UAAU,EAAE,gCAAgC;KAC7C,CAAC;IACF,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC5B,MAAM,YAAY,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,GAAG,MAAM,0BAA0B,CAAC;AAE3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC;AAEjC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAGzE,8CAA8C;AAC9C,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;IACxC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,aAAa,EAAE,aAAa;QAC5B,UAAU,EAAE,gCAAgC;KAC7C,CAAC;IACF,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC5B,MAAM,YAAY,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prisma-effect-kysely",
3
- "version": "1.14.0",
3
+ "version": "2.0.0",
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",