prisma-effect-kysely 1.8.0 → 1.8.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 +32 -0
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +5 -1
- package/dist/generator/index.js.map +1 -1
- package/dist/prisma/relation.d.ts +1 -1
- package/dist/prisma/relation.d.ts.map +1 -1
- package/dist/prisma/relation.js +15 -7
- package/dist/prisma/relation.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,38 @@ 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.8.1] - 2025-10-12
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
#### Dynamic Version Management
|
|
13
|
+
- **Generator version now read from package.json**: Removed hardcoded version string in generator manifest
|
|
14
|
+
- Generator now reports correct version dynamically
|
|
15
|
+
- Version always stays in sync with package.json
|
|
16
|
+
- No more manual version updates needed in multiple places
|
|
17
|
+
- Location: `src/generator/index.ts:5,12`
|
|
18
|
+
|
|
19
|
+
#### Custom Relation Name Support for Join Tables
|
|
20
|
+
- **Prisma custom relation names now respected**: Fixed implicit many-to-many join table naming
|
|
21
|
+
- `@relation("product_tags")` now correctly generates `_product_tags` table (not `_ProductToProductTag`)
|
|
22
|
+
- Matches Prisma's actual database table naming convention
|
|
23
|
+
- Both custom and default relation names work correctly
|
|
24
|
+
- Location: `src/prisma/relation.ts:106-115`
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
#### Test Coverage
|
|
29
|
+
- Added test case for custom relation names in implicit many-to-many relations
|
|
30
|
+
- Product/ProductTag models with `@relation("product_tags")`
|
|
31
|
+
- Validates correct table name generation (`_product_tags`)
|
|
32
|
+
- Location: `src/__tests__/fixtures/test.prisma:166-177`
|
|
33
|
+
|
|
34
|
+
### Technical Details
|
|
35
|
+
- Uses TypeScript's `resolveJsonModule` to import package.json
|
|
36
|
+
- Prisma's `field.relationName` contains either custom name or Prisma-generated default
|
|
37
|
+
- Maintains alphabetical model ordering for A/B column assignment in join tables
|
|
38
|
+
- Null-safety check added for relationName (defensive programming)
|
|
39
|
+
|
|
8
40
|
## [1.8.0] - 2025-10-12
|
|
9
41
|
|
|
10
42
|
### Added - Enterprise Open Source Standards
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";AAOA,cAAc,mBAAmB,CAAC;AAElC,eAAO,MAAM,SAAS,MAUpB,CAAC"}
|
package/dist/generator/index.js
CHANGED
|
@@ -14,15 +14,19 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
14
14
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
15
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
16
|
};
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
17
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
21
|
exports.generator = void 0;
|
|
19
22
|
const generator_helper_1 = require("@prisma/generator-helper");
|
|
20
23
|
const orchestrator_1 = require("./orchestrator");
|
|
24
|
+
const package_json_1 = __importDefault(require("../../package.json"));
|
|
21
25
|
// Re-export kysely helpers for generated code
|
|
22
26
|
__exportStar(require("../kysely/helpers"), exports);
|
|
23
27
|
exports.generator = (0, generator_helper_1.generatorHandler)({
|
|
24
28
|
onManifest: () => ({
|
|
25
|
-
version:
|
|
29
|
+
version: package_json_1.default.version,
|
|
26
30
|
defaultOutput: './generated',
|
|
27
31
|
prettyName: 'Prisma Effect Kysely Generator',
|
|
28
32
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEA,+DAA4D;AAC5D,iDAAuD;AACvD,sEAA6C;AAE7C,8CAA8C;AAC9C,oDAAkC;AAErB,QAAA,SAAS,GAAG,IAAA,mCAAgB,EAAC;IACxC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,sBAAW,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,oCAAqB,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/prisma/relation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,iCAAiC;IACjC,aAAa,EAAE,OAAO,CAAC;CACxB;AAqBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/prisma/relation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,iCAAiC;IACjC,aAAa,EAAE,OAAO,CAAC;CACxB;AAqBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAiB7D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAAG,aAAa,EAAE,CAmEvF"}
|
package/dist/prisma/relation.js
CHANGED
|
@@ -12,7 +12,7 @@ const type_1 = require("./type");
|
|
|
12
12
|
* - relationToFields is empty (no explicit relation table)
|
|
13
13
|
*/
|
|
14
14
|
function isImplicitManyToManyField(field) {
|
|
15
|
-
return (field.kind ===
|
|
15
|
+
return (field.kind === 'object' &&
|
|
16
16
|
field.isList === true &&
|
|
17
17
|
field.relationFromFields !== undefined &&
|
|
18
18
|
field.relationFromFields.length === 0 &&
|
|
@@ -65,19 +65,27 @@ function detectImplicitManyToMany(models) {
|
|
|
65
65
|
if (model.name === relatedModel.name) {
|
|
66
66
|
continue;
|
|
67
67
|
}
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
// Use Prisma's relation name for table naming
|
|
69
|
+
// For custom @relation("name"), Prisma creates _name
|
|
70
|
+
// For default relations, Prisma creates _ModelAToModelB
|
|
71
|
+
// Note: relationName should always be defined for implicit m-n relations
|
|
72
|
+
if (!field.relationName) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const tableName = `_${field.relationName}`;
|
|
76
|
+
const relationName = field.relationName;
|
|
71
77
|
// Skip if we've already processed this relation
|
|
72
|
-
if (joinTables.has(
|
|
78
|
+
if (joinTables.has(relationName)) {
|
|
73
79
|
continue;
|
|
74
80
|
}
|
|
81
|
+
// Keep alphabetical ordering for A/B column assignment
|
|
82
|
+
const modelNames = [model.name, relatedModel.name].sort();
|
|
75
83
|
// Extract ID field types
|
|
76
84
|
const modelAIdField = getModelIdField(models.find((m) => m.name === modelNames[0]));
|
|
77
85
|
const modelBIdField = getModelIdField(models.find((m) => m.name === modelNames[1]));
|
|
78
|
-
joinTables.set(
|
|
86
|
+
joinTables.set(relationName, {
|
|
79
87
|
tableName,
|
|
80
|
-
relationName
|
|
88
|
+
relationName,
|
|
81
89
|
modelA: modelNames[0],
|
|
82
90
|
modelB: modelNames[1],
|
|
83
91
|
columnAType: modelAIdField.type,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/prisma/relation.ts"],"names":[],"mappings":";;AAgDA,
|
|
1
|
+
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/prisma/relation.ts"],"names":[],"mappings":"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"}
|