@kavo/prisma 0.21.4 → 0.22.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/README.md +3 -2
- package/dist/datamodel.d.ts +2 -13
- package/dist/datamodel.d.ts.map +1 -1
- package/dist/generator.d.ts +2 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +26 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/infrastructure.d.ts +7 -6
- package/dist/infrastructure.d.ts.map +1 -1
- package/dist/infrastructure.js +7 -6
- package/dist/infrastructure.js.map +1 -1
- package/dist/metadata.d.ts +3 -3
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +5 -5
- package/dist/metadata.js.map +1 -1
- package/package.json +12 -6
package/README.md
CHANGED
|
@@ -21,8 +21,9 @@ name to the schema (`class Author {}` ↔ `model Author { … }`). See
|
|
|
21
21
|
`docs/internals/adr/0017-prisma-marker-classes-and-entity-registry.md` for why.
|
|
22
22
|
|
|
23
23
|
```ts
|
|
24
|
-
import { PrismaClient
|
|
24
|
+
import { PrismaClient } from "./generated/prisma/client";
|
|
25
25
|
import { createPrismaKavo } from "@kavo/prisma";
|
|
26
|
+
import metadata from "./generated/kavo-metadata";
|
|
26
27
|
|
|
27
28
|
class Author {
|
|
28
29
|
id!: number;
|
|
@@ -36,7 +37,7 @@ class Book {
|
|
|
36
37
|
|
|
37
38
|
const prisma = new PrismaClient();
|
|
38
39
|
const kavo = createPrismaKavo(prisma, {
|
|
39
|
-
|
|
40
|
+
metadata,
|
|
40
41
|
entities: [Author, Book],
|
|
41
42
|
});
|
|
42
43
|
|
package/dist/datamodel.d.ts
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
* Modeled locally rather than imported from `@prisma/client` or
|
|
4
|
-
* `@prisma/generator-helper`, for the same reason as {@link
|
|
5
|
-
* PrismaClientLike}: `Prisma.dmmf` is a stable, documented runtime export
|
|
6
|
-
* (the mechanism Prisma's own generator ecosystem — `zod-prisma`,
|
|
7
|
-
* `prisma-erd-generator`, and others — relies on to read a schema without
|
|
8
|
-
* a generated client), but its *type* only resolves post-generation. A
|
|
9
|
-
* duck-typed subset keeps `@kavo/prisma` buildable without one, and the
|
|
10
|
-
* real `Prisma.dmmf.datamodel` a consumer passes in satisfies this
|
|
11
|
-
* structurally.
|
|
12
|
-
*/
|
|
13
|
-
export interface PrismaDatamodel {
|
|
1
|
+
/** Metadata generated by Kavo's Prisma 7 generator at `prisma generate`. */
|
|
2
|
+
export interface PrismaMetadata {
|
|
14
3
|
readonly models: readonly PrismaModel[];
|
|
15
4
|
readonly enums: readonly PrismaEnum[];
|
|
16
5
|
}
|
package/dist/datamodel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datamodel.d.ts","sourceRoot":"","sources":["../src/datamodel.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"datamodel.d.ts","sourceRoot":"","sources":["../src/datamodel.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,CAAC;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { resolve } from "node:path";
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
const { generatorHandler } = require("@prisma/generator-helper");
|
|
6
|
+
function generatedModule(metadata) {
|
|
7
|
+
return `// Generated by @kavo/prisma. Do not edit.\nexport const prismaMetadata = ${JSON.stringify(metadata, null, 2)} as const;\n\nexport default prismaMetadata;\n`;
|
|
8
|
+
}
|
|
9
|
+
generatorHandler({
|
|
10
|
+
onManifest() {
|
|
11
|
+
return {
|
|
12
|
+
defaultOutput: "./generated/kavo-metadata.ts",
|
|
13
|
+
prettyName: "Kavo Prisma metadata",
|
|
14
|
+
};
|
|
15
|
+
},
|
|
16
|
+
async onGenerate(options) {
|
|
17
|
+
const output = options.generator.output?.value;
|
|
18
|
+
if (output === null || output === undefined) {
|
|
19
|
+
throw new Error("@kavo/prisma requires an output path for generated metadata");
|
|
20
|
+
}
|
|
21
|
+
const outputPath = resolve(output);
|
|
22
|
+
await mkdir(resolve(outputPath, ".."), { recursive: true });
|
|
23
|
+
await writeFile(outputPath, generatedModule(options.dmmf.datamodel), "utf8");
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAA8C,CAAC;AAE9G,SAAS,eAAe,CAAC,QAAiB;IACxC,OAAO,6EAA6E,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,gDAAgD,CAAC;AACxK,CAAC;AAED,gBAAgB,CAAC;IACf,UAAU;QACR,OAAO;YACL,aAAa,EAAE,8BAA8B;YAC7C,UAAU,EAAE,sBAAsB;SACnC,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,OAAO;QACtB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;QAC/C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;CACF,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,5 +4,5 @@ export { translateFilter, type FilterTranslatorOptions, type PrismaWhere } from
|
|
|
4
4
|
export { PrismaRepositoryAdapter } from "./prisma-repository-adapter.js";
|
|
5
5
|
export { createInfrastructure, createPrismaKavo, type PrismaInfrastructureOptions } from "./infrastructure.js";
|
|
6
6
|
export { delegateName, type PrismaClientLike, type PrismaModelDelegate } from "./prisma-client-like.js";
|
|
7
|
-
export type {
|
|
7
|
+
export type { PrismaEnum, PrismaField, PrismaMetadata, PrismaModel } from "./datamodel.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,eAAe,EAAE,KAAK,uBAAuB,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,KAAK,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACxG,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,eAAe,EAAE,KAAK,uBAAuB,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,KAAK,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACxG,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/infrastructure.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { ClassRef, KavoInfrastructure, KavoInstance, KavoOptions } from "@kavo/core";
|
|
2
|
-
import type {
|
|
2
|
+
import type { PrismaMetadata } from "./datamodel.js";
|
|
3
3
|
import type { PrismaClientLike } from "./prisma-client-like.js";
|
|
4
4
|
/**
|
|
5
5
|
* What Prisma needs beyond the client instance, mirroring what TypeORM's
|
|
6
6
|
* `DataSource` supplies for free:
|
|
7
7
|
*
|
|
8
|
-
* - `
|
|
9
|
-
*
|
|
8
|
+
* - `metadata` — the module generated by Kavo's Prisma 7 generator during
|
|
9
|
+
* `prisma generate`.
|
|
10
10
|
* - `entities` — every marker class this Kavo root will call `createCrud`
|
|
11
11
|
* with. Prisma models have no runtime class the way TypeORM's
|
|
12
12
|
* `@Entity()` classes do, so each entity needs a caller-declared class
|
|
@@ -16,7 +16,7 @@ import type { PrismaClientLike } from "./prisma-client-like.js";
|
|
|
16
16
|
* front. See `docs/internals/adr/0017-prisma-marker-classes-and-entity-registry.md`.
|
|
17
17
|
*/
|
|
18
18
|
export interface PrismaInfrastructureOptions {
|
|
19
|
-
readonly
|
|
19
|
+
readonly metadata: PrismaMetadata;
|
|
20
20
|
readonly entities: readonly ClassRef[];
|
|
21
21
|
/**
|
|
22
22
|
* Whether the connector supports Prisma's `mode: "insensitive"` string
|
|
@@ -28,10 +28,11 @@ export interface PrismaInfrastructureOptions {
|
|
|
28
28
|
readonly caseInsensitiveFilters?: boolean;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
* The Prisma implementation of core's infrastructure seam: metadata and
|
|
31
|
+
* The Prisma implementation of core's infrastructure seam: generated metadata and
|
|
32
32
|
* adapters derived from one Prisma Client, cached per entity (metadata
|
|
33
33
|
* derivation and adapter construction are bootstrap work, not per-request
|
|
34
|
-
* work) — same shape as `@kavo/typeorm`'s `createInfrastructure`.
|
|
34
|
+
* work) — same shape as `@kavo/typeorm`'s `createInfrastructure`. The
|
|
35
|
+
* generated metadata boundary is defined by ADR-0053.
|
|
35
36
|
*/
|
|
36
37
|
export declare function createInfrastructure(prismaClient: PrismaClientLike, options: PrismaInfrastructureOptions): KavoInfrastructure;
|
|
37
38
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infrastructure.d.ts","sourceRoot":"","sources":["../src/infrastructure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAElB,YAAY,EACZ,WAAW,EAEZ,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"infrastructure.d.ts","sourceRoot":"","sources":["../src/infrastructure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAElB,YAAY,EACZ,WAAW,EAEZ,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,2BAA2B,GACnC,kBAAkB,CAiCpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,2BAA2B,GAAG,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,GACzE,YAAY,CAMd"}
|
package/dist/infrastructure.js
CHANGED
|
@@ -2,10 +2,11 @@ import { createKavo } from "@kavo/core";
|
|
|
2
2
|
import { buildEntityMetadata, buildRelationGraph } from "./metadata.js";
|
|
3
3
|
import { PrismaRepositoryAdapter } from "./prisma-repository-adapter.js";
|
|
4
4
|
/**
|
|
5
|
-
* The Prisma implementation of core's infrastructure seam: metadata and
|
|
5
|
+
* The Prisma implementation of core's infrastructure seam: generated metadata and
|
|
6
6
|
* adapters derived from one Prisma Client, cached per entity (metadata
|
|
7
7
|
* derivation and adapter construction are bootstrap work, not per-request
|
|
8
|
-
* work) — same shape as `@kavo/typeorm`'s `createInfrastructure`.
|
|
8
|
+
* work) — same shape as `@kavo/typeorm`'s `createInfrastructure`. The
|
|
9
|
+
* generated metadata boundary is defined by ADR-0053.
|
|
9
10
|
*/
|
|
10
11
|
export function createInfrastructure(prismaClient, options) {
|
|
11
12
|
const byName = new Map(options.entities.map((entity) => [entity.name, entity]));
|
|
@@ -15,11 +16,11 @@ export function createInfrastructure(prismaClient, options) {
|
|
|
15
16
|
// filter walks models the queried entity's own metadata cannot describe
|
|
16
17
|
// (`author.posts.title` needs Author's edges too). Bootstrap work, like
|
|
17
18
|
// metadata derivation and adapter construction.
|
|
18
|
-
const relations = buildRelationGraph(options.
|
|
19
|
+
const relations = buildRelationGraph(options.metadata);
|
|
19
20
|
function metadataFor(entity) {
|
|
20
21
|
let metadata = metadataCache.get(entity);
|
|
21
22
|
if (metadata === undefined) {
|
|
22
|
-
metadata = buildEntityMetadata(options.
|
|
23
|
+
metadata = buildEntityMetadata(options.metadata, entity, byName);
|
|
23
24
|
metadataCache.set(entity, metadata);
|
|
24
25
|
}
|
|
25
26
|
return metadata;
|
|
@@ -45,10 +46,10 @@ export function createInfrastructure(prismaClient, options) {
|
|
|
45
46
|
* declaring the marker classes once.
|
|
46
47
|
*/
|
|
47
48
|
export function createPrismaKavo(prismaClient, options) {
|
|
48
|
-
const {
|
|
49
|
+
const { metadata, entities, caseInsensitiveFilters, ...kavoOptions } = options;
|
|
49
50
|
return createKavo({
|
|
50
51
|
...kavoOptions,
|
|
51
|
-
infrastructure: createInfrastructure(prismaClient, {
|
|
52
|
+
infrastructure: createInfrastructure(prismaClient, { metadata, entities, caseInsensitiveFilters }),
|
|
52
53
|
});
|
|
53
54
|
}
|
|
54
55
|
//# sourceMappingURL=infrastructure.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infrastructure.js","sourceRoot":"","sources":["../src/infrastructure.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AA6BzE
|
|
1
|
+
{"version":3,"file":"infrastructure.js","sourceRoot":"","sources":["../src/infrastructure.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AA6BzE;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,YAA8B,EAC9B,OAAoC;IAEpC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC5D,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,gDAAgD;IAChD,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvD,SAAS,WAAW,CAAwB,MAAwB;QAClE,IAAI,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACjE,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,QAAkC,CAAC;IAC5C,CAAC;IAED,OAAO;QACL,WAAW;QACX,UAAU,CAAwB,MAAwB;YACxD,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,GAAG,IAAI,uBAAuB,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE;oBACvE,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,IAAI,IAAI;oBAC9D,SAAS;iBACV,CAAsB,CAAC;gBACxB,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,OAAoC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,YAA8B,EAC9B,OAA0E;IAE1E,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;IAC/E,OAAO,UAAU,CAAC;QAChB,GAAG,WAAW;QACd,cAAc,EAAE,oBAAoB,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;KACnG,CAAC,CAAC;AACL,CAAC"}
|
package/dist/metadata.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ClassRef, EntityMetadata } from "@kavo/core";
|
|
2
|
-
import type {
|
|
2
|
+
import type { PrismaMetadata } from "./datamodel.js";
|
|
3
3
|
/**
|
|
4
4
|
* Build core's `EntityMetadata` for one entity from Prisma's DMMF.
|
|
5
5
|
*
|
|
@@ -13,7 +13,7 @@ import type { PrismaDatamodel } from "./datamodel.js";
|
|
|
13
13
|
* `createInfrastructure` collects it explicitly (see
|
|
14
14
|
* `docs/internals/adr/0017-prisma-marker-classes-and-entity-registry.md`).
|
|
15
15
|
*/
|
|
16
|
-
export declare function buildEntityMetadata<Entity extends object>(
|
|
16
|
+
export declare function buildEntityMetadata<Entity extends object>(metadata: PrismaMetadata, entity: ClassRef<Entity>, entities: ReadonlyMap<string, ClassRef>): EntityMetadata<Entity>;
|
|
17
17
|
/**
|
|
18
18
|
* One relation edge, as the filter translator needs to see it: which
|
|
19
19
|
* Prisma model it lands on, and whether it is a list.
|
|
@@ -35,5 +35,5 @@ export interface PrismaRelationEdge {
|
|
|
35
35
|
*/
|
|
36
36
|
export type PrismaRelationGraph = ReadonlyMap<string, ReadonlyMap<string, PrismaRelationEdge>>;
|
|
37
37
|
/** Derive {@link PrismaRelationGraph} from Prisma's DMMF. */
|
|
38
|
-
export declare function buildRelationGraph(
|
|
38
|
+
export declare function buildRelationGraph(metadata: PrismaMetadata): PrismaRelationGraph;
|
|
39
39
|
//# sourceMappingURL=metadata.d.ts.map
|
package/dist/metadata.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAgD,MAAM,YAAY,CAAC;AAEzG,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAgD,MAAM,YAAY,CAAC;AAEzG,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAkDlE;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,SAAS,MAAM,EACvD,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACxB,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,GACtC,cAAc,CAAC,MAAM,CAAC,CA6DxB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;IACrC,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAE/F,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,mBAAmB,CAchF"}
|
package/dist/metadata.js
CHANGED
|
@@ -58,9 +58,9 @@ function isGeneratedField(field) {
|
|
|
58
58
|
* `createInfrastructure` collects it explicitly (see
|
|
59
59
|
* `docs/internals/adr/0017-prisma-marker-classes-and-entity-registry.md`).
|
|
60
60
|
*/
|
|
61
|
-
export function buildEntityMetadata(
|
|
61
|
+
export function buildEntityMetadata(metadata, entity, entities) {
|
|
62
62
|
const modelName = entity.name;
|
|
63
|
-
const model =
|
|
63
|
+
const model = metadata.models.find((candidate) => candidate.name === modelName);
|
|
64
64
|
if (model === undefined) {
|
|
65
65
|
throw new ConfigurationException(modelName, "entity", `No Prisma model named '${modelName}' in the supplied datamodel — the marker class name must match ` +
|
|
66
66
|
`the schema's model name exactly`);
|
|
@@ -87,7 +87,7 @@ export function buildEntityMetadata(datamodel, entity, entities) {
|
|
|
87
87
|
nullable: field.isList ? false : !field.isRequired,
|
|
88
88
|
generated: isGeneratedField(field),
|
|
89
89
|
...(field.kind === "enum" && {
|
|
90
|
-
enumValues: (
|
|
90
|
+
enumValues: (metadata.enums.find((candidate) => candidate.name === field.type)?.values ?? []).map((value) => value.name),
|
|
91
91
|
}),
|
|
92
92
|
}));
|
|
93
93
|
const relations = model.fields
|
|
@@ -107,8 +107,8 @@ export function buildEntityMetadata(datamodel, entity, entities) {
|
|
|
107
107
|
};
|
|
108
108
|
}
|
|
109
109
|
/** Derive {@link PrismaRelationGraph} from Prisma's DMMF. */
|
|
110
|
-
export function buildRelationGraph(
|
|
111
|
-
return new Map(
|
|
110
|
+
export function buildRelationGraph(metadata) {
|
|
111
|
+
return new Map(metadata.models.map((model) => [
|
|
112
112
|
model.name,
|
|
113
113
|
new Map(model.fields
|
|
114
114
|
.filter((field) => field.kind === "object")
|
package/dist/metadata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD;;;;GAIG;AACH,SAAS,WAAW,CAAC,KAAkB;IACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,gBAAgB,CAAC,KAAkB;IAC1C,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CACjC,
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD;;;;GAIG;AACH,SAAS,WAAW,CAAC,KAAkB;IACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,gBAAgB,CAAC,KAAkB;IAC1C,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAwB,EACxB,MAAwB,EACxB,QAAuC;IAEvC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;IAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAChF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,sBAAsB,CAC9B,SAAS,EACT,QAAQ,EACR,0BAA0B,SAAS,iEAAiE;YAClG,iCAAiC,CACpC,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,sBAAsB,CAC9B,SAAS,EACT,IAAI,EACJ,8CAA8C,QAAQ,CAAC,MAAM,cAAc,SAAS,IAAI;YACtF,2CAA2C,CAC9C,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,uEAAuE;IACvE,oEAAoE;IACpE,yEAAyE;IACzE,uEAAuE;IACvE,qEAAqE;IACrE,qEAAqE;IACrE,sEAAsE;IACtE,oBAAoB;IACpB,MAAM,MAAM,GAAoB,KAAK,CAAC,MAAM;SACzC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;SAC1C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;QACxB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU;QAClD,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI;YAC3B,UAAU,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAC/F,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CACtB;SACF,CAAC;KACH,CAAC,CAAC,CAAC;IAEN,MAAM,SAAS,GAAyB,KAAK,CAAC,MAAM;SACjD,MAAM,CAAC,CAAC,KAAK,EAA6C,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;SACrF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAElE,OAAO;QACL,MAAM;QACN,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAI;QAC1B,MAAM;QACN,SAAS;QACT,4DAA4D;QAC5D,4DAA4D;QAC5D,uDAAuD;QACvD,iBAAiB;QACjB,eAAe,EAAE,IAAI;KACtB,CAAC;AACJ,CAAC;AAwBD,6DAA6D;AAC7D,MAAM,UAAU,kBAAkB,CAAC,QAAwB;IACzD,OAAO,IAAI,GAAG,CACZ,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI;QACV,IAAI,GAAG,CACL,KAAK,CAAC,MAAM;aACT,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;aAC1C,GAAG,CAAC,CAAC,KAAK,EAAgC,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI;YACV,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;SACnE,CAAC,CACL;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAkB,EAClB,cAAsB,EACtB,QAAuC;IAEvC,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,sBAAsB,CAC9B,cAAc,EACd,KAAK,CAAC,IAAI,EACV,aAAa,KAAK,CAAC,IAAI,2BAA2B,KAAK,CAAC,IAAI,oCAAoC;oBAC9F,wDAAwD,CAC3D,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;QAC1C,wEAAwE;QACxE,kEAAkE;QAClE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACxF,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,MAAM;KACjB,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kavo/prisma",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.1",
|
|
4
4
|
"description": "Kavo Prisma adapter — implements @kavo/core's RepositoryAdapter over Prisma Client.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
@@ -26,18 +26,24 @@
|
|
|
26
26
|
"files": [
|
|
27
27
|
"dist"
|
|
28
28
|
],
|
|
29
|
+
"bin": {
|
|
30
|
+
"kavo-prisma-generator": "dist/generator.js"
|
|
31
|
+
},
|
|
29
32
|
"dependencies": {
|
|
30
|
-
"@
|
|
33
|
+
"@prisma/generator-helper": "^7.10.0",
|
|
34
|
+
"@kavo/core": "^0.22.1"
|
|
31
35
|
},
|
|
32
36
|
"peerDependencies": {
|
|
33
|
-
"@prisma/client": "^
|
|
37
|
+
"@prisma/client": "^7.0.0"
|
|
34
38
|
},
|
|
35
39
|
"devDependencies": {
|
|
36
|
-
"@prisma/
|
|
37
|
-
"prisma": "^
|
|
40
|
+
"@prisma/adapter-better-sqlite3": "^7.10.0",
|
|
41
|
+
"@prisma/client": "^7.10.0",
|
|
42
|
+
"better-sqlite3": "^13.0.3",
|
|
43
|
+
"prisma": "^7.10.0"
|
|
38
44
|
},
|
|
39
45
|
"scripts": {
|
|
40
46
|
"build": "tsc -b",
|
|
41
|
-
"generate": "prisma generate --schema prisma/schema.prisma && prisma db push --schema prisma/schema.prisma --
|
|
47
|
+
"generate": "pnpm run build && prisma generate --schema prisma/schema.prisma && prisma db push --schema prisma/schema.prisma --accept-data-loss"
|
|
42
48
|
}
|
|
43
49
|
}
|