@opensaas/stack-core 0.27.0 → 0.27.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +6 -0
- package/dist/access/access-filter.d.ts +1 -1
- package/dist/access/access-filter.d.ts.map +1 -1
- package/dist/access/access-filter.js +23 -5
- package/dist/access/access-filter.js.map +1 -1
- package/dist/access/access-filter.test.d.ts +2 -0
- package/dist/access/access-filter.test.d.ts.map +1 -0
- package/dist/access/access-filter.test.js +116 -0
- package/dist/access/access-filter.test.js.map +1 -0
- package/dist/context/index.js +12 -3
- package/dist/context/index.js.map +1 -1
- package/package.json +1 -1
- package/src/access/access-filter.test.ts +149 -0
- package/src/access/access-filter.ts +29 -10
- package/src/context/index.ts +12 -0
- package/tsconfig.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @opensaas/stack-core
|
|
2
2
|
|
|
3
|
+
## 0.27.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#674](https://github.com/OpenSaasAU/stack/pull/674) [`1bd4f12`](https://github.com/OpenSaasAU/stack/commit/1bd4f1258f9b3ac77ca048ac657ee31b0299821f) Thanks [@borisno2](https://github.com/borisno2)! - Fix stack overflow when auto-including relationships on a cyclic readable-relationship graph. The auto-include now stops at cycle back-edges (a relation that closes a cycle is fetched flat) instead of re-descending to MAX_DEPTH.
|
|
8
|
+
|
|
3
9
|
## 0.27.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -22,7 +22,7 @@ import type { OpenSaasConfig, FieldConfig } from '../config/types.js';
|
|
|
22
22
|
export declare function buildIncludeWithAccessControl(fieldConfigs: Record<string, FieldConfig>, args: {
|
|
23
23
|
session: Session | null;
|
|
24
24
|
context: AccessContext;
|
|
25
|
-
}, config: OpenSaasConfig, depth?: number): Promise<Record<string, boolean | {
|
|
25
|
+
}, config: OpenSaasConfig, depth?: number, visitedLists?: readonly string[]): Promise<Record<string, boolean | {
|
|
26
26
|
where?: PrismaFilter;
|
|
27
27
|
include?: Record<string, boolean | /*elided*/ any>;
|
|
28
28
|
}> | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-filter.d.ts","sourceRoot":"","sources":["../../src/access/access-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrE;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACzC,IAAI,EAAE;IACJ,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,aAAa,CAAA;CACvB,EACD,MAAM,EAAE,cAAc,EACtB,KAAK,GAAE,MAAU;
|
|
1
|
+
{"version":3,"file":"access-filter.d.ts","sourceRoot":"","sources":["../../src/access/access-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrE;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACzC,IAAI,EAAE;IACJ,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,aAAa,CAAA;CACvB,EACD,MAAM,EAAE,cAAc,EACtB,KAAK,GAAE,MAAU,EAIjB,YAAY,GAAE,SAAS,MAAM,EAAO;YAeI,YAAY;cAAY,MAAM,CAAC,MAAM,2BAAe;gBAiE7F;AAiDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC5D,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACzC,MAAM,EAAE,cAAc,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgEzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC5C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACzC,MAAM,EAAE,cAAc,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAgCrC"}
|
|
@@ -18,7 +18,11 @@ import { checkAccess, getRelatedListConfig } from './engine.js';
|
|
|
18
18
|
* Build Prisma include object with access control filters
|
|
19
19
|
* This allows us to filter relationships at the database level instead of in memory
|
|
20
20
|
*/
|
|
21
|
-
export async function buildIncludeWithAccessControl(fieldConfigs, args, config, depth = 0
|
|
21
|
+
export async function buildIncludeWithAccessControl(fieldConfigs, args, config, depth = 0,
|
|
22
|
+
// List names already on the path from the root to here. Used to detect
|
|
23
|
+
// relationship cycles (A → B → … → A) and stop the auto-include from
|
|
24
|
+
// re-descending them. Seed it with the root list name at the call site.
|
|
25
|
+
visitedLists = []) {
|
|
22
26
|
const MAX_DEPTH = 5;
|
|
23
27
|
if (depth >= MAX_DEPTH) {
|
|
24
28
|
return undefined;
|
|
@@ -53,10 +57,24 @@ export async function buildIncludeWithAccessControl(fieldConfigs, args, config,
|
|
|
53
57
|
if (typeof accessResult === 'object') {
|
|
54
58
|
includeEntry.where = accessResult;
|
|
55
59
|
}
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
// Cycle guard: if the related list already appears on the path from the
|
|
61
|
+
// root, DO NOT auto-include its relationships again. On a cyclic
|
|
62
|
+
// readable-relationship graph (A → B → … → A) the depth-first walk would
|
|
63
|
+
// otherwise re-descend the cycle on every branch, and — combined with the
|
|
64
|
+
// bare-`true` leaf re-expansion in `mergeIncludeWithAccessControl` — build
|
|
65
|
+
// an include tree deep/large enough to overflow the call stack in
|
|
66
|
+
// downstream processing (the RSC serializer's recursive `Map.set`). This
|
|
67
|
+
// extends the SF-20 (#566) fix: a bare-`true` leaf must resolve to a
|
|
68
|
+
// genuine single-level fetch, not a re-expansion of the full auto-include.
|
|
69
|
+
// The relation itself is still included (as a FLAT fetch of its own
|
|
70
|
+
// columns); only its onward relationships are pruned at the back-edge.
|
|
71
|
+
const relatedListName = relatedConfig.listName;
|
|
72
|
+
if (!visitedLists.includes(relatedListName)) {
|
|
73
|
+
// Recursively build nested includes
|
|
74
|
+
const nestedInclude = await buildIncludeWithAccessControl(relatedConfig.listConfig.fields, args, config, depth + 1, [...visitedLists, relatedListName]);
|
|
75
|
+
if (nestedInclude && Object.keys(nestedInclude).length > 0) {
|
|
76
|
+
includeEntry.include = nestedInclude;
|
|
77
|
+
}
|
|
60
78
|
}
|
|
61
79
|
// Add to include object
|
|
62
80
|
include[fieldName] = Object.keys(includeEntry).length > 0 ? includeEntry : true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-filter.js","sourceRoot":"","sources":["../../src/access/access-filter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAE/D;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,YAAyC,EACzC,IAGC,EACD,MAAsB,EACtB,KAAK,GAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"access-filter.js","sourceRoot":"","sources":["../../src/access/access-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-filter.test.d.ts","sourceRoot":"","sources":["../../src/access/access-filter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildIncludeWithAccessControl, mergeIncludeWithAccessControl } from './access-filter.js';
|
|
3
|
+
/**
|
|
4
|
+
* Regression coverage for the cyclic readable-relationship auto-include.
|
|
5
|
+
*
|
|
6
|
+
* On a relationship graph that contains a cycle (A → B → C → A) the depth-first
|
|
7
|
+
* auto-include used to descend the cycle on every branch to `MAX_DEPTH`, and
|
|
8
|
+
* `mergeIncludeWithAccessControl` re-expanded any bare-`true` leaf back into that
|
|
9
|
+
* same auto-include. The resulting include tree was deep/large enough to
|
|
10
|
+
* stack-overflow downstream processing (the RSC serializer). The fix seeds a
|
|
11
|
+
* cycle guard with the root list and stops the walk at cycle back-edges, so a
|
|
12
|
+
* relation that closes a cycle comes back FLAT (own columns only).
|
|
13
|
+
*/
|
|
14
|
+
// A relationship field pointing at another list.
|
|
15
|
+
function rel(ref, many = false) {
|
|
16
|
+
return { type: 'relationship', ref, many };
|
|
17
|
+
}
|
|
18
|
+
// A cyclic config: A → B → C → A (plus a scalar on each list).
|
|
19
|
+
function cyclicConfig() {
|
|
20
|
+
const allowQuery = () => true;
|
|
21
|
+
return {
|
|
22
|
+
db: { provider: 'sqlite', url: 'file:./dev.db' },
|
|
23
|
+
lists: {
|
|
24
|
+
A: {
|
|
25
|
+
fields: { name: { type: 'text' }, b: rel('B.a') },
|
|
26
|
+
access: { operation: { query: allowQuery } },
|
|
27
|
+
},
|
|
28
|
+
B: {
|
|
29
|
+
fields: { name: { type: 'text' }, c: rel('C.b') },
|
|
30
|
+
access: { operation: { query: allowQuery } },
|
|
31
|
+
},
|
|
32
|
+
C: {
|
|
33
|
+
fields: { name: { type: 'text' }, a: rel('A.c') },
|
|
34
|
+
access: { operation: { query: allowQuery } },
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- minimal config for unit test
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function makeContext() {
|
|
41
|
+
return {
|
|
42
|
+
session: null,
|
|
43
|
+
_isSudo: false,
|
|
44
|
+
_resolveOutputCounter: { depth: 0 },
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- minimal context for unit test
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Measure the maximum nesting depth of an include tree.
|
|
49
|
+
function includeDepth(include) {
|
|
50
|
+
if (!include || typeof include !== 'object')
|
|
51
|
+
return 0;
|
|
52
|
+
let max = 0;
|
|
53
|
+
for (const value of Object.values(include)) {
|
|
54
|
+
if (value && typeof value === 'object') {
|
|
55
|
+
const nested = value.include;
|
|
56
|
+
if (nested)
|
|
57
|
+
max = Math.max(max, 1 + includeDepth(nested));
|
|
58
|
+
else
|
|
59
|
+
max = Math.max(max, 1);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
max = Math.max(max, 1);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return max;
|
|
66
|
+
}
|
|
67
|
+
describe('buildIncludeWithAccessControl — cyclic graph', () => {
|
|
68
|
+
it('stops re-descending a relationship cycle instead of walking to MAX_DEPTH', async () => {
|
|
69
|
+
const config = cyclicConfig();
|
|
70
|
+
const include = await buildIncludeWithAccessControl(config.lists.A.fields, { session: null, context: makeContext() }, config, 0, ['A']);
|
|
71
|
+
// A → B → C, then C.a closes the cycle back to A → flat (no further nesting).
|
|
72
|
+
expect(include).toEqual({
|
|
73
|
+
b: { include: { c: { include: { a: true } } } },
|
|
74
|
+
});
|
|
75
|
+
// Three distinct lists → depth 3, not the old MAX_DEPTH=5 (which on a cycle
|
|
76
|
+
// could recurse A→B→C→A→B).
|
|
77
|
+
expect(includeDepth(include)).toBe(3);
|
|
78
|
+
});
|
|
79
|
+
it('flattens a self-referential relationship to a single level', async () => {
|
|
80
|
+
const allowQuery = () => true;
|
|
81
|
+
const config = {
|
|
82
|
+
db: { provider: 'sqlite', url: 'file:./dev.db' },
|
|
83
|
+
lists: {
|
|
84
|
+
Category: {
|
|
85
|
+
fields: {
|
|
86
|
+
name: { type: 'text' },
|
|
87
|
+
parent: rel('Category.children'),
|
|
88
|
+
children: rel('Category.parent', true),
|
|
89
|
+
},
|
|
90
|
+
access: { operation: { query: allowQuery } },
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- minimal config for unit test
|
|
94
|
+
};
|
|
95
|
+
const include = await buildIncludeWithAccessControl(config.lists.Category.fields, { session: null, context: makeContext() }, config, 0, ['Category']);
|
|
96
|
+
// Both self-references come back flat — no infinite parent/children descent.
|
|
97
|
+
expect(include).toEqual({ parent: true, children: true });
|
|
98
|
+
expect(includeDepth(include)).toBe(1);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe('mergeIncludeWithAccessControl — bare-true leaf on a cyclic graph', () => {
|
|
102
|
+
it('does not re-expand a bare-true leaf beyond the cycle-bounded auto-include', async () => {
|
|
103
|
+
const config = cyclicConfig();
|
|
104
|
+
const accessControlledInclude = await buildIncludeWithAccessControl(config.lists.A.fields, { session: null, context: makeContext() }, config, 0, ['A']);
|
|
105
|
+
// Caller asks for A → b with a bare-`true` leaf. The merge must keep the
|
|
106
|
+
// access-controlled (cycle-bounded) nested include rather than re-expanding
|
|
107
|
+
// the leaf into an unbounded auto-include.
|
|
108
|
+
const merged = mergeIncludeWithAccessControl({ b: true }, accessControlledInclude, config.lists.A.fields, config);
|
|
109
|
+
expect(merged).toEqual({
|
|
110
|
+
b: { include: { c: { include: { a: true } } } },
|
|
111
|
+
});
|
|
112
|
+
// Still bounded to the acyclic path length.
|
|
113
|
+
expect(includeDepth(merged)).toBeLessThanOrEqual(3);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=access-filter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-filter.test.js","sourceRoot":"","sources":["../../src/access/access-filter.test.ts"],"names":[],"mappings":"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"}
|
package/dist/context/index.js
CHANGED
|
@@ -457,7 +457,10 @@ listConfig, prisma, context, config) {
|
|
|
457
457
|
const accessControlledInclude = await buildIncludeWithAccessControl(listConfig.fields, {
|
|
458
458
|
session: context.session,
|
|
459
459
|
context,
|
|
460
|
-
}, config
|
|
460
|
+
}, config, 0,
|
|
461
|
+
// Seed the cycle guard with the root list so a relationship cycle back
|
|
462
|
+
// to it (self-referential or longer) stops re-descending.
|
|
463
|
+
[listName]);
|
|
461
464
|
// MERGE (not replace) a caller-supplied include with the access-controlled
|
|
462
465
|
// include: the caller selects WHICH relations to fetch, access control
|
|
463
466
|
// decides WHETHER and WITH WHAT filter (#566). A bare auto-include (no
|
|
@@ -543,7 +546,10 @@ listConfig, prisma, context, config) {
|
|
|
543
546
|
const accessControlledInclude = await buildIncludeWithAccessControl(listConfig.fields, {
|
|
544
547
|
session: context.session,
|
|
545
548
|
context,
|
|
546
|
-
}, config
|
|
549
|
+
}, config, 0,
|
|
550
|
+
// Seed the cycle guard with the root list so a relationship cycle back
|
|
551
|
+
// to it (self-referential or longer) stops re-descending.
|
|
552
|
+
[listName]);
|
|
547
553
|
// MERGE (not replace) a caller-supplied include with the access-controlled
|
|
548
554
|
// include: the caller selects WHICH relations to fetch, access control
|
|
549
555
|
// decides WHETHER and WITH WHAT filter (#566). A bare auto-include (no
|
|
@@ -767,7 +773,10 @@ createFn) {
|
|
|
767
773
|
const accessControlledInclude = await buildIncludeWithAccessControl(listConfig.fields, {
|
|
768
774
|
session: context.session,
|
|
769
775
|
context,
|
|
770
|
-
}, config
|
|
776
|
+
}, config, 0,
|
|
777
|
+
// Seed the cycle guard with the root list so a relationship cycle back
|
|
778
|
+
// to it (self-referential or longer) stops re-descending.
|
|
779
|
+
[listName]);
|
|
771
780
|
// Try to find the record
|
|
772
781
|
const item = await model.findFirst({
|
|
773
782
|
where,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { buildIncludeWithAccessControl, mergeIncludeWithAccessControl } from './access-filter.js'
|
|
3
|
+
import type { OpenSaasConfig, FieldConfig } from '../config/types.js'
|
|
4
|
+
import type { AccessContext } from './types.js'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Regression coverage for the cyclic readable-relationship auto-include.
|
|
8
|
+
*
|
|
9
|
+
* On a relationship graph that contains a cycle (A → B → C → A) the depth-first
|
|
10
|
+
* auto-include used to descend the cycle on every branch to `MAX_DEPTH`, and
|
|
11
|
+
* `mergeIncludeWithAccessControl` re-expanded any bare-`true` leaf back into that
|
|
12
|
+
* same auto-include. The resulting include tree was deep/large enough to
|
|
13
|
+
* stack-overflow downstream processing (the RSC serializer). The fix seeds a
|
|
14
|
+
* cycle guard with the root list and stops the walk at cycle back-edges, so a
|
|
15
|
+
* relation that closes a cycle comes back FLAT (own columns only).
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
// A relationship field pointing at another list.
|
|
19
|
+
function rel(ref: string, many = false): FieldConfig {
|
|
20
|
+
return { type: 'relationship', ref, many } as unknown as FieldConfig
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// A cyclic config: A → B → C → A (plus a scalar on each list).
|
|
24
|
+
function cyclicConfig(): OpenSaasConfig {
|
|
25
|
+
const allowQuery = () => true
|
|
26
|
+
return {
|
|
27
|
+
db: { provider: 'sqlite', url: 'file:./dev.db' },
|
|
28
|
+
lists: {
|
|
29
|
+
A: {
|
|
30
|
+
fields: { name: { type: 'text' } as FieldConfig, b: rel('B.a') },
|
|
31
|
+
access: { operation: { query: allowQuery } },
|
|
32
|
+
},
|
|
33
|
+
B: {
|
|
34
|
+
fields: { name: { type: 'text' } as FieldConfig, c: rel('C.b') },
|
|
35
|
+
access: { operation: { query: allowQuery } },
|
|
36
|
+
},
|
|
37
|
+
C: {
|
|
38
|
+
fields: { name: { type: 'text' } as FieldConfig, a: rel('A.c') },
|
|
39
|
+
access: { operation: { query: allowQuery } },
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- minimal config for unit test
|
|
43
|
+
} as any
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function makeContext(): AccessContext {
|
|
47
|
+
return {
|
|
48
|
+
session: null,
|
|
49
|
+
_isSudo: false,
|
|
50
|
+
_resolveOutputCounter: { depth: 0 },
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- minimal context for unit test
|
|
52
|
+
} as any
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Measure the maximum nesting depth of an include tree.
|
|
56
|
+
function includeDepth(include: unknown): number {
|
|
57
|
+
if (!include || typeof include !== 'object') return 0
|
|
58
|
+
let max = 0
|
|
59
|
+
for (const value of Object.values(include as Record<string, unknown>)) {
|
|
60
|
+
if (value && typeof value === 'object') {
|
|
61
|
+
const nested = (value as { include?: unknown }).include
|
|
62
|
+
if (nested) max = Math.max(max, 1 + includeDepth(nested))
|
|
63
|
+
else max = Math.max(max, 1)
|
|
64
|
+
} else {
|
|
65
|
+
max = Math.max(max, 1)
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return max
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
describe('buildIncludeWithAccessControl — cyclic graph', () => {
|
|
72
|
+
it('stops re-descending a relationship cycle instead of walking to MAX_DEPTH', async () => {
|
|
73
|
+
const config = cyclicConfig()
|
|
74
|
+
const include = await buildIncludeWithAccessControl(
|
|
75
|
+
config.lists.A.fields,
|
|
76
|
+
{ session: null, context: makeContext() },
|
|
77
|
+
config,
|
|
78
|
+
0,
|
|
79
|
+
['A'],
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
// A → B → C, then C.a closes the cycle back to A → flat (no further nesting).
|
|
83
|
+
expect(include).toEqual({
|
|
84
|
+
b: { include: { c: { include: { a: true } } } },
|
|
85
|
+
})
|
|
86
|
+
// Three distinct lists → depth 3, not the old MAX_DEPTH=5 (which on a cycle
|
|
87
|
+
// could recurse A→B→C→A→B).
|
|
88
|
+
expect(includeDepth(include)).toBe(3)
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
it('flattens a self-referential relationship to a single level', async () => {
|
|
92
|
+
const allowQuery = () => true
|
|
93
|
+
const config = {
|
|
94
|
+
db: { provider: 'sqlite', url: 'file:./dev.db' },
|
|
95
|
+
lists: {
|
|
96
|
+
Category: {
|
|
97
|
+
fields: {
|
|
98
|
+
name: { type: 'text' } as FieldConfig,
|
|
99
|
+
parent: rel('Category.children'),
|
|
100
|
+
children: rel('Category.parent', true),
|
|
101
|
+
},
|
|
102
|
+
access: { operation: { query: allowQuery } },
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- minimal config for unit test
|
|
106
|
+
} as any as OpenSaasConfig
|
|
107
|
+
|
|
108
|
+
const include = await buildIncludeWithAccessControl(
|
|
109
|
+
config.lists.Category.fields,
|
|
110
|
+
{ session: null, context: makeContext() },
|
|
111
|
+
config,
|
|
112
|
+
0,
|
|
113
|
+
['Category'],
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
// Both self-references come back flat — no infinite parent/children descent.
|
|
117
|
+
expect(include).toEqual({ parent: true, children: true })
|
|
118
|
+
expect(includeDepth(include)).toBe(1)
|
|
119
|
+
})
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
describe('mergeIncludeWithAccessControl — bare-true leaf on a cyclic graph', () => {
|
|
123
|
+
it('does not re-expand a bare-true leaf beyond the cycle-bounded auto-include', async () => {
|
|
124
|
+
const config = cyclicConfig()
|
|
125
|
+
const accessControlledInclude = await buildIncludeWithAccessControl(
|
|
126
|
+
config.lists.A.fields,
|
|
127
|
+
{ session: null, context: makeContext() },
|
|
128
|
+
config,
|
|
129
|
+
0,
|
|
130
|
+
['A'],
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
// Caller asks for A → b with a bare-`true` leaf. The merge must keep the
|
|
134
|
+
// access-controlled (cycle-bounded) nested include rather than re-expanding
|
|
135
|
+
// the leaf into an unbounded auto-include.
|
|
136
|
+
const merged = mergeIncludeWithAccessControl(
|
|
137
|
+
{ b: true },
|
|
138
|
+
accessControlledInclude,
|
|
139
|
+
config.lists.A.fields,
|
|
140
|
+
config,
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
expect(merged).toEqual({
|
|
144
|
+
b: { include: { c: { include: { a: true } } } },
|
|
145
|
+
})
|
|
146
|
+
// Still bounded to the acyclic path length.
|
|
147
|
+
expect(includeDepth(merged)).toBeLessThanOrEqual(3)
|
|
148
|
+
})
|
|
149
|
+
})
|
|
@@ -30,6 +30,10 @@ export async function buildIncludeWithAccessControl(
|
|
|
30
30
|
},
|
|
31
31
|
config: OpenSaasConfig,
|
|
32
32
|
depth: number = 0,
|
|
33
|
+
// List names already on the path from the root to here. Used to detect
|
|
34
|
+
// relationship cycles (A → B → … → A) and stop the auto-include from
|
|
35
|
+
// re-descending them. Seed it with the root list name at the call site.
|
|
36
|
+
visitedLists: readonly string[] = [],
|
|
33
37
|
) {
|
|
34
38
|
const MAX_DEPTH = 5
|
|
35
39
|
if (depth >= MAX_DEPTH) {
|
|
@@ -75,16 +79,31 @@ export async function buildIncludeWithAccessControl(
|
|
|
75
79
|
includeEntry.where = accessResult
|
|
76
80
|
}
|
|
77
81
|
|
|
78
|
-
//
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
// Cycle guard: if the related list already appears on the path from the
|
|
83
|
+
// root, DO NOT auto-include its relationships again. On a cyclic
|
|
84
|
+
// readable-relationship graph (A → B → … → A) the depth-first walk would
|
|
85
|
+
// otherwise re-descend the cycle on every branch, and — combined with the
|
|
86
|
+
// bare-`true` leaf re-expansion in `mergeIncludeWithAccessControl` — build
|
|
87
|
+
// an include tree deep/large enough to overflow the call stack in
|
|
88
|
+
// downstream processing (the RSC serializer's recursive `Map.set`). This
|
|
89
|
+
// extends the SF-20 (#566) fix: a bare-`true` leaf must resolve to a
|
|
90
|
+
// genuine single-level fetch, not a re-expansion of the full auto-include.
|
|
91
|
+
// The relation itself is still included (as a FLAT fetch of its own
|
|
92
|
+
// columns); only its onward relationships are pruned at the back-edge.
|
|
93
|
+
const relatedListName = relatedConfig.listName
|
|
94
|
+
if (!visitedLists.includes(relatedListName)) {
|
|
95
|
+
// Recursively build nested includes
|
|
96
|
+
const nestedInclude = await buildIncludeWithAccessControl(
|
|
97
|
+
relatedConfig.listConfig.fields,
|
|
98
|
+
args,
|
|
99
|
+
config,
|
|
100
|
+
depth + 1,
|
|
101
|
+
[...visitedLists, relatedListName],
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
if (nestedInclude && Object.keys(nestedInclude).length > 0) {
|
|
105
|
+
includeEntry.include = nestedInclude
|
|
106
|
+
}
|
|
88
107
|
}
|
|
89
108
|
|
|
90
109
|
// Add to include object
|
package/src/context/index.ts
CHANGED
|
@@ -699,6 +699,10 @@ function createFindUnique<TPrisma extends PrismaClientLike>(
|
|
|
699
699
|
context,
|
|
700
700
|
},
|
|
701
701
|
config,
|
|
702
|
+
0,
|
|
703
|
+
// Seed the cycle guard with the root list so a relationship cycle back
|
|
704
|
+
// to it (self-referential or longer) stops re-descending.
|
|
705
|
+
[listName],
|
|
702
706
|
)
|
|
703
707
|
// MERGE (not replace) a caller-supplied include with the access-controlled
|
|
704
708
|
// include: the caller selects WHICH relations to fetch, access control
|
|
@@ -829,6 +833,10 @@ function createFindMany<TPrisma extends PrismaClientLike>(
|
|
|
829
833
|
context,
|
|
830
834
|
},
|
|
831
835
|
config,
|
|
836
|
+
0,
|
|
837
|
+
// Seed the cycle guard with the root list so a relationship cycle back
|
|
838
|
+
// to it (self-referential or longer) stops re-descending.
|
|
839
|
+
[listName],
|
|
832
840
|
)
|
|
833
841
|
// MERGE (not replace) a caller-supplied include with the access-controlled
|
|
834
842
|
// include: the caller selects WHICH relations to fetch, access control
|
|
@@ -1141,6 +1149,10 @@ function createGet<TPrisma extends PrismaClientLike>(
|
|
|
1141
1149
|
context,
|
|
1142
1150
|
},
|
|
1143
1151
|
config,
|
|
1152
|
+
0,
|
|
1153
|
+
// Seed the cycle guard with the root list so a relationship cycle back
|
|
1154
|
+
// to it (self-referential or longer) stops re-descending.
|
|
1155
|
+
[listName],
|
|
1144
1156
|
)
|
|
1145
1157
|
|
|
1146
1158
|
// Try to find the record
|