@opensaas/stack-core 0.40.0 → 0.41.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +39 -0
- package/CLAUDE.md +52 -0
- package/dist/access/access-filter.d.ts +88 -18
- package/dist/access/access-filter.d.ts.map +1 -1
- package/dist/access/access-filter.js +343 -36
- package/dist/access/access-filter.js.map +1 -1
- package/dist/access/access-filter.test.js +759 -6
- package/dist/access/access-filter.test.js.map +1 -1
- package/dist/access/denied-relation-visibility.test.d.ts +2 -0
- package/dist/access/denied-relation-visibility.test.d.ts.map +1 -0
- package/dist/access/denied-relation-visibility.test.js +114 -0
- package/dist/access/denied-relation-visibility.test.js.map +1 -0
- package/dist/access/engine.d.ts +11 -0
- package/dist/access/engine.d.ts.map +1 -1
- package/dist/access/engine.js +26 -0
- package/dist/access/engine.js.map +1 -1
- package/dist/access/errors.d.ts +34 -0
- package/dist/access/errors.d.ts.map +1 -1
- package/dist/access/errors.js +47 -0
- package/dist/access/errors.js.map +1 -1
- package/dist/access/field-visibility.d.ts +2 -2
- package/dist/access/field-visibility.d.ts.map +1 -1
- package/dist/access/field-visibility.js +73 -23
- package/dist/access/field-visibility.js.map +1 -1
- package/dist/access/index.d.ts +7 -3
- package/dist/access/index.d.ts.map +1 -1
- package/dist/access/index.js +9 -2
- package/dist/access/index.js.map +1 -1
- package/dist/access/multi-column-read-write.test.js.map +1 -1
- package/dist/access/query-validation.d.ts +31 -0
- package/dist/access/query-validation.d.ts.map +1 -1
- package/dist/access/query-validation.js +75 -16
- package/dist/access/query-validation.js.map +1 -1
- package/dist/access/relationship-count.d.ts +41 -3
- package/dist/access/relationship-count.d.ts.map +1 -1
- package/dist/access/relationship-count.js +44 -7
- package/dist/access/relationship-count.js.map +1 -1
- package/dist/access/relationship-count.test.js +62 -0
- package/dist/access/relationship-count.test.js.map +1 -1
- package/dist/access/synthetic-include-read.test.d.ts +2 -0
- package/dist/access/synthetic-include-read.test.d.ts.map +1 -0
- package/dist/access/synthetic-include-read.test.js +121 -0
- package/dist/access/synthetic-include-read.test.js.map +1 -0
- package/dist/config/types.d.ts +22 -22
- package/dist/config/types.d.ts.map +1 -1
- package/dist/context/hook-pipeline.d.ts +2 -2
- package/dist/context/hook-pipeline.d.ts.map +1 -1
- package/dist/context/hook-pipeline.js.map +1 -1
- package/dist/context/index.d.ts +16 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +76 -26
- package/dist/context/index.js.map +1 -1
- package/dist/context/nested-operations.d.ts +2 -2
- package/dist/context/nested-operations.d.ts.map +1 -1
- package/dist/context/nested-operations.js +21 -3
- package/dist/context/nested-operations.js.map +1 -1
- package/dist/context/write-pipeline.d.ts.map +1 -1
- package/dist/context/write-pipeline.js +23 -29
- package/dist/context/write-pipeline.js.map +1 -1
- package/dist/hooks/index.d.ts +16 -15
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js.map +1 -1
- package/package.json +2 -2
- package/src/access/access-filter.test.ts +1403 -159
- package/src/access/access-filter.ts +525 -47
- package/src/access/denied-relation-visibility.test.ts +173 -0
- package/src/access/engine.ts +28 -0
- package/src/access/errors.ts +55 -0
- package/src/access/field-visibility.ts +105 -24
- package/src/access/index.ts +11 -0
- package/src/access/multi-column-read-write.test.ts +3 -2
- package/src/access/query-validation.ts +136 -9
- package/src/access/relationship-count.test.ts +75 -0
- package/src/access/relationship-count.ts +53 -10
- package/src/access/synthetic-include-read.test.ts +179 -0
- package/src/config/types.ts +22 -22
- package/src/context/hook-pipeline.ts +4 -2
- package/src/context/index.ts +120 -39
- package/src/context/nested-operations.ts +35 -11
- package/src/context/write-pipeline.ts +52 -32
- package/src/hooks/index.ts +22 -15
- package/tests/context.test.ts +193 -5
- package/tests/hook-context-secured.test.ts +424 -0
- package/tests/nested-access-and-hooks.test.ts +324 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { getRelatedListConfig } from './engine.js';
|
|
1
|
+
import { getRelatedListConfig, resolveSyntheticReverseRelation } from './engine.js';
|
|
2
2
|
import { checkFieldAccess } from './field-access.js';
|
|
3
3
|
import { RESOLVE_CHAIN_MAX_LENGTH } from './depth-limits.js';
|
|
4
4
|
import { ResolveOutputCycleError } from './errors.js';
|
|
5
5
|
import { emptyDeclaredOnlyTree } from './declared-dependencies.js';
|
|
6
|
-
import { emptyToOneAccessVisibilityTree } from './access-filter.js';
|
|
6
|
+
import { emptyToOneAccessVisibilityTree, isToOneRelationship, emptyCountAccessDenialTree, } from './access-filter.js';
|
|
7
7
|
// NOTE: `context/index.ts` imports `filterReadableFields` from this module
|
|
8
8
|
// (via the `access/index.ts` barrel) — this is an intentional cyclic
|
|
9
9
|
// dependency, the same shape and for the same reason as the one documented in
|
|
@@ -119,7 +119,11 @@ selection,
|
|
|
119
119
|
// doc above), and the same tree one level down for each nested relation —
|
|
120
120
|
// regardless of that relation's own arity, since a filtered to-one can sit
|
|
121
121
|
// beneath a to-many hop.
|
|
122
|
-
toOneVisibility = emptyToOneAccessVisibilityTree()
|
|
122
|
+
toOneVisibility = emptyToOneAccessVisibilityTree(),
|
|
123
|
+
// `_count.select` keys denied outright at THIS level (issue #1087, see
|
|
124
|
+
// module doc above), and the same tree one level down for each nested
|
|
125
|
+
// relation whose own nested include named a further `_count`.
|
|
126
|
+
countDenials = emptyCountAccessDenialTree()) {
|
|
123
127
|
const filtered = {};
|
|
124
128
|
// Multi-column fields (e.g. storage image()/file() in Keystone-parity mode)
|
|
125
129
|
// back several physical columns rather than one. Before the per-field pass,
|
|
@@ -178,21 +182,42 @@ toOneVisibility = emptyToOneAccessVisibilityTree()) {
|
|
|
178
182
|
// cap used to let a relation be scoped correctly at the DB level while
|
|
179
183
|
// still returning with unfiltered fields past this function's own,
|
|
180
184
|
// separately-tracked limit (issue #830).
|
|
185
|
+
const isDeclaredRelationshipField = fieldConfig?.type === 'relationship' && 'ref' in fieldConfig && !!fieldConfig.ref;
|
|
186
|
+
// A synthetic back-relation (#1082) — no declared field of its own on
|
|
187
|
+
// this list, so resolved by name against the owning list's relationship
|
|
188
|
+
// field instead. `undefined` (not `fieldConfig`) is the signal it's
|
|
189
|
+
// worth trying: a declared-but-non-relationship field (e.g. a scalar or
|
|
190
|
+
// virtual) must fall through to the generic path below, unchanged.
|
|
191
|
+
const synthetic = !isDeclaredRelationshipField && fieldConfig === undefined && config && listKey
|
|
192
|
+
? resolveSyntheticReverseRelation(fieldName, listKey, config)
|
|
193
|
+
: null;
|
|
181
194
|
if (config &&
|
|
182
|
-
|
|
183
|
-
'ref' in fieldConfig &&
|
|
184
|
-
fieldConfig.ref &&
|
|
195
|
+
(isDeclaredRelationshipField || synthetic) &&
|
|
185
196
|
value !== null &&
|
|
186
197
|
value !== undefined) {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
198
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- ListConfig must accept any TypeInfo
|
|
199
|
+
let relatedConfig = null;
|
|
200
|
+
if (isDeclaredRelationshipField) {
|
|
201
|
+
const canRead = await checkFieldAccess(fieldConfig?.access, 'read', {
|
|
202
|
+
...args,
|
|
203
|
+
item: workingItem,
|
|
204
|
+
});
|
|
205
|
+
if (!canRead) {
|
|
206
|
+
accessDeniedKeys.add(fieldName);
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
relatedConfig = getRelatedListConfig(fieldConfig.ref, config);
|
|
210
|
+
}
|
|
211
|
+
else if (synthetic) {
|
|
212
|
+
// No declared field means no field-level `read` gate of its own to
|
|
213
|
+
// check here — the owning list's OWN field-level access is enforced
|
|
214
|
+
// by the recursive `filterReadableFields` call below, exactly as it
|
|
215
|
+
// would be for a declared relationship's related rows.
|
|
216
|
+
relatedConfig = {
|
|
217
|
+
listName: synthetic.sourceListName,
|
|
218
|
+
listConfig: synthetic.sourceListConfig,
|
|
219
|
+
};
|
|
194
220
|
}
|
|
195
|
-
const relatedConfig = getRelatedListConfig(fieldConfig.ref, config);
|
|
196
221
|
// The declared-only tree for whatever THIS relation's own list computes,
|
|
197
222
|
// e.g. a field on the related list that declares its own `needs`. Falls
|
|
198
223
|
// back to an empty tree when this relation isn't declaration-related at
|
|
@@ -212,15 +237,20 @@ toOneVisibility = emptyToOneAccessVisibilityTree()) {
|
|
|
212
237
|
// This key's OWN to-one existence check, if `fieldName` itself is a
|
|
213
238
|
// filtered to-one relation (as opposed to one further down its tree).
|
|
214
239
|
const toOneEntry = toOneVisibility.filters[fieldName];
|
|
240
|
+
// This relation's own denied `_count` keys, if `buildAccessScopedInclude`
|
|
241
|
+
// flagged any beneath it (issue #1087). Falls back to empty — the
|
|
242
|
+
// common case for a relation with no denied `_count` anywhere in its
|
|
243
|
+
// own nested include.
|
|
244
|
+
const nestedCountDenials = countDenials.nested[fieldName] ?? emptyCountAccessDenialTree();
|
|
215
245
|
if (relatedConfig) {
|
|
216
246
|
if (Array.isArray(value)) {
|
|
217
|
-
filtered[fieldName] = await Promise.all(value.map((relatedItem) => filterReadableFields(relatedItem, relatedConfig.listConfig.fields, args, config, depth + 1, relatedConfig.listName, nestedDeclaredOnly, nestedSelection, nestedToOneVisibility)));
|
|
247
|
+
filtered[fieldName] = await Promise.all(value.map((relatedItem) => filterReadableFields(relatedItem, relatedConfig.listConfig.fields, args, config, depth + 1, relatedConfig.listName, nestedDeclaredOnly, nestedSelection, nestedToOneVisibility, nestedCountDenials)));
|
|
218
248
|
}
|
|
219
249
|
else if (typeof value === 'object') {
|
|
220
250
|
const relatedId = value.id;
|
|
221
251
|
const isVisible = !toOneEntry || toOneEntry.kind !== 'visible' || toOneEntry.ids.has(String(relatedId));
|
|
222
252
|
filtered[fieldName] = isVisible
|
|
223
|
-
? await filterReadableFields(value, relatedConfig.listConfig.fields, args, config, depth + 1, relatedConfig.listName, nestedDeclaredOnly, nestedSelection, nestedToOneVisibility)
|
|
253
|
+
? await filterReadableFields(value, relatedConfig.listConfig.fields, args, config, depth + 1, relatedConfig.listName, nestedDeclaredOnly, nestedSelection, nestedToOneVisibility, nestedCountDenials)
|
|
224
254
|
: null;
|
|
225
255
|
}
|
|
226
256
|
}
|
|
@@ -248,12 +278,14 @@ toOneVisibility = emptyToOneAccessVisibilityTree()) {
|
|
|
248
278
|
accessDeniedKeys.add(fieldName);
|
|
249
279
|
}
|
|
250
280
|
}
|
|
251
|
-
//
|
|
252
|
-
// were never asked of Prisma at all, so `fieldName`
|
|
253
|
-
// `workingItem` and the loop above never visits it. Force
|
|
254
|
-
//
|
|
255
|
-
//
|
|
256
|
-
//
|
|
281
|
+
// Relations `buildAccessScopedInclude` denied outright (to-one: issue #974,
|
|
282
|
+
// to-many: issue #1103) were never asked of Prisma at all, so `fieldName`
|
|
283
|
+
// has no entry in `workingItem` and the loop above never visits it. Force
|
|
284
|
+
// it present here — matching what a denied read means everywhere else in
|
|
285
|
+
// the context — rather than leaving the key silently absent: `null` for a
|
|
286
|
+
// to-one relation, `[]` for a to-many one. A synthetic back-relation
|
|
287
|
+
// (`fieldConfig` undefined — #1082) is always to-many, the same arity
|
|
288
|
+
// `buildAccessScopedInclude` assumes for it.
|
|
257
289
|
for (const [fieldName, entry] of Object.entries(toOneVisibility.filters)) {
|
|
258
290
|
if (entry.kind !== 'denied')
|
|
259
291
|
continue;
|
|
@@ -270,7 +302,25 @@ toOneVisibility = emptyToOneAccessVisibilityTree()) {
|
|
|
270
302
|
accessDeniedKeys.add(fieldName);
|
|
271
303
|
continue;
|
|
272
304
|
}
|
|
273
|
-
|
|
305
|
+
const isToMany = !fieldConfig || !isToOneRelationship(fieldConfig);
|
|
306
|
+
filtered[fieldName] = isToMany ? [] : null;
|
|
307
|
+
}
|
|
308
|
+
// `_count.select` keys `buildAccessScopedInclude` denied outright (issue
|
|
309
|
+
// #1087) were omitted from the select sent to Prisma, so `_count` may be
|
|
310
|
+
// absent from `workingItem` entirely, or present but missing exactly these
|
|
311
|
+
// keys. Write each denied key in as `0` — matching what a denied count has
|
|
312
|
+
// always meant for the admin list view's own scoped counts — unless a
|
|
313
|
+
// fragment's own selection excluded `_count` altogether, in which case
|
|
314
|
+
// there is nothing to inject it into.
|
|
315
|
+
if (countDenials.keys.size > 0 && !(selection?.fields && !selection.fields.has('_count'))) {
|
|
316
|
+
const existingCount = filtered._count && typeof filtered._count === 'object'
|
|
317
|
+
? filtered._count
|
|
318
|
+
: {};
|
|
319
|
+
const mergedCount = { ...existingCount };
|
|
320
|
+
for (const key of countDenials.keys) {
|
|
321
|
+
mergedCount[key] = 0;
|
|
322
|
+
}
|
|
323
|
+
filtered._count = mergedCount;
|
|
274
324
|
}
|
|
275
325
|
// The item a virtual field's hook sees: stored columns and fetched
|
|
276
326
|
// relations (from `workingItem`, never a resolved value — no hook's output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-visibility.js","sourceRoot":"","sources":["../../src/access/field-visibility.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"field-visibility.js","sourceRoot":"","sources":["../../src/access/field-visibility.ts"],"names":[],"mappings":"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"}
|
package/dist/access/index.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export type { AccessControl, FieldAccess, Session, AccessContext, PrismaFilter, AccessControlledDB, PrismaClientLike, StorageUtils, AugmentedFindMany, AugmentedFindUnique, FindManyQueryArgs, } from './types.js';
|
|
2
|
-
export { checkAccess, checkCreateAccess, mergeFilters, isBoolean, isPrismaFilter, getRelatedListConfig, resolveSyntheticReverseRelation, } from './engine.js';
|
|
2
|
+
export { checkAccess, checkCreateAccess, mergeFilters, isBoolean, isPrismaFilter, getRelatedListConfig, resolveSyntheticReverseRelation, listSyntheticReverseRelationNames, } from './engine.js';
|
|
3
3
|
export type { SyntheticReverseRelation } from './engine.js';
|
|
4
4
|
export { checkFieldAccess, filterWritableFields, isFieldReadableForPredicate, } from './field-access.js';
|
|
5
5
|
export { validateQueryKeys } from './query-validation.js';
|
|
6
6
|
export { validateQueryFieldReadAccess } from './query-validation.js';
|
|
7
|
-
export { buildAccessScopedInclude, buildAccessScopedWhere, stripVirtualFieldsFromInclude, resolveToOneAccessVisibility, emptyToOneAccessFilterTree, emptyToOneAccessVisibilityTree, } from './access-filter.js';
|
|
8
|
-
export type { ToOneAccessFilterTree, ToOneAccessFilterEntry, ToOneAccessVisibilityTree, ToOneVisibility, } from './access-filter.js';
|
|
7
|
+
export { buildAccessScopedInclude, buildAccessScopedWhere, stripVirtualFieldsFromInclude, resolveToOneAccessVisibility, emptyToOneAccessFilterTree, emptyToOneAccessVisibilityTree, emptyCountAccessDenialTree, } from './access-filter.js';
|
|
8
|
+
export type { ToOneAccessFilterTree, ToOneAccessFilterEntry, ToOneAccessVisibilityTree, ToOneVisibility, CountAccessDenialTree, } from './access-filter.js';
|
|
9
|
+
export { isToManyRelationshipField, resolveCountAccessEntryForList } from './relationship-count.js';
|
|
10
|
+
export type { CountAccessEntry } from './relationship-count.js';
|
|
9
11
|
export { filterReadableFields } from './field-visibility.js';
|
|
10
12
|
export { foldDeclaredDependencies, getDeclaredRelationNames, emptyDeclaredOnlyTree, } from './declared-dependencies.js';
|
|
11
13
|
export type { DeclaredOnlyTree } from './declared-dependencies.js';
|
|
@@ -14,4 +16,6 @@ export { ResolveOutputCycleError } from './errors.js';
|
|
|
14
16
|
export { InvalidFieldAccessResultError } from './errors.js';
|
|
15
17
|
export { InvalidCreateAccessResultError } from './errors.js';
|
|
16
18
|
export { RelationFilterAccessDeniedError } from './errors.js';
|
|
19
|
+
export { UndeclaredIncludeKeyError } from './errors.js';
|
|
20
|
+
export { UndeclaredCountKeyError } from './errors.js';
|
|
17
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,WAAW,EACX,OAAO,EACP,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,+BAA+B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,WAAW,EACX,OAAO,EACP,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AAEpE,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,4BAA4B,EAC5B,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAA;AACnG,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAG5D,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AACnC,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAElE,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAErD,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAE5D,OAAO,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAA;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/access/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Operation-level access primitives and shared ref-parsing helper.
|
|
2
|
-
export { checkAccess, checkCreateAccess, mergeFilters, isBoolean, isPrismaFilter, getRelatedListConfig, resolveSyntheticReverseRelation, } from './engine.js';
|
|
2
|
+
export { checkAccess, checkCreateAccess, mergeFilters, isBoolean, isPrismaFilter, getRelatedListConfig, resolveSyntheticReverseRelation, listSyntheticReverseRelationNames, } from './engine.js';
|
|
3
3
|
// Canonical field-level access evaluation (shared by read and write paths).
|
|
4
4
|
export { checkFieldAccess, filterWritableFields, isFieldReadableForPredicate, } from './field-access.js';
|
|
5
5
|
// Read-path key validation — the `findMany`/`count` counterpart to the write
|
|
@@ -9,7 +9,10 @@ export { validateQueryKeys } from './query-validation.js';
|
|
|
9
9
|
// session cannot read cannot be named in a predicate either (#915).
|
|
10
10
|
export { validateQueryFieldReadAccess } from './query-validation.js';
|
|
11
11
|
// Phase 1 — Access Filter (pre-query row/relation scoping).
|
|
12
|
-
export { buildAccessScopedInclude, buildAccessScopedWhere, stripVirtualFieldsFromInclude, resolveToOneAccessVisibility, emptyToOneAccessFilterTree, emptyToOneAccessVisibilityTree, } from './access-filter.js';
|
|
12
|
+
export { buildAccessScopedInclude, buildAccessScopedWhere, stripVirtualFieldsFromInclude, resolveToOneAccessVisibility, emptyToOneAccessFilterTree, emptyToOneAccessVisibilityTree, emptyCountAccessDenialTree, } from './access-filter.js';
|
|
13
|
+
// Access-scoped to-many relationship counts (admin list view, issue #732)
|
|
14
|
+
// and the shared per-relation resolver `_count` scoping (issue #1087) reuses.
|
|
15
|
+
export { isToManyRelationshipField, resolveCountAccessEntryForList } from './relationship-count.js';
|
|
13
16
|
// Phase 2 — Field Visibility (post-query field stripping + resolveOutput).
|
|
14
17
|
export { filterReadableFields } from './field-visibility.js';
|
|
15
18
|
// Declared Dependencies — folding `needs` into an include without widening
|
|
@@ -25,4 +28,8 @@ export { InvalidFieldAccessResultError } from './errors.js';
|
|
|
25
28
|
export { InvalidCreateAccessResultError } from './errors.js';
|
|
26
29
|
// Thrown when a relation filter's related list denies query access outright (#916).
|
|
27
30
|
export { RelationFilterAccessDeniedError } from './errors.js';
|
|
31
|
+
// Thrown when a caller `include` names a key that is neither declared, synthetic, nor `_count` (#1082).
|
|
32
|
+
export { UndeclaredIncludeKeyError } from './errors.js';
|
|
33
|
+
// Thrown when a caller `_count.select` names a key that is not a countable to-many relation (#1087).
|
|
34
|
+
export { UndeclaredCountKeyError } from './errors.js';
|
|
28
35
|
//# sourceMappingURL=index.js.map
|
package/dist/access/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":"AAaA,mEAAmE;AACnE,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,+BAA+B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":"AAaA,mEAAmE;AACnE,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,aAAa,CAAA;AAEpB,4EAA4E;AAC5E,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAA;AAC1B,6EAA6E;AAC7E,qCAAqC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,uEAAuE;AACvE,oEAAoE;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AACpE,4DAA4D;AAC5D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,4BAA4B,EAC5B,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,oBAAoB,CAAA;AAQ3B,0EAA0E;AAC1E,8EAA8E;AAC9E,OAAO,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAA;AAEnG,2EAA2E;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,2EAA2E;AAC3E,yBAAyB;AACzB,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AAEnC,mFAAmF;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAC3D,gFAAgF;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,kFAAkF;AAClF,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAC3D,4FAA4F;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAC5D,oFAAoF;AACpF,OAAO,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAA;AAC7D,wGAAwG;AACxG,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AACvD,qGAAqG;AACrG,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-column-read-write.test.js","sourceRoot":"","sources":["../../src/access/multi-column-read-write.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"multi-column-read-write.test.js","sourceRoot":"","sources":["../../src/access/multi-column-read-write.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAKzF;;;;;;;;;;;;;GAaG;AAEH,0EAA0E;AAC1E,gFAAgF;AAChF,gEAAgE;AAChE,SAAS,gBAAgB,CAAC,MAAoB;IAC5C,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACnC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,MAAM;QACN,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO;QAC7B,eAAe,EAAE,CAAC,UAAkB,EAAE,GAA4B,EAAE,EAAE;YACpE,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAA;YACrB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAA;YAChE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;QACvC,CAAC;QACD,YAAY,EAAE,CAAC,UAAkB,EAAE,KAAc,EAAE,EAAE;YACnD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YACtC,CAAC;YACD,MAAM,CAAC,GAAG,KAA0C,CAAA;YACpD,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAA;QACzD,CAAC;QACD,0EAA0E;QAC1E,KAAK,EAAE;YACL,mFAAmF;YACnF,YAAY,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAO,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;SAClF;KACwB,CAAA;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,SAAS,GAAyB,EAAE;IACvD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,SAAS,CAAC,MAAM,IAAI,KAAK;QAClC,mBAAmB,EAAE,EAAE;QACvB,+FAA+F;KACzF,CAAA;AACV,CAAC;AAED,QAAQ,CAAC,mDAAmD,EAAE,GAAG,EAAE;IACjE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAA;IAE5C,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;QAC1E,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,GAAG;QACH,yBAAyB;QACzB,sFAAsF;QACtF,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAS,EAAE,EAC7C,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EACzC,SAAS,EACT,CAAC,EACD,MAAM,CACP,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7F,6BAA6B;QAC7B,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAA;QACpD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,GAAG,EACH,MAAM,EACN,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EACzC,SAAS,EACT,CAAC,EACD,MAAM,CACP,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACpF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QAClD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,GAAG,EACH,MAAM,EACN,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EACzC,SAAS,EACT,CAAC,EACD,MAAM,CACP,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAA;QAClD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,GAAG;QACH,sFAAsF;QACtF,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAS,EAAE,EAC7C,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EACzC,SAAS,EACT,CAAC,EACD,MAAM,CACP,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAA;QAC9D,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,iFAAiF,EAAE,GAAG,EAAE;IAC/F,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAA;IAE5C,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAA;QACjE,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EAAE,EACb,MAAM,CACP,CAAA;QACD,mEAAmE;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACvE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,2EAA2E;QAC3E,sEAAsE;QACtE,uCAAuC;QACvC,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAA;QAChD,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EAAE,EACb,MAAM,CACP,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAA;QAClD,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAChD,SAAS,EACT,EAAE,GAAG,SAAS,EAAE;QAChB,sFAAsF;QACtF,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAS,EAAE,EAC7C,QAAQ,EACR,WAAW,EAAE,EACb,MAAM,CACP,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAA;QACxD,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,4EAA4E,EAAE,GAAG,EAAE;IAC1F,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAA;IAE5C,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAA;QACjE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EAAE,CACd,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;QAChE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EAAE,CACd,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAA;QAClD,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,SAAS,EACT,EAAE,GAAG,SAAS,EAAE;QAChB,sFAAsF;QACtF,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAS,EAAE,EAC7C,QAAQ,EACR,WAAW,EAAE,CACd,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAA;QACxD,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;IAC1E,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAA;QACnE,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAA;QACjE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EAAE,CACd,CAAA;QACD,uEAAuE;QACvE,uEAAuE;QACvE,sCAAsC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC1B,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAA;QACnE,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAA;QACjE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EAAE,CACd,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC1B,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAA;QACtF,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAA;QACjE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EAAE,CACd,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;QAChE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,mEAAmE;QACnE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAA;QACnE,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAA;QACjE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EAAE,CACd,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAA;QACnE,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAA;QACjE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAC9B,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAA;QAC5C,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAA;QACjE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EAAE,CACd,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -42,6 +42,20 @@ import type { Session, AccessContext } from './types.js';
|
|
|
42
42
|
* deliberately no second copy of either the shape-recognition or the
|
|
43
43
|
* field-read check: `access-filter.ts` supplies the RELATED list at each
|
|
44
44
|
* hop and calls back into the same primitives this module already owns.
|
|
45
|
+
*
|
|
46
|
+
* #1092 — `validateQueryKeys` is also the include-nested counterpart: a
|
|
47
|
+
* `where`/`orderBy` a caller nests inside an `include` entry gets the same
|
|
48
|
+
* #912 check, called by `buildAccessScopedInclude` against the RELATED list
|
|
49
|
+
* instead of the current one — no second key-existence walker for that
|
|
50
|
+
* position. `validateQueryFieldReadAccess` needs no equivalent call there:
|
|
51
|
+
* `checkKeyReadableOrThrow` already treats a key `resolveQueryField` cannot
|
|
52
|
+
* resolve as "already handled elsewhere" and skips it, which is exactly the
|
|
53
|
+
* synthetic-back-relation tolerance below needs — nothing to change. The one
|
|
54
|
+
* thing this position needs that the top-level `where`/`orderBy` never did:
|
|
55
|
+
* a key neither call resolves is tried against the optional
|
|
56
|
+
* `resolveSyntheticRelation` hook before being rejected, because a synthetic
|
|
57
|
+
* back-relation (#1082) is nameable in a nested predicate too. Every
|
|
58
|
+
* existing caller omits the hook, so top-level behavior is unchanged.
|
|
45
59
|
*/
|
|
46
60
|
export declare const LOGICAL_OPERATORS: Set<string>;
|
|
47
61
|
export declare const RELATION_QUANTIFIERS: Set<string>;
|
|
@@ -50,6 +64,17 @@ export interface ResolvedQueryField {
|
|
|
50
64
|
fieldConfig: any;
|
|
51
65
|
isRelationship: boolean;
|
|
52
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Where an unresolved key's nested predicate should recurse when it turns out
|
|
69
|
+
* to name a synthetic back-relation (#1082) rather than a declared field —
|
|
70
|
+
* the source list the back-relation stands for, NOT `getRelatedListConfig`'s
|
|
71
|
+
* target (a synthetic field carries no `ref` of its own to follow).
|
|
72
|
+
*/
|
|
73
|
+
export interface SyntheticRelationTarget {
|
|
74
|
+
listConfig: ListConfig<any>;
|
|
75
|
+
listName: string;
|
|
76
|
+
}
|
|
77
|
+
export type ResolveSyntheticRelation = (key: string, listName: string) => SyntheticRelationTarget | null;
|
|
53
78
|
/**
|
|
54
79
|
* Resolve a `where`/`orderBy` key against a list's declared fields.
|
|
55
80
|
*
|
|
@@ -76,6 +101,11 @@ export declare function resolveQueryField(key: string, fields: FieldConfigMap):
|
|
|
76
101
|
* Throws a `ValidationError` naming the list and the offending key on the
|
|
77
102
|
* first undeclared key found. `isSudo` bypasses the check entirely, matching
|
|
78
103
|
* the write path's `sudo` escape hatch.
|
|
104
|
+
*
|
|
105
|
+
* `resolveSyntheticRelation` is the include-nested position's own addition
|
|
106
|
+
* (#1092, see module doc comment) — omit it (every top-level `where`/`orderBy`
|
|
107
|
+
* caller does) and a key `resolveQueryField` can't resolve rejects exactly as
|
|
108
|
+
* before.
|
|
79
109
|
*/
|
|
80
110
|
export declare function validateQueryKeys(args: {
|
|
81
111
|
where?: unknown;
|
|
@@ -84,6 +114,7 @@ export declare function validateQueryKeys(args: {
|
|
|
84
114
|
listName: string;
|
|
85
115
|
config: OpenSaasConfig;
|
|
86
116
|
isSudo: boolean;
|
|
117
|
+
resolveSyntheticRelation?: ResolveSyntheticRelation;
|
|
87
118
|
}): void;
|
|
88
119
|
/**
|
|
89
120
|
* Check field-level `read` access for every key at ONE level of a `where`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-validation.d.ts","sourceRoot":"","sources":["../../src/access/query-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAKxD
|
|
1
|
+
{"version":3,"file":"query-validation.d.ts","sourceRoot":"","sources":["../../src/access/query-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAKxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAGH,eAAO,MAAM,iBAAiB,aAAgC,CAAA;AAI9D,eAAO,MAAM,oBAAoB,aAAoD,CAAA;AAOrF,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEzC,MAAM,WAAW,kBAAkB;IAEjC,WAAW,EAAE,GAAG,CAAA;IAChB,cAAc,EAAE,OAAO,CAAA;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IAEtC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,wBAAwB,GAAG,CACrC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,KACb,uBAAuB,GAAG,IAAI,CAAA;AAEnC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,GACrB,kBAAkB,GAAG,SAAS,CA2BhC;AAkMD;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,cAAc,CAAA;IACtB,MAAM,EAAE,OAAO,CAAA;IACf,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;CACpD,GAAG,IAAI,CAQP;AAmCD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,OAAO,EAEd,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GAChF,OAAO,CAAC,IAAI,CAAC,CAoBf;AAqBD;;;;;;;GAOG;AACH,wBAAsB,4BAA4B,CAAC,IAAI,EAAE;IACvD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IAC9C,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhB"}
|
|
@@ -43,6 +43,20 @@ import { ValidationError } from '../hooks/index.js';
|
|
|
43
43
|
* deliberately no second copy of either the shape-recognition or the
|
|
44
44
|
* field-read check: `access-filter.ts` supplies the RELATED list at each
|
|
45
45
|
* hop and calls back into the same primitives this module already owns.
|
|
46
|
+
*
|
|
47
|
+
* #1092 — `validateQueryKeys` is also the include-nested counterpart: a
|
|
48
|
+
* `where`/`orderBy` a caller nests inside an `include` entry gets the same
|
|
49
|
+
* #912 check, called by `buildAccessScopedInclude` against the RELATED list
|
|
50
|
+
* instead of the current one — no second key-existence walker for that
|
|
51
|
+
* position. `validateQueryFieldReadAccess` needs no equivalent call there:
|
|
52
|
+
* `checkKeyReadableOrThrow` already treats a key `resolveQueryField` cannot
|
|
53
|
+
* resolve as "already handled elsewhere" and skips it, which is exactly the
|
|
54
|
+
* synthetic-back-relation tolerance below needs — nothing to change. The one
|
|
55
|
+
* thing this position needs that the top-level `where`/`orderBy` never did:
|
|
56
|
+
* a key neither call resolves is tried against the optional
|
|
57
|
+
* `resolveSyntheticRelation` hook before being rejected, because a synthetic
|
|
58
|
+
* back-relation (#1082) is nameable in a nested predicate too. Every
|
|
59
|
+
* existing caller omits the hook, so top-level behavior is unchanged.
|
|
46
60
|
*/
|
|
47
61
|
// Prisma's logical combinators for a WHERE clause — never field names.
|
|
48
62
|
export const LOGICAL_OPERATORS = new Set(['AND', 'OR', 'NOT']);
|
|
@@ -103,21 +117,45 @@ function rejectUndeclaredKey(listName, key, kind) {
|
|
|
103
117
|
}
|
|
104
118
|
function walkWhere(where,
|
|
105
119
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- ListConfig must accept any TypeInfo
|
|
106
|
-
listConfig, listName, config, isSudo) {
|
|
120
|
+
listConfig, listName, config, isSudo, resolveSyntheticRelation) {
|
|
107
121
|
if (where === null || typeof where !== 'object')
|
|
108
122
|
return;
|
|
109
123
|
if (Array.isArray(where)) {
|
|
110
|
-
for (const entry of where)
|
|
111
|
-
walkWhere(entry, listConfig, listName, config, isSudo);
|
|
124
|
+
for (const entry of where) {
|
|
125
|
+
walkWhere(entry, listConfig, listName, config, isSudo, resolveSyntheticRelation);
|
|
126
|
+
}
|
|
112
127
|
return;
|
|
113
128
|
}
|
|
114
129
|
for (const [key, value] of Object.entries(where)) {
|
|
115
130
|
if (LOGICAL_OPERATORS.has(key)) {
|
|
116
|
-
walkWhere(value, listConfig, listName, config, isSudo);
|
|
131
|
+
walkWhere(value, listConfig, listName, config, isSudo, resolveSyntheticRelation);
|
|
117
132
|
continue;
|
|
118
133
|
}
|
|
119
134
|
const resolved = resolveQueryField(key, listConfig.fields);
|
|
120
135
|
if (!resolved) {
|
|
136
|
+
const synthetic = resolveSyntheticRelation?.(key, listName);
|
|
137
|
+
if (synthetic) {
|
|
138
|
+
// A synthetic back-relation is always to-many (#1082's own
|
|
139
|
+
// construction site has no arity branch), so its nested value takes
|
|
140
|
+
// the same two shapes a declared to-many relationship's filter does
|
|
141
|
+
// — walk it exactly like the resolved-relationship branch below,
|
|
142
|
+
// against the synthetic's source list instead of `getRelatedListConfig`.
|
|
143
|
+
if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
|
|
144
|
+
const syntheticEntries = Object.entries(value);
|
|
145
|
+
const syntheticHasQuantifier = syntheticEntries.some(([k]) => RELATION_QUANTIFIERS.has(k));
|
|
146
|
+
if (syntheticHasQuantifier) {
|
|
147
|
+
for (const [quantifier, quantifierValue] of syntheticEntries) {
|
|
148
|
+
if (RELATION_QUANTIFIERS.has(quantifier)) {
|
|
149
|
+
walkWhere(quantifierValue, synthetic.listConfig, synthetic.listName, config, isSudo, resolveSyntheticRelation);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
walkWhere(value, synthetic.listConfig, synthetic.listName, config, isSudo, resolveSyntheticRelation);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
121
159
|
if (isSudo)
|
|
122
160
|
continue;
|
|
123
161
|
rejectUndeclaredKey(listName, key, 'where');
|
|
@@ -141,7 +179,7 @@ listConfig, listName, config, isSudo) {
|
|
|
141
179
|
// related list.
|
|
142
180
|
for (const [quantifier, quantifierValue] of relationEntries) {
|
|
143
181
|
if (RELATION_QUANTIFIERS.has(quantifier)) {
|
|
144
|
-
walkWhere(quantifierValue, related.listConfig, related.listName, config, isSudo);
|
|
182
|
+
walkWhere(quantifierValue, related.listConfig, related.listName, config, isSudo, resolveSyntheticRelation);
|
|
145
183
|
}
|
|
146
184
|
}
|
|
147
185
|
}
|
|
@@ -152,24 +190,37 @@ listConfig, listName, config, isSudo) {
|
|
|
152
190
|
// whole value object IS the nested WHERE clause here — walk it
|
|
153
191
|
// directly, or an undeclared key reached exactly this way (one hop
|
|
154
192
|
// through a to-one relation) would pass through unchecked.
|
|
155
|
-
walkWhere(value, related.listConfig, related.listName, config, isSudo);
|
|
193
|
+
walkWhere(value, related.listConfig, related.listName, config, isSudo, resolveSyntheticRelation);
|
|
156
194
|
}
|
|
157
195
|
}
|
|
158
196
|
}
|
|
159
197
|
}
|
|
160
198
|
function walkOrderBy(orderBy,
|
|
161
199
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- ListConfig must accept any TypeInfo
|
|
162
|
-
listConfig, listName, config, isSudo) {
|
|
200
|
+
listConfig, listName, config, isSudo, resolveSyntheticRelation) {
|
|
163
201
|
if (orderBy === null || typeof orderBy !== 'object')
|
|
164
202
|
return;
|
|
165
203
|
if (Array.isArray(orderBy)) {
|
|
166
|
-
for (const entry of orderBy)
|
|
167
|
-
walkOrderBy(entry, listConfig, listName, config, isSudo);
|
|
204
|
+
for (const entry of orderBy) {
|
|
205
|
+
walkOrderBy(entry, listConfig, listName, config, isSudo, resolveSyntheticRelation);
|
|
206
|
+
}
|
|
168
207
|
return;
|
|
169
208
|
}
|
|
170
209
|
for (const [key, value] of Object.entries(orderBy)) {
|
|
171
210
|
const resolved = resolveQueryField(key, listConfig.fields);
|
|
172
211
|
if (!resolved) {
|
|
212
|
+
const synthetic = resolveSyntheticRelation?.(key, listName);
|
|
213
|
+
if (synthetic) {
|
|
214
|
+
// `{ relation: { _count: 'asc' } }` orders by an aggregate — no
|
|
215
|
+
// nested field name to resolve, matching the declared-relationship
|
|
216
|
+
// branch below.
|
|
217
|
+
if (value !== null &&
|
|
218
|
+
typeof value === 'object' &&
|
|
219
|
+
!('_count' in value)) {
|
|
220
|
+
walkOrderBy(value, synthetic.listConfig, synthetic.listName, config, isSudo, resolveSyntheticRelation);
|
|
221
|
+
}
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
173
224
|
if (isSudo)
|
|
174
225
|
continue;
|
|
175
226
|
rejectUndeclaredKey(listName, key, 'orderBy');
|
|
@@ -181,8 +232,9 @@ listConfig, listName, config, isSudo) {
|
|
|
181
232
|
if ('_count' in value)
|
|
182
233
|
continue;
|
|
183
234
|
const related = getRelatedListConfig(resolved.fieldConfig.ref, config);
|
|
184
|
-
if (related)
|
|
185
|
-
walkOrderBy(value, related.listConfig, related.listName, config, isSudo);
|
|
235
|
+
if (related) {
|
|
236
|
+
walkOrderBy(value, related.listConfig, related.listName, config, isSudo, resolveSyntheticRelation);
|
|
237
|
+
}
|
|
186
238
|
}
|
|
187
239
|
}
|
|
188
240
|
}
|
|
@@ -192,13 +244,20 @@ listConfig, listName, config, isSudo) {
|
|
|
192
244
|
* Throws a `ValidationError` naming the list and the offending key on the
|
|
193
245
|
* first undeclared key found. `isSudo` bypasses the check entirely, matching
|
|
194
246
|
* the write path's `sudo` escape hatch.
|
|
247
|
+
*
|
|
248
|
+
* `resolveSyntheticRelation` is the include-nested position's own addition
|
|
249
|
+
* (#1092, see module doc comment) — omit it (every top-level `where`/`orderBy`
|
|
250
|
+
* caller does) and a key `resolveQueryField` can't resolve rejects exactly as
|
|
251
|
+
* before.
|
|
195
252
|
*/
|
|
196
253
|
export function validateQueryKeys(args) {
|
|
197
|
-
const { where, orderBy, listConfig, listName, config, isSudo } = args;
|
|
198
|
-
if (where !== undefined)
|
|
199
|
-
walkWhere(where, listConfig, listName, config, isSudo);
|
|
200
|
-
|
|
201
|
-
|
|
254
|
+
const { where, orderBy, listConfig, listName, config, isSudo, resolveSyntheticRelation } = args;
|
|
255
|
+
if (where !== undefined) {
|
|
256
|
+
walkWhere(where, listConfig, listName, config, isSudo, resolveSyntheticRelation);
|
|
257
|
+
}
|
|
258
|
+
if (orderBy !== undefined) {
|
|
259
|
+
walkOrderBy(orderBy, listConfig, listName, config, isSudo, resolveSyntheticRelation);
|
|
260
|
+
}
|
|
202
261
|
}
|
|
203
262
|
/**
|
|
204
263
|
* #915 — the predicate-time counterpart to `checkFieldAccess`'s post-query
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-validation.js","sourceRoot":"","sources":["../../src/access/query-validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD
|
|
1
|
+
{"version":3,"file":"query-validation.js","sourceRoot":"","sources":["../../src/access/query-validation.ts"],"names":[],"mappings":"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"}
|