canopycms 0.0.59 → 0.0.61-int.74
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/api/__test__/mock-client.d.ts +29 -0
- package/dist/api/__test__/mock-client.d.ts.map +1 -1
- package/dist/api/__test__/mock-client.js +55 -4
- package/dist/api/__test__/mock-client.js.map +1 -1
- package/dist/api/admin-branch-health.d.ts +65 -0
- package/dist/api/admin-branch-health.d.ts.map +1 -0
- package/dist/api/admin-branch-health.js +448 -0
- package/dist/api/admin-branch-health.js.map +1 -0
- package/dist/api/admin.d.ts +136 -0
- package/dist/api/admin.d.ts.map +1 -0
- package/dist/api/admin.js +338 -0
- package/dist/api/admin.js.map +1 -0
- package/dist/api/assets.d.ts.map +1 -1
- package/dist/api/assets.js +4 -0
- package/dist/api/assets.js.map +1 -1
- package/dist/api/branch-merge.d.ts +6 -0
- package/dist/api/branch-merge.d.ts.map +1 -1
- package/dist/api/branch-merge.js +15 -9
- package/dist/api/branch-merge.js.map +1 -1
- package/dist/api/branch-status.d.ts.map +1 -1
- package/dist/api/branch-status.js +15 -5
- package/dist/api/branch-status.js.map +1 -1
- package/dist/api/branch-withdraw.d.ts +6 -0
- package/dist/api/branch-withdraw.d.ts.map +1 -1
- package/dist/api/branch-withdraw.js +34 -7
- package/dist/api/branch-withdraw.js.map +1 -1
- package/dist/api/branch.d.ts +11 -1
- package/dist/api/branch.d.ts.map +1 -1
- package/dist/api/branch.js +70 -4
- package/dist/api/branch.js.map +1 -1
- package/dist/api/client.d.ts +34 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +47 -0
- package/dist/api/client.js.map +1 -1
- package/dist/api/comments.d.ts.map +1 -1
- package/dist/api/comments.js +4 -0
- package/dist/api/comments.js.map +1 -1
- package/dist/api/content.d.ts.map +1 -1
- package/dist/api/content.js +4 -4
- package/dist/api/content.js.map +1 -1
- package/dist/api/entries.d.ts.map +1 -1
- package/dist/api/entries.js +23 -4
- package/dist/api/entries.js.map +1 -1
- package/dist/api/github-sync.d.ts.map +1 -1
- package/dist/api/github-sync.js +14 -3
- package/dist/api/github-sync.js.map +1 -1
- package/dist/api/groups.d.ts +3 -0
- package/dist/api/groups.d.ts.map +1 -1
- package/dist/api/groups.js +89 -68
- package/dist/api/groups.js.map +1 -1
- package/dist/api/guards.d.ts +7 -1
- package/dist/api/guards.d.ts.map +1 -1
- package/dist/api/guards.js +54 -0
- package/dist/api/guards.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +0 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/permissions.d.ts +1 -0
- package/dist/api/permissions.d.ts.map +1 -1
- package/dist/api/permissions.js +23 -20
- package/dist/api/permissions.js.map +1 -1
- package/dist/api/schema.d.ts.map +1 -1
- package/dist/api/schema.js +36 -22
- package/dist/api/schema.js.map +1 -1
- package/dist/authorization/branch.d.ts +14 -1
- package/dist/authorization/branch.d.ts.map +1 -1
- package/dist/authorization/branch.js +5 -3
- package/dist/authorization/branch.js.map +1 -1
- package/dist/authorization/groups/index.d.ts +1 -1
- package/dist/authorization/groups/index.d.ts.map +1 -1
- package/dist/authorization/groups/index.js +1 -1
- package/dist/authorization/groups/index.js.map +1 -1
- package/dist/authorization/groups/loader.d.ts +25 -4
- package/dist/authorization/groups/loader.d.ts.map +1 -1
- package/dist/authorization/groups/loader.js +39 -20
- package/dist/authorization/groups/loader.js.map +1 -1
- package/dist/authorization/groups/schema.d.ts +8 -7
- package/dist/authorization/groups/schema.d.ts.map +1 -1
- package/dist/authorization/groups/schema.js +8 -4
- package/dist/authorization/groups/schema.js.map +1 -1
- package/dist/authorization/index.d.ts +5 -3
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +8 -3
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/path.d.ts +8 -0
- package/dist/authorization/path.d.ts.map +1 -1
- package/dist/authorization/path.js +16 -1
- package/dist/authorization/path.js.map +1 -1
- package/dist/authorization/permissions/index.d.ts +1 -1
- package/dist/authorization/permissions/index.d.ts.map +1 -1
- package/dist/authorization/permissions/index.js +1 -1
- package/dist/authorization/permissions/index.js.map +1 -1
- package/dist/authorization/permissions/loader.d.ts +18 -4
- package/dist/authorization/permissions/loader.d.ts.map +1 -1
- package/dist/authorization/permissions/loader.js +35 -24
- package/dist/authorization/permissions/loader.js.map +1 -1
- package/dist/authorization/permissions/schema.d.ts +8 -7
- package/dist/authorization/permissions/schema.d.ts.map +1 -1
- package/dist/authorization/permissions/schema.js +8 -4
- package/dist/authorization/permissions/schema.js.map +1 -1
- package/dist/authorization/protected-branch.d.ts +39 -0
- package/dist/authorization/protected-branch.d.ts.map +1 -0
- package/dist/authorization/protected-branch.js +43 -0
- package/dist/authorization/protected-branch.js.map +1 -0
- package/dist/authorization/settings-file-store.d.ts +127 -0
- package/dist/authorization/settings-file-store.d.ts.map +1 -0
- package/dist/authorization/settings-file-store.js +156 -0
- package/dist/authorization/settings-file-store.js.map +1 -0
- package/dist/branch-health.d.ts +78 -0
- package/dist/branch-health.d.ts.map +1 -0
- package/dist/branch-health.js +151 -0
- package/dist/branch-health.js.map +1 -0
- package/dist/branch-metadata.d.ts +31 -0
- package/dist/branch-metadata.d.ts.map +1 -1
- package/dist/branch-metadata.js +43 -1
- package/dist/branch-metadata.js.map +1 -1
- package/dist/branch-registry.d.ts.map +1 -1
- package/dist/branch-registry.js +13 -1
- package/dist/branch-registry.js.map +1 -1
- package/dist/cli/cli.js +398 -200
- package/dist/cli/generate-ai-content.js +72 -13
- package/dist/cli/init.js +84 -2
- package/dist/cli/migrate.d.ts.map +1 -1
- package/dist/cli/migrate.js +39 -11
- package/dist/cli/migrate.js.map +1 -1
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +4 -1
- package/dist/cli/sync.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/schemas/config.d.ts +55 -5
- package/dist/config/schemas/config.d.ts.map +1 -1
- package/dist/config/schemas/config.js +18 -1
- package/dist/config/schemas/config.js.map +1 -1
- package/dist/config/types.d.ts +11 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/content-store.d.ts +16 -0
- package/dist/content-store.d.ts.map +1 -1
- package/dist/content-store.js +22 -6
- package/dist/content-store.js.map +1 -1
- package/dist/context.d.ts +3 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +25 -3
- package/dist/context.js.map +1 -1
- package/dist/editor/BranchManager.d.ts +11 -0
- package/dist/editor/BranchManager.d.ts.map +1 -1
- package/dist/editor/BranchManager.js +34 -10
- package/dist/editor/BranchManager.js.map +1 -1
- package/dist/editor/CommentsPanel.d.ts.map +1 -1
- package/dist/editor/CommentsPanel.js +4 -12
- package/dist/editor/CommentsPanel.js.map +1 -1
- package/dist/editor/Editor.d.ts.map +1 -1
- package/dist/editor/Editor.js +46 -10
- package/dist/editor/Editor.js.map +1 -1
- package/dist/editor/EntryNavigator.d.ts +7 -0
- package/dist/editor/EntryNavigator.d.ts.map +1 -1
- package/dist/editor/EntryNavigator.js +17 -5
- package/dist/editor/EntryNavigator.js.map +1 -1
- package/dist/editor/FormRenderer.d.ts.map +1 -1
- package/dist/editor/FormRenderer.js +4 -0
- package/dist/editor/FormRenderer.js.map +1 -1
- package/dist/editor/admin/SystemHealthPanel.d.ts +6 -0
- package/dist/editor/admin/SystemHealthPanel.d.ts.map +1 -0
- package/dist/editor/admin/SystemHealthPanel.js +234 -0
- package/dist/editor/admin/SystemHealthPanel.js.map +1 -0
- package/dist/editor/admin/useSystemHealth.d.ts +40 -0
- package/dist/editor/admin/useSystemHealth.d.ts.map +1 -0
- package/dist/editor/admin/useSystemHealth.js +205 -0
- package/dist/editor/admin/useSystemHealth.js.map +1 -0
- package/dist/editor/comments/FieldWrapper.d.ts.map +1 -1
- package/dist/editor/comments/FieldWrapper.js +1 -1
- package/dist/editor/comments/FieldWrapper.js.map +1 -1
- package/dist/editor/comments/InlineCommentThread.d.ts.map +1 -1
- package/dist/editor/comments/InlineCommentThread.js +2 -21
- package/dist/editor/comments/InlineCommentThread.js.map +1 -1
- package/dist/editor/comments/ThreadCarousel.d.ts +2 -0
- package/dist/editor/comments/ThreadCarousel.d.ts.map +1 -1
- package/dist/editor/comments/ThreadCarousel.js +5 -2
- package/dist/editor/comments/ThreadCarousel.js.map +1 -1
- package/dist/editor/components/EditorHeader.d.ts +11 -0
- package/dist/editor/components/EditorHeader.d.ts.map +1 -1
- package/dist/editor/components/EditorHeader.js +75 -41
- package/dist/editor/components/EditorHeader.js.map +1 -1
- package/dist/editor/components/EditorSidebar.d.ts +7 -1
- package/dist/editor/components/EditorSidebar.d.ts.map +1 -1
- package/dist/editor/components/EditorSidebar.js +3 -3
- package/dist/editor/components/EditorSidebar.js.map +1 -1
- package/dist/editor/fields/ImageField.d.ts.map +1 -1
- package/dist/editor/fields/ImageField.js +4 -1
- package/dist/editor/fields/ImageField.js.map +1 -1
- package/dist/editor/fields/StringListField.d.ts +20 -0
- package/dist/editor/fields/StringListField.d.ts.map +1 -0
- package/dist/editor/fields/StringListField.js +25 -0
- package/dist/editor/fields/StringListField.js.map +1 -0
- package/dist/editor/hooks/useBranchActions.d.ts.map +1 -1
- package/dist/editor/hooks/useBranchActions.js +8 -2
- package/dist/editor/hooks/useBranchActions.js.map +1 -1
- package/dist/editor/hooks/useBranchManager.d.ts +14 -3
- package/dist/editor/hooks/useBranchManager.d.ts.map +1 -1
- package/dist/editor/hooks/useBranchManager.js +18 -1
- package/dist/editor/hooks/useBranchManager.js.map +1 -1
- package/dist/editor/hooks/useDraftManager.d.ts +7 -0
- package/dist/editor/hooks/useDraftManager.d.ts.map +1 -1
- package/dist/editor/hooks/useDraftManager.js +57 -3
- package/dist/editor/hooks/useDraftManager.js.map +1 -1
- package/dist/editor/hooks/useEntryManager.d.ts.map +1 -1
- package/dist/editor/hooks/useEntryManager.js +25 -7
- package/dist/editor/hooks/useEntryManager.js.map +1 -1
- package/dist/editor/hooks/useGroupManager.d.ts.map +1 -1
- package/dist/editor/hooks/useGroupManager.js +13 -2
- package/dist/editor/hooks/useGroupManager.js.map +1 -1
- package/dist/editor/hooks/usePermissionManager.d.ts.map +1 -1
- package/dist/editor/hooks/usePermissionManager.js +13 -2
- package/dist/editor/hooks/usePermissionManager.js.map +1 -1
- package/dist/editor/media/AssetCard.d.ts.map +1 -1
- package/dist/editor/media/AssetCard.js +23 -2
- package/dist/editor/media/AssetCard.js.map +1 -1
- package/dist/editor/relative-time.d.ts +8 -0
- package/dist/editor/relative-time.d.ts.map +1 -0
- package/dist/editor/relative-time.js +26 -0
- package/dist/editor/relative-time.js.map +1 -0
- package/dist/git-manager.d.ts.map +1 -1
- package/dist/git-manager.js +16 -2
- package/dist/git-manager.js.map +1 -1
- package/dist/http/handler.d.ts.map +1 -1
- package/dist/http/handler.js +20 -9
- package/dist/http/handler.js.map +1 -1
- package/dist/http/router.d.ts.map +1 -1
- package/dist/http/router.js +2 -0
- package/dist/http/router.js.map +1 -1
- package/dist/paths/branch-name.d.ts +20 -0
- package/dist/paths/branch-name.d.ts.map +1 -0
- package/dist/paths/branch-name.js +24 -0
- package/dist/paths/branch-name.js.map +1 -0
- package/dist/paths/branch.d.ts +2 -8
- package/dist/paths/branch.d.ts.map +1 -1
- package/dist/paths/branch.js +6 -12
- package/dist/paths/branch.js.map +1 -1
- package/dist/paths/index.d.ts +2 -1
- package/dist/paths/index.d.ts.map +1 -1
- package/dist/paths/index.js +4 -1
- package/dist/paths/index.js.map +1 -1
- package/dist/schema/schema-store.d.ts +98 -0
- package/dist/schema/schema-store.d.ts.map +1 -1
- package/dist/schema/schema-store.js +187 -29
- package/dist/schema/schema-store.js.map +1 -1
- package/dist/services.js +9 -1
- package/dist/services.js.map +1 -1
- package/dist/task-queue/index.d.ts +2 -2
- package/dist/task-queue/index.d.ts.map +1 -1
- package/dist/task-queue/index.js +1 -1
- package/dist/task-queue/index.js.map +1 -1
- package/dist/task-queue/task-queue.d.ts +37 -1
- package/dist/task-queue/task-queue.d.ts.map +1 -1
- package/dist/task-queue/task-queue.js +104 -0
- package/dist/task-queue/task-queue.js.map +1 -1
- package/dist/task-queue/types.d.ts +11 -0
- package/dist/task-queue/types.d.ts.map +1 -1
- package/dist/types.d.ts +54 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/occ-json-write.d.ts.map +1 -1
- package/dist/utils/occ-json-write.js +7 -0
- package/dist/utils/occ-json-write.js.map +1 -1
- package/dist/utils/provisioning-lock.d.ts +19 -0
- package/dist/utils/provisioning-lock.d.ts.map +1 -1
- package/dist/utils/provisioning-lock.js +26 -0
- package/dist/utils/provisioning-lock.js.map +1 -1
- package/dist/validation/reference-validator.d.ts +17 -1
- package/dist/validation/reference-validator.d.ts.map +1 -1
- package/dist/validation/reference-validator.js +33 -10
- package/dist/validation/reference-validator.js.map +1 -1
- package/dist/worker/cms-worker.d.ts +74 -0
- package/dist/worker/cms-worker.d.ts.map +1 -1
- package/dist/worker/cms-worker.js +542 -29
- package/dist/worker/cms-worker.js.map +1 -1
- package/dist/worker/task-queue.d.ts +3 -3
- package/dist/worker/task-queue.d.ts.map +1 -1
- package/dist/worker/task-queue.js +2 -2
- package/dist/worker/task-queue.js.map +1 -1
- package/dist/worker/worker-status.d.ts +48 -0
- package/dist/worker/worker-status.d.ts.map +1 -0
- package/dist/worker/worker-status.js +53 -0
- package/dist/worker/worker-status.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-validator.d.ts","sourceRoot":"","sources":["../../src/validation/reference-validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAIlE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"reference-validator.d.ts","sourceRoot":"","sources":["../../src/validation/reference-validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAIlE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,kBAAkB;IAU3B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,iBAAiB,CAAC;IAX5B;;;;;;;OAOG;gBAEO,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,iBAAiB,CAAC,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,aAAA;IAGlE;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuFxE;;;OAGG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;CA0D/F"}
|
|
@@ -18,9 +18,31 @@ import { findFieldsByType } from './field-traversal.js';
|
|
|
18
18
|
* }
|
|
19
19
|
*/
|
|
20
20
|
export class ReferenceValidator {
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* @param resolveCollection - Resolves a schema-declared collection name
|
|
23
|
+
* (the documented unprefixed form, e.g. 'posts') to its canonical logical
|
|
24
|
+
* path (e.g. 'content/posts'), typically `ContentStore.resolveCollectionItem`.
|
|
25
|
+
* Keeps the write boundary consistent with reference-option loading: any
|
|
26
|
+
* entry the dropdown offers must also pass validation. Without a resolver,
|
|
27
|
+
* names are compared as-is against the index's logical collection paths.
|
|
28
|
+
*/
|
|
29
|
+
constructor(idIndex, schema, resolveCollection) {
|
|
22
30
|
this.idIndex = idIndex;
|
|
23
31
|
this.schema = schema;
|
|
32
|
+
this.resolveCollection = resolveCollection;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check whether an entry's collection (canonical logical path from the ID
|
|
36
|
+
* index, e.g. 'content/posts') satisfies a field's `collections` constraint
|
|
37
|
+
* (documented unprefixed names, e.g. ['posts']). Subcollections of an
|
|
38
|
+
* allowed collection are allowed.
|
|
39
|
+
*/
|
|
40
|
+
collectionAllowed(entryCollection, allowed) {
|
|
41
|
+
return allowed.some((col) => {
|
|
42
|
+
const canonical = this.resolveCollection?.(col) ?? col;
|
|
43
|
+
// Exact match or nested collection match
|
|
44
|
+
return entryCollection === canonical || entryCollection?.startsWith(canonical + '/');
|
|
45
|
+
});
|
|
24
46
|
}
|
|
25
47
|
/**
|
|
26
48
|
* Validate all reference fields in the provided data.
|
|
@@ -40,8 +62,11 @@ export class ReferenceValidator {
|
|
|
40
62
|
for (const { field, value, path: fieldPath } of refs) {
|
|
41
63
|
const ids = Array.isArray(value) ? value : [value];
|
|
42
64
|
for (const id of ids) {
|
|
43
|
-
// Skip
|
|
44
|
-
|
|
65
|
+
// Skip empty values (they're handled by required validation). The
|
|
66
|
+
// editor sends '' when a single-select reference is cleared
|
|
67
|
+
// (ReferenceField coerces Mantine's null to ''), so an empty string
|
|
68
|
+
// means "no reference", not a malformed ID.
|
|
69
|
+
if (id == null || id === '')
|
|
45
70
|
continue;
|
|
46
71
|
// Validate ID format
|
|
47
72
|
if (typeof id !== 'string' || !isValidId(id)) {
|
|
@@ -76,10 +101,7 @@ export class ReferenceValidator {
|
|
|
76
101
|
}
|
|
77
102
|
// Validate collection constraint
|
|
78
103
|
if (field.collections && field.collections.length > 0) {
|
|
79
|
-
const allowed = field.collections
|
|
80
|
-
// Exact match or nested collection match
|
|
81
|
-
return location.collection === col || location.collection?.startsWith(col + '/');
|
|
82
|
-
});
|
|
104
|
+
const allowed = this.collectionAllowed(location.collection, field.collections);
|
|
83
105
|
if (!allowed) {
|
|
84
106
|
errors.push({
|
|
85
107
|
field: field.name,
|
|
@@ -111,6 +133,9 @@ export class ReferenceValidator {
|
|
|
111
133
|
* Useful for validating user input in real-time.
|
|
112
134
|
*/
|
|
113
135
|
async validateSingle(id, field) {
|
|
136
|
+
// '' means "no reference" (cleared single-select) — see validate().
|
|
137
|
+
if (id === '')
|
|
138
|
+
return null;
|
|
114
139
|
if (!isValidId(id)) {
|
|
115
140
|
return {
|
|
116
141
|
field: field.name,
|
|
@@ -137,9 +162,7 @@ export class ReferenceValidator {
|
|
|
137
162
|
};
|
|
138
163
|
}
|
|
139
164
|
if (field.collections && field.collections.length > 0) {
|
|
140
|
-
const allowed = field.collections
|
|
141
|
-
return location.collection === col || location.collection?.startsWith(col + '/');
|
|
142
|
-
});
|
|
165
|
+
const allowed = this.collectionAllowed(location.collection, field.collections);
|
|
143
166
|
if (!allowed) {
|
|
144
167
|
return {
|
|
145
168
|
field: field.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-validator.js","sourceRoot":"","sources":["../../src/validation/reference-validator.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAcpD;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,kBAAkB;IAC7B,YACU,OAAuB,EACvB,MAA8B;
|
|
1
|
+
{"version":3,"file":"reference-validator.js","sourceRoot":"","sources":["../../src/validation/reference-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,6 +92,7 @@ export declare class CmsWorker {
|
|
|
92
92
|
private remoteGitPath;
|
|
93
93
|
private contentBranchesPath;
|
|
94
94
|
private baseBranch;
|
|
95
|
+
private sanitizedBaseBranch;
|
|
95
96
|
private activeTimeouts;
|
|
96
97
|
private running;
|
|
97
98
|
private activeOperations;
|
|
@@ -103,7 +104,17 @@ export declare class CmsWorker {
|
|
|
103
104
|
private releaseLockFn;
|
|
104
105
|
private contentRoot;
|
|
105
106
|
private log;
|
|
107
|
+
private statusReport?;
|
|
106
108
|
constructor(config: CmsWorkerConfig);
|
|
109
|
+
/**
|
|
110
|
+
* Lazily get (and initialize if necessary) this worker's self-reported
|
|
111
|
+
* status object (PR-W1). Normally set once, up front, at the top of
|
|
112
|
+
* start(). The lazy fallback here covers two cases: (1) something in
|
|
113
|
+
* start() reaching a status-write point before that normal init runs
|
|
114
|
+
* (defensive -- see start()'s catch), and (2) unit tests that exercise
|
|
115
|
+
* syncGit()/processTaskQueue() directly without calling start() first.
|
|
116
|
+
*/
|
|
117
|
+
private ensureStatusReport;
|
|
107
118
|
start(): Promise<void>;
|
|
108
119
|
stop(): Promise<void>;
|
|
109
120
|
/**
|
|
@@ -208,6 +219,69 @@ export declare class CmsWorker {
|
|
|
208
219
|
*/
|
|
209
220
|
private pushSettingsBranches;
|
|
210
221
|
syncGit(): Promise<void>;
|
|
222
|
+
/**
|
|
223
|
+
* [C1] Remove `.trash-*` branch directories (created by the admin purge
|
|
224
|
+
* action, api/admin-branch-health.ts) whose name-embedded stamp is older
|
|
225
|
+
* than {@link TRASH_RETENTION_MS}. Names that don't match the expected
|
|
226
|
+
* `.trash-{dirName}-{STAMP}` shape, or whose stamp fails to parse, are
|
|
227
|
+
* left alone (logged once per cycle, not per file, to avoid flooding logs
|
|
228
|
+
* if something odd accumulates) -- purge is the only writer of this
|
|
229
|
+
* naming scheme, so an unparseable name is unexpected and worth a human
|
|
230
|
+
* looking rather than a silent skip.
|
|
231
|
+
*/
|
|
232
|
+
private cleanupTrashedBranchDirs;
|
|
233
|
+
/**
|
|
234
|
+
* Fast-forward the base branch's own working-tree clone
|
|
235
|
+
* (content-branches/<baseBranch>) to match origin/<baseBranch>.
|
|
236
|
+
*
|
|
237
|
+
* Previously this clone was refreshed only incidentally, by the generic
|
|
238
|
+
* rebase loop below (rebaseActiveBranches): for a branch with status
|
|
239
|
+
* 'editing', rebasing onto origin/<baseBranch> degenerates to a
|
|
240
|
+
* fast-forward when the clone IS the base branch. But that loop's skip
|
|
241
|
+
* paths -- a dirty tree, a missing .git -- are silent, which is the
|
|
242
|
+
* suspected live failure mode: a wedged base clone with no diagnosable
|
|
243
|
+
* signal in the logs. This dedicated step makes the refresh explicit,
|
|
244
|
+
* ff-only, and loud, so a stuck base view (an editor forking a new branch
|
|
245
|
+
* "from base" that's actually a stale snapshot) is diagnosable from logs.
|
|
246
|
+
* This runs every sync cycle so the drift window is bounded by
|
|
247
|
+
* gitSyncInterval.
|
|
248
|
+
*
|
|
249
|
+
* ff-only on purpose: this clone must stay a linear mirror of
|
|
250
|
+
* origin/<baseBranch>, so a merge that isn't a fast-forward (diverged
|
|
251
|
+
* local history) is treated as a should-never-happen condition and left
|
|
252
|
+
* untouched rather than force-resolved.
|
|
253
|
+
*/
|
|
254
|
+
private refreshBaseBranchWorkspace;
|
|
255
|
+
/**
|
|
256
|
+
* Poll GitHub for a submitted/approved branch's PR resolution.
|
|
257
|
+
*
|
|
258
|
+
* submitted/approved branches sit outside the rebase loop and get no
|
|
259
|
+
* other signal that their PR resolved on GitHub -- nothing pushes a
|
|
260
|
+
* merge/close webhook back into the branch workspace. merged ->
|
|
261
|
+
* auto-archive via buildMergedBranchUpdate (shared with the manual
|
|
262
|
+
* markAsMerged API so both paths produce identical archived-branch
|
|
263
|
+
* metadata). closed-without-merge -> record pullRequestState only; an
|
|
264
|
+
* admin decides the workflow transition from there. Best-effort: any
|
|
265
|
+
* failure here is logged and swallowed, retried next sync cycle.
|
|
266
|
+
*/
|
|
267
|
+
private pollMergeState;
|
|
268
|
+
/**
|
|
269
|
+
* Persist a per-branch rebase failure to branch.json (PR-W2), bounded to
|
|
270
|
+
* roughly one save per failing branch per hour: a branch stuck failing
|
|
271
|
+
* every cycle must not turn into unbounded save-per-cycle x N-failing-
|
|
272
|
+
* branches write amplification -- save() eager-regenerates the branch
|
|
273
|
+
* registry (branch-metadata.ts's invalidateRegistry(), O(branch count) EFS
|
|
274
|
+
* reads), the same concern the `alreadyClean` no-op guard above exists
|
|
275
|
+
* for.
|
|
276
|
+
*
|
|
277
|
+
* Best-effort and non-fatal like every other metadata write in this
|
|
278
|
+
* loop's error paths: a corrupt branch.json, a lock-contention error, or
|
|
279
|
+
* any other save failure here must never abort the per-branch iteration.
|
|
280
|
+
* This matters doubly at the two call sites -- one is inside the outer
|
|
281
|
+
* per-branch catch, with no further catch of its own around this call --
|
|
282
|
+
* so the whole method is wrapped, not just the load.
|
|
283
|
+
*/
|
|
284
|
+
private recordRebaseFailure;
|
|
211
285
|
private rebaseActiveBranches;
|
|
212
286
|
refreshAuthCache(): Promise<void>;
|
|
213
287
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cms-worker.d.ts","sourceRoot":"","sources":["../../src/worker/cms-worker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cms-worker.d.ts","sourceRoot":"","sources":["../../src/worker/cms-worker.ts"],"names":[],"mappings":"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"}
|