@generazioneai/genquery 0.13.1 → 0.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.
- package/README.md +7 -1
- package/dist/adapters/prisma/adapter.d.ts.map +1 -1
- package/dist/adapters/prisma/adapter.js +6 -0
- package/dist/adapters/prisma/adapter.js.map +1 -1
- package/dist/adapters/prisma/index.d.ts +1 -1
- package/dist/adapters/prisma/index.d.ts.map +1 -1
- package/dist/adapters/prisma/schema-from-prisma.d.ts.map +1 -1
- package/dist/adapters/prisma/schema-from-prisma.js +12 -2
- package/dist/adapters/prisma/schema-from-prisma.js.map +1 -1
- package/dist/adapters/prisma/select.d.ts +9 -2
- package/dist/adapters/prisma/select.d.ts.map +1 -1
- package/dist/adapters/prisma/select.js +54 -11
- package/dist/adapters/prisma/select.js.map +1 -1
- package/dist/adapters/prisma/types.d.ts +10 -0
- package/dist/adapters/prisma/types.d.ts.map +1 -1
- package/dist/adapters/prisma/where.js +5 -1
- package/dist/adapters/prisma/where.js.map +1 -1
- package/dist/parsed.d.ts +8 -2
- package/dist/parsed.d.ts.map +1 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +47 -4
- package/dist/parser.js.map +1 -1
- package/dist/schema.d.ts +23 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +16 -0
- package/dist/schema.js.map +1 -1
- package/package.json +2 -1
- package/spec.md +4 -0
- package/dist/tests/entity-policy-builder.test.d.ts +0 -2
- package/dist/tests/entity-policy-builder.test.d.ts.map +0 -1
- package/dist/tests/entity-policy-builder.test.js +0 -68
- package/dist/tests/entity-policy-builder.test.js.map +0 -1
- package/dist/tests/federation.test.d.ts +0 -2
- package/dist/tests/federation.test.d.ts.map +0 -1
- package/dist/tests/federation.test.js +0 -307
- package/dist/tests/federation.test.js.map +0 -1
- package/dist/tests/prisma-adapter.test.d.ts +0 -2
- package/dist/tests/prisma-adapter.test.d.ts.map +0 -1
- package/dist/tests/prisma-adapter.test.js +0 -394
- package/dist/tests/prisma-adapter.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -143,7 +143,7 @@ Top-level keys:
|
|
|
143
143
|
|-----|---------|---------|
|
|
144
144
|
| `searchBy` | — | Filter conditions (AND + OR) |
|
|
145
145
|
| `orderBy` | — | Sort field and direction |
|
|
146
|
-
| `select` | `"all"` | Which fields to return |
|
|
146
|
+
| `select` | `"all"` | Which fields to return (policy-denied fields are stripped from `"all"`) |
|
|
147
147
|
| `include` | `"none"` | Which relations to join |
|
|
148
148
|
| `pagination` | `"all"` | Page / limit |
|
|
149
149
|
|
|
@@ -173,6 +173,12 @@ restricts that surface per entity, so a frontend can read a field but not filter
|
|
|
173
173
|
not include an expensive relation, or not over-fetch a huge page. Enforced by the parser
|
|
174
174
|
(throws `QueryValidationError`); `maxPerPage` is *clamped*, not rejected.
|
|
175
175
|
|
|
176
|
+
As of 0.14.0, fields denied for `select` are also stripped from the *default* selection:
|
|
177
|
+
a query without an explicit `select` (i.e. `select: "all"`) gets a Prisma `omit` of the
|
|
178
|
+
denied fields, at the root and inside included relations — denied/secret fields never
|
|
179
|
+
come back, even unasked, while every other column (including ones the genquery schema
|
|
180
|
+
doesn't model, like `Json` or scalar arrays) keeps Prisma's default selection.
|
|
181
|
+
|
|
176
182
|
Low-level: optional flags on the schema (`filterable` / `sortable` / `selectable` on fields,
|
|
177
183
|
`includable` / `filterable` on relations, `maxPerPage` on entities — all default to allowed).
|
|
178
184
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,aACX,YAAW,OAAO,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;IAE3D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAEnC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB;IAK9D,KAAK,CACH,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,GACjB,kBAAkB;IAIrB;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,kBAAkB;IAI3C,OAAO,CACX,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAyBpC,OAAO,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,aACX,YAAW,OAAO,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;IAE3D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAEnC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB;IAK9D,KAAK,CACH,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,GACjB,kBAAkB;IAIrB;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,kBAAkB;IAI3C,OAAO,CACX,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAyBpC,OAAO,CAAC,KAAK;CA0Dd"}
|
|
@@ -81,6 +81,9 @@ class PrismaAdapter {
|
|
|
81
81
|
if (base.orderBy !== undefined && args.orderBy === undefined) {
|
|
82
82
|
args.orderBy = base.orderBy;
|
|
83
83
|
}
|
|
84
|
+
// The secret-strip `omit` never occupies `select` / `include`, so
|
|
85
|
+
// baseArgs keep their pre-strip precedence untouched. `omit` composes
|
|
86
|
+
// with a merged base.include as-is.
|
|
84
87
|
if (base.include !== undefined &&
|
|
85
88
|
args.include === undefined &&
|
|
86
89
|
args.select === undefined) {
|
|
@@ -89,7 +92,10 @@ class PrismaAdapter {
|
|
|
89
92
|
if (base.select !== undefined &&
|
|
90
93
|
args.select === undefined &&
|
|
91
94
|
args.include === undefined) {
|
|
95
|
+
// Trusted server-side explicit select: supersedes the secret-strip
|
|
96
|
+
// `omit` (Prisma forbids `select` and `omit` at the same level).
|
|
92
97
|
args.select = base.select;
|
|
98
|
+
delete args.omit;
|
|
93
99
|
}
|
|
94
100
|
}
|
|
95
101
|
return args;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/prisma/adapter.ts"],"names":[],"mappings":";;;AAGA,qCAAiD;AAMjD,mCAAqC;AAWrC;;;;;;;;;;;;GAYG;AACH,MAAa,aAAa;IAOxB,YAAY,MAAc,EAAE,UAAgC,EAAE;QAJrD,SAAI,GAAG,QAAQ,CAAC;QAKvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CACH,SAA8B,EAC9B,KAAkB;QAElB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAAkB;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAA6B,EAC7B,KAAkB;QAElB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QAEpD,MAAM,WAAW,GACf,IAAI,KAAK,OAAO;YACd,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,KAAyB,CAAC;QAC9B,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACtC,WAAW;gBACX,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;aACtC,CAAC,CAAC;YACH,KAAK,GAAG,KAAK,CAAC;YACd,OAAO,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;QAC/B,IAAI,SAAS;YAAE,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,KAAkB;QAC9B,MAAM,IAAI,GAAuB,EAAE,CAAC;QAEpC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,KAAK,GAAgB,IAAA,kBAAU,EACnC,KAAK,CAAC,QAAQ,EACd,IAAI,CAAC,MAAM,EACX,KAAK,CAAC,UAAU,CACjB,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACxD,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG;gBACb,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;aAC3C,CAAC;QACJ,CAAC;QAED,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACxC,IAAA,8BAAqB,EAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhD,0EAA0E;QAC1E,6EAA6E;QAC7E,gCAAgC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC5B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBACpD,IAAI,CAAC,KAAK;oBACR,IAAI,CAAC,KAAK,KAAK,SAAS;wBACtB,CAAC,CAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAA6B;wBAC/D,CAAC,CAAE,IAAI,CAAC,KAAqB,CAAC;YACpC,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAwC,CAAC;YAC/D,CAAC;YACD,IACE,IAAI,CAAC,OAAO,KAAK,SAAS;gBAC1B,IAAI,CAAC,OAAO,KAAK,SAAS;gBAC1B,IAAI,CAAC,MAAM,KAAK,SAAS,EACzB,CAAC;gBACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAwC,CAAC;YAC/D,CAAC;YACD,IACE,IAAI,CAAC,MAAM,KAAK,SAAS;gBACzB,IAAI,CAAC,MAAM,KAAK,SAAS;gBACzB,IAAI,CAAC,OAAO,KAAK,SAAS,EAC1B,CAAC;gBACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/prisma/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { PrismaAdapter, type PrismaAdapterOptions } from "./adapter";
|
|
2
2
|
export { schemaFromPrisma, type SchemaFromPrismaOptions, } from "./schema-from-prisma";
|
|
3
3
|
export { createPrismaEngine, type CreatePrismaEngineOptions, } from "./create";
|
|
4
|
-
export type { PrismaDatamodel, PrismaEnumDef, PrismaFieldDef, PrismaFindManyArgs, PrismaInclude, PrismaModelDef, PrismaModelDelegate, PrismaSelect, PrismaWhere, } from "./types";
|
|
4
|
+
export type { PrismaDatamodel, PrismaEnumDef, PrismaFieldDef, PrismaFindManyArgs, PrismaInclude, PrismaModelDef, PrismaModelDelegate, PrismaOmit, PrismaSelect, PrismaWhere, } from "./types";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-from-prisma.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/schema-from-prisma.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,SAAS,EAEd,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"schema-from-prisma.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/schema-from-prisma.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,SAAS,EAEd,KAAK,MAAM,EAEZ,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,SAAS,CAAC;AAEjB,6EAA6E;AAC7E,KAAK,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CACT,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACf,eAAe,GAAG,SAAS,CAAC;IACjC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,eAAe,EAC1B,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAcR"}
|
|
@@ -41,6 +41,10 @@ function indexEnums(enums) {
|
|
|
41
41
|
function buildEntity(model, enumValues, options) {
|
|
42
42
|
const fields = {};
|
|
43
43
|
const relations = {};
|
|
44
|
+
// Columns the mapper skips (Json/Bytes/scalar lists/unknown) still exist on
|
|
45
|
+
// the Prisma client output — track them so `applyPolicy` can flag the
|
|
46
|
+
// policy-denied ones and the adapter can strip them from default selections.
|
|
47
|
+
const unmappedColumns = {};
|
|
44
48
|
const overrides = options.overrides?.[model.name] ?? {};
|
|
45
49
|
const keyFields = collectKeyFieldNames(model);
|
|
46
50
|
for (const f of model.fields) {
|
|
@@ -63,8 +67,10 @@ function buildEntity(model, enumValues, options) {
|
|
|
63
67
|
}
|
|
64
68
|
if (f.kind === "enum") {
|
|
65
69
|
const values = enumValues.get(f.type);
|
|
66
|
-
if (!values)
|
|
70
|
+
if (!values) {
|
|
71
|
+
unmappedColumns[f.name] = {};
|
|
67
72
|
continue;
|
|
73
|
+
}
|
|
68
74
|
fields[f.name] = {
|
|
69
75
|
type: "enum",
|
|
70
76
|
values: values.slice(),
|
|
@@ -80,8 +86,10 @@ function buildEntity(model, enumValues, options) {
|
|
|
80
86
|
}
|
|
81
87
|
// scalar
|
|
82
88
|
const fieldType = mapScalar(f, model.name, options);
|
|
83
|
-
if (!fieldType)
|
|
89
|
+
if (!fieldType) {
|
|
90
|
+
unmappedColumns[f.name] = {};
|
|
84
91
|
continue;
|
|
92
|
+
}
|
|
85
93
|
fields[f.name] = {
|
|
86
94
|
type: fieldType,
|
|
87
95
|
nullable: !f.isRequired,
|
|
@@ -96,6 +104,8 @@ function buildEntity(model, enumValues, options) {
|
|
|
96
104
|
name: model.name,
|
|
97
105
|
fields,
|
|
98
106
|
};
|
|
107
|
+
if (Object.keys(unmappedColumns).length > 0)
|
|
108
|
+
definition.unmappedColumns = unmappedColumns;
|
|
99
109
|
if (Object.keys(relations).length > 0)
|
|
100
110
|
definition.relations = relations;
|
|
101
111
|
const pk = derivePrimaryKey(model);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-from-prisma.js","sourceRoot":"","sources":["../../../src/adapters/prisma/schema-from-prisma.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"schema-from-prisma.js","sourceRoot":"","sources":["../../../src/adapters/prisma/schema-from-prisma.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import type { ParsedQuery } from "../../parsed";
|
|
|
2
2
|
import { type Schema } from "../../schema";
|
|
3
3
|
import type { PrismaFindManyArgs } from "./types";
|
|
4
4
|
/**
|
|
5
|
-
* Translate ParsedSelect + ParsedInclude into Prisma's `select` / `include`
|
|
6
|
-
* args, mutating `args` in place.
|
|
5
|
+
* Translate ParsedSelect + ParsedInclude into Prisma's `select` / `include` /
|
|
6
|
+
* `omit` args, mutating `args` in place.
|
|
7
7
|
*
|
|
8
8
|
* Rules:
|
|
9
9
|
* - select=all + include=none/all/map → use `include` (or omit when no
|
|
@@ -13,6 +13,13 @@ import type { PrismaFindManyArgs } from "./types";
|
|
|
13
13
|
* level).
|
|
14
14
|
* - Selected fields always include the primary key, so hydration works and
|
|
15
15
|
* later relation joins line up.
|
|
16
|
+
* - Secret-strip: when the entity has policy-denied fields (`selectable:
|
|
17
|
+
* false` — DEFAULT_SECRET_FIELDS / policy deny / selectable allowlist),
|
|
18
|
+
* select=all gets a Prisma `omit` of the denied names, so they never leave
|
|
19
|
+
* the database layer while every OTHER column — including ones the genquery
|
|
20
|
+
* schema doesn't model (Json, scalar arrays, ...) — keeps Prisma's default
|
|
21
|
+
* selection. Relations included without an explicit field list get the same
|
|
22
|
+
* treatment against their target entity.
|
|
16
23
|
*/
|
|
17
24
|
export declare function applySelectAndInclude(args: PrismaFindManyArgs, query: ParsedQuery, schema: Schema): void;
|
|
18
25
|
//# sourceMappingURL=select.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,WAAW,EAEZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,MAAM,EAGZ,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,WAAW,EAEZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,MAAM,EAGZ,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,GACb,IAAI,CAcN"}
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.applySelectAndInclude = applySelectAndInclude;
|
|
4
4
|
const schema_1 = require("../../schema");
|
|
5
5
|
/**
|
|
6
|
-
* Translate ParsedSelect + ParsedInclude into Prisma's `select` / `include`
|
|
7
|
-
* args, mutating `args` in place.
|
|
6
|
+
* Translate ParsedSelect + ParsedInclude into Prisma's `select` / `include` /
|
|
7
|
+
* `omit` args, mutating `args` in place.
|
|
8
8
|
*
|
|
9
9
|
* Rules:
|
|
10
10
|
* - select=all + include=none/all/map → use `include` (or omit when no
|
|
@@ -14,12 +14,22 @@ const schema_1 = require("../../schema");
|
|
|
14
14
|
* level).
|
|
15
15
|
* - Selected fields always include the primary key, so hydration works and
|
|
16
16
|
* later relation joins line up.
|
|
17
|
+
* - Secret-strip: when the entity has policy-denied fields (`selectable:
|
|
18
|
+
* false` — DEFAULT_SECRET_FIELDS / policy deny / selectable allowlist),
|
|
19
|
+
* select=all gets a Prisma `omit` of the denied names, so they never leave
|
|
20
|
+
* the database layer while every OTHER column — including ones the genquery
|
|
21
|
+
* schema doesn't model (Json, scalar arrays, ...) — keeps Prisma's default
|
|
22
|
+
* selection. Relations included without an explicit field list get the same
|
|
23
|
+
* treatment against their target entity.
|
|
17
24
|
*/
|
|
18
25
|
function applySelectAndInclude(args, query, schema) {
|
|
19
26
|
const rootEntity = (0, schema_1.getEntity)(schema, query.rootEntity);
|
|
20
27
|
const select = query.select;
|
|
21
28
|
const include = query.include;
|
|
22
29
|
if (select.kind === "all") {
|
|
30
|
+
const omit = deniedOmit(rootEntity);
|
|
31
|
+
if (omit)
|
|
32
|
+
args.omit = omit;
|
|
23
33
|
const inc = buildIncludeOnly(include, rootEntity, schema);
|
|
24
34
|
if (inc)
|
|
25
35
|
args.include = inc;
|
|
@@ -37,7 +47,7 @@ function buildIncludeOnly(include, rootEntity, schema) {
|
|
|
37
47
|
return undefined;
|
|
38
48
|
const out = {};
|
|
39
49
|
for (const k of keys)
|
|
40
|
-
out[k] =
|
|
50
|
+
out[k] = defaultRelationSpec(rels[k].target, schema);
|
|
41
51
|
return out;
|
|
42
52
|
}
|
|
43
53
|
// map
|
|
@@ -65,8 +75,7 @@ function buildSelectFromBoth(select, include, rootEntity, schema) {
|
|
|
65
75
|
// Nest relations into `select`.
|
|
66
76
|
if (include.kind === "all") {
|
|
67
77
|
for (const [relName, relDef] of Object.entries(rootEntity.relations ?? {})) {
|
|
68
|
-
|
|
69
|
-
out[relName] = true;
|
|
78
|
+
out[relName] = defaultRelationSpec(relDef.target, schema);
|
|
70
79
|
}
|
|
71
80
|
}
|
|
72
81
|
else if (include.kind === "map") {
|
|
@@ -81,22 +90,25 @@ function buildSelectFromBoth(select, include, rootEntity, schema) {
|
|
|
81
90
|
}
|
|
82
91
|
function relationToSpec(spec, targetEntityName, schema) {
|
|
83
92
|
if (spec.kind === "all")
|
|
84
|
-
return
|
|
93
|
+
return defaultRelationSpec(targetEntityName, schema);
|
|
85
94
|
const target = (0, schema_1.getEntity)(schema, targetEntityName);
|
|
86
95
|
const nested = spec.relations ?? {};
|
|
87
96
|
const nestedKeys = Object.keys(nested);
|
|
88
|
-
// No explicit field selection: use `include` (Prisma returns all scalars)
|
|
89
|
-
//
|
|
97
|
+
// No explicit field selection: use `include` (Prisma returns all scalars)
|
|
98
|
+
// with the recursive relation includes, plus an `omit` of the target's
|
|
99
|
+
// policy-denied fields (secret-strip) when it has any.
|
|
90
100
|
if (spec.fields.length === 0) {
|
|
91
|
-
if (nestedKeys.length === 0)
|
|
92
|
-
return
|
|
101
|
+
if (nestedKeys.length === 0) {
|
|
102
|
+
return defaultRelationSpec(targetEntityName, schema);
|
|
103
|
+
}
|
|
93
104
|
const inc = {};
|
|
94
105
|
for (const [relName, child] of Object.entries(nested)) {
|
|
95
106
|
const relDef = target.relations?.[relName];
|
|
96
107
|
if (relDef)
|
|
97
108
|
inc[relName] = relationToSpec(child, relDef.target, schema);
|
|
98
109
|
}
|
|
99
|
-
|
|
110
|
+
const omit = deniedOmit(target);
|
|
111
|
+
return omit ? { omit, include: inc } : { include: inc };
|
|
100
112
|
}
|
|
101
113
|
// Explicit fields selected: use `select` (+ nested relations under select).
|
|
102
114
|
const pk = (0, schema_1.primaryKeyOf)(target);
|
|
@@ -112,4 +124,35 @@ function relationToSpec(spec, targetEntityName, schema) {
|
|
|
112
124
|
}
|
|
113
125
|
return { select: sel };
|
|
114
126
|
}
|
|
127
|
+
// ── Secret-strip helpers ─────────────────────────────────────────────────────
|
|
128
|
+
/**
|
|
129
|
+
* Prisma `omit` of the entity's policy-denied names: schema fields with
|
|
130
|
+
* `selectable: false` plus unmapped columns the policy denied (Json / Bytes /
|
|
131
|
+
* scalar lists the schema doesn't model — see `EntityDefinition.
|
|
132
|
+
* unmappedColumns`). Returns `undefined` when nothing is denied — the common
|
|
133
|
+
* case, which must keep emitting no `omit` key at all. The primary key is
|
|
134
|
+
* never omitted (same invariant as explicit selects).
|
|
135
|
+
*/
|
|
136
|
+
function deniedOmit(entity) {
|
|
137
|
+
const pk = (0, schema_1.primaryKeyOf)(entity);
|
|
138
|
+
const out = {};
|
|
139
|
+
for (const [name, def] of Object.entries(entity.fields)) {
|
|
140
|
+
if (name !== pk && def.selectable === false)
|
|
141
|
+
out[name] = true;
|
|
142
|
+
}
|
|
143
|
+
for (const [name, def] of Object.entries(entity.unmappedColumns ?? {})) {
|
|
144
|
+
if (def.selectable === false)
|
|
145
|
+
out[name] = true;
|
|
146
|
+
}
|
|
147
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Spec for a relation included WITHOUT an explicit field list. Normally `true`
|
|
151
|
+
* (Prisma returns all the target's scalars); when the target has policy-denied
|
|
152
|
+
* fields they're stripped via `omit`.
|
|
153
|
+
*/
|
|
154
|
+
function defaultRelationSpec(targetEntityName, schema) {
|
|
155
|
+
const omit = deniedOmit((0, schema_1.getEntity)(schema, targetEntityName));
|
|
156
|
+
return omit ? { omit } : true;
|
|
157
|
+
}
|
|
115
158
|
//# sourceMappingURL=select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/adapters/prisma/select.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/adapters/prisma/select.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,19 +31,29 @@ export interface PrismaFindManyArgs {
|
|
|
31
31
|
take?: number;
|
|
32
32
|
select?: PrismaSelect;
|
|
33
33
|
include?: PrismaInclude;
|
|
34
|
+
omit?: PrismaOmit;
|
|
34
35
|
}
|
|
35
36
|
export interface PrismaSelect {
|
|
36
37
|
[field: string]: boolean | {
|
|
37
38
|
select?: PrismaSelect;
|
|
38
39
|
include?: PrismaInclude;
|
|
40
|
+
omit?: PrismaOmit;
|
|
39
41
|
};
|
|
40
42
|
}
|
|
41
43
|
export interface PrismaInclude {
|
|
42
44
|
[relation: string]: boolean | {
|
|
43
45
|
select?: PrismaSelect;
|
|
44
46
|
include?: PrismaInclude;
|
|
47
|
+
omit?: PrismaOmit;
|
|
45
48
|
};
|
|
46
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Prisma `omit` — fields excluded from the default selection (GA since Prisma
|
|
52
|
+
* 6.2). Mutually exclusive with `select` at the same level; composes with
|
|
53
|
+
* `include`. Used by the secret-strip so policy-denied fields never leave the
|
|
54
|
+
* database layer while every other column keeps Prisma's default selection.
|
|
55
|
+
*/
|
|
56
|
+
export type PrismaOmit = Record<string, boolean>;
|
|
47
57
|
export interface PrismaDatamodel {
|
|
48
58
|
models: readonly PrismaModelDef[];
|
|
49
59
|
enums: readonly PrismaEnumDef[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC9D,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxD;AAED,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC;IACpB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IAClC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC9D,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxD;AAED,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC;IACpB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IAClC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,KAAK,EAAE,MAAM,GACV,OAAO,GACP;QAAE,MAAM,CAAC,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,CAAC;QAAC,IAAI,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC;CAC3E;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,QAAQ,EAAE,MAAM,GACb,OAAO,GACP;QAAE,MAAM,CAAC,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,CAAC;QAAC,IAAI,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC;CAC3E;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAOjD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE;QAAE,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,CAAC;IACnD;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACrC"}
|
|
@@ -66,7 +66,11 @@ function buildCondition(cond, ctx) {
|
|
|
66
66
|
case "id":
|
|
67
67
|
return { [cond.field]: cond.search.value };
|
|
68
68
|
case "in":
|
|
69
|
-
return {
|
|
69
|
+
return {
|
|
70
|
+
[cond.field]: cond.negate
|
|
71
|
+
? { notIn: cond.values }
|
|
72
|
+
: { in: cond.values },
|
|
73
|
+
};
|
|
70
74
|
case "null":
|
|
71
75
|
return {
|
|
72
76
|
[cond.field]: cond.check.isNull ? null : { not: null },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"where.js","sourceRoot":"","sources":["../../../src/adapters/prisma/where.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"where.js","sourceRoot":"","sources":["../../../src/adapters/prisma/where.ts"],"names":[],"mappings":"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"}
|
package/dist/parsed.d.ts
CHANGED
|
@@ -65,11 +65,16 @@ export type ParsedFieldCondition = {
|
|
|
65
65
|
field: string;
|
|
66
66
|
search: ParsedIdSearch;
|
|
67
67
|
}
|
|
68
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Membership: wire form `field: [v1, v2, ...]` or object form
|
|
70
|
+
* `field: { in: [...] }` → SQL IN; `field: { notIn: [...] }` → SQL NOT IN
|
|
71
|
+
* (`negate: true`). string/id/enum/number only.
|
|
72
|
+
*/
|
|
69
73
|
| {
|
|
70
74
|
kind: "in";
|
|
71
75
|
field: string;
|
|
72
76
|
values: (string | number)[];
|
|
77
|
+
negate?: boolean;
|
|
73
78
|
} | {
|
|
74
79
|
kind: "null";
|
|
75
80
|
field: string;
|
|
@@ -148,7 +153,8 @@ export interface PaginatedResult<T> {
|
|
|
148
153
|
current?: number;
|
|
149
154
|
/**
|
|
150
155
|
* Rows matching the query without pagination. Present when
|
|
151
|
-
* `pagination.showTotal` is true. Sourced from
|
|
156
|
+
* `pagination.showTotal` is true. Sourced from the Prisma adapter's
|
|
157
|
+
* parallel `count` query.
|
|
152
158
|
*/
|
|
153
159
|
total?: number;
|
|
154
160
|
}
|
package/dist/parsed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsed.d.ts","sourceRoot":"","sources":["../src/parsed.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEtE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,SAAS,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE;AACvD
|
|
1
|
+
{"version":3,"file":"parsed.d.ts","sourceRoot":"","sources":["../src/parsed.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,MAAM,EAEZ,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAEV,aAAa,EAMd,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAWV,WAAW,EAIZ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,MAAM,EAEZ,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAEV,aAAa,EAMd,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAWV,WAAW,EAIZ,MAAM,UAAU,CAAC;AA0xBlB,wBAAgB,UAAU,CACxB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW,CAwCb"}
|
package/dist/parser.js
CHANGED
|
@@ -256,17 +256,45 @@ function parseLeafConditions(field, def, value, path) {
|
|
|
256
256
|
out.push({ kind: "empty", field, check: parsed.empty });
|
|
257
257
|
return out;
|
|
258
258
|
}
|
|
259
|
+
// Membership object form: `field: { in: [...] }` / `field: { notIn: [...] }`.
|
|
260
|
+
// Detected before per-type parsing so it works across all field types.
|
|
261
|
+
if (isInObject(value)) {
|
|
262
|
+
return [parseInObject(field, def, value, path)];
|
|
263
|
+
}
|
|
259
264
|
// Membership: `field: [v1, v2, ...]` → IN. string/id/enum/number only.
|
|
260
265
|
if (Array.isArray(value)) {
|
|
261
266
|
return [parseInCondition(field, def, value, path)];
|
|
262
267
|
}
|
|
263
268
|
return [parseLeafConditionTyped(field, def, value, path)];
|
|
264
269
|
}
|
|
265
|
-
|
|
270
|
+
/** Detects the `{ in: [...] }` / `{ notIn: [...] }` membership object form. */
|
|
271
|
+
function isInObject(value) {
|
|
272
|
+
return (isPlainObject(value) &&
|
|
273
|
+
(Object.prototype.hasOwnProperty.call(value, "in") ||
|
|
274
|
+
Object.prototype.hasOwnProperty.call(value, "notIn")));
|
|
275
|
+
}
|
|
276
|
+
function parseInObject(field, def, value, path) {
|
|
277
|
+
const hasIn = Object.prototype.hasOwnProperty.call(value, "in");
|
|
278
|
+
const hasNotIn = Object.prototype.hasOwnProperty.call(value, "notIn");
|
|
279
|
+
if (hasIn && hasNotIn) {
|
|
280
|
+
throw new errors_1.QueryValidationError("Cannot combine 'in' and 'notIn' on the same field", path);
|
|
281
|
+
}
|
|
282
|
+
const negate = hasNotIn;
|
|
283
|
+
const key = negate ? "notIn" : "in";
|
|
284
|
+
const arr = value[key];
|
|
285
|
+
if (!Array.isArray(arr)) {
|
|
286
|
+
throw new errors_1.QueryValidationError(`'${key}' must be an array`, `${path}.${key}`);
|
|
287
|
+
}
|
|
288
|
+
// Empty list is allowed in the explicit object form: `{ in: [] }` matches
|
|
289
|
+
// nothing, `{ notIn: [] }` excludes nothing — both well-defined in Prisma.
|
|
290
|
+
const cond = parseInCondition(field, def, arr, `${path}.${key}`, true);
|
|
291
|
+
return { ...cond, negate };
|
|
292
|
+
}
|
|
293
|
+
function parseInCondition(field, def, value, path, allowEmpty = false) {
|
|
266
294
|
if (def.type === "boolean" || def.type === "date") {
|
|
267
295
|
throw new errors_1.QueryValidationError(`Array (IN) search is not supported on ${def.type} fields`, path);
|
|
268
296
|
}
|
|
269
|
-
if (value.length === 0) {
|
|
297
|
+
if (value.length === 0 && !allowEmpty) {
|
|
270
298
|
throw new errors_1.QueryValidationError("IN list must contain at least one value", path);
|
|
271
299
|
}
|
|
272
300
|
const values = value.map((v, i) => {
|
|
@@ -387,8 +415,23 @@ function parseInclude(raw, entity, schema, path) {
|
|
|
387
415
|
// 'all'/'none'/oggetto). Simmetrico ai livelli annidati (parseRelationSpec).
|
|
388
416
|
if (raw === "none" || raw === false)
|
|
389
417
|
return { kind: "none" };
|
|
390
|
-
if (raw === "all" || raw === true)
|
|
391
|
-
|
|
418
|
+
if (raw === "all" || raw === true) {
|
|
419
|
+
// POLICY: 'all' espande solo le relazioni includibili. Una relazione con
|
|
420
|
+
// includable:false viene rifiutata se nominata esplicitamente — non puo'
|
|
421
|
+
// quindi rientrare dall'espansione implicita di 'all'. Senza relazioni
|
|
422
|
+
// negate il percorso storico ({kind:'all'}) resta invariato.
|
|
423
|
+
const rels = entity.relations ?? {};
|
|
424
|
+
const hasDenied = Object.values(rels).some((r) => r.includable === false);
|
|
425
|
+
if (!hasDenied)
|
|
426
|
+
return { kind: "all" };
|
|
427
|
+
const relations = {};
|
|
428
|
+
for (const [relName, relDef] of Object.entries(rels)) {
|
|
429
|
+
if (relDef.includable === false)
|
|
430
|
+
continue;
|
|
431
|
+
relations[relName] = { kind: "all" };
|
|
432
|
+
}
|
|
433
|
+
return { kind: "map", relations };
|
|
434
|
+
}
|
|
392
435
|
if (!isPlainObject(raw)) {
|
|
393
436
|
throw new errors_1.QueryValidationError("include must be 'all', 'none', or an object", path);
|
|
394
437
|
}
|