canopycms 0.0.61-int.75 → 0.0.62
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/handler.js +1 -1
- package/dist/ai/handler.js.map +1 -1
- package/dist/ai/json-to-markdown.js +1 -2
- package/dist/ai/json-to-markdown.js.map +1 -1
- package/dist/api/__test__/mock-client.d.ts +5 -1
- package/dist/api/__test__/mock-client.d.ts.map +1 -1
- package/dist/api/__test__/mock-client.js +9 -2
- package/dist/api/__test__/mock-client.js.map +1 -1
- package/dist/api/admin-branch-health.d.ts +36 -1
- package/dist/api/admin-branch-health.d.ts.map +1 -1
- package/dist/api/admin-branch-health.js +176 -2
- package/dist/api/admin-branch-health.js.map +1 -1
- package/dist/api/admin.d.ts +8 -1
- package/dist/api/admin.d.ts.map +1 -1
- package/dist/api/admin.js.map +1 -1
- package/dist/api/assets.d.ts.map +1 -1
- package/dist/api/assets.js +36 -4
- package/dist/api/assets.js.map +1 -1
- package/dist/api/branch-status.d.ts.map +1 -1
- package/dist/api/branch-status.js +56 -0
- package/dist/api/branch-status.js.map +1 -1
- package/dist/api/branch-withdraw.d.ts.map +1 -1
- package/dist/api/branch-withdraw.js +14 -3
- package/dist/api/branch-withdraw.js.map +1 -1
- package/dist/api/branch.d.ts +31 -2
- package/dist/api/branch.d.ts.map +1 -1
- package/dist/api/branch.js +268 -15
- package/dist/api/branch.js.map +1 -1
- package/dist/api/client.d.ts +5 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +6 -0
- package/dist/api/client.js.map +1 -1
- package/dist/api/comments.d.ts +2 -2
- package/dist/api/content.d.ts +11 -5
- package/dist/api/content.d.ts.map +1 -1
- package/dist/api/content.js +91 -10
- package/dist/api/content.js.map +1 -1
- package/dist/api/entries.d.ts +10 -0
- package/dist/api/entries.d.ts.map +1 -1
- package/dist/api/entries.js +51 -24
- package/dist/api/entries.js.map +1 -1
- package/dist/api/guards.d.ts.map +1 -1
- package/dist/api/guards.js +12 -5
- package/dist/api/guards.js.map +1 -1
- package/dist/api/permissions.d.ts +2 -2
- package/dist/api/permissions.d.ts.map +1 -1
- package/dist/api/permissions.js +51 -3
- package/dist/api/permissions.js.map +1 -1
- package/dist/api/reference-options.d.ts.map +1 -1
- package/dist/api/reference-options.js +10 -17
- 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 +3 -1
- package/dist/api/resolve-references.js.map +1 -1
- package/dist/api/schema.d.ts +4 -4
- package/dist/api/schema.d.ts.map +1 -1
- package/dist/api/schema.js +16 -15
- package/dist/api/schema.js.map +1 -1
- package/dist/api/settings-helpers.d.ts.map +1 -1
- package/dist/api/settings-helpers.js +6 -5
- package/dist/api/settings-helpers.js.map +1 -1
- package/dist/assets/pipeline.d.ts +11 -2
- package/dist/assets/pipeline.d.ts.map +1 -1
- package/dist/assets/pipeline.js +114 -2
- package/dist/assets/pipeline.js.map +1 -1
- package/dist/assets/transform-directives.d.ts +18 -0
- package/dist/assets/transform-directives.d.ts.map +1 -1
- package/dist/assets/transform-directives.js +18 -0
- package/dist/assets/transform-directives.js.map +1 -1
- package/dist/assets/transform.d.ts.map +1 -1
- package/dist/assets/transform.js +20 -16
- package/dist/assets/transform.js.map +1 -1
- package/dist/auth/types.d.ts +29 -0
- package/dist/auth/types.d.ts.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/protected-branch.d.ts +75 -0
- package/dist/authorization/protected-branch.d.ts.map +1 -1
- package/dist/authorization/protected-branch.js +39 -0
- package/dist/authorization/protected-branch.js.map +1 -1
- package/dist/branch-health.d.ts +13 -0
- package/dist/branch-health.d.ts.map +1 -1
- package/dist/branch-health.js +23 -0
- package/dist/branch-health.js.map +1 -1
- package/dist/branch-registry.d.ts.map +1 -1
- package/dist/branch-registry.js +5 -1
- package/dist/branch-registry.js.map +1 -1
- package/dist/branch-schema-cache.d.ts.map +1 -1
- package/dist/branch-schema-cache.js +9 -0
- package/dist/branch-schema-cache.js.map +1 -1
- package/dist/build/generate-ai-content.js +1 -1
- package/dist/build/generate-ai-content.js.map +1 -1
- package/dist/cli/cli.js +2215 -1280
- package/dist/cli/generate-ai-content.js +1158 -585
- package/dist/cli/init.d.ts +8 -2
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +459 -152
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/project-detect.d.ts +89 -0
- package/dist/cli/project-detect.d.ts.map +1 -0
- package/dist/cli/project-detect.js +240 -0
- package/dist/cli/project-detect.js.map +1 -0
- package/dist/cli/template-files/Dockerfile.cms.template +30 -7
- package/dist/cli/template-files/canopycms.config.ts.template +7 -0
- package/dist/cli/template-files/cdk-app.ts.template +82 -0
- package/dist/cli/template-files/cdk.json.template +9 -0
- package/dist/cli/template-files/cms-stack.ts.template +130 -0
- package/dist/cli/template-files/deploy-cms.yml.template +125 -13
- package/dist/cli/template-files/dockerignore.template +2 -1
- package/dist/cli/templates.d.ts +26 -2
- package/dist/cli/templates.d.ts.map +1 -1
- package/dist/cli/templates.js +36 -4
- package/dist/cli/templates.js.map +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/config/schemas/config.d.ts +2 -3
- package/dist/config/schemas/config.d.ts.map +1 -1
- package/dist/config/schemas/config.js +21 -1
- package/dist/config/schemas/config.js.map +1 -1
- package/dist/config/schemas/field.d.ts +15 -15
- package/dist/config/types.d.ts +2 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +0 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/validation.d.ts +18 -0
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +36 -12
- package/dist/config/validation.js.map +1 -1
- package/dist/content-id-index.d.ts +97 -5
- package/dist/content-id-index.d.ts.map +1 -1
- package/dist/content-id-index.js +170 -18
- package/dist/content-id-index.js.map +1 -1
- package/dist/content-reader.js +1 -1
- package/dist/content-reader.js.map +1 -1
- package/dist/content-store.d.ts +92 -7
- package/dist/content-store.d.ts.map +1 -1
- package/dist/content-store.js +445 -259
- package/dist/content-store.js.map +1 -1
- package/dist/dev-content-watcher.d.ts.map +1 -1
- package/dist/dev-content-watcher.js +4 -1
- package/dist/dev-content-watcher.js.map +1 -1
- package/dist/editor/BranchManager.d.ts +15 -0
- package/dist/editor/BranchManager.d.ts.map +1 -1
- package/dist/editor/BranchManager.js +61 -15
- package/dist/editor/BranchManager.js.map +1 -1
- package/dist/editor/CanopyEditor.d.ts.map +1 -1
- package/dist/editor/CanopyEditor.js +3 -3
- package/dist/editor/CanopyEditor.js.map +1 -1
- package/dist/editor/CanopyEditorPage.d.ts +9 -1
- package/dist/editor/CanopyEditorPage.d.ts.map +1 -1
- package/dist/editor/CanopyEditorPage.js +9 -2
- package/dist/editor/CanopyEditorPage.js.map +1 -1
- package/dist/editor/Editor.d.ts +9 -1
- package/dist/editor/Editor.d.ts.map +1 -1
- package/dist/editor/Editor.js +156 -60
- package/dist/editor/Editor.js.map +1 -1
- package/dist/editor/FormRenderer.d.ts.map +1 -1
- package/dist/editor/FormRenderer.js +12 -0
- package/dist/editor/FormRenderer.js.map +1 -1
- package/dist/editor/admin/SystemHealthPanel.d.ts.map +1 -1
- package/dist/editor/admin/SystemHealthPanel.js +14 -9
- package/dist/editor/admin/SystemHealthPanel.js.map +1 -1
- package/dist/editor/components/EditorHeader.d.ts +6 -0
- package/dist/editor/components/EditorHeader.d.ts.map +1 -1
- package/dist/editor/components/EditorHeader.js +76 -23
- package/dist/editor/components/EditorHeader.js.map +1 -1
- package/dist/editor/components/EntryCreateModal.d.ts +9 -1
- package/dist/editor/components/EntryCreateModal.d.ts.map +1 -1
- package/dist/editor/components/EntryCreateModal.js +25 -7
- package/dist/editor/components/EntryCreateModal.js.map +1 -1
- package/dist/editor/context/SWRProvider.d.ts +31 -0
- package/dist/editor/context/SWRProvider.d.ts.map +1 -0
- package/dist/editor/context/SWRProvider.js +12 -0
- package/dist/editor/context/SWRProvider.js.map +1 -0
- package/dist/editor/context/index.d.ts +3 -0
- package/dist/editor/context/index.d.ts.map +1 -1
- package/dist/editor/context/index.js +3 -0
- package/dist/editor/context/index.js.map +1 -1
- package/dist/editor/editor-utils.d.ts.map +1 -1
- package/dist/editor/editor-utils.js +8 -2
- package/dist/editor/editor-utils.js.map +1 -1
- package/dist/editor/fields/DateTimeField.d.ts +46 -0
- package/dist/editor/fields/DateTimeField.d.ts.map +1 -0
- package/dist/editor/fields/DateTimeField.js +66 -0
- package/dist/editor/fields/DateTimeField.js.map +1 -0
- package/dist/editor/fields/ImageField.d.ts.map +1 -1
- package/dist/editor/fields/ImageField.js +27 -3
- package/dist/editor/fields/ImageField.js.map +1 -1
- package/dist/editor/fields/NumberField.d.ts +34 -0
- package/dist/editor/fields/NumberField.d.ts.map +1 -0
- package/dist/editor/fields/NumberField.js +53 -0
- package/dist/editor/fields/NumberField.js.map +1 -0
- package/dist/editor/fields/NumberListField.d.ts +25 -0
- package/dist/editor/fields/NumberListField.d.ts.map +1 -0
- package/dist/editor/fields/NumberListField.js +53 -0
- package/dist/editor/fields/NumberListField.js.map +1 -0
- package/dist/editor/fields/ReferenceField.d.ts.map +1 -1
- package/dist/editor/fields/ReferenceField.js +52 -31
- package/dist/editor/fields/ReferenceField.js.map +1 -1
- package/dist/editor/hooks/__test__/test-utils.d.ts +38 -3
- package/dist/editor/hooks/__test__/test-utils.d.ts.map +1 -1
- package/dist/editor/hooks/__test__/test-utils.js +50 -4
- package/dist/editor/hooks/__test__/test-utils.js.map +1 -1
- package/dist/editor/hooks/index.d.ts +4 -1
- package/dist/editor/hooks/index.d.ts.map +1 -1
- package/dist/editor/hooks/index.js +4 -1
- package/dist/editor/hooks/index.js.map +1 -1
- package/dist/editor/hooks/useBranchManager.d.ts +21 -1
- package/dist/editor/hooks/useBranchManager.d.ts.map +1 -1
- package/dist/editor/hooks/useBranchManager.js +183 -58
- package/dist/editor/hooks/useBranchManager.js.map +1 -1
- package/dist/editor/hooks/useBranchesData.d.ts +57 -0
- package/dist/editor/hooks/useBranchesData.d.ts.map +1 -0
- package/dist/editor/hooks/useBranchesData.js +69 -0
- package/dist/editor/hooks/useBranchesData.js.map +1 -0
- package/dist/editor/hooks/useCommentSystem.d.ts.map +1 -1
- package/dist/editor/hooks/useCommentSystem.js +24 -22
- package/dist/editor/hooks/useCommentSystem.js.map +1 -1
- package/dist/editor/hooks/useCommentsData.d.ts +29 -0
- package/dist/editor/hooks/useCommentsData.d.ts.map +1 -0
- package/dist/editor/hooks/useCommentsData.js +40 -0
- package/dist/editor/hooks/useCommentsData.js.map +1 -0
- package/dist/editor/hooks/useDraftManager.d.ts +8 -0
- package/dist/editor/hooks/useDraftManager.d.ts.map +1 -1
- package/dist/editor/hooks/useDraftManager.js +290 -36
- package/dist/editor/hooks/useDraftManager.js.map +1 -1
- package/dist/editor/hooks/useEntriesData.d.ts +35 -0
- package/dist/editor/hooks/useEntriesData.d.ts.map +1 -0
- package/dist/editor/hooks/useEntriesData.js +96 -0
- package/dist/editor/hooks/useEntriesData.js.map +1 -0
- package/dist/editor/hooks/useEntryManager.d.ts +29 -15
- package/dist/editor/hooks/useEntryManager.d.ts.map +1 -1
- package/dist/editor/hooks/useEntryManager.js +284 -119
- package/dist/editor/hooks/useEntryManager.js.map +1 -1
- package/dist/editor/hooks/usePermissionManager.d.ts +2 -2
- package/dist/editor/hooks/usePermissionManager.d.ts.map +1 -1
- package/dist/editor/hooks/usePermissionManager.js +11 -9
- package/dist/editor/hooks/usePermissionManager.js.map +1 -1
- package/dist/editor/hooks/useReferenceResolution.d.ts.map +1 -1
- package/dist/editor/hooks/useReferenceResolution.js +24 -1
- package/dist/editor/hooks/useReferenceResolution.js.map +1 -1
- package/dist/editor/media/MediaLibraryBody.d.ts.map +1 -1
- package/dist/editor/media/MediaLibraryBody.js +12 -2
- package/dist/editor/media/MediaLibraryBody.js.map +1 -1
- package/dist/editor/permission-manager/GroupSelector.d.ts.map +1 -1
- package/dist/editor/permission-manager/GroupSelector.js +7 -2
- package/dist/editor/permission-manager/GroupSelector.js.map +1 -1
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts +3 -3
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts.map +1 -1
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js +1 -0
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js.map +1 -1
- package/dist/editor/permission-manager/types.d.ts +6 -4
- package/dist/editor/permission-manager/types.d.ts.map +1 -1
- package/dist/editor/test-setup.js +8 -0
- package/dist/editor/test-setup.js.map +1 -1
- package/dist/editor/theme.d.ts +8 -8
- package/dist/git-manager.d.ts +175 -14
- package/dist/git-manager.d.ts.map +1 -1
- package/dist/git-manager.js +354 -39
- package/dist/git-manager.js.map +1 -1
- package/dist/github-service.d.ts.map +1 -1
- package/dist/github-service.js +13 -7
- package/dist/github-service.js.map +1 -1
- package/dist/http/handler.d.ts.map +1 -1
- package/dist/http/handler.js +78 -29
- package/dist/http/handler.js.map +1 -1
- package/dist/http/router.d.ts.map +1 -1
- package/dist/http/router.js +40 -3
- package/dist/http/router.js.map +1 -1
- package/dist/operating-mode/client-unsafe-strategy.d.ts.map +1 -1
- package/dist/operating-mode/client-unsafe-strategy.js +7 -8
- package/dist/operating-mode/client-unsafe-strategy.js.map +1 -1
- package/dist/operating-mode/deployment-name-fixtures.d.ts +29 -0
- package/dist/operating-mode/deployment-name-fixtures.d.ts.map +1 -0
- package/dist/operating-mode/deployment-name-fixtures.js +55 -0
- package/dist/operating-mode/deployment-name-fixtures.js.map +1 -0
- package/dist/operating-mode/deployment-name.d.ts +37 -0
- package/dist/operating-mode/deployment-name.d.ts.map +1 -0
- package/dist/operating-mode/deployment-name.js +86 -0
- package/dist/operating-mode/deployment-name.js.map +1 -0
- package/dist/operating-mode/index.d.ts +6 -1
- package/dist/operating-mode/index.d.ts.map +1 -1
- package/dist/operating-mode/index.js +10 -1
- package/dist/operating-mode/index.js.map +1 -1
- package/dist/operating-mode/mode-env.d.ts +58 -0
- package/dist/operating-mode/mode-env.d.ts.map +1 -0
- package/dist/operating-mode/mode-env.js +97 -0
- package/dist/operating-mode/mode-env.js.map +1 -0
- package/dist/operating-mode/types.d.ts +13 -3
- package/dist/operating-mode/types.d.ts.map +1 -1
- package/dist/paths/branch-name.d.ts +38 -0
- package/dist/paths/branch-name.d.ts.map +1 -1
- package/dist/paths/branch-name.js +46 -0
- package/dist/paths/branch-name.js.map +1 -1
- package/dist/paths/index.d.ts +1 -1
- package/dist/paths/index.d.ts.map +1 -1
- package/dist/paths/index.js +1 -1
- package/dist/paths/index.js.map +1 -1
- package/dist/reference-resolver.d.ts +6 -2
- package/dist/reference-resolver.d.ts.map +1 -1
- package/dist/reference-resolver.js +8 -1
- package/dist/reference-resolver.js.map +1 -1
- package/dist/resolve-canopy-user.d.ts +34 -0
- package/dist/resolve-canopy-user.d.ts.map +1 -0
- package/dist/resolve-canopy-user.js +55 -0
- package/dist/resolve-canopy-user.js.map +1 -0
- package/dist/schema/meta-loader.d.ts.map +1 -1
- package/dist/schema/meta-loader.js +10 -2
- package/dist/schema/meta-loader.js.map +1 -1
- package/dist/schema/schema-store.d.ts +64 -4
- package/dist/schema/schema-store.d.ts.map +1 -1
- package/dist/schema/schema-store.js +113 -30
- package/dist/schema/schema-store.js.map +1 -1
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +9 -0
- package/dist/server.js.map +1 -1
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +40 -6
- package/dist/services.js.map +1 -1
- package/dist/settings-workspace.d.ts +27 -2
- package/dist/settings-workspace.d.ts.map +1 -1
- package/dist/settings-workspace.js +142 -58
- package/dist/settings-workspace.js.map +1 -1
- package/dist/types.d.ts +73 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/content-write-lock.d.ts +127 -0
- package/dist/utils/content-write-lock.d.ts.map +1 -0
- package/dist/utils/content-write-lock.js +170 -0
- package/dist/utils/content-write-lock.js.map +1 -0
- package/dist/utils/debug.d.ts +11 -0
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +12 -1
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/error.d.ts +1 -1
- package/dist/utils/error.js +1 -1
- package/dist/utils/git.d.ts +54 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +91 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/logger.d.ts +71 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +85 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/sanitize-href.d.ts +28 -3
- package/dist/utils/sanitize-href.d.ts.map +1 -1
- package/dist/utils/sanitize-href.js +64 -6
- package/dist/utils/sanitize-href.js.map +1 -1
- package/dist/validation/entry-link-validator.d.ts +1 -1
- package/dist/validation/entry-link-validator.js +3 -3
- package/dist/validation/entry-link-validator.js.map +1 -1
- package/dist/validation/entry-type-reference-validator.d.ts +33 -0
- package/dist/validation/entry-type-reference-validator.d.ts.map +1 -0
- package/dist/validation/entry-type-reference-validator.js +110 -0
- package/dist/validation/entry-type-reference-validator.js.map +1 -0
- package/dist/validation/entry-validator.js +1 -1
- package/dist/validation/entry-validator.js.map +1 -1
- package/dist/worker/cms-worker.d.ts +245 -3
- package/dist/worker/cms-worker.d.ts.map +1 -1
- package/dist/worker/cms-worker.js +1084 -253
- package/dist/worker/cms-worker.js.map +1 -1
- package/dist/worker/log.d.ts +61 -0
- package/dist/worker/log.d.ts.map +1 -0
- package/dist/worker/log.js +74 -0
- package/dist/worker/log.js.map +1 -0
- package/package.json +4 -2
|
@@ -56,10 +56,10 @@ export declare const primitiveFieldSchema: z.ZodObject<{
|
|
|
56
56
|
isTitle: z.ZodOptional<z.ZodBoolean>;
|
|
57
57
|
isBody: z.ZodOptional<z.ZodBoolean>;
|
|
58
58
|
} & {
|
|
59
|
-
type: z.ZodEnum<["string", "number", "boolean", "datetime", "
|
|
59
|
+
type: z.ZodEnum<["string", "number", "boolean", "datetime", "markdown", "mdx", "code"]>;
|
|
60
60
|
}, "strip", z.ZodTypeAny, {
|
|
61
|
-
type: "string" | "number" | "boolean" | "code" | "datetime" | "rich-text" | "markdown" | "mdx";
|
|
62
61
|
name: string;
|
|
62
|
+
type: "string" | "number" | "boolean" | "code" | "datetime" | "markdown" | "mdx";
|
|
63
63
|
description?: string | undefined;
|
|
64
64
|
label?: string | undefined;
|
|
65
65
|
required?: boolean | undefined;
|
|
@@ -67,8 +67,8 @@ export declare const primitiveFieldSchema: z.ZodObject<{
|
|
|
67
67
|
isTitle?: boolean | undefined;
|
|
68
68
|
isBody?: boolean | undefined;
|
|
69
69
|
}, {
|
|
70
|
-
type: "string" | "number" | "boolean" | "code" | "datetime" | "rich-text" | "markdown" | "mdx";
|
|
71
70
|
name: string;
|
|
71
|
+
type: "string" | "number" | "boolean" | "code" | "datetime" | "markdown" | "mdx";
|
|
72
72
|
description?: string | undefined;
|
|
73
73
|
label?: string | undefined;
|
|
74
74
|
required?: boolean | undefined;
|
|
@@ -89,8 +89,8 @@ export declare const imageFieldSchema: z.ZodObject<{
|
|
|
89
89
|
aspect: z.ZodOptional<z.ZodString>;
|
|
90
90
|
altOptional: z.ZodOptional<z.ZodBoolean>;
|
|
91
91
|
}, "strip", z.ZodTypeAny, {
|
|
92
|
-
type: "image";
|
|
93
92
|
name: string;
|
|
93
|
+
type: "image";
|
|
94
94
|
description?: string | undefined;
|
|
95
95
|
label?: string | undefined;
|
|
96
96
|
required?: boolean | undefined;
|
|
@@ -100,8 +100,8 @@ export declare const imageFieldSchema: z.ZodObject<{
|
|
|
100
100
|
aspect?: string | undefined;
|
|
101
101
|
altOptional?: boolean | undefined;
|
|
102
102
|
}, {
|
|
103
|
-
type: "image";
|
|
104
103
|
name: string;
|
|
104
|
+
type: "image";
|
|
105
105
|
description?: string | undefined;
|
|
106
106
|
label?: string | undefined;
|
|
107
107
|
required?: boolean | undefined;
|
|
@@ -132,12 +132,12 @@ export declare const selectFieldSchema: z.ZodObject<{
|
|
|
132
132
|
label: string;
|
|
133
133
|
}>]>, "many">;
|
|
134
134
|
}, "strip", z.ZodTypeAny, {
|
|
135
|
+
name: string;
|
|
135
136
|
options: (string | {
|
|
136
137
|
value: string;
|
|
137
138
|
label: string;
|
|
138
139
|
})[];
|
|
139
140
|
type: "select";
|
|
140
|
-
name: string;
|
|
141
141
|
description?: string | undefined;
|
|
142
142
|
label?: string | undefined;
|
|
143
143
|
required?: boolean | undefined;
|
|
@@ -145,12 +145,12 @@ export declare const selectFieldSchema: z.ZodObject<{
|
|
|
145
145
|
isTitle?: boolean | undefined;
|
|
146
146
|
isBody?: boolean | undefined;
|
|
147
147
|
}, {
|
|
148
|
+
name: string;
|
|
148
149
|
options: (string | {
|
|
149
150
|
value: string;
|
|
150
151
|
label: string;
|
|
151
152
|
})[];
|
|
152
153
|
type: "select";
|
|
153
|
-
name: string;
|
|
154
154
|
description?: string | undefined;
|
|
155
155
|
label?: string | undefined;
|
|
156
156
|
required?: boolean | undefined;
|
|
@@ -182,8 +182,8 @@ export declare const referenceFieldSchema: z.ZodObject<{
|
|
|
182
182
|
label: string;
|
|
183
183
|
}>]>, "many">>;
|
|
184
184
|
}, "strip", z.ZodTypeAny, {
|
|
185
|
-
type: "reference";
|
|
186
185
|
name: string;
|
|
186
|
+
type: "reference";
|
|
187
187
|
options?: (string | {
|
|
188
188
|
value: string;
|
|
189
189
|
label: string;
|
|
@@ -198,8 +198,8 @@ export declare const referenceFieldSchema: z.ZodObject<{
|
|
|
198
198
|
entryTypes?: string[] | undefined;
|
|
199
199
|
displayField?: string | undefined;
|
|
200
200
|
}, {
|
|
201
|
-
type: "reference";
|
|
202
201
|
name: string;
|
|
202
|
+
type: "reference";
|
|
203
203
|
options?: (string | {
|
|
204
204
|
value: string;
|
|
205
205
|
label: string;
|
|
@@ -257,8 +257,8 @@ export declare const blockFieldSchema: z.ZodObject<{
|
|
|
257
257
|
label?: string | undefined;
|
|
258
258
|
}>, "many">;
|
|
259
259
|
}, "strip", z.ZodTypeAny, {
|
|
260
|
-
type: "block";
|
|
261
260
|
name: string;
|
|
261
|
+
type: "block";
|
|
262
262
|
templates: {
|
|
263
263
|
name: string;
|
|
264
264
|
fields: any[];
|
|
@@ -272,8 +272,8 @@ export declare const blockFieldSchema: z.ZodObject<{
|
|
|
272
272
|
isTitle?: boolean | undefined;
|
|
273
273
|
isBody?: boolean | undefined;
|
|
274
274
|
}, {
|
|
275
|
-
type: "block";
|
|
276
275
|
name: string;
|
|
276
|
+
type: "block";
|
|
277
277
|
templates: {
|
|
278
278
|
name: string;
|
|
279
279
|
fields: any[];
|
|
@@ -299,8 +299,8 @@ export declare const objectFieldSchema: z.ZodObject<{
|
|
|
299
299
|
type: z.ZodLiteral<"object">;
|
|
300
300
|
fields: z.ZodArray<z.ZodLazy<z.ZodTypeAny>, "many">;
|
|
301
301
|
}, "strip", z.ZodTypeAny, {
|
|
302
|
-
type: "object";
|
|
303
302
|
name: string;
|
|
303
|
+
type: "object";
|
|
304
304
|
fields: any[];
|
|
305
305
|
description?: string | undefined;
|
|
306
306
|
label?: string | undefined;
|
|
@@ -309,8 +309,8 @@ export declare const objectFieldSchema: z.ZodObject<{
|
|
|
309
309
|
isTitle?: boolean | undefined;
|
|
310
310
|
isBody?: boolean | undefined;
|
|
311
311
|
}, {
|
|
312
|
-
type: "object";
|
|
313
312
|
name: string;
|
|
313
|
+
type: "object";
|
|
314
314
|
fields: any[];
|
|
315
315
|
description?: string | undefined;
|
|
316
316
|
label?: string | undefined;
|
|
@@ -326,14 +326,14 @@ export declare const inlineGroupFieldSchema: z.ZodObject<{
|
|
|
326
326
|
description: z.ZodOptional<z.ZodString>;
|
|
327
327
|
fields: z.ZodArray<z.ZodLazy<z.ZodTypeAny>, "many">;
|
|
328
328
|
}, "strip", z.ZodTypeAny, {
|
|
329
|
-
type: "group";
|
|
330
329
|
name: string;
|
|
330
|
+
type: "group";
|
|
331
331
|
fields: any[];
|
|
332
332
|
description?: string | undefined;
|
|
333
333
|
label?: string | undefined;
|
|
334
334
|
}, {
|
|
335
|
-
type: "group";
|
|
336
335
|
name: string;
|
|
336
|
+
type: "group";
|
|
337
337
|
fields: any[];
|
|
338
338
|
description?: string | undefined;
|
|
339
339
|
label?: string | undefined;
|
package/dist/config/types.d.ts
CHANGED
|
@@ -9,8 +9,8 @@ import type { LogicalPath, ContentId } from '../paths/types';
|
|
|
9
9
|
import type { PermissionPath } from '../authorization/types';
|
|
10
10
|
import type { EntryLinkUrlResolver } from '../entry-link-resolver';
|
|
11
11
|
import type { CropRect } from '../assets/transform-directives';
|
|
12
|
-
export declare const primitiveFieldTypes: readonly ["string", "number", "boolean", "datetime", "
|
|
13
|
-
export declare const fieldTypes: readonly ["string", "number", "boolean", "datetime", "
|
|
12
|
+
export declare const primitiveFieldTypes: readonly ["string", "number", "boolean", "datetime", "markdown", "mdx", "code"];
|
|
13
|
+
export declare const fieldTypes: readonly ["string", "number", "boolean", "datetime", "markdown", "mdx", "code", "image", "select", "reference", "object", "block", "group"];
|
|
14
14
|
export type PrimitiveFieldType = (typeof primitiveFieldTypes)[number];
|
|
15
15
|
export type FieldType = (typeof fieldTypes)[number];
|
|
16
16
|
export type ContentFormat = 'md' | 'mdx' | 'json' | 'yaml';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAG9D,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.js
CHANGED
package/dist/config/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,cAAc;AACd,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,cAAc;AACd,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,UAAU;IACV,KAAK;IACL,MAAM;CACE,CAAA;AAEV,8EAA8E;AAC9E,4EAA4E;AAC5E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,GAAG,mBAAmB;IACtB,OAAO;IACP,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,OAAO;IACP,OAAO;CACC,CAAA"}
|
|
@@ -16,6 +16,15 @@ export declare const ensureSelectFieldsHaveOptions: (fields: unknown) => void;
|
|
|
16
16
|
* Throws an error if a reference field has neither.
|
|
17
17
|
*/
|
|
18
18
|
export declare const ensureReferenceFieldsHaveScope: (fields: unknown) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Walk a schema's fields and invoke `visit` for every reference field, descending
|
|
21
|
+
* into `group`/`object` fields and into each `block` template's fields.
|
|
22
|
+
*
|
|
23
|
+
* Schema-only by design: unlike validation/field-traversal.ts's `findFieldsByType`,
|
|
24
|
+
* which walks a schema alongside a concrete entry's data, this needs no data and so
|
|
25
|
+
* can run at config-validation and schema-load time, before any entry exists.
|
|
26
|
+
*/
|
|
27
|
+
export declare const forEachReferenceField: (fields: unknown, visit: (field: Record<string, unknown>) => void) => void;
|
|
19
28
|
/**
|
|
20
29
|
* Validate that inline groups don't cause field name collisions within the same scope.
|
|
21
30
|
* Because inline groups flatten their children into the parent scope, a field name used
|
|
@@ -36,6 +45,15 @@ export declare const ensureNoGroupsInsideComplexFields: (fields: unknown) => voi
|
|
|
36
45
|
* Performs Zod validation and normalizes paths. Field-shape validation for
|
|
37
46
|
* entry schemas runs at `createEntrySchemaRegistry` time.
|
|
38
47
|
*
|
|
48
|
+
* `mode` is resolved through `resolveOperatingMode` here rather than taken
|
|
49
|
+
* verbatim from the parsed config: one `canopycms.config.ts` is shared by
|
|
50
|
+
* local dev, the image build and the deployment, so the deployed value has to
|
|
51
|
+
* come from the environment. This is the single point every documented
|
|
52
|
+
* config-authoring path (`defineCanopyConfig`, `composeCanopyConfig`) funnels
|
|
53
|
+
* through, so the override cannot be bypassed by picking a different helper.
|
|
54
|
+
* The Zod schema still REQUIRES `mode` — the override replaces a declared
|
|
55
|
+
* value, it never supplies a missing one (SEC-C1).
|
|
56
|
+
*
|
|
39
57
|
* @param config - Raw configuration input
|
|
40
58
|
* @returns Validated and normalized CanopyConfig
|
|
41
59
|
* @throws Error if validation fails
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GAAI,QAAQ,OAAO,KAAG,IAoB/D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,8BAA8B,GAAI,QAAQ,OAAO,KAAG,IAWhE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,OAAO,EACf,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,KAC9C,IAgBF,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oCAAoC,GAC/C,QAAQ,OAAO,EACf,mBAA2B,KAC1B,IA0DF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,GAAI,QAAQ,OAAO,KAAG,IA4BnE,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,OAAO,KAAG,YAStD,CAAA"}
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { CanopyConfigSchema } from './schemas/config.js';
|
|
9
9
|
import { normalizePathValue } from './flatten.js';
|
|
10
|
+
// Leaf module, NOT the `operating-mode` barrel: the barrel re-exports the
|
|
11
|
+
// client-unsafe strategy (node:fs/node:path) and this file is reachable from
|
|
12
|
+
// `canopycms/client` (the generated editor page imports the adopter's config).
|
|
13
|
+
import { resolveOperatingMode } from '../operating-mode/mode-env.js';
|
|
10
14
|
/**
|
|
11
15
|
* Recursively check that all select fields have options defined.
|
|
12
16
|
* Throws an error if a select field is missing options.
|
|
@@ -38,27 +42,37 @@ export const ensureSelectFieldsHaveOptions = (fields) => {
|
|
|
38
42
|
* Throws an error if a reference field has neither.
|
|
39
43
|
*/
|
|
40
44
|
export const ensureReferenceFieldsHaveScope = (fields) => {
|
|
45
|
+
forEachReferenceField(fields, (f) => {
|
|
46
|
+
const hasCollections = Array.isArray(f.collections) && f.collections.length > 0;
|
|
47
|
+
const hasEntryTypes = Array.isArray(f.entryTypes) && f.entryTypes.length > 0;
|
|
48
|
+
if (!hasCollections && !hasEntryTypes) {
|
|
49
|
+
const fieldName = f?.name ?? 'unknown';
|
|
50
|
+
throw new Error(`Reference field "${fieldName}" requires at least one of "collections" or "entryTypes"`);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Walk a schema's fields and invoke `visit` for every reference field, descending
|
|
56
|
+
* into `group`/`object` fields and into each `block` template's fields.
|
|
57
|
+
*
|
|
58
|
+
* Schema-only by design: unlike validation/field-traversal.ts's `findFieldsByType`,
|
|
59
|
+
* which walks a schema alongside a concrete entry's data, this needs no data and so
|
|
60
|
+
* can run at config-validation and schema-load time, before any entry exists.
|
|
61
|
+
*/
|
|
62
|
+
export const forEachReferenceField = (fields, visit) => {
|
|
41
63
|
if (!Array.isArray(fields))
|
|
42
64
|
return;
|
|
43
65
|
for (const field of fields) {
|
|
44
66
|
const f = field;
|
|
45
67
|
if (f?.type === 'reference') {
|
|
46
|
-
|
|
47
|
-
const hasEntryTypes = Array.isArray(f.entryTypes) && f.entryTypes.length > 0;
|
|
48
|
-
if (!hasCollections && !hasEntryTypes) {
|
|
49
|
-
const fieldName = f?.name ?? 'unknown';
|
|
50
|
-
throw new Error(`Reference field "${fieldName}" requires at least one of "collections" or "entryTypes"`);
|
|
51
|
-
}
|
|
68
|
+
visit(f);
|
|
52
69
|
}
|
|
53
|
-
if (f?.type === 'group') {
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
if (f?.type === 'object') {
|
|
57
|
-
ensureReferenceFieldsHaveScope(f.fields);
|
|
70
|
+
if (f?.type === 'group' || f?.type === 'object') {
|
|
71
|
+
forEachReferenceField(f.fields, visit);
|
|
58
72
|
}
|
|
59
73
|
if (f?.type === 'block' && Array.isArray(f.templates)) {
|
|
60
74
|
for (const template of f.templates) {
|
|
61
|
-
|
|
75
|
+
forEachReferenceField(template.fields, visit);
|
|
62
76
|
}
|
|
63
77
|
}
|
|
64
78
|
}
|
|
@@ -164,6 +178,15 @@ export const ensureNoGroupsInsideComplexFields = (fields) => {
|
|
|
164
178
|
* Performs Zod validation and normalizes paths. Field-shape validation for
|
|
165
179
|
* entry schemas runs at `createEntrySchemaRegistry` time.
|
|
166
180
|
*
|
|
181
|
+
* `mode` is resolved through `resolveOperatingMode` here rather than taken
|
|
182
|
+
* verbatim from the parsed config: one `canopycms.config.ts` is shared by
|
|
183
|
+
* local dev, the image build and the deployment, so the deployed value has to
|
|
184
|
+
* come from the environment. This is the single point every documented
|
|
185
|
+
* config-authoring path (`defineCanopyConfig`, `composeCanopyConfig`) funnels
|
|
186
|
+
* through, so the override cannot be bypassed by picking a different helper.
|
|
187
|
+
* The Zod schema still REQUIRES `mode` — the override replaces a declared
|
|
188
|
+
* value, it never supplies a missing one (SEC-C1).
|
|
189
|
+
*
|
|
167
190
|
* @param config - Raw configuration input
|
|
168
191
|
* @returns Validated and normalized CanopyConfig
|
|
169
192
|
* @throws Error if validation fails
|
|
@@ -173,6 +196,7 @@ export const validateCanopyConfig = (config) => {
|
|
|
173
196
|
const normalized = {
|
|
174
197
|
...parsed,
|
|
175
198
|
contentRoot: normalizePathValue(parsed.contentRoot ?? 'content'),
|
|
199
|
+
mode: resolveOperatingMode(parsed.mode),
|
|
176
200
|
};
|
|
177
201
|
return normalized;
|
|
178
202
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,19 @@ export interface IdLocation {
|
|
|
6
6
|
collection?: LogicalPath;
|
|
7
7
|
slug?: Slug;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* A group of on-disk filenames whose names embed the same content ID,
|
|
11
|
+
* discovered by {@link ContentIdIndex.buildFromFilenames}. See the class doc
|
|
12
|
+
* comment's "Duplicate-ID quarantine" section for how `keptPath` is chosen
|
|
13
|
+
* and why it is deterministic across hosts.
|
|
14
|
+
*/
|
|
15
|
+
export interface DuplicateContentId {
|
|
16
|
+
id: ContentId;
|
|
17
|
+
/** The path retained in the index (the deterministic winner). Fully usable. */
|
|
18
|
+
keptPath: PhysicalPath;
|
|
19
|
+
/** Paths quarantined out of the index. Still on disk, unreachable by ID until repaired. */
|
|
20
|
+
droppedPaths: PhysicalPath[];
|
|
21
|
+
}
|
|
9
22
|
/**
|
|
10
23
|
* ContentIdIndex manages the bidirectional mapping between content IDs and file paths.
|
|
11
24
|
*
|
|
@@ -39,24 +52,103 @@ export interface IdLocation {
|
|
|
39
52
|
* (ID miss or index hit whose file is gone).
|
|
40
53
|
*
|
|
41
54
|
* **Race condition handling:**
|
|
42
|
-
* - Multiple processes creating entries simultaneously:
|
|
43
|
-
*
|
|
55
|
+
* - Multiple processes creating entries simultaneously: each generates a unique ID,
|
|
56
|
+
* so this cannot itself manufacture a duplicate-ID pair.
|
|
44
57
|
* - ContentStore.write() refuses to recreate an entry file whose ID the
|
|
45
58
|
* directory listing places at a different slug (existence guard), so stale
|
|
46
|
-
* indexes cannot manufacture duplicate-ID files.
|
|
59
|
+
* indexes cannot manufacture duplicate-ID files either. Together these two
|
|
60
|
+
* guarantees mean buildFromFilenames() can only ever encounter a duplicate
|
|
61
|
+
* ID that ALREADY existed on disk before the scan started (see below).
|
|
62
|
+
*
|
|
63
|
+
* ## Duplicate-ID quarantine (not fail-fast)
|
|
64
|
+
*
|
|
65
|
+
* A duplicate embedded ID can still land on disk from an external crash --
|
|
66
|
+
* e.g. ContentStore.renameEntry()'s `fs.link()` then `fs.unlink()` is not
|
|
67
|
+
* atomic, and a crash between the two steps leaves two filenames sharing one
|
|
68
|
+
* ID. Earlier versions of this class threw on the first such collision,
|
|
69
|
+
* which propagated out of every caller and (since ContentStore's rebuild has
|
|
70
|
+
* no catch around it) permanently bricked read-by-id, reference resolution,
|
|
71
|
+
* collection listing, and every write on the branch -- one bad pair took the
|
|
72
|
+
* whole branch down.
|
|
73
|
+
*
|
|
74
|
+
* `buildFromFilenames()` now quarantines a collision instead of throwing:
|
|
75
|
+
* the two (or more) candidates sharing an ID are resolved to a single
|
|
76
|
+
* deterministic winner -- the lexicographically-**smallest** relativePath,
|
|
77
|
+
* chosen purely by comparing the candidate strings, never by which one the
|
|
78
|
+
* scan happened to visit first. This is what makes the choice agree across
|
|
79
|
+
* hosts: two Lambdas (or a Lambda and the EC2 worker) scanning the same
|
|
80
|
+
* directory can observe entries in different `readdir()` orders, but the
|
|
81
|
+
* MIN of a fixed set of strings does not depend on visitation order, so
|
|
82
|
+
* every host converges on the same winner. The loser(s) are excluded from
|
|
83
|
+
* `idToLocation`/`pathToId`/`byCollection` entirely (as if not indexed) and
|
|
84
|
+
* recorded in {@link getDuplicateIds} for admin-facing health reporting
|
|
85
|
+
* (branch-health.ts) and repair (api/admin-branch-health.ts). A branch with a
|
|
86
|
+
* quarantined duplicate is degraded (that one ID pair is invisible to
|
|
87
|
+
* ID-based lookups) but not dead.
|
|
88
|
+
*
|
|
89
|
+
* ### What quarantine does NOT promise
|
|
90
|
+
*
|
|
91
|
+
* Quarantining is an INDEX decision: this scan never touches the filesystem,
|
|
92
|
+
* so nothing here moves or deletes the dropped file. It does not follow that
|
|
93
|
+
* the dropped file is inert until an admin repairs it, and an earlier version
|
|
94
|
+
* of this comment wrongly claimed exactly that ("left untouched on disk until
|
|
95
|
+
* a human or the repair action moves them"). Slugs are resolved by directory
|
|
96
|
+
* scan (`ContentStore.buildPaths()`), which knows nothing about this
|
|
97
|
+
* quarantine, so the dropped file stays fully addressable by
|
|
98
|
+
* collection+slug: a stale editor tab can still save, delete or rename it.
|
|
99
|
+
*
|
|
100
|
+
* The dangerous case was the save. `ContentStore.write()`'s index-repair step
|
|
101
|
+
* reads "the index says this ID lives somewhere else" as "the slug changed"
|
|
102
|
+
* and unlinks that other file -- which, with a duplicate, is a DIFFERENT
|
|
103
|
+
* document (the kept one). It silently deleted the winner while reporting
|
|
104
|
+
* success. `write()` now refuses such a save with `DuplicateContentIdError`
|
|
105
|
+
* instead (see its "[F1] duplicate-ID guard"). `delete()`/`renameEntry()`
|
|
106
|
+
* were never affected: they only ever touch the file the caller addressed,
|
|
107
|
+
* and are deliberately still allowed, so removing or moving the dropped file
|
|
108
|
+
* by hand remains possible without an admin.
|
|
47
109
|
*/
|
|
48
110
|
export declare class ContentIdIndex {
|
|
49
111
|
private idToLocation;
|
|
50
112
|
private pathToId;
|
|
51
113
|
private byCollection;
|
|
114
|
+
/**
|
|
115
|
+
* IDs discovered on more than one file during buildFromFilenames, keyed by
|
|
116
|
+
* id, mapping to every quarantined (losing) path seen for that id. Never
|
|
117
|
+
* populated by add()/remove()/updatePath(), which still throw on collision
|
|
118
|
+
* -- see those methods' doc comments.
|
|
119
|
+
*/
|
|
120
|
+
private duplicateIds;
|
|
52
121
|
private root;
|
|
53
122
|
constructor(root: string);
|
|
54
123
|
/**
|
|
55
|
-
* Build index by scanning filenames recursively.
|
|
56
|
-
*
|
|
124
|
+
* Build index by scanning filenames recursively. Duplicate embedded IDs
|
|
125
|
+
* are quarantined, not thrown on -- see the class doc comment's
|
|
126
|
+
* "Duplicate-ID quarantine" section and {@link getDuplicateIds}.
|
|
57
127
|
*/
|
|
58
128
|
buildFromFilenames(startPath?: string): Promise<void>;
|
|
129
|
+
/** Insert a location into all three indexes. Caller must ensure no existing entry for this id. */
|
|
130
|
+
private insertLocation;
|
|
131
|
+
/** Remove a location from all three indexes -- used when a lexicographically-earlier duplicate displaces it. */
|
|
132
|
+
private evictLocation;
|
|
133
|
+
/** Record a quarantined duplicate path for admin-facing health reporting (see getDuplicateIds). */
|
|
134
|
+
private recordDuplicate;
|
|
59
135
|
private scanDirectory;
|
|
136
|
+
/**
|
|
137
|
+
* IDs discovered on more than one file during the last buildFromFilenames
|
|
138
|
+
* scan. Empty unless the content tree currently has a duplicate-ID pair
|
|
139
|
+
* (see the class doc comment). Consumed by branch-health.ts's admin scan
|
|
140
|
+
* and by the repair-content-duplicates admin action
|
|
141
|
+
* (api/admin-branch-health.ts).
|
|
142
|
+
*/
|
|
143
|
+
getDuplicateIds(): DuplicateContentId[];
|
|
144
|
+
/**
|
|
145
|
+
* The quarantine record for ONE id, or null when that id is not
|
|
146
|
+
* duplicated. The O(1) counterpart to {@link getDuplicateIds} for the
|
|
147
|
+
* write path, which has to ask this question on every save whose resolved
|
|
148
|
+
* path disagrees with the index (ContentStore.write()'s duplicate-ID
|
|
149
|
+
* guard) and must not pay for materializing the whole list.
|
|
150
|
+
*/
|
|
151
|
+
getDuplicateFor(id: string): DuplicateContentId | null;
|
|
60
152
|
/**
|
|
61
153
|
* Forward lookup: ID → location (O(1))
|
|
62
154
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-id-index.d.ts","sourceRoot":"","sources":["../src/content-id-index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content-id-index.d.ts","sourceRoot":"","sources":["../src/content-id-index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAA;AAmBxF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,SAAS,CAAA;IACb,IAAI,EAAE,OAAO,GAAG,YAAY,CAAA;IAC5B,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,CAAC,EAAE,WAAW,CAAA;IACxB,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,SAAS,CAAA;IACb,+EAA+E;IAC/E,QAAQ,EAAE,YAAY,CAAA;IACtB,2FAA2F;IAC3F,YAAY,EAAE,YAAY,EAAE,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,YAAY,CAAsC;IAC1D;;;;;OAKG;IACH,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,IAAI,CAAQ;gBAER,IAAI,EAAE,MAAM;IAIxB;;;;OAIG;IACG,kBAAkB,CAAC,SAAS,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,kGAAkG;IAClG,OAAO,CAAC,cAAc;IAWtB,gHAAgH;IAChH,OAAO,CAAC,aAAa;IAYrB,mGAAmG;IACnG,OAAO,CAAC,eAAe;YAST,aAAa;IAkF3B;;;;;;OAMG;IACH,eAAe,IAAI,kBAAkB,EAAE;IASvC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAiBtD;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAIvC;;OAEG;IACH,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;IAIxD;;;OAGG;IACH,eAAe,IAAI,UAAU,EAAE;IAI/B;;;;;;;OAOG;IACH,sBAAsB,CAAC,cAAc,EAAE,WAAW,GAAG,UAAU,EAAE;IAiBjE;;;;;;;;;OASG;IACH,0BAA0B,CAAC,cAAc,EAAE,WAAW,GAAG,UAAU,EAAE;IAkBrE;;;;;;;OAOG;IACH,oBAAoB,IAAI,UAAU,EAAE;IAepC;;;;OAIG;IACH,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI;IAgC3C;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAoB3B;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,GAAG,IAAI;CA6C/D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAuBxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc5E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAsCtF"}
|