canopycms 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +404 -0
- package/dist/__integration__/fixtures/content-seeds.d.ts +43 -0
- package/dist/__integration__/fixtures/content-seeds.d.ts.map +1 -0
- package/dist/__integration__/fixtures/content-seeds.js +99 -0
- package/dist/__integration__/fixtures/content-seeds.js.map +1 -0
- package/dist/__integration__/fixtures/schemas.d.ts +12 -0
- package/dist/__integration__/fixtures/schemas.d.ts.map +1 -0
- package/dist/__integration__/fixtures/schemas.js +65 -0
- package/dist/__integration__/fixtures/schemas.js.map +1 -0
- package/dist/__integration__/test-utils/api-client.d.ts +123 -0
- package/dist/__integration__/test-utils/api-client.d.ts.map +1 -0
- package/dist/__integration__/test-utils/api-client.js +118 -0
- package/dist/__integration__/test-utils/api-client.js.map +1 -0
- package/dist/__integration__/test-utils/multi-user.d.ts +25 -0
- package/dist/__integration__/test-utils/multi-user.d.ts.map +1 -0
- package/dist/__integration__/test-utils/multi-user.js +105 -0
- package/dist/__integration__/test-utils/multi-user.js.map +1 -0
- package/dist/__integration__/test-utils/test-workspace.d.ts +25 -0
- package/dist/__integration__/test-utils/test-workspace.d.ts.map +1 -0
- package/dist/__integration__/test-utils/test-workspace.js +102 -0
- package/dist/__integration__/test-utils/test-workspace.js.map +1 -0
- package/dist/ai/generate.d.ts +31 -0
- package/dist/ai/generate.d.ts.map +1 -0
- package/dist/ai/generate.js +277 -0
- package/dist/ai/generate.js.map +1 -0
- package/dist/ai/handler.d.ts +38 -0
- package/dist/ai/handler.d.ts.map +1 -0
- package/dist/ai/handler.js +99 -0
- package/dist/ai/handler.js.map +1 -0
- package/dist/ai/index.d.ts +13 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +10 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/json-to-markdown.d.ts +15 -0
- package/dist/ai/json-to-markdown.d.ts.map +1 -0
- package/dist/ai/json-to-markdown.js +318 -0
- package/dist/ai/json-to-markdown.js.map +1 -0
- package/dist/ai/resolve-branch.d.ts +13 -0
- package/dist/ai/resolve-branch.d.ts.map +1 -0
- package/dist/ai/resolve-branch.js +27 -0
- package/dist/ai/resolve-branch.js.map +1 -0
- package/dist/ai/types.d.ts +133 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +14 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/api/__test__/mock-client.d.ts +194 -0
- package/dist/api/__test__/mock-client.d.ts.map +1 -0
- package/dist/api/__test__/mock-client.js +322 -0
- package/dist/api/__test__/mock-client.js.map +1 -0
- package/dist/api/assets.d.ts +52 -0
- package/dist/api/assets.d.ts.map +1 -0
- package/dist/api/assets.js +106 -0
- package/dist/api/assets.js.map +1 -0
- package/dist/api/branch-merge.d.ts +28 -0
- package/dist/api/branch-merge.d.ts.map +1 -0
- package/dist/api/branch-merge.js +87 -0
- package/dist/api/branch-merge.js.map +1 -0
- package/dist/api/branch-review.d.ts +42 -0
- package/dist/api/branch-review.d.ts.map +1 -0
- package/dist/api/branch-review.js +102 -0
- package/dist/api/branch-review.js.map +1 -0
- package/dist/api/branch-status.d.ts +81 -0
- package/dist/api/branch-status.d.ts.map +1 -0
- package/dist/api/branch-status.js +125 -0
- package/dist/api/branch-status.js.map +1 -0
- package/dist/api/branch-withdraw.d.ts +18 -0
- package/dist/api/branch-withdraw.d.ts.map +1 -0
- package/dist/api/branch-withdraw.js +64 -0
- package/dist/api/branch-withdraw.js.map +1 -0
- package/dist/api/branch.d.ts +188 -0
- package/dist/api/branch.d.ts.map +1 -0
- package/dist/api/branch.js +381 -0
- package/dist/api/branch.js.map +1 -0
- package/dist/api/client.d.ts +289 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +412 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/comments.d.ts +84 -0
- package/dist/api/comments.d.ts.map +1 -0
- package/dist/api/comments.js +142 -0
- package/dist/api/comments.js.map +1 -0
- package/dist/api/content.d.ts +154 -0
- package/dist/api/content.d.ts.map +1 -0
- package/dist/api/content.js +308 -0
- package/dist/api/content.js.map +1 -0
- package/dist/api/entries.d.ts +155 -0
- package/dist/api/entries.d.ts.map +1 -0
- package/dist/api/entries.js +466 -0
- package/dist/api/entries.js.map +1 -0
- package/dist/api/github-sync.d.ts +22 -0
- package/dist/api/github-sync.d.ts.map +1 -0
- package/dist/api/github-sync.js +121 -0
- package/dist/api/github-sync.js.map +1 -0
- package/dist/api/groups.d.ts +91 -0
- package/dist/api/groups.d.ts.map +1 -0
- package/dist/api/groups.js +270 -0
- package/dist/api/groups.js.map +1 -0
- package/dist/api/guards.d.ts +58 -0
- package/dist/api/guards.d.ts.map +1 -0
- package/dist/api/guards.js +166 -0
- package/dist/api/guards.js.map +1 -0
- package/dist/api/index.d.ts +18 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +8 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/permissions.d.ts +278 -0
- package/dist/api/permissions.d.ts.map +1 -0
- package/dist/api/permissions.js +257 -0
- package/dist/api/permissions.js.map +1 -0
- package/dist/api/reference-options.d.ts +27 -0
- package/dist/api/reference-options.d.ts.map +1 -0
- package/dist/api/reference-options.js +88 -0
- package/dist/api/reference-options.js.map +1 -0
- package/dist/api/resolve-references.d.ts +32 -0
- package/dist/api/resolve-references.d.ts.map +1 -0
- package/dist/api/resolve-references.js +77 -0
- package/dist/api/resolve-references.js.map +1 -0
- package/dist/api/route-builder.d.ts +120 -0
- package/dist/api/route-builder.d.ts.map +1 -0
- package/dist/api/route-builder.js +108 -0
- package/dist/api/route-builder.js.map +1 -0
- package/dist/api/schema.d.ts +713 -0
- package/dist/api/schema.d.ts.map +1 -0
- package/dist/api/schema.js +656 -0
- package/dist/api/schema.js.map +1 -0
- package/dist/api/settings-helpers.d.ts +33 -0
- package/dist/api/settings-helpers.d.ts.map +1 -0
- package/dist/api/settings-helpers.js +61 -0
- package/dist/api/settings-helpers.js.map +1 -0
- package/dist/api/types.d.ts +37 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +2 -0
- package/dist/api/types.js.map +1 -0
- package/dist/api/user.d.ts +9 -0
- package/dist/api/user.d.ts.map +1 -0
- package/dist/api/user.js +34 -0
- package/dist/api/user.js.map +1 -0
- package/dist/api/validators.d.ts +85 -0
- package/dist/api/validators.d.ts.map +1 -0
- package/dist/api/validators.js +160 -0
- package/dist/api/validators.js.map +1 -0
- package/dist/asset-store.d.ts +32 -0
- package/dist/asset-store.d.ts.map +1 -0
- package/dist/asset-store.js +84 -0
- package/dist/asset-store.js.map +1 -0
- package/dist/auth/cache.d.ts +8 -0
- package/dist/auth/cache.d.ts.map +1 -0
- package/dist/auth/cache.js +8 -0
- package/dist/auth/cache.js.map +1 -0
- package/dist/auth/caching-auth-plugin.d.ts +42 -0
- package/dist/auth/caching-auth-plugin.d.ts.map +1 -0
- package/dist/auth/caching-auth-plugin.js +78 -0
- package/dist/auth/caching-auth-plugin.js.map +1 -0
- package/dist/auth/context-helpers.d.ts +31 -0
- package/dist/auth/context-helpers.d.ts.map +1 -0
- package/dist/auth/context-helpers.js +53 -0
- package/dist/auth/context-helpers.js.map +1 -0
- package/dist/auth/file-based-auth-cache.d.ts +46 -0
- package/dist/auth/file-based-auth-cache.d.ts.map +1 -0
- package/dist/auth/file-based-auth-cache.js +226 -0
- package/dist/auth/file-based-auth-cache.js.map +1 -0
- package/dist/auth/index.d.ts +6 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/plugin.d.ts +48 -0
- package/dist/auth/plugin.d.ts.map +1 -0
- package/dist/auth/plugin.js +2 -0
- package/dist/auth/plugin.js.map +1 -0
- package/dist/auth/types.d.ts +36 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/authorization/branch.d.ts +29 -0
- package/dist/authorization/branch.d.ts.map +1 -0
- package/dist/authorization/branch.js +67 -0
- package/dist/authorization/branch.js.map +1 -0
- package/dist/authorization/content.d.ts +38 -0
- package/dist/authorization/content.d.ts.map +1 -0
- package/dist/authorization/content.js +65 -0
- package/dist/authorization/content.js.map +1 -0
- package/dist/authorization/groups/index.d.ts +6 -0
- package/dist/authorization/groups/index.d.ts.map +1 -0
- package/dist/authorization/groups/index.js +6 -0
- package/dist/authorization/groups/index.js.map +1 -0
- package/dist/authorization/groups/loader.d.ts +24 -0
- package/dist/authorization/groups/loader.d.ts.map +1 -0
- package/dist/authorization/groups/loader.js +98 -0
- package/dist/authorization/groups/loader.js.map +1 -0
- package/dist/authorization/groups/schema.d.ts +67 -0
- package/dist/authorization/groups/schema.d.ts.map +1 -0
- package/dist/authorization/groups/schema.js +31 -0
- package/dist/authorization/groups/schema.js.map +1 -0
- package/dist/authorization/helpers.d.ts +35 -0
- package/dist/authorization/helpers.d.ts.map +1 -0
- package/dist/authorization/helpers.js +42 -0
- package/dist/authorization/helpers.js.map +1 -0
- package/dist/authorization/index.d.ts +36 -0
- package/dist/authorization/index.d.ts.map +1 -0
- package/dist/authorization/index.js +42 -0
- package/dist/authorization/index.js.map +1 -0
- package/dist/authorization/path.d.ts +29 -0
- package/dist/authorization/path.d.ts.map +1 -0
- package/dist/authorization/path.js +71 -0
- package/dist/authorization/path.js.map +1 -0
- package/dist/authorization/permissions/index.d.ts +6 -0
- package/dist/authorization/permissions/index.d.ts.map +1 -0
- package/dist/authorization/permissions/index.js +6 -0
- package/dist/authorization/permissions/index.js.map +1 -0
- package/dist/authorization/permissions/loader.d.ts +33 -0
- package/dist/authorization/permissions/loader.d.ts.map +1 -0
- package/dist/authorization/permissions/loader.js +85 -0
- package/dist/authorization/permissions/loader.js.map +1 -0
- package/dist/authorization/permissions/schema.d.ts +133 -0
- package/dist/authorization/permissions/schema.d.ts.map +1 -0
- package/dist/authorization/permissions/schema.js +56 -0
- package/dist/authorization/permissions/schema.js.map +1 -0
- package/dist/authorization/test-utils.d.ts +14 -0
- package/dist/authorization/test-utils.d.ts.map +1 -0
- package/dist/authorization/test-utils.js +13 -0
- package/dist/authorization/test-utils.js.map +1 -0
- package/dist/authorization/types.d.ts +55 -0
- package/dist/authorization/types.d.ts.map +1 -0
- package/dist/authorization/types.js +8 -0
- package/dist/authorization/types.js.map +1 -0
- package/dist/authorization/validation.d.ts +32 -0
- package/dist/authorization/validation.d.ts.map +1 -0
- package/dist/authorization/validation.js +53 -0
- package/dist/authorization/validation.js.map +1 -0
- package/dist/branch-metadata.d.ts +52 -0
- package/dist/branch-metadata.d.ts.map +1 -0
- package/dist/branch-metadata.js +125 -0
- package/dist/branch-metadata.js.map +1 -0
- package/dist/branch-registry.d.ts +44 -0
- package/dist/branch-registry.d.ts.map +1 -0
- package/dist/branch-registry.js +129 -0
- package/dist/branch-registry.js.map +1 -0
- package/dist/branch-schema-cache.d.ts +60 -0
- package/dist/branch-schema-cache.d.ts.map +1 -0
- package/dist/branch-schema-cache.js +142 -0
- package/dist/branch-schema-cache.js.map +1 -0
- package/dist/branch-workspace.d.ts +25 -0
- package/dist/branch-workspace.d.ts.map +1 -0
- package/dist/branch-workspace.js +87 -0
- package/dist/branch-workspace.js.map +1 -0
- package/dist/build/generate-ai-content.d.ts +28 -0
- package/dist/build/generate-ai-content.d.ts.map +1 -0
- package/dist/build/generate-ai-content.js +56 -0
- package/dist/build/generate-ai-content.js.map +1 -0
- package/dist/build/index.d.ts +8 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +7 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build-mode.d.ts +12 -0
- package/dist/build-mode.d.ts.map +1 -0
- package/dist/build-mode.js +25 -0
- package/dist/build-mode.js.map +1 -0
- package/dist/cli/generate-ai-content.d.ts +13 -0
- package/dist/cli/generate-ai-content.d.ts.map +1 -0
- package/dist/cli/generate-ai-content.js +78 -0
- package/dist/cli/generate-ai-content.js.map +1 -0
- package/dist/cli/init.d.ts +34 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +372 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/templates.d.ts +20 -0
- package/dist/cli/templates.d.ts.map +1 -0
- package/dist/cli/templates.js +38 -0
- package/dist/cli/templates.js.map +1 -0
- package/dist/client.d.ts +11 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +11 -0
- package/dist/client.js.map +1 -0
- package/dist/comment-store.d.ts +94 -0
- package/dist/comment-store.d.ts.map +1 -0
- package/dist/comment-store.js +234 -0
- package/dist/comment-store.js.map +1 -0
- package/dist/config/flatten.d.ts +29 -0
- package/dist/config/flatten.d.ts.map +1 -0
- package/dist/config/flatten.js +153 -0
- package/dist/config/flatten.js.map +1 -0
- package/dist/config/helpers.d.ts +48 -0
- package/dist/config/helpers.d.ts.map +1 -0
- package/dist/config/helpers.js +138 -0
- package/dist/config/helpers.js.map +1 -0
- package/dist/config/index.d.ts +21 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +23 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schemas/collection.d.ts +94 -0
- package/dist/config/schemas/collection.d.ts.map +1 -0
- package/dist/config/schemas/collection.js +57 -0
- package/dist/config/schemas/collection.js.map +1 -0
- package/dist/config/schemas/config.d.ts +304 -0
- package/dist/config/schemas/config.d.ts.map +1 -0
- package/dist/config/schemas/config.js +70 -0
- package/dist/config/schemas/config.js.map +1 -0
- package/dist/config/schemas/field.d.ts +276 -0
- package/dist/config/schemas/field.d.ts.map +1 -0
- package/dist/config/schemas/field.js +90 -0
- package/dist/config/schemas/field.js.map +1 -0
- package/dist/config/schemas/media.d.ts +48 -0
- package/dist/config/schemas/media.d.ts.map +1 -0
- package/dist/config/schemas/media.js +26 -0
- package/dist/config/schemas/media.js.map +1 -0
- package/dist/config/schemas/permissions.d.ts +76 -0
- package/dist/config/schemas/permissions.d.ts.map +1 -0
- package/dist/config/schemas/permissions.js +17 -0
- package/dist/config/schemas/permissions.js.map +1 -0
- package/dist/config/types.d.ts +272 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +24 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/validation.d.ts +19 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +66 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/config-test.d.ts +18 -0
- package/dist/config-test.d.ts.map +1 -0
- package/dist/config-test.js +42 -0
- package/dist/config-test.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +11 -0
- package/dist/config.js.map +1 -0
- package/dist/content-id-index.d.ts +152 -0
- package/dist/content-id-index.d.ts.map +1 -0
- package/dist/content-id-index.js +416 -0
- package/dist/content-id-index.js.map +1 -0
- package/dist/content-reader.d.ts +36 -0
- package/dist/content-reader.d.ts.map +1 -0
- package/dist/content-reader.js +149 -0
- package/dist/content-reader.js.map +1 -0
- package/dist/content-store.d.ts +129 -0
- package/dist/content-store.d.ts.map +1 -0
- package/dist/content-store.js +611 -0
- package/dist/content-store.js.map +1 -0
- package/dist/context.d.ts +44 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +69 -0
- package/dist/context.js.map +1 -0
- package/dist/editor/BranchManager.d.ts +62 -0
- package/dist/editor/BranchManager.d.ts.map +1 -0
- package/dist/editor/BranchManager.js +87 -0
- package/dist/editor/BranchManager.js.map +1 -0
- package/dist/editor/BranchManager.stories.d.ts +8 -0
- package/dist/editor/BranchManager.stories.d.ts.map +1 -0
- package/dist/editor/BranchManager.stories.js +74 -0
- package/dist/editor/BranchManager.stories.js.map +1 -0
- package/dist/editor/CanopyEditor.d.ts +10 -0
- package/dist/editor/CanopyEditor.d.ts.map +1 -0
- package/dist/editor/CanopyEditor.js +20 -0
- package/dist/editor/CanopyEditor.js.map +1 -0
- package/dist/editor/CanopyEditor.stories.d.ts +7 -0
- package/dist/editor/CanopyEditor.stories.d.ts.map +1 -0
- package/dist/editor/CanopyEditor.stories.js +99 -0
- package/dist/editor/CanopyEditor.stories.js.map +1 -0
- package/dist/editor/CanopyEditorPage.d.ts +12 -0
- package/dist/editor/CanopyEditorPage.d.ts.map +1 -0
- package/dist/editor/CanopyEditorPage.js +13 -0
- package/dist/editor/CanopyEditorPage.js.map +1 -0
- package/dist/editor/CommentsPanel.d.ts +21 -0
- package/dist/editor/CommentsPanel.d.ts.map +1 -0
- package/dist/editor/CommentsPanel.js +77 -0
- package/dist/editor/CommentsPanel.js.map +1 -0
- package/dist/editor/CommentsPanel.stories.d.ts +10 -0
- package/dist/editor/CommentsPanel.stories.d.ts.map +1 -0
- package/dist/editor/CommentsPanel.stories.js +175 -0
- package/dist/editor/CommentsPanel.stories.js.map +1 -0
- package/dist/editor/Editor.d.ts +72 -0
- package/dist/editor/Editor.d.ts.map +1 -0
- package/dist/editor/Editor.js +568 -0
- package/dist/editor/Editor.js.map +1 -0
- package/dist/editor/Editor.stories.d.ts +7 -0
- package/dist/editor/Editor.stories.d.ts.map +1 -0
- package/dist/editor/Editor.stories.js +95 -0
- package/dist/editor/Editor.stories.js.map +1 -0
- package/dist/editor/EditorPanes.d.ts +11 -0
- package/dist/editor/EditorPanes.d.ts.map +1 -0
- package/dist/editor/EditorPanes.js +99 -0
- package/dist/editor/EditorPanes.js.map +1 -0
- package/dist/editor/EditorPanes.stories.d.ts +7 -0
- package/dist/editor/EditorPanes.stories.d.ts.map +1 -0
- package/dist/editor/EditorPanes.stories.js +116 -0
- package/dist/editor/EditorPanes.stories.js.map +1 -0
- package/dist/editor/EntryNavigator.d.ts +48 -0
- package/dist/editor/EntryNavigator.d.ts.map +1 -0
- package/dist/editor/EntryNavigator.js +331 -0
- package/dist/editor/EntryNavigator.js.map +1 -0
- package/dist/editor/EntryNavigator.stories.d.ts +8 -0
- package/dist/editor/EntryNavigator.stories.d.ts.map +1 -0
- package/dist/editor/EntryNavigator.stories.js +42 -0
- package/dist/editor/EntryNavigator.stories.js.map +1 -0
- package/dist/editor/FormRenderer.d.ts +34 -0
- package/dist/editor/FormRenderer.d.ts.map +1 -0
- package/dist/editor/FormRenderer.js +127 -0
- package/dist/editor/FormRenderer.js.map +1 -0
- package/dist/editor/FormRenderer.stories.d.ts +7 -0
- package/dist/editor/FormRenderer.stories.d.ts.map +1 -0
- package/dist/editor/FormRenderer.stories.js +115 -0
- package/dist/editor/FormRenderer.stories.js.map +1 -0
- package/dist/editor/GroupManager.d.ts +7 -0
- package/dist/editor/GroupManager.d.ts.map +1 -0
- package/dist/editor/GroupManager.js +7 -0
- package/dist/editor/GroupManager.js.map +1 -0
- package/dist/editor/GroupManager.stories.d.ts +19 -0
- package/dist/editor/GroupManager.stories.d.ts.map +1 -0
- package/dist/editor/GroupManager.stories.js +265 -0
- package/dist/editor/GroupManager.stories.js.map +1 -0
- package/dist/editor/PermissionManager.d.ts +9 -0
- package/dist/editor/PermissionManager.d.ts.map +1 -0
- package/dist/editor/PermissionManager.js +9 -0
- package/dist/editor/PermissionManager.js.map +1 -0
- package/dist/editor/PermissionManager.stories.d.ts +20 -0
- package/dist/editor/PermissionManager.stories.d.ts.map +1 -0
- package/dist/editor/PermissionManager.stories.js +506 -0
- package/dist/editor/PermissionManager.stories.js.map +1 -0
- package/dist/editor/canopy-path.d.ts +17 -0
- package/dist/editor/canopy-path.d.ts.map +1 -0
- package/dist/editor/canopy-path.js +49 -0
- package/dist/editor/canopy-path.js.map +1 -0
- package/dist/editor/client-reference-resolver.d.ts +18 -0
- package/dist/editor/client-reference-resolver.d.ts.map +1 -0
- package/dist/editor/client-reference-resolver.js +87 -0
- package/dist/editor/client-reference-resolver.js.map +1 -0
- package/dist/editor/comments/BranchComments.d.ts +27 -0
- package/dist/editor/comments/BranchComments.d.ts.map +1 -0
- package/dist/editor/comments/BranchComments.js +26 -0
- package/dist/editor/comments/BranchComments.js.map +1 -0
- package/dist/editor/comments/EntryComments.d.ts +26 -0
- package/dist/editor/comments/EntryComments.d.ts.map +1 -0
- package/dist/editor/comments/EntryComments.js +26 -0
- package/dist/editor/comments/EntryComments.js.map +1 -0
- package/dist/editor/comments/FieldWrapper.d.ts +32 -0
- package/dist/editor/comments/FieldWrapper.d.ts.map +1 -0
- package/dist/editor/comments/FieldWrapper.js +41 -0
- package/dist/editor/comments/FieldWrapper.js.map +1 -0
- package/dist/editor/comments/FieldWrapper.stories.d.ts +10 -0
- package/dist/editor/comments/FieldWrapper.stories.d.ts.map +1 -0
- package/dist/editor/comments/FieldWrapper.stories.js +173 -0
- package/dist/editor/comments/FieldWrapper.stories.js.map +1 -0
- package/dist/editor/comments/InlineCommentThread.d.ts +23 -0
- package/dist/editor/comments/InlineCommentThread.d.ts.map +1 -0
- package/dist/editor/comments/InlineCommentThread.js +82 -0
- package/dist/editor/comments/InlineCommentThread.js.map +1 -0
- package/dist/editor/comments/ThreadCarousel.d.ts +110 -0
- package/dist/editor/comments/ThreadCarousel.d.ts.map +1 -0
- package/dist/editor/comments/ThreadCarousel.js +223 -0
- package/dist/editor/comments/ThreadCarousel.js.map +1 -0
- package/dist/editor/components/ConfirmDeleteModal.d.ts +15 -0
- package/dist/editor/components/ConfirmDeleteModal.d.ts.map +1 -0
- package/dist/editor/components/ConfirmDeleteModal.js +11 -0
- package/dist/editor/components/ConfirmDeleteModal.js.map +1 -0
- package/dist/editor/components/EditorContext.d.ts +35 -0
- package/dist/editor/components/EditorContext.d.ts.map +1 -0
- package/dist/editor/components/EditorContext.js +19 -0
- package/dist/editor/components/EditorContext.js.map +1 -0
- package/dist/editor/components/EditorFooter.d.ts +20 -0
- package/dist/editor/components/EditorFooter.d.ts.map +1 -0
- package/dist/editor/components/EditorFooter.js +15 -0
- package/dist/editor/components/EditorFooter.js.map +1 -0
- package/dist/editor/components/EditorHeader.d.ts +166 -0
- package/dist/editor/components/EditorHeader.d.ts.map +1 -0
- package/dist/editor/components/EditorHeader.js +99 -0
- package/dist/editor/components/EditorHeader.js.map +1 -0
- package/dist/editor/components/EditorSidebar.d.ts +76 -0
- package/dist/editor/components/EditorSidebar.d.ts.map +1 -0
- package/dist/editor/components/EditorSidebar.js +40 -0
- package/dist/editor/components/EditorSidebar.js.map +1 -0
- package/dist/editor/components/EntryCreateModal.d.ts +27 -0
- package/dist/editor/components/EntryCreateModal.d.ts.map +1 -0
- package/dist/editor/components/EntryCreateModal.js +78 -0
- package/dist/editor/components/EntryCreateModal.js.map +1 -0
- package/dist/editor/components/RenameEntryModal.d.ts +18 -0
- package/dist/editor/components/RenameEntryModal.d.ts.map +1 -0
- package/dist/editor/components/RenameEntryModal.js +62 -0
- package/dist/editor/components/RenameEntryModal.js.map +1 -0
- package/dist/editor/components/UserBadge.d.ts +28 -0
- package/dist/editor/components/UserBadge.d.ts.map +1 -0
- package/dist/editor/components/UserBadge.js +93 -0
- package/dist/editor/components/UserBadge.js.map +1 -0
- package/dist/editor/components/index.d.ts +4 -0
- package/dist/editor/components/index.d.ts.map +1 -0
- package/dist/editor/components/index.js +6 -0
- package/dist/editor/components/index.js.map +1 -0
- package/dist/editor/context/ApiClientContext.d.ts +33 -0
- package/dist/editor/context/ApiClientContext.d.ts.map +1 -0
- package/dist/editor/context/ApiClientContext.js +43 -0
- package/dist/editor/context/ApiClientContext.js.map +1 -0
- package/dist/editor/context/EditorStateContext.d.ts +93 -0
- package/dist/editor/context/EditorStateContext.d.ts.map +1 -0
- package/dist/editor/context/EditorStateContext.js +143 -0
- package/dist/editor/context/EditorStateContext.js.map +1 -0
- package/dist/editor/context/index.d.ts +20 -0
- package/dist/editor/context/index.d.ts.map +1 -0
- package/dist/editor/context/index.js +20 -0
- package/dist/editor/context/index.js.map +1 -0
- package/dist/editor/editor-config.d.ts +14 -0
- package/dist/editor/editor-config.d.ts.map +1 -0
- package/dist/editor/editor-config.js +79 -0
- package/dist/editor/editor-config.js.map +1 -0
- package/dist/editor/editor-utils.d.ts +92 -0
- package/dist/editor/editor-utils.d.ts.map +1 -0
- package/dist/editor/editor-utils.js +238 -0
- package/dist/editor/editor-utils.js.map +1 -0
- package/dist/editor/env.d.ts +5 -0
- package/dist/editor/env.d.ts.map +1 -0
- package/dist/editor/env.js +5 -0
- package/dist/editor/env.js.map +1 -0
- package/dist/editor/fields/BlockField.d.ts +19 -0
- package/dist/editor/fields/BlockField.d.ts.map +1 -0
- package/dist/editor/fields/BlockField.js +86 -0
- package/dist/editor/fields/BlockField.js.map +1 -0
- package/dist/editor/fields/BlockField.stories.d.ts +7 -0
- package/dist/editor/fields/BlockField.stories.d.ts.map +1 -0
- package/dist/editor/fields/BlockField.stories.js +50 -0
- package/dist/editor/fields/BlockField.stories.js.map +1 -0
- package/dist/editor/fields/CodeField.d.ts +12 -0
- package/dist/editor/fields/CodeField.d.ts.map +1 -0
- package/dist/editor/fields/CodeField.js +11 -0
- package/dist/editor/fields/CodeField.js.map +1 -0
- package/dist/editor/fields/MarkdownField.d.ts +11 -0
- package/dist/editor/fields/MarkdownField.d.ts.map +1 -0
- package/dist/editor/fields/MarkdownField.js +94 -0
- package/dist/editor/fields/MarkdownField.js.map +1 -0
- package/dist/editor/fields/ObjectField.d.ts +15 -0
- package/dist/editor/fields/ObjectField.d.ts.map +1 -0
- package/dist/editor/fields/ObjectField.js +12 -0
- package/dist/editor/fields/ObjectField.js.map +1 -0
- package/dist/editor/fields/ReferenceField.d.ts +20 -0
- package/dist/editor/fields/ReferenceField.d.ts.map +1 -0
- package/dist/editor/fields/ReferenceField.js +66 -0
- package/dist/editor/fields/ReferenceField.js.map +1 -0
- package/dist/editor/fields/SelectField.d.ts +18 -0
- package/dist/editor/fields/SelectField.d.ts.map +1 -0
- package/dist/editor/fields/SelectField.js +17 -0
- package/dist/editor/fields/SelectField.js.map +1 -0
- package/dist/editor/fields/TextField.d.ts +11 -0
- package/dist/editor/fields/TextField.d.ts.map +1 -0
- package/dist/editor/fields/TextField.js +10 -0
- package/dist/editor/fields/TextField.js.map +1 -0
- package/dist/editor/fields/ToggleField.d.ts +12 -0
- package/dist/editor/fields/ToggleField.d.ts.map +1 -0
- package/dist/editor/fields/ToggleField.js +10 -0
- package/dist/editor/fields/ToggleField.js.map +1 -0
- package/dist/editor/fields/fields.stories.d.ts +8 -0
- package/dist/editor/fields/fields.stories.d.ts.map +1 -0
- package/dist/editor/fields/fields.stories.js +34 -0
- package/dist/editor/fields/fields.stories.js.map +1 -0
- package/dist/editor/group-manager/ExternalGroupsTab.d.ts +16 -0
- package/dist/editor/group-manager/ExternalGroupsTab.d.ts.map +1 -0
- package/dist/editor/group-manager/ExternalGroupsTab.js +16 -0
- package/dist/editor/group-manager/ExternalGroupsTab.js.map +1 -0
- package/dist/editor/group-manager/GroupCard.d.ts +24 -0
- package/dist/editor/group-manager/GroupCard.d.ts.map +1 -0
- package/dist/editor/group-manager/GroupCard.js +9 -0
- package/dist/editor/group-manager/GroupCard.js.map +1 -0
- package/dist/editor/group-manager/GroupForm.d.ts +15 -0
- package/dist/editor/group-manager/GroupForm.d.ts.map +1 -0
- package/dist/editor/group-manager/GroupForm.js +7 -0
- package/dist/editor/group-manager/GroupForm.js.map +1 -0
- package/dist/editor/group-manager/InternalGroupsTab.d.ts +26 -0
- package/dist/editor/group-manager/InternalGroupsTab.d.ts.map +1 -0
- package/dist/editor/group-manager/InternalGroupsTab.js +18 -0
- package/dist/editor/group-manager/InternalGroupsTab.js.map +1 -0
- package/dist/editor/group-manager/MemberList.d.ts +23 -0
- package/dist/editor/group-manager/MemberList.d.ts.map +1 -0
- package/dist/editor/group-manager/MemberList.js +13 -0
- package/dist/editor/group-manager/MemberList.js.map +1 -0
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.d.ts +16 -0
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.d.ts.map +1 -0
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.js +43 -0
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.js.map +1 -0
- package/dist/editor/group-manager/hooks/useGroupState.d.ts +24 -0
- package/dist/editor/group-manager/hooks/useGroupState.d.ts.map +1 -0
- package/dist/editor/group-manager/hooks/useGroupState.js +97 -0
- package/dist/editor/group-manager/hooks/useGroupState.js.map +1 -0
- package/dist/editor/group-manager/hooks/useUserSearch.d.ts +20 -0
- package/dist/editor/group-manager/hooks/useUserSearch.d.ts.map +1 -0
- package/dist/editor/group-manager/hooks/useUserSearch.js +60 -0
- package/dist/editor/group-manager/hooks/useUserSearch.js.map +1 -0
- package/dist/editor/group-manager/index.d.ts +14 -0
- package/dist/editor/group-manager/index.d.ts.map +1 -0
- package/dist/editor/group-manager/index.js +71 -0
- package/dist/editor/group-manager/index.js.map +1 -0
- package/dist/editor/group-manager/types.d.ts +24 -0
- package/dist/editor/group-manager/types.d.ts.map +1 -0
- package/dist/editor/group-manager/types.js +5 -0
- package/dist/editor/group-manager/types.js.map +1 -0
- package/dist/editor/hooks/__test__/test-utils.d.ts +129 -0
- package/dist/editor/hooks/__test__/test-utils.d.ts.map +1 -0
- package/dist/editor/hooks/__test__/test-utils.js +157 -0
- package/dist/editor/hooks/__test__/test-utils.js.map +1 -0
- package/dist/editor/hooks/index.d.ts +12 -0
- package/dist/editor/hooks/index.d.ts.map +1 -0
- package/dist/editor/hooks/index.js +15 -0
- package/dist/editor/hooks/index.js.map +1 -0
- package/dist/editor/hooks/useBranchActions.d.ts +34 -0
- package/dist/editor/hooks/useBranchActions.d.ts.map +1 -0
- package/dist/editor/hooks/useBranchActions.js +95 -0
- package/dist/editor/hooks/useBranchActions.js.map +1 -0
- package/dist/editor/hooks/useBranchManager.d.ts +88 -0
- package/dist/editor/hooks/useBranchManager.d.ts.map +1 -0
- package/dist/editor/hooks/useBranchManager.js +245 -0
- package/dist/editor/hooks/useBranchManager.js.map +1 -0
- package/dist/editor/hooks/useCommentSystem.d.ts +93 -0
- package/dist/editor/hooks/useCommentSystem.d.ts.map +1 -0
- package/dist/editor/hooks/useCommentSystem.js +240 -0
- package/dist/editor/hooks/useCommentSystem.js.map +1 -0
- package/dist/editor/hooks/useDraftManager.d.ts +64 -0
- package/dist/editor/hooks/useDraftManager.d.ts.map +1 -0
- package/dist/editor/hooks/useDraftManager.js +228 -0
- package/dist/editor/hooks/useDraftManager.js.map +1 -0
- package/dist/editor/hooks/useEditorLayout.d.ts +34 -0
- package/dist/editor/hooks/useEditorLayout.d.ts.map +1 -0
- package/dist/editor/hooks/useEditorLayout.js +52 -0
- package/dist/editor/hooks/useEditorLayout.js.map +1 -0
- package/dist/editor/hooks/useEntryManager.d.ts +66 -0
- package/dist/editor/hooks/useEntryManager.d.ts.map +1 -0
- package/dist/editor/hooks/useEntryManager.js +305 -0
- package/dist/editor/hooks/useEntryManager.js.map +1 -0
- package/dist/editor/hooks/useGroupManager.d.ts +43 -0
- package/dist/editor/hooks/useGroupManager.d.ts.map +1 -0
- package/dist/editor/hooks/useGroupManager.js +122 -0
- package/dist/editor/hooks/useGroupManager.js.map +1 -0
- package/dist/editor/hooks/usePermissionManager.d.ts +40 -0
- package/dist/editor/hooks/usePermissionManager.d.ts.map +1 -0
- package/dist/editor/hooks/usePermissionManager.js +94 -0
- package/dist/editor/hooks/usePermissionManager.js.map +1 -0
- package/dist/editor/hooks/useReferenceResolution.d.ts +47 -0
- package/dist/editor/hooks/useReferenceResolution.d.ts.map +1 -0
- package/dist/editor/hooks/useReferenceResolution.js +207 -0
- package/dist/editor/hooks/useReferenceResolution.js.map +1 -0
- package/dist/editor/hooks/useSchemaManager.d.ts +46 -0
- package/dist/editor/hooks/useSchemaManager.d.ts.map +1 -0
- package/dist/editor/hooks/useSchemaManager.js +235 -0
- package/dist/editor/hooks/useSchemaManager.js.map +1 -0
- package/dist/editor/hooks/useUserContext.d.ts +22 -0
- package/dist/editor/hooks/useUserContext.d.ts.map +1 -0
- package/dist/editor/hooks/useUserContext.js +49 -0
- package/dist/editor/hooks/useUserContext.js.map +1 -0
- package/dist/editor/hooks/useUserMetadata.d.ts +16 -0
- package/dist/editor/hooks/useUserMetadata.d.ts.map +1 -0
- package/dist/editor/hooks/useUserMetadata.js +55 -0
- package/dist/editor/hooks/useUserMetadata.js.map +1 -0
- package/dist/editor/permission-manager/GroupSelector.d.ts +13 -0
- package/dist/editor/permission-manager/GroupSelector.d.ts.map +1 -0
- package/dist/editor/permission-manager/GroupSelector.js +22 -0
- package/dist/editor/permission-manager/GroupSelector.js.map +1 -0
- package/dist/editor/permission-manager/PermissionEditor.d.ts +34 -0
- package/dist/editor/permission-manager/PermissionEditor.d.ts.map +1 -0
- package/dist/editor/permission-manager/PermissionEditor.js +30 -0
- package/dist/editor/permission-manager/PermissionEditor.js.map +1 -0
- package/dist/editor/permission-manager/PermissionLevelBadge.d.ts +16 -0
- package/dist/editor/permission-manager/PermissionLevelBadge.d.ts.map +1 -0
- package/dist/editor/permission-manager/PermissionLevelBadge.js +22 -0
- package/dist/editor/permission-manager/PermissionLevelBadge.js.map +1 -0
- package/dist/editor/permission-manager/PermissionTree.d.ts +37 -0
- package/dist/editor/permission-manager/PermissionTree.d.ts.map +1 -0
- package/dist/editor/permission-manager/PermissionTree.js +45 -0
- package/dist/editor/permission-manager/PermissionTree.js.map +1 -0
- package/dist/editor/permission-manager/UserSelector.d.ts +16 -0
- package/dist/editor/permission-manager/UserSelector.d.ts.map +1 -0
- package/dist/editor/permission-manager/UserSelector.js +14 -0
- package/dist/editor/permission-manager/UserSelector.js.map +1 -0
- package/dist/editor/permission-manager/constants.d.ts +12 -0
- package/dist/editor/permission-manager/constants.d.ts.map +1 -0
- package/dist/editor/permission-manager/constants.js +9 -0
- package/dist/editor/permission-manager/constants.js.map +1 -0
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts +30 -0
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts.map +1 -0
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js +102 -0
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js.map +1 -0
- package/dist/editor/permission-manager/hooks/usePermissionTree.d.ts +41 -0
- package/dist/editor/permission-manager/hooks/usePermissionTree.d.ts.map +1 -0
- package/dist/editor/permission-manager/hooks/usePermissionTree.js +125 -0
- package/dist/editor/permission-manager/hooks/usePermissionTree.js.map +1 -0
- package/dist/editor/permission-manager/index.d.ts +14 -0
- package/dist/editor/permission-manager/index.d.ts.map +1 -0
- package/dist/editor/permission-manager/index.js +125 -0
- package/dist/editor/permission-manager/index.js.map +1 -0
- package/dist/editor/permission-manager/types.d.ts +53 -0
- package/dist/editor/permission-manager/types.d.ts.map +1 -0
- package/dist/editor/permission-manager/types.js +5 -0
- package/dist/editor/permission-manager/types.js.map +1 -0
- package/dist/editor/permission-manager/utils.d.ts +60 -0
- package/dist/editor/permission-manager/utils.d.ts.map +1 -0
- package/dist/editor/permission-manager/utils.js +152 -0
- package/dist/editor/permission-manager/utils.js.map +1 -0
- package/dist/editor/preview-bridge.d.ts +64 -0
- package/dist/editor/preview-bridge.d.ts.map +1 -0
- package/dist/editor/preview-bridge.js +225 -0
- package/dist/editor/preview-bridge.js.map +1 -0
- package/dist/editor/schema-editor/CollectionEditor.d.ts +53 -0
- package/dist/editor/schema-editor/CollectionEditor.d.ts.map +1 -0
- package/dist/editor/schema-editor/CollectionEditor.js +220 -0
- package/dist/editor/schema-editor/CollectionEditor.js.map +1 -0
- package/dist/editor/schema-editor/EntryTypeEditor.d.ts +39 -0
- package/dist/editor/schema-editor/EntryTypeEditor.d.ts.map +1 -0
- package/dist/editor/schema-editor/EntryTypeEditor.js +161 -0
- package/dist/editor/schema-editor/EntryTypeEditor.js.map +1 -0
- package/dist/editor/schema-editor/index.d.ts +10 -0
- package/dist/editor/schema-editor/index.d.ts.map +1 -0
- package/dist/editor/schema-editor/index.js +10 -0
- package/dist/editor/schema-editor/index.js.map +1 -0
- package/dist/editor/setup-test-dom.d.ts +1 -0
- package/dist/editor/setup-test-dom.d.ts.map +1 -0
- package/dist/editor/setup-test-dom.js +12 -0
- package/dist/editor/setup-test-dom.js.map +1 -0
- package/dist/editor/test-setup.d.ts +6 -0
- package/dist/editor/test-setup.d.ts.map +1 -0
- package/dist/editor/test-setup.js +34 -0
- package/dist/editor/test-setup.js.map +1 -0
- package/dist/editor/theme.d.ts +165 -0
- package/dist/editor/theme.d.ts.map +1 -0
- package/dist/editor/theme.js +66 -0
- package/dist/editor/theme.js.map +1 -0
- package/dist/editor/utils/env.d.ts +23 -0
- package/dist/editor/utils/env.d.ts.map +1 -0
- package/dist/editor/utils/env.js +38 -0
- package/dist/editor/utils/env.js.map +1 -0
- package/dist/entry-schema-registry.d.ts +44 -0
- package/dist/entry-schema-registry.d.ts.map +1 -0
- package/dist/entry-schema-registry.js +101 -0
- package/dist/entry-schema-registry.js.map +1 -0
- package/dist/entry-schema.d.ts +74 -0
- package/dist/entry-schema.d.ts.map +1 -0
- package/dist/entry-schema.js +5 -0
- package/dist/entry-schema.js.map +1 -0
- package/dist/git-manager.d.ts +144 -0
- package/dist/git-manager.d.ts.map +1 -0
- package/dist/git-manager.js +563 -0
- package/dist/git-manager.js.map +1 -0
- package/dist/github-service.d.ts +93 -0
- package/dist/github-service.d.ts.map +1 -0
- package/dist/github-service.js +228 -0
- package/dist/github-service.js.map +1 -0
- package/dist/http/handler.d.ts +57 -0
- package/dist/http/handler.d.ts.map +1 -0
- package/dist/http/handler.js +197 -0
- package/dist/http/handler.js.map +1 -0
- package/dist/http/index.d.ts +7 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +4 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/router.d.ts +49 -0
- package/dist/http/router.d.ts.map +1 -0
- package/dist/http/router.js +100 -0
- package/dist/http/router.js.map +1 -0
- package/dist/http/types.d.ts +34 -0
- package/dist/http/types.d.ts.map +1 -0
- package/dist/http/types.js +7 -0
- package/dist/http/types.js.map +1 -0
- package/dist/id.d.ts +17 -0
- package/dist/id.d.ts.map +1 -0
- package/dist/id.js +20 -0
- package/dist/id.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/operating-mode/client-safe-strategy.d.ts +57 -0
- package/dist/operating-mode/client-safe-strategy.d.ts.map +1 -0
- package/dist/operating-mode/client-safe-strategy.js +154 -0
- package/dist/operating-mode/client-safe-strategy.js.map +1 -0
- package/dist/operating-mode/client-unsafe-strategy.d.ts +26 -0
- package/dist/operating-mode/client-unsafe-strategy.d.ts.map +1 -0
- package/dist/operating-mode/client-unsafe-strategy.js +234 -0
- package/dist/operating-mode/client-unsafe-strategy.js.map +1 -0
- package/dist/operating-mode/client.d.ts +13 -0
- package/dist/operating-mode/client.d.ts.map +1 -0
- package/dist/operating-mode/client.js +11 -0
- package/dist/operating-mode/client.js.map +1 -0
- package/dist/operating-mode/index.d.ts +28 -0
- package/dist/operating-mode/index.d.ts.map +1 -0
- package/dist/operating-mode/index.js +28 -0
- package/dist/operating-mode/index.js.map +1 -0
- package/dist/operating-mode/types.d.ts +130 -0
- package/dist/operating-mode/types.d.ts.map +1 -0
- package/dist/operating-mode/types.js +9 -0
- package/dist/operating-mode/types.js.map +1 -0
- package/dist/paths/branch.d.ts +45 -0
- package/dist/paths/branch.d.ts.map +1 -0
- package/dist/paths/branch.js +84 -0
- package/dist/paths/branch.js.map +1 -0
- package/dist/paths/index.d.ts +22 -0
- package/dist/paths/index.d.ts.map +1 -0
- package/dist/paths/index.js +30 -0
- package/dist/paths/index.js.map +1 -0
- package/dist/paths/normalize-server.d.ts +20 -0
- package/dist/paths/normalize-server.d.ts.map +1 -0
- package/dist/paths/normalize-server.js +35 -0
- package/dist/paths/normalize-server.js.map +1 -0
- package/dist/paths/normalize.d.ts +59 -0
- package/dist/paths/normalize.d.ts.map +1 -0
- package/dist/paths/normalize.js +96 -0
- package/dist/paths/normalize.js.map +1 -0
- package/dist/paths/resolve.d.ts +30 -0
- package/dist/paths/resolve.d.ts.map +1 -0
- package/dist/paths/resolve.js +51 -0
- package/dist/paths/resolve.js.map +1 -0
- package/dist/paths/test-utils.d.ts +24 -0
- package/dist/paths/test-utils.d.ts.map +1 -0
- package/dist/paths/test-utils.js +23 -0
- package/dist/paths/test-utils.js.map +1 -0
- package/dist/paths/types.d.ts +72 -0
- package/dist/paths/types.d.ts.map +1 -0
- package/dist/paths/types.js +13 -0
- package/dist/paths/types.js.map +1 -0
- package/dist/paths/validation.d.ts +181 -0
- package/dist/paths/validation.d.ts.map +1 -0
- package/dist/paths/validation.js +322 -0
- package/dist/paths/validation.js.map +1 -0
- package/dist/reference-resolver.d.ts +58 -0
- package/dist/reference-resolver.d.ts.map +1 -0
- package/dist/reference-resolver.js +118 -0
- package/dist/reference-resolver.js.map +1 -0
- package/dist/schema/index.d.ts +18 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +19 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/meta-loader.d.ts +73 -0
- package/dist/schema/meta-loader.d.ts.map +1 -0
- package/dist/schema/meta-loader.js +273 -0
- package/dist/schema/meta-loader.js.map +1 -0
- package/dist/schema/resolver.d.ts +42 -0
- package/dist/schema/resolver.d.ts.map +1 -0
- package/dist/schema/resolver.js +70 -0
- package/dist/schema/resolver.js.map +1 -0
- package/dist/schema/schema-store-types.d.ts +48 -0
- package/dist/schema/schema-store-types.d.ts.map +1 -0
- package/dist/schema/schema-store-types.js +8 -0
- package/dist/schema/schema-store-types.js.map +1 -0
- package/dist/schema/schema-store.d.ts +249 -0
- package/dist/schema/schema-store.d.ts.map +1 -0
- package/dist/schema/schema-store.js +624 -0
- package/dist/schema/schema-store.js.map +1 -0
- package/dist/schema/types.d.ts +30 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +5 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/server.d.ts +11 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +10 -0
- package/dist/server.js.map +1 -0
- package/dist/services.d.ts +94 -0
- package/dist/services.d.ts.map +1 -0
- package/dist/services.js +251 -0
- package/dist/services.js.map +1 -0
- package/dist/settings-branch-utils.d.ts +21 -0
- package/dist/settings-branch-utils.d.ts.map +1 -0
- package/dist/settings-branch-utils.js +33 -0
- package/dist/settings-branch-utils.js.map +1 -0
- package/dist/settings-workspace.d.ts +30 -0
- package/dist/settings-workspace.d.ts.map +1 -0
- package/dist/settings-workspace.js +137 -0
- package/dist/settings-workspace.js.map +1 -0
- package/dist/task-queue/index.d.ts +3 -0
- package/dist/task-queue/index.d.ts.map +1 -0
- package/dist/task-queue/index.js +2 -0
- package/dist/task-queue/index.js.map +1 -0
- package/dist/task-queue/task-queue.d.ts +81 -0
- package/dist/task-queue/task-queue.d.ts.map +1 -0
- package/dist/task-queue/task-queue.js +434 -0
- package/dist/task-queue/task-queue.js.map +1 -0
- package/dist/task-queue/types.d.ts +39 -0
- package/dist/task-queue/types.d.ts.map +1 -0
- package/dist/task-queue/types.js +2 -0
- package/dist/task-queue/types.js.map +1 -0
- package/dist/test-utils/api-test-helpers.d.ts +238 -0
- package/dist/test-utils/api-test-helpers.d.ts.map +1 -0
- package/dist/test-utils/api-test-helpers.js +347 -0
- package/dist/test-utils/api-test-helpers.js.map +1 -0
- package/dist/test-utils/console-spy.d.ts +56 -0
- package/dist/test-utils/console-spy.d.ts.map +1 -0
- package/dist/test-utils/console-spy.js +81 -0
- package/dist/test-utils/console-spy.js.map +1 -0
- package/dist/test-utils/git-helpers.d.ts +21 -0
- package/dist/test-utils/git-helpers.d.ts.map +1 -0
- package/dist/test-utils/git-helpers.js +23 -0
- package/dist/test-utils/git-helpers.js.map +1 -0
- package/dist/test-utils/index.d.ts +5 -0
- package/dist/test-utils/index.d.ts.map +1 -0
- package/dist/test-utils/index.js +4 -0
- package/dist/test-utils/index.js.map +1 -0
- package/dist/types.d.ts +46 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/user.d.ts +62 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +69 -0
- package/dist/user.js.map +1 -0
- package/dist/utils/debug.d.ts +44 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +99 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/error.d.ts +63 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +79 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/format.d.ts +8 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +13 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/validation/deletion-checker.d.ts +66 -0
- package/dist/validation/deletion-checker.d.ts.map +1 -0
- package/dist/validation/deletion-checker.js +163 -0
- package/dist/validation/deletion-checker.js.map +1 -0
- package/dist/validation/field-traversal.d.ts +62 -0
- package/dist/validation/field-traversal.d.ts.map +1 -0
- package/dist/validation/field-traversal.js +95 -0
- package/dist/validation/field-traversal.js.map +1 -0
- package/dist/validation/reference-validator.d.ts +45 -0
- package/dist/validation/reference-validator.d.ts.map +1 -0
- package/dist/validation/reference-validator.js +140 -0
- package/dist/validation/reference-validator.js.map +1 -0
- package/dist/worker/cms-worker.d.ts +122 -0
- package/dist/worker/cms-worker.d.ts.map +1 -0
- package/dist/worker/cms-worker.js +660 -0
- package/dist/worker/cms-worker.js.map +1 -0
- package/dist/worker/task-queue-config.d.ts +11 -0
- package/dist/worker/task-queue-config.d.ts.map +1 -0
- package/dist/worker/task-queue-config.js +24 -0
- package/dist/worker/task-queue-config.js.map +1 -0
- package/dist/worker/task-queue.d.ts +18 -0
- package/dist/worker/task-queue.d.ts.map +1 -0
- package/dist/worker/task-queue.js +20 -0
- package/dist/worker/task-queue.js.map +1 -0
- package/package.json +144 -0
- package/src/__integration__/errors/invalid-content.test.ts +238 -0
- package/src/__integration__/errors/permission-denied.test.ts +220 -0
- package/src/__integration__/fixtures/content-seeds.ts +105 -0
- package/src/__integration__/fixtures/schemas.ts +67 -0
- package/src/__integration__/initialization/prod-sim-init.test.ts +139 -0
- package/src/__integration__/permissions/path-permissions.test.ts +314 -0
- package/src/__integration__/permissions/role-permissions.test.ts +354 -0
- package/src/__integration__/permissions/settings-branch-isolation.test.ts +317 -0
- package/src/__integration__/settings/groups-api.test.ts +403 -0
- package/src/__integration__/test-utils/api-client.ts +167 -0
- package/src/__integration__/test-utils/multi-user.ts +129 -0
- package/src/__integration__/test-utils/test-workspace.ts +130 -0
- package/src/__integration__/user/user-context.test.ts +174 -0
- package/src/__integration__/validation/input-validation.test.ts +166 -0
- package/src/__integration__/workflows/api-editing-workflow.test.ts +244 -0
- package/src/__integration__/workflows/conflict-resolution.test.ts +259 -0
- package/src/__integration__/workflows/editing-workflow.test.ts +205 -0
- package/src/__integration__/workflows/review-workflow.test.ts +260 -0
- package/src/ai/__tests__/build.integration.test.ts +224 -0
- package/src/ai/__tests__/generate.integration.test.ts +495 -0
- package/src/ai/__tests__/handler.integration.test.ts +212 -0
- package/src/ai/__tests__/json-to-markdown.test.ts +553 -0
- package/src/ai/generate.ts +410 -0
- package/src/ai/handler.ts +123 -0
- package/src/ai/index.ts +26 -0
- package/src/ai/json-to-markdown.ts +424 -0
- package/src/ai/resolve-branch.ts +34 -0
- package/src/ai/types.ts +160 -0
- package/src/api/AGENTS.md +81 -0
- package/src/api/__test__/mock-client.ts +404 -0
- package/src/api/assets.test.ts +140 -0
- package/src/api/assets.ts +154 -0
- package/src/api/branch-merge.test.ts +163 -0
- package/src/api/branch-merge.ts +113 -0
- package/src/api/branch-review.test.ts +297 -0
- package/src/api/branch-review.ts +136 -0
- package/src/api/branch-status.test.ts +85 -0
- package/src/api/branch-status.ts +153 -0
- package/src/api/branch-withdraw.test.ts +146 -0
- package/src/api/branch-withdraw.ts +81 -0
- package/src/api/branch-workflow.integration.test.ts +578 -0
- package/src/api/branch.test.ts +620 -0
- package/src/api/branch.ts +492 -0
- package/src/api/client.test.ts +349 -0
- package/src/api/client.ts +506 -0
- package/src/api/comments.test.ts +285 -0
- package/src/api/comments.ts +210 -0
- package/src/api/content.test.ts +345 -0
- package/src/api/content.ts +454 -0
- package/src/api/entries.test.ts +1339 -0
- package/src/api/entries.ts +650 -0
- package/src/api/github-sync.ts +144 -0
- package/src/api/groups.test.ts +1013 -0
- package/src/api/groups.ts +375 -0
- package/src/api/guards.test.ts +533 -0
- package/src/api/guards.ts +271 -0
- package/src/api/index.ts +87 -0
- package/src/api/permissions.test.ts +766 -0
- package/src/api/permissions.ts +334 -0
- package/src/api/reference-options.ts +118 -0
- package/src/api/resolve-references.ts +107 -0
- package/src/api/route-builder.ts +289 -0
- package/src/api/schema.test.ts +840 -0
- package/src/api/schema.ts +936 -0
- package/src/api/security.test.ts +233 -0
- package/src/api/settings-helpers.ts +84 -0
- package/src/api/types.ts +40 -0
- package/src/api/user.test.ts +127 -0
- package/src/api/user.ts +42 -0
- package/src/api/validators.test.ts +275 -0
- package/src/api/validators.ts +176 -0
- package/src/asset-store.test.ts +37 -0
- package/src/asset-store.ts +110 -0
- package/src/auth/cache.ts +7 -0
- package/src/auth/caching-auth-plugin.test.ts +154 -0
- package/src/auth/caching-auth-plugin.ts +109 -0
- package/src/auth/context-helpers.ts +75 -0
- package/src/auth/file-based-auth-cache.test.ts +257 -0
- package/src/auth/file-based-auth-cache.ts +279 -0
- package/src/auth/index.ts +12 -0
- package/src/auth/plugin.ts +51 -0
- package/src/auth/types.ts +38 -0
- package/src/authorization/__tests__/branch.test.ts +260 -0
- package/src/authorization/__tests__/content.test.ts +142 -0
- package/src/authorization/__tests__/path.test.ts +133 -0
- package/src/authorization/__tests__/permissions-loader.test.ts +200 -0
- package/src/authorization/branch.ts +94 -0
- package/src/authorization/content.ts +93 -0
- package/src/authorization/groups/index.ts +11 -0
- package/src/authorization/groups/loader.ts +127 -0
- package/src/authorization/groups/schema.ts +48 -0
- package/src/authorization/helpers.ts +48 -0
- package/src/authorization/index.ts +84 -0
- package/src/authorization/path.ts +112 -0
- package/src/authorization/permissions/index.ts +11 -0
- package/src/authorization/permissions/loader.ts +116 -0
- package/src/authorization/permissions/schema.ts +66 -0
- package/src/authorization/test-utils.ts +15 -0
- package/src/authorization/types.ts +66 -0
- package/src/authorization/validation.test.ts +100 -0
- package/src/authorization/validation.ts +62 -0
- package/src/branch-metadata.test.ts +168 -0
- package/src/branch-metadata.ts +166 -0
- package/src/branch-registry.test.ts +248 -0
- package/src/branch-registry.ts +152 -0
- package/src/branch-schema-cache.test.ts +275 -0
- package/src/branch-schema-cache.ts +189 -0
- package/src/branch-workspace.test.ts +183 -0
- package/src/branch-workspace.ts +124 -0
- package/src/build/generate-ai-content.ts +78 -0
- package/src/build/index.ts +8 -0
- package/src/build-mode.ts +27 -0
- package/src/cli/generate-ai-content.ts +100 -0
- package/src/cli/init.test.ts +240 -0
- package/src/cli/init.ts +457 -0
- package/src/cli/templates/Dockerfile.cms.template +19 -0
- package/src/cli/templates/canopy.ts.template +55 -0
- package/src/cli/templates/canopycms.config.ts.template +11 -0
- package/src/cli/templates/deploy-cms.yml.template +27 -0
- package/src/cli/templates/edit-page.tsx.template +32 -0
- package/src/cli/templates/route.ts.template +12 -0
- package/src/cli/templates/schemas.ts.template +16 -0
- package/src/cli/templates.ts +47 -0
- package/src/client.ts +12 -0
- package/src/comment-store.test.ts +442 -0
- package/src/comment-store.ts +301 -0
- package/src/config/__tests__/config.test.ts +513 -0
- package/src/config/flatten.ts +174 -0
- package/src/config/helpers.ts +167 -0
- package/src/config/index.ts +86 -0
- package/src/config/schemas/collection.ts +67 -0
- package/src/config/schemas/config.ts +77 -0
- package/src/config/schemas/field.ts +108 -0
- package/src/config/schemas/media.ts +27 -0
- package/src/config/schemas/permissions.ts +21 -0
- package/src/config/types.ts +321 -0
- package/src/config/validation.ts +70 -0
- package/src/config-test.ts +65 -0
- package/src/config.ts +11 -0
- package/src/content-id-index.test.ts +512 -0
- package/src/content-id-index.ts +479 -0
- package/src/content-reader.test.ts +478 -0
- package/src/content-reader.ts +214 -0
- package/src/content-store.test.ts +1126 -0
- package/src/content-store.ts +793 -0
- package/src/context.ts +111 -0
- package/src/editor/BranchManager.stories.tsx +80 -0
- package/src/editor/BranchManager.test.tsx +324 -0
- package/src/editor/BranchManager.tsx +461 -0
- package/src/editor/CanopyEditor.stories.tsx +128 -0
- package/src/editor/CanopyEditor.test.tsx +81 -0
- package/src/editor/CanopyEditor.tsx +73 -0
- package/src/editor/CanopyEditorPage.test.tsx +59 -0
- package/src/editor/CanopyEditorPage.tsx +25 -0
- package/src/editor/CommentsPanel.stories.tsx +184 -0
- package/src/editor/CommentsPanel.tsx +338 -0
- package/src/editor/Editor.integration.test.tsx +227 -0
- package/src/editor/Editor.stories.tsx +119 -0
- package/src/editor/Editor.tsx +1221 -0
- package/src/editor/EditorPanes.stories.tsx +256 -0
- package/src/editor/EditorPanes.test.tsx +77 -0
- package/src/editor/EditorPanes.tsx +180 -0
- package/src/editor/EntryNavigator.stories.tsx +65 -0
- package/src/editor/EntryNavigator.test.tsx +598 -0
- package/src/editor/EntryNavigator.tsx +665 -0
- package/src/editor/FormRenderer.stories.tsx +212 -0
- package/src/editor/FormRenderer.test.tsx +194 -0
- package/src/editor/FormRenderer.tsx +432 -0
- package/src/editor/GroupManager.stories.tsx +301 -0
- package/src/editor/GroupManager.test.tsx +682 -0
- package/src/editor/GroupManager.tsx +9 -0
- package/src/editor/PermissionManager.stories.tsx +539 -0
- package/src/editor/PermissionManager.test.tsx +864 -0
- package/src/editor/PermissionManager.tsx +12 -0
- package/src/editor/canopy-path.test.ts +23 -0
- package/src/editor/canopy-path.ts +52 -0
- package/src/editor/client-reference-resolver.ts +118 -0
- package/src/editor/comments/BranchComments.tsx +93 -0
- package/src/editor/comments/EntryComments.tsx +94 -0
- package/src/editor/comments/FieldWrapper.stories.tsx +210 -0
- package/src/editor/comments/FieldWrapper.tsx +129 -0
- package/src/editor/comments/InlineCommentThread.test.tsx +384 -0
- package/src/editor/comments/InlineCommentThread.tsx +246 -0
- package/src/editor/comments/ThreadCarousel.test.tsx +393 -0
- package/src/editor/comments/ThreadCarousel.tsx +525 -0
- package/src/editor/components/ConfirmDeleteModal.tsx +49 -0
- package/src/editor/components/EditorContext.tsx +49 -0
- package/src/editor/components/EditorFooter.tsx +47 -0
- package/src/editor/components/EditorHeader.tsx +492 -0
- package/src/editor/components/EditorSidebar.tsx +193 -0
- package/src/editor/components/EntryCreateModal.tsx +193 -0
- package/src/editor/components/RenameEntryModal.tsx +152 -0
- package/src/editor/components/UserBadge.test.tsx +274 -0
- package/src/editor/components/UserBadge.tsx +240 -0
- package/src/editor/components/index.ts +6 -0
- package/src/editor/context/ApiClientContext.tsx +56 -0
- package/src/editor/context/EditorStateContext.tsx +221 -0
- package/src/editor/context/index.ts +40 -0
- package/src/editor/editor-config.test.ts +385 -0
- package/src/editor/editor-config.ts +94 -0
- package/src/editor/editor-utils.test.ts +772 -0
- package/src/editor/editor-utils.ts +303 -0
- package/src/editor/env.ts +4 -0
- package/src/editor/fields/BlockField.stories.tsx +79 -0
- package/src/editor/fields/BlockField.tsx +267 -0
- package/src/editor/fields/CodeField.tsx +41 -0
- package/src/editor/fields/MarkdownField.tsx +205 -0
- package/src/editor/fields/ObjectField.tsx +71 -0
- package/src/editor/fields/ReferenceField.tsx +138 -0
- package/src/editor/fields/SelectField.tsx +76 -0
- package/src/editor/fields/TextField.tsx +35 -0
- package/src/editor/fields/ToggleField.tsx +37 -0
- package/src/editor/fields/fields.stories.tsx +40 -0
- package/src/editor/group-manager/ExternalGroupsTab.tsx +114 -0
- package/src/editor/group-manager/GroupCard.tsx +102 -0
- package/src/editor/group-manager/GroupForm.tsx +66 -0
- package/src/editor/group-manager/InternalGroupsTab.tsx +147 -0
- package/src/editor/group-manager/MemberList.tsx +184 -0
- package/src/editor/group-manager/hooks/useExternalGroupSearch.ts +63 -0
- package/src/editor/group-manager/hooks/useGroupState.ts +134 -0
- package/src/editor/group-manager/hooks/useUserSearch.ts +84 -0
- package/src/editor/group-manager/index.tsx +210 -0
- package/src/editor/group-manager/types.ts +28 -0
- package/src/editor/hooks/README.md +26 -0
- package/src/editor/hooks/__test__/test-utils.tsx +183 -0
- package/src/editor/hooks/index.ts +23 -0
- package/src/editor/hooks/useBranchActions.test.tsx +267 -0
- package/src/editor/hooks/useBranchActions.tsx +121 -0
- package/src/editor/hooks/useBranchManager.test.tsx +391 -0
- package/src/editor/hooks/useBranchManager.tsx +326 -0
- package/src/editor/hooks/useCommentSystem.test.ts +615 -0
- package/src/editor/hooks/useCommentSystem.ts +347 -0
- package/src/editor/hooks/useDraftManager.test.ts +375 -0
- package/src/editor/hooks/useDraftManager.ts +259 -0
- package/src/editor/hooks/useEditorLayout.test.ts +147 -0
- package/src/editor/hooks/useEditorLayout.ts +67 -0
- package/src/editor/hooks/useEntryManager.test.ts +588 -0
- package/src/editor/hooks/useEntryManager.ts +387 -0
- package/src/editor/hooks/useGroupManager.test.ts +277 -0
- package/src/editor/hooks/useGroupManager.ts +139 -0
- package/src/editor/hooks/usePermissionManager.test.ts +211 -0
- package/src/editor/hooks/usePermissionManager.ts +113 -0
- package/src/editor/hooks/useReferenceResolution.ts +248 -0
- package/src/editor/hooks/useSchemaManager.test.ts +370 -0
- package/src/editor/hooks/useSchemaManager.ts +310 -0
- package/src/editor/hooks/useUserContext.tsx +57 -0
- package/src/editor/hooks/useUserMetadata.test.ts +191 -0
- package/src/editor/hooks/useUserMetadata.ts +71 -0
- package/src/editor/permission-manager/GroupSelector.tsx +73 -0
- package/src/editor/permission-manager/PermissionEditor.tsx +321 -0
- package/src/editor/permission-manager/PermissionLevelBadge.tsx +53 -0
- package/src/editor/permission-manager/PermissionTree.tsx +237 -0
- package/src/editor/permission-manager/UserSelector.tsx +95 -0
- package/src/editor/permission-manager/constants.tsx +18 -0
- package/src/editor/permission-manager/hooks/useGroupsAndUsers.ts +153 -0
- package/src/editor/permission-manager/hooks/usePermissionTree.ts +200 -0
- package/src/editor/permission-manager/index.tsx +294 -0
- package/src/editor/permission-manager/types.ts +58 -0
- package/src/editor/permission-manager/utils.ts +179 -0
- package/src/editor/preview-bridge.test.tsx +50 -0
- package/src/editor/preview-bridge.tsx +294 -0
- package/src/editor/schema-editor/CollectionEditor.test.tsx +238 -0
- package/src/editor/schema-editor/CollectionEditor.tsx +520 -0
- package/src/editor/schema-editor/EntryTypeEditor.test.tsx +215 -0
- package/src/editor/schema-editor/EntryTypeEditor.tsx +367 -0
- package/src/editor/schema-editor/index.ts +19 -0
- package/src/editor/setup-test-dom.ts +10 -0
- package/src/editor/test-setup.ts +33 -0
- package/src/editor/theme.tsx +119 -0
- package/src/editor/utils/env.ts +39 -0
- package/src/entry-schema-registry.test.ts +281 -0
- package/src/entry-schema-registry.ts +121 -0
- package/src/entry-schema.ts +84 -0
- package/src/git-manager.test.ts +552 -0
- package/src/git-manager.ts +667 -0
- package/src/github-service.test.ts +312 -0
- package/src/github-service.ts +295 -0
- package/src/http/handler.test.ts +275 -0
- package/src/http/handler.ts +280 -0
- package/src/http/index.ts +11 -0
- package/src/http/router.ts +164 -0
- package/src/http/types.ts +44 -0
- package/src/id.test.ts +48 -0
- package/src/id.ts +22 -0
- package/src/index.ts +26 -0
- package/src/operating-mode/__tests__/strategies.test.ts +511 -0
- package/src/operating-mode/client-safe-strategy.ts +184 -0
- package/src/operating-mode/client-unsafe-strategy.ts +303 -0
- package/src/operating-mode/client.ts +13 -0
- package/src/operating-mode/index.ts +34 -0
- package/src/operating-mode/types.ts +186 -0
- package/src/paths/__tests__/branch.test.ts +53 -0
- package/src/paths/__tests__/normalize.test.ts +141 -0
- package/src/paths/__tests__/resolve.test.ts +207 -0
- package/src/paths/__tests__/validation.test.ts +61 -0
- package/src/paths/branch.ts +115 -0
- package/src/paths/index.ts +73 -0
- package/src/paths/normalize-server.ts +40 -0
- package/src/paths/normalize.ts +107 -0
- package/src/paths/resolve.ts +61 -0
- package/src/paths/test-utils.ts +37 -0
- package/src/paths/types.ts +68 -0
- package/src/paths/validation.test.ts +480 -0
- package/src/paths/validation.ts +391 -0
- package/src/reference-resolver.test.ts +107 -0
- package/src/reference-resolver.ts +157 -0
- package/src/schema/index.ts +29 -0
- package/src/schema/meta-loader.ts +366 -0
- package/src/schema/resolver.ts +83 -0
- package/src/schema/schema-store-types.ts +56 -0
- package/src/schema/schema-store.test.ts +816 -0
- package/src/schema/schema-store.ts +795 -0
- package/src/schema/types.ts +33 -0
- package/src/schema-meta-loader.test.ts +447 -0
- package/src/server.ts +15 -0
- package/src/services.test.ts +559 -0
- package/src/services.ts +373 -0
- package/src/settings-branch-utils.ts +53 -0
- package/src/settings-workspace.ts +156 -0
- package/src/task-queue/README.md +144 -0
- package/src/task-queue/index.ts +14 -0
- package/src/task-queue/task-queue.test.ts +524 -0
- package/src/task-queue/task-queue.ts +514 -0
- package/src/task-queue/types.ts +41 -0
- package/src/test-utils/api-test-helpers.ts +445 -0
- package/src/test-utils/console-spy.test.ts +14 -0
- package/src/test-utils/console-spy.ts +125 -0
- package/src/test-utils/git-helpers.ts +31 -0
- package/src/test-utils/index.ts +4 -0
- package/src/types.ts +54 -0
- package/src/user.ts +118 -0
- package/src/utils/debug.test.ts +114 -0
- package/src/utils/debug.ts +127 -0
- package/src/utils/error.test.ts +92 -0
- package/src/utils/error.ts +83 -0
- package/src/utils/format.ts +12 -0
- package/src/validation/__tests__/field-traversal.test.ts +263 -0
- package/src/validation/deletion-checker.ts +234 -0
- package/src/validation/field-traversal.ts +146 -0
- package/src/validation/reference-validator.ts +168 -0
- package/src/worker/cms-worker-rebase.test.ts +473 -0
- package/src/worker/cms-worker.ts +777 -0
- package/src/worker/integration.test.ts +289 -0
- package/src/worker/task-queue-config.ts +25 -0
- package/src/worker/task-queue.test.ts +452 -0
- package/src/worker/task-queue.ts +58 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for CanopyCMS configuration.
|
|
3
|
+
* These are pure TypeScript types - Zod schemas are in ./schemas/
|
|
4
|
+
*/
|
|
5
|
+
import type { CanopyGroupId, CanopyUserId } from '../types';
|
|
6
|
+
import type { OperatingMode } from '../operating-mode';
|
|
7
|
+
import type { AuthPlugin } from '../auth/plugin';
|
|
8
|
+
import type { LogicalPath, ContentId } from '../paths/types';
|
|
9
|
+
import type { PermissionPath } from '../authorization/types';
|
|
10
|
+
export declare const primitiveFieldTypes: readonly ["string", "number", "boolean", "datetime", "rich-text", "markdown", "mdx", "image", "code"];
|
|
11
|
+
export declare const fieldTypes: readonly ["string", "number", "boolean", "datetime", "rich-text", "markdown", "mdx", "image", "code", "select", "reference", "object", "block"];
|
|
12
|
+
export type PrimitiveFieldType = (typeof primitiveFieldTypes)[number];
|
|
13
|
+
export type FieldType = (typeof fieldTypes)[number];
|
|
14
|
+
export type ContentFormat = 'md' | 'mdx' | 'json';
|
|
15
|
+
export type MediaAdapterKind = 'local' | 's3' | 'lfs' | (string & {});
|
|
16
|
+
export type PermissionLevel = 'read' | 'edit' | 'review';
|
|
17
|
+
export interface PermissionTarget {
|
|
18
|
+
allowedUsers?: CanopyUserId[];
|
|
19
|
+
allowedGroups?: CanopyGroupId[];
|
|
20
|
+
}
|
|
21
|
+
export interface PathPermission {
|
|
22
|
+
path: PermissionPath;
|
|
23
|
+
read?: PermissionTarget;
|
|
24
|
+
edit?: PermissionTarget;
|
|
25
|
+
review?: PermissionTarget;
|
|
26
|
+
}
|
|
27
|
+
export type SelectOption = string | {
|
|
28
|
+
label: string;
|
|
29
|
+
value: string;
|
|
30
|
+
};
|
|
31
|
+
export type ReferenceOption = string | {
|
|
32
|
+
label: string;
|
|
33
|
+
value: string;
|
|
34
|
+
};
|
|
35
|
+
export interface BaseFieldConfig {
|
|
36
|
+
name: string;
|
|
37
|
+
label?: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
required?: boolean;
|
|
40
|
+
list?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface PrimitiveFieldConfig extends BaseFieldConfig {
|
|
43
|
+
type: PrimitiveFieldType;
|
|
44
|
+
}
|
|
45
|
+
export interface SelectFieldConfig extends BaseFieldConfig {
|
|
46
|
+
type: 'select';
|
|
47
|
+
options: SelectOption[];
|
|
48
|
+
}
|
|
49
|
+
export interface ReferenceFieldConfig extends BaseFieldConfig {
|
|
50
|
+
type: 'reference';
|
|
51
|
+
collections: string[];
|
|
52
|
+
displayField?: string;
|
|
53
|
+
options?: ReferenceOption[];
|
|
54
|
+
}
|
|
55
|
+
export interface BlockConfig {
|
|
56
|
+
name: string;
|
|
57
|
+
label?: string;
|
|
58
|
+
description?: string;
|
|
59
|
+
fields: FieldConfig[];
|
|
60
|
+
}
|
|
61
|
+
export interface BlockFieldConfig extends BaseFieldConfig {
|
|
62
|
+
type: 'block';
|
|
63
|
+
templates: BlockConfig[];
|
|
64
|
+
}
|
|
65
|
+
export interface ObjectFieldConfig extends BaseFieldConfig {
|
|
66
|
+
type: 'object';
|
|
67
|
+
fields: FieldConfig[];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Custom field config for user-defined field types.
|
|
71
|
+
* The type must not conflict with built-in types.
|
|
72
|
+
* Note: We use a branded type approach to avoid index signature issues.
|
|
73
|
+
*/
|
|
74
|
+
export type CustomFieldConfig = BaseFieldConfig & {
|
|
75
|
+
type: Exclude<string, FieldType>;
|
|
76
|
+
};
|
|
77
|
+
export type FieldConfig = PrimitiveFieldConfig | SelectFieldConfig | ReferenceFieldConfig | BlockFieldConfig | ObjectFieldConfig | CustomFieldConfig;
|
|
78
|
+
export type MediaConfig = {
|
|
79
|
+
adapter: 'local';
|
|
80
|
+
publicBaseUrl?: string;
|
|
81
|
+
} | {
|
|
82
|
+
adapter: 's3';
|
|
83
|
+
bucket: string;
|
|
84
|
+
region: string;
|
|
85
|
+
publicBaseUrl?: string;
|
|
86
|
+
} | {
|
|
87
|
+
adapter: 'lfs';
|
|
88
|
+
publicBaseUrl?: string;
|
|
89
|
+
} | {
|
|
90
|
+
adapter: string;
|
|
91
|
+
publicBaseUrl?: string;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Field definitions for one entry type — the array of FieldConfig that
|
|
95
|
+
* describes which fields an entry of this type contains.
|
|
96
|
+
*
|
|
97
|
+
* Contrast with BranchSchema, which is the full collection tree for a branch.
|
|
98
|
+
*/
|
|
99
|
+
export type EntrySchema = readonly FieldConfig[];
|
|
100
|
+
/**
|
|
101
|
+
* Entry type config: defines a type of content within a collection.
|
|
102
|
+
* Each type has its own entry schema (fields) and can have cardinality constraints.
|
|
103
|
+
*
|
|
104
|
+
* Examples:
|
|
105
|
+
* - { name: 'post', format: 'mdx', schema: postSchema } - unlimited posts
|
|
106
|
+
* - { name: 'settings', format: 'json', schema: settingsSchema, maxItems: 1 } - restricted to one instance
|
|
107
|
+
*/
|
|
108
|
+
export type EntryTypeConfig = {
|
|
109
|
+
readonly name: string;
|
|
110
|
+
readonly format: ContentFormat;
|
|
111
|
+
readonly schema: EntrySchema;
|
|
112
|
+
/** Entry schema registry key (e.g., "postSchema"). Set during schema resolution. */
|
|
113
|
+
readonly schemaRef?: string;
|
|
114
|
+
readonly label?: string;
|
|
115
|
+
readonly description?: string;
|
|
116
|
+
readonly default?: boolean;
|
|
117
|
+
readonly maxItems?: number;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Collection: contains nested collections and typed entries.
|
|
121
|
+
* The entries array defines the types of content allowed in this collection.
|
|
122
|
+
*/
|
|
123
|
+
export type CollectionConfig = {
|
|
124
|
+
readonly name: string;
|
|
125
|
+
readonly path: string;
|
|
126
|
+
readonly label?: string;
|
|
127
|
+
readonly description?: string;
|
|
128
|
+
/** 12-char content ID from the collection's directory name. Optional: absent in static configs. */
|
|
129
|
+
readonly contentId?: ContentId;
|
|
130
|
+
/** Array of entry types allowed in this collection */
|
|
131
|
+
readonly entries?: readonly EntryTypeConfig[];
|
|
132
|
+
readonly collections?: readonly CollectionConfig[];
|
|
133
|
+
/** Ordering of items by embedded ID. Items not in order appear at end alphabetically. */
|
|
134
|
+
readonly order?: readonly string[];
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Root schema configuration for CanopyCMS.
|
|
138
|
+
* Contains top-level collections and entries (typed content at the root level).
|
|
139
|
+
*/
|
|
140
|
+
export type RootCollectionConfig = {
|
|
141
|
+
/** Optional label for the root collection (e.g., "All Files", "Content") */
|
|
142
|
+
readonly label?: string;
|
|
143
|
+
/** Entry types at the root level */
|
|
144
|
+
readonly entries?: readonly EntryTypeConfig[];
|
|
145
|
+
readonly collections?: readonly CollectionConfig[];
|
|
146
|
+
/** Ordering of root items by embedded ID. Items not in order appear at end alphabetically. */
|
|
147
|
+
readonly order?: readonly string[];
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* The full collection structure tree for one branch — the resolved schema
|
|
151
|
+
* describing all collections, entry types, and their fields.
|
|
152
|
+
*
|
|
153
|
+
* Contrast with EntrySchema, which is the field definitions for a single entry type.
|
|
154
|
+
*/
|
|
155
|
+
export type BranchSchema = RootCollectionConfig;
|
|
156
|
+
export interface CanopyEditorConfig {
|
|
157
|
+
title?: string;
|
|
158
|
+
subtitle?: string;
|
|
159
|
+
theme?: unknown;
|
|
160
|
+
previewBase?: Record<string, string>;
|
|
161
|
+
onAccountClick?: () => void;
|
|
162
|
+
onLogoutClick?: () => void;
|
|
163
|
+
AccountComponent?: React.ComponentType;
|
|
164
|
+
}
|
|
165
|
+
export type DefaultBranchAccess = 'allow' | 'deny';
|
|
166
|
+
export type DefaultPathAccess = 'allow' | 'deny';
|
|
167
|
+
export type DefaultBaseBranch = string;
|
|
168
|
+
export type DefaultRemoteName = string;
|
|
169
|
+
export type DefaultRemoteUrl = string;
|
|
170
|
+
export type GitBotAuthorName = string;
|
|
171
|
+
export type GitBotAuthorEmail = string;
|
|
172
|
+
export type GithubTokenEnvVar = string;
|
|
173
|
+
export type CanopyOperatingMode = OperatingMode;
|
|
174
|
+
export type ContentRoot = string;
|
|
175
|
+
export type SourceRoot = string | undefined;
|
|
176
|
+
/**
|
|
177
|
+
* Validated CanopyConfig - the runtime configuration object.
|
|
178
|
+
*/
|
|
179
|
+
export interface CanopyConfig {
|
|
180
|
+
media?: MediaConfig;
|
|
181
|
+
defaultBranchAccess?: DefaultBranchAccess;
|
|
182
|
+
defaultPathAccess?: DefaultPathAccess;
|
|
183
|
+
defaultBaseBranch?: DefaultBaseBranch;
|
|
184
|
+
defaultRemoteName?: DefaultRemoteName;
|
|
185
|
+
defaultRemoteUrl?: DefaultRemoteUrl;
|
|
186
|
+
gitBotAuthorName: GitBotAuthorName;
|
|
187
|
+
gitBotAuthorEmail: GitBotAuthorEmail;
|
|
188
|
+
githubTokenEnvVar?: GithubTokenEnvVar;
|
|
189
|
+
mode: CanopyOperatingMode;
|
|
190
|
+
settingsBranch?: string;
|
|
191
|
+
autoCreateSettingsPR?: boolean;
|
|
192
|
+
deploymentName?: string;
|
|
193
|
+
contentRoot: ContentRoot;
|
|
194
|
+
sourceRoot?: SourceRoot;
|
|
195
|
+
editor?: CanopyEditorConfig;
|
|
196
|
+
authPlugin?: AuthPlugin;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Input type for config authoring (allows looser types before validation)
|
|
200
|
+
*/
|
|
201
|
+
export interface CanopyConfigInput {
|
|
202
|
+
media?: MediaConfig;
|
|
203
|
+
defaultBranchAccess?: DefaultBranchAccess;
|
|
204
|
+
defaultPathAccess?: DefaultPathAccess;
|
|
205
|
+
defaultBaseBranch?: string;
|
|
206
|
+
defaultRemoteName?: string;
|
|
207
|
+
defaultRemoteUrl?: string;
|
|
208
|
+
gitBotAuthorName: string;
|
|
209
|
+
gitBotAuthorEmail: string;
|
|
210
|
+
githubTokenEnvVar?: string;
|
|
211
|
+
mode?: OperatingMode;
|
|
212
|
+
settingsBranch?: string;
|
|
213
|
+
autoCreateSettingsPR?: boolean;
|
|
214
|
+
deploymentName?: string;
|
|
215
|
+
contentRoot?: string;
|
|
216
|
+
sourceRoot?: string;
|
|
217
|
+
editor?: CanopyEditorConfig;
|
|
218
|
+
authPlugin?: AuthPlugin;
|
|
219
|
+
}
|
|
220
|
+
export type CanopyConfigFragment = Partial<CanopyConfigInput>;
|
|
221
|
+
/**
|
|
222
|
+
* Flattened schema item for efficient lookups.
|
|
223
|
+
* Discriminated union of collection or entry type with logical path resolved.
|
|
224
|
+
* Used for O(1) schema lookups via Map<logicalPath, FlatSchemaItem>.
|
|
225
|
+
*/
|
|
226
|
+
export type FlatSchemaItem = {
|
|
227
|
+
type: 'collection';
|
|
228
|
+
logicalPath: LogicalPath;
|
|
229
|
+
name: string;
|
|
230
|
+
label?: string;
|
|
231
|
+
description?: string;
|
|
232
|
+
/** 12-char content ID from the collection's directory name. Optional: absent in static configs. */
|
|
233
|
+
contentId?: ContentId;
|
|
234
|
+
parentPath?: LogicalPath;
|
|
235
|
+
/** Array of entry types in this collection */
|
|
236
|
+
entries?: readonly EntryTypeConfig[];
|
|
237
|
+
collections?: readonly CollectionConfig[];
|
|
238
|
+
/** Ordering of items by embedded ID. Items not in order appear at end alphabetically. */
|
|
239
|
+
order?: readonly string[];
|
|
240
|
+
} | {
|
|
241
|
+
/** An entry type within a collection */
|
|
242
|
+
type: 'entry-type';
|
|
243
|
+
logicalPath: LogicalPath;
|
|
244
|
+
/** The entry type name (e.g., 'post', 'doc') */
|
|
245
|
+
name: string;
|
|
246
|
+
label?: string;
|
|
247
|
+
description?: string;
|
|
248
|
+
/** Path of the parent collection */
|
|
249
|
+
parentPath: LogicalPath;
|
|
250
|
+
format: ContentFormat;
|
|
251
|
+
schema: EntrySchema;
|
|
252
|
+
/** Entry schema registry key (e.g., "postSchema"). Set during schema resolution. */
|
|
253
|
+
schemaRef?: string;
|
|
254
|
+
default?: boolean;
|
|
255
|
+
maxItems?: number;
|
|
256
|
+
};
|
|
257
|
+
/**
|
|
258
|
+
* Client config - subset safe for browser (DRY - derived from CanopyConfig)
|
|
259
|
+
* Use flatSchema for O(1) cached access to the flattened schema structure.
|
|
260
|
+
* Schema is loaded from .collection.json files on the server and provided as flatSchema.
|
|
261
|
+
*/
|
|
262
|
+
export type CanopyClientConfig = Pick<CanopyConfig, 'defaultBaseBranch' | 'contentRoot' | 'editor' | 'mode'> & {
|
|
263
|
+
flatSchema: FlatSchemaItem[];
|
|
264
|
+
};
|
|
265
|
+
export interface ClientOnlyFields {
|
|
266
|
+
editor?: {
|
|
267
|
+
onAccountClick?: () => void;
|
|
268
|
+
onLogoutClick?: () => void | Promise<void>;
|
|
269
|
+
AccountComponent?: React.ComponentType;
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for CanopyCMS configuration.
|
|
3
|
+
* These are pure TypeScript types - Zod schemas are in ./schemas/
|
|
4
|
+
*/
|
|
5
|
+
// Field types
|
|
6
|
+
export const primitiveFieldTypes = [
|
|
7
|
+
'string',
|
|
8
|
+
'number',
|
|
9
|
+
'boolean',
|
|
10
|
+
'datetime',
|
|
11
|
+
'rich-text',
|
|
12
|
+
'markdown',
|
|
13
|
+
'mdx',
|
|
14
|
+
'image',
|
|
15
|
+
'code',
|
|
16
|
+
];
|
|
17
|
+
export const fieldTypes = [
|
|
18
|
+
...primitiveFieldTypes,
|
|
19
|
+
'select',
|
|
20
|
+
'reference',
|
|
21
|
+
'object',
|
|
22
|
+
'block',
|
|
23
|
+
];
|
|
24
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,cAAc;AACd,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,WAAW;IACX,UAAU;IACV,KAAK;IACL,OAAO;IACP,MAAM;CACE,CAAA;AAEV,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,GAAG,mBAAmB;IACtB,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,OAAO;CACC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration validation utilities.
|
|
3
|
+
*/
|
|
4
|
+
import type { CanopyConfig } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Recursively check that all select fields have options defined.
|
|
7
|
+
* Throws an error if a select field is missing options.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ensureSelectFieldsHaveOptions: (config: unknown) => void;
|
|
10
|
+
/**
|
|
11
|
+
* Validate and normalize a CanopyConfig object.
|
|
12
|
+
* Performs Zod validation, checks select field options, and normalizes paths.
|
|
13
|
+
*
|
|
14
|
+
* @param config - Raw configuration input
|
|
15
|
+
* @returns Validated and normalized CanopyConfig
|
|
16
|
+
* @throws Error if validation fails
|
|
17
|
+
*/
|
|
18
|
+
export declare const validateCanopyConfig: (config: unknown) => CanopyConfig;
|
|
19
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GAAI,QAAQ,OAAO,KAAG,IAqC/D,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,OAAO,KAAG,YAUtD,CAAA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration validation utilities.
|
|
3
|
+
*/
|
|
4
|
+
import { CanopyConfigSchema } from './schemas/config';
|
|
5
|
+
import { normalizePathValue, normalizeSchemaPathsRoot } from './flatten';
|
|
6
|
+
/**
|
|
7
|
+
* Recursively check that all select fields have options defined.
|
|
8
|
+
* Throws an error if a select field is missing options.
|
|
9
|
+
*/
|
|
10
|
+
export const ensureSelectFieldsHaveOptions = (config) => {
|
|
11
|
+
const checkFields = (fields) => {
|
|
12
|
+
if (!Array.isArray(fields))
|
|
13
|
+
return;
|
|
14
|
+
for (const field of fields) {
|
|
15
|
+
const f = field;
|
|
16
|
+
if (f?.type === 'select' && (!Array.isArray(f.options) || f.options.length === 0)) {
|
|
17
|
+
const fieldName = f?.name ?? 'unknown';
|
|
18
|
+
throw new Error(`Select field "${fieldName}" requires options`);
|
|
19
|
+
}
|
|
20
|
+
if (f?.type === 'object') {
|
|
21
|
+
checkFields(f.fields);
|
|
22
|
+
}
|
|
23
|
+
if (f?.type === 'block' && Array.isArray(f.templates)) {
|
|
24
|
+
for (const template of f.templates) {
|
|
25
|
+
checkFields(template.fields);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const walkSchema = (root) => {
|
|
31
|
+
if (!root)
|
|
32
|
+
return;
|
|
33
|
+
// Check entries fields (now an array of entry types)
|
|
34
|
+
if (Array.isArray(root.entries)) {
|
|
35
|
+
for (const entryType of root.entries) {
|
|
36
|
+
checkFields(entryType?.schema);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Recursively check nested collections
|
|
40
|
+
if (Array.isArray(root.collections)) {
|
|
41
|
+
for (const collection of root.collections) {
|
|
42
|
+
walkSchema(collection);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
walkSchema(config?.schema);
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Validate and normalize a CanopyConfig object.
|
|
50
|
+
* Performs Zod validation, checks select field options, and normalizes paths.
|
|
51
|
+
*
|
|
52
|
+
* @param config - Raw configuration input
|
|
53
|
+
* @returns Validated and normalized CanopyConfig
|
|
54
|
+
* @throws Error if validation fails
|
|
55
|
+
*/
|
|
56
|
+
export const validateCanopyConfig = (config) => {
|
|
57
|
+
ensureSelectFieldsHaveOptions(config);
|
|
58
|
+
const parsed = CanopyConfigSchema.parse(config);
|
|
59
|
+
const normalized = {
|
|
60
|
+
...parsed,
|
|
61
|
+
contentRoot: normalizePathValue(parsed.contentRoot ?? 'content'),
|
|
62
|
+
schema: parsed.schema ? normalizeSchemaPathsRoot(parsed.schema) : undefined,
|
|
63
|
+
};
|
|
64
|
+
return normalized;
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAGxE;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,MAAe,EAAQ,EAAE;IACrE,MAAM,WAAW,GAAG,CAAC,MAA6B,EAAE,EAAE;QACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAM;QAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,KAAgC,CAAA;YAC1C,IAAI,CAAC,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClF,MAAM,SAAS,GAAI,CAAC,EAAE,IAAe,IAAI,SAAS,CAAA;gBAClD,MAAM,IAAI,KAAK,CAAC,iBAAiB,SAAS,oBAAoB,CAAC,CAAA;YACjE,CAAC;YACD,IAAI,CAAC,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzB,WAAW,CAAC,CAAC,CAAC,MAAmB,CAAC,CAAA;YACpC,CAAC;YACD,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtD,KAAK,MAAM,QAAQ,IAAI,CAAC,CAAC,SAA0C,EAAE,CAAC;oBACpE,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,CAAC,IAAyC,EAAE,EAAE;QAC/D,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,qDAAqD;QACrD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAwC,EAAE,CAAC;gBACtE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;QACD,uCAAuC;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAA6C,EAAE,CAAC;gBAC5E,UAAU,CAAC,UAAU,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,UAAU,CAAE,MAAkC,EAAE,MAAiC,CAAC,CAAA;AACpF,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAe,EAAgB,EAAE;IACpE,6BAA6B,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC/C,MAAM,UAAU,GAAG;QACjB,GAAG,MAAM;QACT,WAAW,EAAE,kBAAkB,CAAC,MAAM,CAAC,WAAW,IAAI,SAAS,CAAC;QAChE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;KAC5E,CAAA;IAED,OAAO,UAA0B,CAAA;AACnC,CAAC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CanopyConfig, CanopyConfigInput, RootCollectionConfig } from './config';
|
|
2
|
+
import { type CanopyServices, type CreateCanopyServicesOptions } from './services';
|
|
3
|
+
type TestConfigInput = Omit<CanopyConfigInput, 'gitBotAuthorName' | 'gitBotAuthorEmail' | 'schema'> & {
|
|
4
|
+
schema: RootCollectionConfig;
|
|
5
|
+
} & Partial<Pick<CanopyConfigInput, 'gitBotAuthorName' | 'gitBotAuthorEmail'>>;
|
|
6
|
+
/**
|
|
7
|
+
* Test-only helper that fills required author fields for convenience.
|
|
8
|
+
* Do not use in production code; prefer defineCanopyConfig.
|
|
9
|
+
*/
|
|
10
|
+
export declare const defineCanopyTestConfig: (config: TestConfigInput, overrides?: Partial<CanopyConfigInput>) => CanopyConfig;
|
|
11
|
+
/**
|
|
12
|
+
* Test-only helper that creates CanopyServices with inline schema.
|
|
13
|
+
* Creates a mock branchSchemaCache that returns the test schema without requiring .collection.json files.
|
|
14
|
+
* Do not use in production code; use createCanopyServices with entrySchemaRegistry.
|
|
15
|
+
*/
|
|
16
|
+
export declare const createTestServices: (config: TestConfigInput, options?: CreateCanopyServicesOptions) => Promise<CanopyServices>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=config-test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-test.d.ts","sourceRoot":"","sources":["../src/config-test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAErF,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,2BAA2B,EACjC,MAAM,YAAY,CAAA;AAOnB,KAAK,eAAe,GAAG,IAAI,CACzB,iBAAiB,EACjB,kBAAkB,GAAG,mBAAmB,GAAG,QAAQ,CACpD,GAAG;IACF,MAAM,EAAE,oBAAoB,CAAA;CAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,eAAe,EACvB,YAAY,OAAO,CAAC,iBAAiB,CAAC,KACrC,YAQF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,eAAe,EACvB,UAAU,2BAA2B,KACpC,OAAO,CAAC,cAAc,CAmBxB,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { defineCanopyConfig, flattenSchema } from './config';
|
|
2
|
+
import { createTestCanopyServices, } from './services';
|
|
3
|
+
const FALLBACK_AUTHOR = {
|
|
4
|
+
gitBotAuthorName: 'CanopyCMS Test Bot',
|
|
5
|
+
gitBotAuthorEmail: 'canopycms-test@example.com',
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Test-only helper that fills required author fields for convenience.
|
|
9
|
+
* Do not use in production code; prefer defineCanopyConfig.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCanopyTestConfig = (config, overrides) => {
|
|
12
|
+
// Destructure to exclude schema from being spread into defineCanopyConfig
|
|
13
|
+
const { schema: _schema, ...configWithoutSchema } = config;
|
|
14
|
+
return defineCanopyConfig({
|
|
15
|
+
...FALLBACK_AUTHOR,
|
|
16
|
+
...configWithoutSchema,
|
|
17
|
+
...(overrides ?? {}),
|
|
18
|
+
}).server;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Test-only helper that creates CanopyServices with inline schema.
|
|
22
|
+
* Creates a mock branchSchemaCache that returns the test schema without requiring .collection.json files.
|
|
23
|
+
* Do not use in production code; use createCanopyServices with entrySchemaRegistry.
|
|
24
|
+
*/
|
|
25
|
+
export const createTestServices = async (config, options) => {
|
|
26
|
+
const canopyConfig = defineCanopyTestConfig(config);
|
|
27
|
+
const flatSchema = flattenSchema(config.schema, canopyConfig.contentRoot);
|
|
28
|
+
// Create a mock branchSchemaCache that returns the test schema
|
|
29
|
+
const mockBranchSchemaCache = {
|
|
30
|
+
getSchema: async () => ({
|
|
31
|
+
schema: config.schema,
|
|
32
|
+
flatSchema,
|
|
33
|
+
}),
|
|
34
|
+
invalidate: async () => { },
|
|
35
|
+
clearAll: async () => { },
|
|
36
|
+
};
|
|
37
|
+
return createTestCanopyServices(canopyConfig, {
|
|
38
|
+
...options,
|
|
39
|
+
branchSchemaCache: mockBranchSchemaCache,
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=config-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-test.js","sourceRoot":"","sources":["../src/config-test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EACL,wBAAwB,GAGzB,MAAM,YAAY,CAAA;AAEnB,MAAM,eAAe,GAAG;IACtB,gBAAgB,EAAE,oBAAoB;IACtC,iBAAiB,EAAE,4BAA4B;CAChD,CAAA;AASD;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAuB,EACvB,SAAsC,EACxB,EAAE;IAChB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,GAAG,MAAM,CAAA;IAC1D,OAAO,kBAAkB,CAAC;QACxB,GAAG,eAAe;QAClB,GAAG,mBAAmB;QACtB,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;KACrB,CAAC,CAAC,MAAM,CAAA;AACX,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,MAAuB,EACvB,OAAqC,EACZ,EAAE;IAC3B,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;IAEzE,+DAA+D;IAC/D,MAAM,qBAAqB,GAAG;QAC5B,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU;SACX,CAAC;QACF,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QAC1B,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;KACzB,CAAA;IAED,OAAO,wBAAwB,CAAC,YAAY,EAAE;QAC5C,GAAG,OAAO;QACV,iBAAiB,EACf,qBAAoF;KACvF,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CanopyCMS Configuration
|
|
3
|
+
*
|
|
4
|
+
* This file re-exports from the config module for backward compatibility.
|
|
5
|
+
* New code should import directly from './config/index' or './config'.
|
|
6
|
+
*
|
|
7
|
+
* @module config
|
|
8
|
+
*/
|
|
9
|
+
export * from './config/index';
|
|
10
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,cAAc,gBAAgB,CAAA"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CanopyCMS Configuration
|
|
3
|
+
*
|
|
4
|
+
* This file re-exports from the config module for backward compatibility.
|
|
5
|
+
* New code should import directly from './config/index' or './config'.
|
|
6
|
+
*
|
|
7
|
+
* @module config
|
|
8
|
+
*/
|
|
9
|
+
// Re-export everything from the config module
|
|
10
|
+
export * from './config/index';
|
|
11
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8CAA8C;AAC9C,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { type LogicalPath, type PhysicalPath, type EntrySlug, type ContentId } from './paths';
|
|
2
|
+
export interface IdLocation {
|
|
3
|
+
id: ContentId;
|
|
4
|
+
type: 'entry' | 'collection';
|
|
5
|
+
relativePath: PhysicalPath;
|
|
6
|
+
collection?: LogicalPath;
|
|
7
|
+
slug?: EntrySlug;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* ContentIdIndex manages the bidirectional mapping between content IDs and file paths.
|
|
11
|
+
*
|
|
12
|
+
* IDs are embedded in filenames using the patterns:
|
|
13
|
+
* - Entries: `{type}.{slug}.{12-char-id}.{ext}` (e.g., `post.dune.a1b2c3d4e5f6.json`)
|
|
14
|
+
* - Collection directories: `{slug}.{12-char-id}/` (e.g., `posts.a1b2c3d4e5f6/`)
|
|
15
|
+
*
|
|
16
|
+
* This class builds an in-memory index by scanning filenames recursively, providing O(1) lookups
|
|
17
|
+
* in both directions (ID→path and path→ID).
|
|
18
|
+
*
|
|
19
|
+
* The index is built lazily on first access to optimize Lambda cold starts.
|
|
20
|
+
*
|
|
21
|
+
* ## Multi-Process Consistency
|
|
22
|
+
*
|
|
23
|
+
* This class is NOT thread-safe. In multi-process environments (e.g., multiple Lambda
|
|
24
|
+
* instances or server processes), each process maintains its own in-memory index.
|
|
25
|
+
*
|
|
26
|
+
* **Consistency guarantees:**
|
|
27
|
+
* - Filenames on the filesystem are the source of truth
|
|
28
|
+
* - Each process discovers the same filenames when building its index
|
|
29
|
+
* - Write operations that change filenames are atomic (rename is atomic)
|
|
30
|
+
* - Read operations always reflect current filesystem state after index rebuild
|
|
31
|
+
*
|
|
32
|
+
* **Race condition handling:**
|
|
33
|
+
* - Multiple processes creating entries simultaneously: Each generates a unique ID,
|
|
34
|
+
* collisions detected during index build (fail fast)
|
|
35
|
+
* - One process writes, another reads: Reader's stale index might miss new IDs until
|
|
36
|
+
* next rebuild. This is acceptable - eventual consistency.
|
|
37
|
+
* - Index drift: Rare, but processes can rebuild index if they detect missing IDs
|
|
38
|
+
*
|
|
39
|
+
* For most use cases (CMS with human editors), race conditions are unlikely and
|
|
40
|
+
* eventual consistency is sufficient.
|
|
41
|
+
*/
|
|
42
|
+
export declare class ContentIdIndex {
|
|
43
|
+
private idToLocation;
|
|
44
|
+
private pathToId;
|
|
45
|
+
private byCollection;
|
|
46
|
+
private root;
|
|
47
|
+
constructor(root: string);
|
|
48
|
+
/**
|
|
49
|
+
* Build index by scanning filenames recursively.
|
|
50
|
+
* Throws if duplicate IDs found (collision detection).
|
|
51
|
+
*/
|
|
52
|
+
buildFromFilenames(startPath?: string): Promise<void>;
|
|
53
|
+
private scanDirectory;
|
|
54
|
+
/**
|
|
55
|
+
* Forward lookup: ID → location (O(1))
|
|
56
|
+
*/
|
|
57
|
+
findById(id: string): IdLocation | null;
|
|
58
|
+
/**
|
|
59
|
+
* Reverse lookup: path → ID (O(1))
|
|
60
|
+
*/
|
|
61
|
+
findByPath(relativePath: PhysicalPath): ContentId | null;
|
|
62
|
+
/**
|
|
63
|
+
* Get all ID locations in the index.
|
|
64
|
+
* Useful for validation and checking references.
|
|
65
|
+
*/
|
|
66
|
+
getAllLocations(): IdLocation[];
|
|
67
|
+
/**
|
|
68
|
+
* Get all entries in a collection by collection path.
|
|
69
|
+
*
|
|
70
|
+
* Performance: O(1) + O(m) where m is the number of entries in the collection.
|
|
71
|
+
*
|
|
72
|
+
* @param collectionPath - The collection path (e.g., "content/posts")
|
|
73
|
+
* @returns Array of IdLocation objects for entries in the collection
|
|
74
|
+
*/
|
|
75
|
+
getEntriesInCollection(collectionPath: LogicalPath): IdLocation[];
|
|
76
|
+
/**
|
|
77
|
+
* Add a new entry or collection to the index.
|
|
78
|
+
* Note: This only updates the in-memory index. The file with embedded ID
|
|
79
|
+
* must already exist on disk (created by ContentStore).
|
|
80
|
+
*/
|
|
81
|
+
add(location: Omit<IdLocation, 'id'>): void;
|
|
82
|
+
/**
|
|
83
|
+
* Remove an entry or collection from the index by ID.
|
|
84
|
+
* Note: This only updates the in-memory index. The file must be deleted separately.
|
|
85
|
+
*/
|
|
86
|
+
remove(id: ContentId): void;
|
|
87
|
+
/**
|
|
88
|
+
* Update the path for an existing ID (e.g., after file rename/move).
|
|
89
|
+
* This is used to keep the index in sync when files are renamed.
|
|
90
|
+
*/
|
|
91
|
+
updatePath(id: ContentId, newRelativePath: PhysicalPath): void;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Extract ID from filename.
|
|
95
|
+
* Returns null if filename doesn't contain an ID or is a metadata file.
|
|
96
|
+
*
|
|
97
|
+
* Pattern:
|
|
98
|
+
* - Collection entry files: type.slug.id.ext → ID is parts[parts.length - 2] (e.g., "post.dune.a1b2c3d4e5f6.json")
|
|
99
|
+
* - Collection directories: slug.id → ID is parts[1] (e.g., "posts.a1b2c3d4e5f6")
|
|
100
|
+
* - Metadata files: .collection.json, .gitignore, etc. → null
|
|
101
|
+
*
|
|
102
|
+
* Edge cases:
|
|
103
|
+
* - Slugs with dots: "post.my.page.a1b2c3d4e5f6.json" → extracts "a1b2c3d4e5f6"
|
|
104
|
+
* - Hidden files with IDs: ".hidden.a1b2c3d4e5f6.json" → returns null (metadata)
|
|
105
|
+
* - No ID present: "file.json" → returns null
|
|
106
|
+
*/
|
|
107
|
+
export declare function extractIdFromFilename(filename: string): ContentId | null;
|
|
108
|
+
/**
|
|
109
|
+
* Resolve a logical collection path to its actual filesystem path with embedded IDs.
|
|
110
|
+
* Recursively resolves each path segment to handle nested collections.
|
|
111
|
+
*
|
|
112
|
+
* Example:
|
|
113
|
+
* Input: resolveCollectionPath(root, "content/docs/api")
|
|
114
|
+
* Output: "/abs/path/to/content/docs.bChqT78gcaLd/api.meiuwxTSo7UN"
|
|
115
|
+
*
|
|
116
|
+
* @param root - Absolute path to the workspace root
|
|
117
|
+
* @param logicalPath - Logical path from schema (e.g., "content/docs/api")
|
|
118
|
+
* @returns Absolute filesystem path with embedded IDs, or null if path doesn't exist
|
|
119
|
+
*/
|
|
120
|
+
export declare function resolveCollectionPath(root: string, logicalPath: LogicalPath): Promise<string | null>;
|
|
121
|
+
/**
|
|
122
|
+
* Extract entry type name from filename.
|
|
123
|
+
* For collection entry files with pattern type.slug.id.ext, returns the type (first part).
|
|
124
|
+
*
|
|
125
|
+
* Examples:
|
|
126
|
+
* - "post.my-slug.a1b2c3d4e5f6.json" → "post"
|
|
127
|
+
* - "article.test.a1b2c3d4e5f6.md" → "article"
|
|
128
|
+
* - "posts.a1b2c3d4e5f6" → null (directory, not an entry file)
|
|
129
|
+
*
|
|
130
|
+
* @param filename - The filename to parse
|
|
131
|
+
* @returns Entry type name or null if not a valid entry file
|
|
132
|
+
*/
|
|
133
|
+
export declare function extractEntryTypeFromFilename(filename: string): string | null;
|
|
134
|
+
/**
|
|
135
|
+
* Extract slug from filename.
|
|
136
|
+
*
|
|
137
|
+
* Collection entries: type.slug.id.ext → slug is parts[1...-2] (between type and ID)
|
|
138
|
+
* Directories: slug.id → slug is parts[0] (before ID)
|
|
139
|
+
*
|
|
140
|
+
* For collection entry files (4+ parts), automatically strips the first part (type) to extract just the slug.
|
|
141
|
+
*
|
|
142
|
+
* Examples:
|
|
143
|
+
* - "post.my-slug.a1b2c3d4e5f6.json" → "my-slug" (4 parts)
|
|
144
|
+
* - "post.my.page.a1b2c3d4e5f6.json" → "my.page" (dotted slug, 5 parts)
|
|
145
|
+
* - "posts.a1b2c3d4e5f6" → "posts" (directory, 2 parts)
|
|
146
|
+
*
|
|
147
|
+
* @param filename - The filename to parse
|
|
148
|
+
* @param entryTypeName - Optional entry type name for explicit type matching (e.g., "post")
|
|
149
|
+
* If provided and matches first part, strips it from slug
|
|
150
|
+
*/
|
|
151
|
+
export declare function extractSlugFromFilename(filename: string, entryTypeName?: string): string;
|
|
152
|
+
//# sourceMappingURL=content-id-index.d.ts.map
|