canopycms 0.0.52 → 0.0.54
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/dist/ai/generate.d.ts.map +1 -1
- package/dist/ai/generate.js +68 -2
- package/dist/ai/generate.js.map +1 -1
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/json-to-markdown.d.ts.map +1 -1
- package/dist/ai/json-to-markdown.js +87 -0
- package/dist/ai/json-to-markdown.js.map +1 -1
- package/dist/ai/types.d.ts +54 -0
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/ai/types.js.map +1 -1
- package/dist/api/entries.d.ts.map +1 -1
- package/dist/api/entries.js +36 -31
- package/dist/api/entries.js.map +1 -1
- package/dist/api/reference-options.d.ts.map +1 -1
- package/dist/api/reference-options.js +5 -2
- package/dist/api/reference-options.js.map +1 -1
- package/dist/api/resolve-references.d.ts.map +1 -1
- package/dist/api/resolve-references.js +6 -1
- package/dist/api/resolve-references.js.map +1 -1
- package/dist/authorization/content.d.ts +22 -0
- package/dist/authorization/content.d.ts.map +1 -1
- package/dist/authorization/content.js +36 -14
- package/dist/authorization/content.js.map +1 -1
- package/dist/authorization/index.d.ts +1 -1
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +1 -1
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/test-utils.d.ts +13 -1
- package/dist/authorization/test-utils.d.ts.map +1 -1
- package/dist/authorization/test-utils.js +10 -0
- package/dist/authorization/test-utils.js.map +1 -1
- package/dist/cli/generate-ai-content.js +140 -40
- package/dist/editor/Editor.d.ts.map +1 -1
- package/dist/editor/Editor.js +8 -4
- package/dist/editor/Editor.js.map +1 -1
- package/dist/editor/EntryNavigator.d.ts +2 -0
- package/dist/editor/EntryNavigator.d.ts.map +1 -1
- package/dist/editor/EntryNavigator.js +3 -3
- package/dist/editor/EntryNavigator.js.map +1 -1
- package/dist/editor/hooks/useEntryManager.d.ts +2 -0
- package/dist/editor/hooks/useEntryManager.d.ts.map +1 -1
- package/dist/editor/hooks/useEntryManager.js +23 -2
- package/dist/editor/hooks/useEntryManager.js.map +1 -1
- package/dist/services.d.ts +7 -1
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +6 -3
- package/dist/services.js.map +1 -1
- package/package.json +1 -1
|
@@ -69,13 +69,16 @@ const getReferenceOptionsHandler = async (gc, ctx, req, _params) => {
|
|
|
69
69
|
// Load reference options
|
|
70
70
|
const resolver = new ReferenceResolver(store, idIndex);
|
|
71
71
|
const allOptions = await resolver.loadReferenceOptions(collections, displayField, search, entryTypes);
|
|
72
|
-
// Filter by path-level read permissions
|
|
72
|
+
// Filter by path-level read permissions. Build the access checker once so
|
|
73
|
+
// permissions are loaded a single time and reused for every option, instead of
|
|
74
|
+
// re-loading per option inside the loop.
|
|
75
|
+
const checkAccess = await ctx.services.createContentAccessChecker(branchContext, branchContext.branchRoot, req.user);
|
|
73
76
|
const options = [];
|
|
74
77
|
for (const option of allOptions) {
|
|
75
78
|
const location = idIndex.findById(option.id);
|
|
76
79
|
if (!location)
|
|
77
80
|
continue;
|
|
78
|
-
const access =
|
|
81
|
+
const access = checkAccess(location.relativePath, 'read');
|
|
79
82
|
if (!access.allowed)
|
|
80
83
|
continue;
|
|
81
84
|
options.push(option);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-options.js","sourceRoot":"","sources":["../../src/api/reference-options.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"reference-options.js","sourceRoot":"","sources":["../../src/api/reference-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-references.d.ts","sourceRoot":"","sources":["../../src/api/resolve-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAA0B,WAAW,EAAE,MAAM,SAAS,CAAA;AAOlE,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,EAAE,CAAA;CACd;AAED,4CAA4C;AAC5C,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"resolve-references.d.ts","sourceRoot":"","sources":["../../src/api/resolve-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAA0B,WAAW,EAAE,MAAM,SAAS,CAAA;AAOlE,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,EAAE,CAAA;CACd;AAED,4CAA4C;AAC5C,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC,CAAC,CAAA;AAoGF;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;CAE5B,CAAA"}
|
|
@@ -21,6 +21,11 @@ const resolveReferencesHandler = async (gc, ctx, req, params, body) => {
|
|
|
21
21
|
const idIndex = await store.idIndex();
|
|
22
22
|
// Resolve each ID to full document
|
|
23
23
|
const resolver = new ReferenceResolver(store, idIndex);
|
|
24
|
+
// Build the access checker once: permissions are loaded a single time and reused
|
|
25
|
+
// for every id, instead of re-loading per id inside the loop. A failure here
|
|
26
|
+
// (e.g. settings workspace unavailable) surfaces as a handler error rather than
|
|
27
|
+
// being silently swallowed per id.
|
|
28
|
+
const checkAccess = await ctx.services.createContentAccessChecker(branchContext, branchContext.branchRoot, req.user);
|
|
24
29
|
const resolved = {};
|
|
25
30
|
for (const id of ids) {
|
|
26
31
|
try {
|
|
@@ -28,7 +33,7 @@ const resolveReferencesHandler = async (gc, ctx, req, params, body) => {
|
|
|
28
33
|
if (result && result.exists && result.collection && result.slug) {
|
|
29
34
|
// Check path-level read permission before returning content
|
|
30
35
|
const resolvedPath = await store.resolveDocumentPath(result.collection, result.slug);
|
|
31
|
-
const access =
|
|
36
|
+
const access = checkAccess(resolvedPath.relativePath, 'read');
|
|
32
37
|
if (!access.allowed)
|
|
33
38
|
continue;
|
|
34
39
|
const doc = await store.read(result.collection, result.slug);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-references.js","sourceRoot":"","sources":["../../src/api/resolve-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAWhE,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,gBAAgB;CACzB,CAAC,CAAA;AAEF,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACrC,CAAC,CAAA;AAEF,MAAM,wBAAwB,GAAG,KAAK,EACpC,EAA8C,EAC9C,GAAe,EACf,GAAe,EACf,MAAqD,EACrD,IAAiD,EACb,EAAE;IACtC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,CAAA;IAE5B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;IAEpB,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAA;IAC3C,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAEpE,+CAA+C;IAC/C,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAA;IAErC,mCAAmC;IACnC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAEtD,MAAM,QAAQ,GAA4B,EAAE,CAAA;IAE5C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACzC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChE,4DAA4D;gBAC5D,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;gBACpF,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"resolve-references.js","sourceRoot":"","sources":["../../src/api/resolve-references.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,28 @@ import type { PermissionLevel } from '../config';
|
|
|
19
19
|
import type { CanopyUser } from '../user';
|
|
20
20
|
import type { ContentAccessResult, ContentAccessDeps } from './types';
|
|
21
21
|
import type { PhysicalPath } from '../paths/types';
|
|
22
|
+
/**
|
|
23
|
+
* A bound content-access checker: evaluates a single path/level synchronously
|
|
24
|
+
* against permissions that were already loaded when the checker was created.
|
|
25
|
+
*/
|
|
26
|
+
export type ContentAccessChecker = (relativePath: PhysicalPath, level: PermissionLevel) => ContentAccessResult;
|
|
27
|
+
/**
|
|
28
|
+
* Create a content-access checker that resolves the request-constant work once
|
|
29
|
+
* (branch access, the settings/permissions root, and the path-permission rules)
|
|
30
|
+
* and returns a synchronous per-path checker.
|
|
31
|
+
*
|
|
32
|
+
* Branch access, the resolved permissions root, and the loaded rules are identical
|
|
33
|
+
* for a fixed `(context, branchRoot, user)`, so hoisting them out of the per-path
|
|
34
|
+
* check avoids re-reading the permissions file (and, in modes with a separate
|
|
35
|
+
* settings branch, re-ensuring the settings workspace) for every entry. This is
|
|
36
|
+
* the batch primitive used by listing endpoints that check many paths per request.
|
|
37
|
+
*
|
|
38
|
+
* @param deps - Dependencies including branch access checker and path permissions loader
|
|
39
|
+
* @param context - Branch context containing branch metadata
|
|
40
|
+
* @param branchRoot - Root directory of the branch
|
|
41
|
+
* @param user - User to check access for
|
|
42
|
+
*/
|
|
43
|
+
export declare function createContentAccessChecker(deps: ContentAccessDeps, context: BranchContext, branchRoot: string, user: CanopyUser): Promise<ContentAccessChecker>;
|
|
22
44
|
/**
|
|
23
45
|
* Check content access by evaluating both branch and path permissions.
|
|
24
46
|
* Path permissions are loaded dynamically from the branch root.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/authorization/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/authorization/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,eAAe,KACnB,mBAAmB,CAAA;AAExB;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,oBAAoB,CAAC,CAqC/B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,mBAAmB,CAAC,CAG9B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,iBAAiB,IAE5D,SAAS,aAAa,EACtB,YAAY,MAAM,EAClB,cAAc,YAAY,EAC1B,MAAM,UAAU,EAChB,OAAO,eAAe,KACrB,OAAO,CAAC,mBAAmB,CAAC,CAEhC"}
|
|
@@ -17,17 +17,22 @@
|
|
|
17
17
|
import { operatingStrategy } from '../operating-mode/index.js';
|
|
18
18
|
import { createCheckPathAccess } from './path.js';
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
20
|
+
* Create a content-access checker that resolves the request-constant work once
|
|
21
|
+
* (branch access, the settings/permissions root, and the path-permission rules)
|
|
22
|
+
* and returns a synchronous per-path checker.
|
|
23
|
+
*
|
|
24
|
+
* Branch access, the resolved permissions root, and the loaded rules are identical
|
|
25
|
+
* for a fixed `(context, branchRoot, user)`, so hoisting them out of the per-path
|
|
26
|
+
* check avoids re-reading the permissions file (and, in modes with a separate
|
|
27
|
+
* settings branch, re-ensuring the settings workspace) for every entry. This is
|
|
28
|
+
* the batch primitive used by listing endpoints that check many paths per request.
|
|
22
29
|
*
|
|
23
30
|
* @param deps - Dependencies including branch access checker and path permissions loader
|
|
24
31
|
* @param context - Branch context containing branch metadata
|
|
25
32
|
* @param branchRoot - Root directory of the branch
|
|
26
|
-
* @param relativePath - Physical path relative to branch root (with embedded IDs)
|
|
27
33
|
* @param user - User to check access for
|
|
28
|
-
* @param level - Permission level to check ('read', 'edit', or 'review')
|
|
29
34
|
*/
|
|
30
|
-
export async function
|
|
35
|
+
export async function createContentAccessChecker(deps, context, branchRoot, user) {
|
|
31
36
|
const branch = deps.checkBranchAccess(context, user);
|
|
32
37
|
// Load permissions from appropriate location based on operating mode
|
|
33
38
|
// Modes with separate settings branch: load from settings branch
|
|
@@ -45,17 +50,34 @@ export async function checkContentAccess(deps, context, branchRoot, relativePath
|
|
|
45
50
|
}
|
|
46
51
|
const rules = await deps.loadPathPermissions(permissionsRoot, deps.mode);
|
|
47
52
|
const pathChecker = createCheckPathAccess(rules, deps.defaultPathAccess);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
return (relativePath, level) => {
|
|
54
|
+
const path = pathChecker({
|
|
55
|
+
relativePath,
|
|
56
|
+
user,
|
|
57
|
+
level,
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
allowed: branch.allowed && path.allowed,
|
|
61
|
+
branch,
|
|
62
|
+
path,
|
|
63
|
+
};
|
|
57
64
|
};
|
|
58
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Check content access by evaluating both branch and path permissions.
|
|
68
|
+
* Path permissions are loaded dynamically from the branch root.
|
|
69
|
+
*
|
|
70
|
+
* @param deps - Dependencies including branch access checker and path permissions loader
|
|
71
|
+
* @param context - Branch context containing branch metadata
|
|
72
|
+
* @param branchRoot - Root directory of the branch
|
|
73
|
+
* @param relativePath - Physical path relative to branch root (with embedded IDs)
|
|
74
|
+
* @param user - User to check access for
|
|
75
|
+
* @param level - Permission level to check ('read', 'edit', or 'review')
|
|
76
|
+
*/
|
|
77
|
+
export async function checkContentAccess(deps, context, branchRoot, relativePath, user, level) {
|
|
78
|
+
const check = await createContentAccessChecker(deps, context, branchRoot, user);
|
|
79
|
+
return check(relativePath, level);
|
|
80
|
+
}
|
|
59
81
|
/**
|
|
60
82
|
* Create a content access checker with bound dependencies.
|
|
61
83
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/authorization/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/authorization/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AAa9C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAAuB,EACvB,OAAsB,EACtB,UAAkB,EAClB,IAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAEpD,qEAAqE;IACrE,iEAAiE;IACjE,4CAA4C;IAC5C,IAAI,eAAe,GAAG,UAAU,CAAA;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IACtB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAExC,IAAI,QAAQ,CAAC,0BAA0B,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAA;QACH,CAAC;QACD,yEAAyE;QACzE,iFAAiF;QACjF,eAAe,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAA;IACtD,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACxE,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAExE,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,WAAW,CAAC;YACvB,YAAY;YACZ,IAAI;YACJ,KAAK;SACN,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;YACvC,MAAM;YACN,IAAI;SACL,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAuB,EACvB,OAAsB,EACtB,UAAkB,EAClB,YAA0B,EAC1B,IAAgB,EAChB,KAAsB;IAEtB,MAAM,KAAK,GAAG,MAAM,0BAA0B,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;IAC/E,OAAO,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAuB;IAC9D,OAAO,CACL,OAAsB,EACtB,UAAkB,EAClB,YAA0B,EAC1B,IAAgB,EAChB,KAAsB,EACQ,EAAE,CAChC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AAC5E,CAAC"}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
*/
|
|
28
28
|
export type { BranchAccessResult, PathPermissionResult, ContentAccessResult, ContentAccessDeps, PermissionPath, } from './types';
|
|
29
29
|
export { parsePermissionPath } from './validation';
|
|
30
|
-
export { checkContentAccess, createCheckContentAccess } from './content';
|
|
30
|
+
export { checkContentAccess, createCheckContentAccess, createContentAccessChecker, type ContentAccessChecker, } from './content';
|
|
31
31
|
export { checkBranchAccessWithDefault, createCheckBranchAccess, canPerformWorkflowAction, } from './branch';
|
|
32
32
|
export { checkPathAccess, createCheckPathAccess } from './path';
|
|
33
33
|
export { RESERVED_GROUPS, type ReservedGroupId, isReservedGroup, isAdmin, isReviewer, isPrivileged, } from './helpers';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/authorization/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGlD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/authorization/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGlD,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,WAAW,CAAA;AAGlB,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AAG/D,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,eAAe,EACf,OAAO,EACP,UAAU,EACV,YAAY,GACb,MAAM,WAAW,CAAA;AAGlB,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,KAAK,eAAe,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,UAAU,CAAA"}
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
// Validation
|
|
29
29
|
export { parsePermissionPath } from './validation.js';
|
|
30
30
|
// Main content access (recommended for most cases)
|
|
31
|
-
export { checkContentAccess, createCheckContentAccess } from './content.js';
|
|
31
|
+
export { checkContentAccess, createCheckContentAccess, createContentAccessChecker, } from './content.js';
|
|
32
32
|
// Branch-level access
|
|
33
33
|
export { checkBranchAccessWithDefault, createCheckBranchAccess, canPerformWorkflowAction, } from './branch.js';
|
|
34
34
|
// Path-level access
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/authorization/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAWH,aAAa;AACb,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,mDAAmD;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/authorization/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAWH,aAAa;AACb,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,mDAAmD;AACnD,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,GAE3B,MAAM,WAAW,CAAA;AAElB,sBAAsB;AACtB,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,UAAU,CAAA;AAEjB,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AAE/D,mBAAmB;AACnB,OAAO,EACL,eAAe,EAEf,eAAe,EACf,OAAO,EACP,UAAU,EACV,YAAY,GACb,MAAM,WAAW,CAAA;AAElB,4BAA4B;AAC5B,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAE5B,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,eAAe,CAAA;AAEtB,uBAAuB;AACvB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EAGvB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,UAAU,CAAA"}
|
|
@@ -8,7 +8,19 @@
|
|
|
8
8
|
* // In test files only:
|
|
9
9
|
* import { unsafeAsPermissionPath } from '../authorization/test-utils'
|
|
10
10
|
*/
|
|
11
|
-
import type { PermissionPath } from './types';
|
|
11
|
+
import type { PermissionPath, ContentAccessDeps } from './types';
|
|
12
|
+
import type { BranchContext } from '../types';
|
|
13
|
+
import type { CanopyUser } from '../user';
|
|
14
|
+
import { createCheckContentAccess, type ContentAccessChecker } from './content';
|
|
12
15
|
/** Test-only: cast a string to PermissionPath without validation. */
|
|
13
16
|
export declare const unsafeAsPermissionPath: (path: string) => PermissionPath;
|
|
17
|
+
/**
|
|
18
|
+
* Test-only: build the single-call `checkContentAccess` and the batch
|
|
19
|
+
* `createContentAccessChecker` from one shared deps object, so tests can wire both
|
|
20
|
+
* into mock services without duplicating deps. Mirrors how `services.ts` binds them.
|
|
21
|
+
*/
|
|
22
|
+
export declare const createTestContentAccess: (deps: ContentAccessDeps) => {
|
|
23
|
+
checkContentAccess: ReturnType<typeof createCheckContentAccess>;
|
|
24
|
+
createContentAccessChecker: (context: BranchContext, branchRoot: string, user: CanopyUser) => Promise<ContentAccessChecker>;
|
|
25
|
+
};
|
|
14
26
|
//# sourceMappingURL=test-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/authorization/test-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/authorization/test-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EACL,wBAAwB,EAExB,KAAK,oBAAoB,EAC1B,MAAM,WAAW,CAAA;AAElB,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,KAAG,cAAwC,CAAA;AAE9F;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,iBAAiB,KACtB;IACD,kBAAkB,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;IAC/D,0BAA0B,EAAE,CAC1B,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,KACb,OAAO,CAAC,oBAAoB,CAAC,CAAA;CAKlC,CAAA"}
|
|
@@ -8,6 +8,16 @@
|
|
|
8
8
|
* // In test files only:
|
|
9
9
|
* import { unsafeAsPermissionPath } from '../authorization/test-utils.js'
|
|
10
10
|
*/
|
|
11
|
+
import { createCheckContentAccess, createContentAccessChecker, } from './content.js';
|
|
11
12
|
/** Test-only: cast a string to PermissionPath without validation. */
|
|
12
13
|
export const unsafeAsPermissionPath = (path) => path;
|
|
14
|
+
/**
|
|
15
|
+
* Test-only: build the single-call `checkContentAccess` and the batch
|
|
16
|
+
* `createContentAccessChecker` from one shared deps object, so tests can wire both
|
|
17
|
+
* into mock services without duplicating deps. Mirrors how `services.ts` binds them.
|
|
18
|
+
*/
|
|
19
|
+
export const createTestContentAccess = (deps) => ({
|
|
20
|
+
checkContentAccess: createCheckContentAccess(deps),
|
|
21
|
+
createContentAccessChecker: (context, branchRoot, user) => createContentAccessChecker(deps, context, branchRoot, user),
|
|
22
|
+
});
|
|
13
23
|
//# sourceMappingURL=test-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/authorization/test-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/authorization/test-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAE3B,MAAM,WAAW,CAAA;AAElB,qEAAqE;AACrE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAkB,EAAE,CAAC,IAAsB,CAAA;AAE9F;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,IAAuB,EAQvB,EAAE,CAAC,CAAC;IACJ,kBAAkB,EAAE,wBAAwB,CAAC,IAAI,CAAC;IAClD,0BAA0B,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CACxD,0BAA0B,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC;CAC9D,CAAC,CAAA"}
|