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
package/README.md
ADDED
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
# CanopyCMS
|
|
2
|
+
|
|
3
|
+
CanopyCMS is a schema-driven, branch-aware CMS for websites that store their content in GitHub repositories.
|
|
4
|
+
|
|
5
|
+
## What it does for you
|
|
6
|
+
|
|
7
|
+
- Lets you keep your site code and content in one repo.
|
|
8
|
+
- Lets your users edit your content without ever touch Git directly.
|
|
9
|
+
- Keeps your users changes apart from each other on separate branches.
|
|
10
|
+
- Enforces schema constraints on your content.
|
|
11
|
+
- Limits which users can see/edit which branch and which content.
|
|
12
|
+
- See edits immediately in a live preview of your site.
|
|
13
|
+
- Use block-based page building, nested objects, Mermaid, MDX, and more.
|
|
14
|
+
- Upload and manage assets in various stores (S3, LFS, etc)
|
|
15
|
+
- Bring-your-own-auth (with pre-built adapter for Clerk)
|
|
16
|
+
- Lets you deploy the editor within your public facing site or keep it in a separate site.
|
|
17
|
+
- Minimal deployment requirements: a filesystem that common to your web request handlers.
|
|
18
|
+
- Form pages are autogenerated from schemas.
|
|
19
|
+
|
|
20
|
+
## Branch roots
|
|
21
|
+
|
|
22
|
+
- Workspaces resolve per mode: `prod` uses `$CANOPYCMS_WORKSPACE_ROOT/branches` (default: `/mnt/efs/workspace/branches`), `prod-sim` uses `.canopy-prod-sim/branches/<branch>`, and `dev` works directly in the current checkout (no extra clone).
|
|
23
|
+
- For `prod` mode, you must set `defaultRemoteUrl`. For `prod-sim`, `defaultRemoteUrl` is **optional** - if omitted, a local simulated remote is auto-created at `.canopy-prod-sim/remote.git`.
|
|
24
|
+
- Optionally configure `defaultRemoteName` (default: `origin`) and `defaultBaseBranch` (default: `main`).
|
|
25
|
+
- Git author identity is required for all modes except `dev`: set `gitBotAuthorName` and `gitBotAuthorEmail` so bot commits can be created reliably.
|
|
26
|
+
- Branch names are sanitized and traversal is blocked before creating directories.
|
|
27
|
+
- Metadata lives at `<workspace>/.canopy-meta/branch.json`; the registry lives at `<branchesRoot>/branches.json` and records the workspaceRoot for each branch.
|
|
28
|
+
- `BranchWorkspaceManager` + `loadBranchState` keep metadata and registry entries in sync so APIs read/write against the correct workspace root.
|
|
29
|
+
|
|
30
|
+
## Content formats
|
|
31
|
+
|
|
32
|
+
CanopyCMS supports content as
|
|
33
|
+
|
|
34
|
+
- JSON
|
|
35
|
+
- Markdown (`.md`) and MDX (`.mdx`) with frontmatter
|
|
36
|
+
- Blocks and nested objects via schema definitions
|
|
37
|
+
|
|
38
|
+
## How it works (behind the scenes)
|
|
39
|
+
|
|
40
|
+
When a user makes an edit in CanopyCMS, they do so on a branch they choose (or are defaulted into). That branch represents an underlying git branch that they don't see. Behind the scenes, CanopyCMS manages a set of git clones, each tuned to a different branch supporting the branches your users see in the editing interface. When a user saves a change, that change is written to disk. A user can change multiple files on a branch, e.g. to work on changes across files that work together. When they click a button to publish their branch, the changes are committed in git, and a pull request is made. Reviewers can comment on the submission within the editor and users can make changes and resubmit. Reviewers finally accept the change on GitHub by merging the pull request. CanopyCMS then marks the change as complete and archives the branch. Sync jobs refresh clones when upstream changes happen and surface conflicts without dropping a branch's changes. Authorization information for users and groups is stored on disk and managed by CanopyCMS.
|
|
41
|
+
|
|
42
|
+
## How to integrate (Next.js)
|
|
43
|
+
|
|
44
|
+
1. **Define your schema/config** (`canopycms.config.ts`)
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
import { defineCanopyConfig } from 'canopycms'
|
|
48
|
+
|
|
49
|
+
export default defineCanopyConfig({
|
|
50
|
+
mode: 'dev', // or prod-sim/prod
|
|
51
|
+
gitBotAuthorName: 'Canopy Bot',
|
|
52
|
+
gitBotAuthorEmail: 'canopy@example.com',
|
|
53
|
+
editor: {
|
|
54
|
+
title: 'CanopyCMS Editor', // optional UI defaults
|
|
55
|
+
subtitle: 'Edit content',
|
|
56
|
+
theme: {
|
|
57
|
+
colors: { brand: '#4f46e5' },
|
|
58
|
+
},
|
|
59
|
+
// previewBase: { 'content/posts': '/blog' }, // optional overrides
|
|
60
|
+
},
|
|
61
|
+
// For prod mode, defaultRemoteUrl is required.
|
|
62
|
+
// For prod-sim, it's optional - if omitted, uses auto-initialized local remote at .canopy-prod-sim/remote.git
|
|
63
|
+
// defaultRemoteUrl: 'https://github.com/your/repo.git',
|
|
64
|
+
defaultBranchAccess: 'allow',
|
|
65
|
+
// Optional: contentRoot defaults to "content"
|
|
66
|
+
// contentRoot: 'content',
|
|
67
|
+
schema: {
|
|
68
|
+
collections: [
|
|
69
|
+
{
|
|
70
|
+
name: 'posts',
|
|
71
|
+
path: 'posts', // resolves to content/posts by default
|
|
72
|
+
entries: [
|
|
73
|
+
{
|
|
74
|
+
name: 'post',
|
|
75
|
+
format: 'mdx',
|
|
76
|
+
default: true,
|
|
77
|
+
fields: [
|
|
78
|
+
{ name: 'title', type: 'string', required: true },
|
|
79
|
+
{ name: 'body', type: 'mdx', required: true },
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
collections: [
|
|
84
|
+
{
|
|
85
|
+
name: 'highlights',
|
|
86
|
+
path: 'featured',
|
|
87
|
+
entries: [
|
|
88
|
+
{
|
|
89
|
+
name: 'highlight',
|
|
90
|
+
format: 'mdx',
|
|
91
|
+
fields: [
|
|
92
|
+
{ name: 'title', type: 'string' },
|
|
93
|
+
{ name: 'body', type: 'mdx' },
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
entries: [
|
|
102
|
+
{
|
|
103
|
+
name: 'home',
|
|
104
|
+
format: 'json',
|
|
105
|
+
maxItems: 1, // acts as a singleton - only one instance allowed
|
|
106
|
+
fields: [
|
|
107
|
+
{
|
|
108
|
+
name: 'hero',
|
|
109
|
+
type: 'object',
|
|
110
|
+
fields: [{ name: 'headline', type: 'string' }],
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
},
|
|
116
|
+
})
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The `schema` object has two top-level keys: `collections` (nested collections with their own entry types) and `entries` (entry types at the root level). Collections can contain other collections via `collections` and define their allowed content via `entries`. Use `maxItems: 1` on an entry type to restrict it to a single instance (like a singleton). `contentRoot` (default `content`) is prefixed when resolving filesystem paths and ids, so a `path` of `posts` becomes `content/posts`. Use the collection’s resolved `path` (id) when calling APIs or building editor URLs.
|
|
120
|
+
|
|
121
|
+
_TODO_ show how schemas can be defined across multiple files. Show all the configuration options for schemas.
|
|
122
|
+
|
|
123
|
+
2. **Add API routes** with the Next adapter
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
// app/api/canopycms/[...canopycms]/route.ts
|
|
127
|
+
import config from '../../../canopycms.config' // adjust path as needed
|
|
128
|
+
import { createCanopyHandler } from 'canopycms/next'
|
|
129
|
+
import { createClerkAuthPlugin } from 'canopycms-auth-clerk'
|
|
130
|
+
|
|
131
|
+
const handler = createCanopyHandler({
|
|
132
|
+
config,
|
|
133
|
+
authPlugin: createClerkAuthPlugin({
|
|
134
|
+
secretKey: process.env.CLERK_SECRET_KEY,
|
|
135
|
+
useOrganizationsAsGroups: true, // Map Clerk organizations to CMS groups
|
|
136
|
+
}),
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
export const GET = handler
|
|
140
|
+
export const POST = handler
|
|
141
|
+
export const PUT = handler
|
|
142
|
+
export const DELETE = handler
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
The `authPlugin` is required and handles authentication for all API requests. See [canopycms-auth-clerk](../canopycms-auth-clerk) for Clerk integration or create your own plugin implementing the `AuthPlugin` interface.
|
|
146
|
+
|
|
147
|
+
The `[collection]` segment should receive the collection `path` (the id). If your ids include `/`, encode them (`encodeURIComponent`) when building URLs to keep them as a single path segment.
|
|
148
|
+
|
|
149
|
+
Host styling is framework-agnostic: your public app can use Tailwind (the included example does) or anything else; Mantine is only required inside the CanopyCMS editor UI.
|
|
150
|
+
|
|
151
|
+
3. **Load content in your pages** with the Next helper
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
// app/page.tsx (server component)
|
|
155
|
+
import { createContentReader } from 'canopycms'
|
|
156
|
+
import config from '../canopycms.config'
|
|
157
|
+
|
|
158
|
+
const reader = createContentReader({ config })
|
|
159
|
+
|
|
160
|
+
export default async function Page({ searchParams }: { searchParams?: { branch?: string } }) {
|
|
161
|
+
const { data } = await reader.read<{
|
|
162
|
+
/* your data shape */
|
|
163
|
+
}>({
|
|
164
|
+
entryPath: 'content/home',
|
|
165
|
+
branch: searchParams?.branch,
|
|
166
|
+
})
|
|
167
|
+
// render using data; preview hooks can infer the entry id from the current URL
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
`read` returns `{ data, path }` and throws if the content is missing. In preview pages, `useCanopyPreview` can infer the entry id from `window.location` so you can usually ignore `path`. Pass a `branch` when you want branch-specific data; otherwise it defaults to your configured base branch. The helper enforces the same branch/path access rules as the API handlers.
|
|
172
|
+
|
|
173
|
+
4. **Wire auth**
|
|
174
|
+
Provide an `authPlugin` in `createCanopyHandler` (e.g., Clerk) so branch/path permissions can be enforced.
|
|
175
|
+
|
|
176
|
+
**Permission Model:**
|
|
177
|
+
|
|
178
|
+
- **Reserved Groups**: `Admins` (full access to all operations), `Reviewers` (can review branches, request changes, approve PRs)
|
|
179
|
+
- **Bootstrap Admins**: Set `CANOPY_BOOTSTRAP_ADMIN_IDS=user_id1,user_id2` to grant admin access to specific users before the group system is configured
|
|
180
|
+
- **Path-based permissions**: Define which groups can access which content paths
|
|
181
|
+
- **Branch permissions**: Branch creators can edit their branches; Admins/Reviewers can see all branches
|
|
182
|
+
|
|
183
|
+
5. **Embed the editor** in an editor-only build/app
|
|
184
|
+
|
|
185
|
+
```tsx
|
|
186
|
+
import { CanopyEditorPage } from 'canopycms/client'
|
|
187
|
+
import config from '../canopycms.config'
|
|
188
|
+
|
|
189
|
+
export default CanopyEditorPage(config)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
The editor loads entries on the client from `/api/canopycms/[branch]/entries`, so server prefetch is optional. Use `previewBaseByCollection` to control preview URLs per collection.
|
|
193
|
+
|
|
194
|
+
6. **Theme it**
|
|
195
|
+
Wrap editor surfaces with `CanopyCMSProvider` to load Mantine styles and customize `brand`/`primary`/`neutral`/`accent` colors and color scheme. Pass `themeOptions` into `Editor` if desired.
|
|
196
|
+
|
|
197
|
+
_TODO_ show an example
|
|
198
|
+
|
|
199
|
+
7. **Split builds**
|
|
200
|
+
Keep your public build free of editor bundles by importing only from `canopycms` (server helpers + data loaders). Host the editor in a separate app or build target that imports from `canopycms/client` and mounts the API routes above.
|
|
201
|
+
|
|
202
|
+
_TODO_ show real examples of what to do
|
|
203
|
+
|
|
204
|
+
### Preview branch awareness
|
|
205
|
+
|
|
206
|
+
- When building preview URLs, include the current branch as a query param (e.g., `/?branch=feature-foo` or `/posts/hello?branch=feature-foo`) so SSR preview pages read from the same branch workspace the editor is editing. The `Editor` component appends the branch param automatically to `previewBaseByCollection`; your page loaders should read `searchParams.branch` and pass it into `createContentReader`.
|
|
207
|
+
- For public static builds, omit/ignore the branch param; this pattern is only for the editor/preview environment.
|
|
208
|
+
- Likewise, include `branch` in your editor route (e.g., `/edit?branch=feature-foo`) and have your editor page pass it to `<Editor>` so reloads/links preserve the selected branch. The `Editor` will also reflect branch switches back into the query string.
|
|
209
|
+
|
|
210
|
+
### Live preview with `useCanopyPreview`
|
|
211
|
+
|
|
212
|
+
The `useCanopyPreview` hook provides live updates to your preview components as content is edited in the CMS. It automatically receives draft changes from the editor iframe and returns updated data in real-time.
|
|
213
|
+
|
|
214
|
+
**Basic usage:**
|
|
215
|
+
|
|
216
|
+
```tsx
|
|
217
|
+
'use client'
|
|
218
|
+
|
|
219
|
+
import { useCanopyPreview } from 'canopycms/client'
|
|
220
|
+
import type { PostContent } from './schemas'
|
|
221
|
+
|
|
222
|
+
export function PostView({ data }: { data: PostContent }) {
|
|
223
|
+
const {
|
|
224
|
+
data: liveData,
|
|
225
|
+
isLoading,
|
|
226
|
+
highlightEnabled,
|
|
227
|
+
fieldProps,
|
|
228
|
+
} = useCanopyPreview<PostContent>({
|
|
229
|
+
initialData: data,
|
|
230
|
+
})
|
|
231
|
+
|
|
232
|
+
return (
|
|
233
|
+
<article>
|
|
234
|
+
<h1 {...fieldProps('title')}>{liveData.title}</h1>
|
|
235
|
+
<p {...fieldProps('body')}>{liveData.body}</p>
|
|
236
|
+
</article>
|
|
237
|
+
)
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Return values:**
|
|
242
|
+
|
|
243
|
+
- `data`: The current content data (initial data on first render, then live updates from editor)
|
|
244
|
+
- `isLoading`: Object mirroring your data structure with boolean loading states for reference fields
|
|
245
|
+
- `highlightEnabled`: Boolean indicating if field highlighting is active in the editor
|
|
246
|
+
- `fieldProps`: Helper function to add `data-canopy-path` attributes for editor integration
|
|
247
|
+
|
|
248
|
+
**Reference fields and loading states:**
|
|
249
|
+
|
|
250
|
+
When using reference fields (foreign key relationships to other content), the editor resolves these references asynchronously. Use the `isLoading` object to show loading states for reference fields:
|
|
251
|
+
|
|
252
|
+
```tsx
|
|
253
|
+
'use client'
|
|
254
|
+
|
|
255
|
+
import { useCanopyPreview } from 'canopycms/client'
|
|
256
|
+
|
|
257
|
+
export function PostView({ data }: { data: PostContent }) {
|
|
258
|
+
const { data: liveData, isLoading } = useCanopyPreview<PostContent>({
|
|
259
|
+
initialData: data,
|
|
260
|
+
})
|
|
261
|
+
|
|
262
|
+
return (
|
|
263
|
+
<article>
|
|
264
|
+
<h1>{liveData.title}</h1>
|
|
265
|
+
<AuthorCard author={liveData.author} isLoading={isLoading.author} />
|
|
266
|
+
</article>
|
|
267
|
+
)
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Component receives clean types - no framework coupling
|
|
271
|
+
interface AuthorCardProps {
|
|
272
|
+
author: AuthorContent | null
|
|
273
|
+
isLoading?: boolean // Optional - only needed if you want loading UI
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
function AuthorCard({ author, isLoading }: AuthorCardProps) {
|
|
277
|
+
if (isLoading) {
|
|
278
|
+
return <p>Loading author...</p>
|
|
279
|
+
}
|
|
280
|
+
if (!author) {
|
|
281
|
+
return null // Render nothing when no author
|
|
282
|
+
}
|
|
283
|
+
return <p>By {author.name}</p>
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
**Loading state structure:**
|
|
288
|
+
|
|
289
|
+
The `isLoading` object mirrors your data structure:
|
|
290
|
+
|
|
291
|
+
- Single reference field: `isLoading.author` is a `boolean`
|
|
292
|
+
- Array of references: `isLoading.relatedPosts` is an array of `boolean[]` values
|
|
293
|
+
- Non-reference fields: Always `false` (no loading state needed)
|
|
294
|
+
|
|
295
|
+
**Benefits:**
|
|
296
|
+
|
|
297
|
+
- ✅ Zero framework types in your components - just your content types + optional `isLoading: boolean`
|
|
298
|
+
- ✅ Works for nested reference fields at any depth
|
|
299
|
+
- ✅ Optional - only check loading state if you want to show loading UI
|
|
300
|
+
- ✅ Familiar pattern - mirrors React Query's `{ data, isLoading }` API
|
|
301
|
+
|
|
302
|
+
## Modes (pick per environment)
|
|
303
|
+
|
|
304
|
+
- **`dev`** (default): Work in the current repo checkout; fastest to start. No remote required.
|
|
305
|
+
- **`prod-sim`**: Uses `.canopy-prod-sim/branches/` for per-branch clones to mimic production behavior.
|
|
306
|
+
- **Auto-initialization**: If no `defaultRemoteUrl` is configured, CanopyCMS automatically creates a local simulated remote at `.canopy-prod-sim/remote.git` and seeds it with your current `baseBranch` (e.g., `main`). This allows fully local testing of branching and submission workflows without requiring an external GitHub remote.
|
|
307
|
+
- **Manual remote**: You can still provide an explicit `defaultRemoteUrl` to use a real remote or custom local path.
|
|
308
|
+
- **`prod`**: EFS-backed roots under `$CANOPYCMS_WORKSPACE_ROOT` (default: `/mnt/efs/workspace`). Requires `defaultRemoteUrl`.
|
|
309
|
+
|
|
310
|
+
Branch metadata lives in `.canopy-meta/branch.json`; registry in `branches.json` at the branches root. Content APIs resolve the workspace root from branch state + mode instead of relying on `process.cwd()`.
|
|
311
|
+
|
|
312
|
+
### Local Production Simulation Mode
|
|
313
|
+
|
|
314
|
+
The `prod-sim` mode is ideal for testing the full CanopyCMS workflow locally before deploying:
|
|
315
|
+
|
|
316
|
+
**Basic setup (auto-initialization):**
|
|
317
|
+
|
|
318
|
+
```ts
|
|
319
|
+
// canopycms.config.ts
|
|
320
|
+
export default defineCanopyConfig({
|
|
321
|
+
mode: 'prod-sim',
|
|
322
|
+
gitBotAuthorName: 'Canopy Bot',
|
|
323
|
+
gitBotAuthorEmail: 'bot@example.com',
|
|
324
|
+
// No defaultRemoteUrl needed - auto-creates .canopy-prod-sim/remote.git
|
|
325
|
+
})
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**How it works:**
|
|
329
|
+
|
|
330
|
+
1. When you create your first branch, CanopyCMS automatically creates a bare git repository at `.canopy-prod-sim/remote.git`
|
|
331
|
+
2. Your current `baseBranch` (default: `main`) is pushed to this local remote
|
|
332
|
+
3. Branch workspaces are cloned from this local remote into `.canopy-prod-sim/branches/<branch-name>/`
|
|
333
|
+
4. All git operations (push, fetch, etc.) work against the local remote
|
|
334
|
+
|
|
335
|
+
**Requirements:**
|
|
336
|
+
|
|
337
|
+
- Your project must be a git repository with at least one commit
|
|
338
|
+
- The `baseBranch` (e.g., `main`) must exist locally
|
|
339
|
+
- Git author identity must be configured (`gitBotAuthorName` and `gitBotAuthorEmail`)
|
|
340
|
+
|
|
341
|
+
**Resetting the simulation:**
|
|
342
|
+
If you change the `defaultBaseBranch` in your config or want to start fresh:
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
rm -rf .canopy-prod-sim/
|
|
346
|
+
npm run dev # Restart the server
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
This will reinitialize the local remote with the new base branch.
|
|
350
|
+
|
|
351
|
+
**Using in a monorepo:**
|
|
352
|
+
|
|
353
|
+
If your CanopyCMS config is in a subdirectory of a larger monorepo, set `sourceRoot` to tell CanopyCMS which directory to use as the source for the simulated remote:
|
|
354
|
+
|
|
355
|
+
```ts
|
|
356
|
+
// packages/my-app/canopycms.config.ts
|
|
357
|
+
export default defineCanopyConfig({
|
|
358
|
+
mode: 'prod-sim',
|
|
359
|
+
sourceRoot: 'packages/my-app', // Path relative to git repository root
|
|
360
|
+
gitBotAuthorName: 'Canopy Bot',
|
|
361
|
+
gitBotAuthorEmail: 'bot@example.com',
|
|
362
|
+
schema: [...]
|
|
363
|
+
})
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
This ensures that:
|
|
367
|
+
|
|
368
|
+
- Only the `packages/my-app` directory is pushed to the simulated remote (not the entire monorepo)
|
|
369
|
+
- Branch clones contain only your app's directory structure
|
|
370
|
+
- Content paths resolve correctly (e.g., `content/home` works as expected)
|
|
371
|
+
|
|
372
|
+
**How it works:**
|
|
373
|
+
|
|
374
|
+
1. When `sourceRoot` is set, CanopyCMS resolves it relative to the git repository root (where `process.cwd()` returns)
|
|
375
|
+
2. The simulated remote is created at `<sourceRoot>/.canopy-prod-sim/remote.git`
|
|
376
|
+
3. Only the `sourceRoot` directory is pushed to the remote using git subtree (using the baseBranch)
|
|
377
|
+
4. Branch workspaces are cloned from this remote and contain only the source directory
|
|
378
|
+
|
|
379
|
+
**When to use `sourceRoot`:**
|
|
380
|
+
|
|
381
|
+
- ✅ Your config is in a monorepo subdirectory (e.g., `packages/my-app/`)
|
|
382
|
+
- ✅ You're developing/testing CanopyCMS examples within the CanopyCMS repo itself
|
|
383
|
+
- ❌ Your config is at the root of a standalone repository (omit `sourceRoot` - defaults to git root)
|
|
384
|
+
|
|
385
|
+
**Using a real remote:**
|
|
386
|
+
You can still provide an explicit remote URL if you want to test against a real repository:
|
|
387
|
+
|
|
388
|
+
```ts
|
|
389
|
+
export default defineCanopyConfig({
|
|
390
|
+
mode: 'prod-sim',
|
|
391
|
+
defaultRemoteUrl: 'https://github.com/your/repo.git',
|
|
392
|
+
// ... or use a local bare repo at a custom path
|
|
393
|
+
})
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
## Deployment (placeholder)
|
|
397
|
+
|
|
398
|
+
- Public build: ships only your site/pages; reads main/default branch content.
|
|
399
|
+
- Editor build: ships the editor UI + CanopyCMS API routes; handles branch create/switch/save/submit and asset uploads.
|
|
400
|
+
- Modes map to environments: dev for quick dev, prod-sim to mimic prod clone behavior, prod on EFS. More deployment guidance will be documented as the branch-rooted APIs and submission flow land.
|
|
401
|
+
|
|
402
|
+
## Assets
|
|
403
|
+
|
|
404
|
+
- Local filesystem adapter (`LocalAssetStore`) is available now. S3 and LFS adapters are planned; the API handlers accept a provided adapter so you can swap storage without changing the editor.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ContentStore } from '../../content-store';
|
|
2
|
+
/**
|
|
3
|
+
* Sample blog posts for seeding test content
|
|
4
|
+
*/
|
|
5
|
+
export declare const SAMPLE_POSTS: {
|
|
6
|
+
slug: string;
|
|
7
|
+
data: {
|
|
8
|
+
title: string;
|
|
9
|
+
author: string;
|
|
10
|
+
date: string;
|
|
11
|
+
tags: string[];
|
|
12
|
+
body: string;
|
|
13
|
+
};
|
|
14
|
+
}[];
|
|
15
|
+
/**
|
|
16
|
+
* Sample about page content
|
|
17
|
+
*/
|
|
18
|
+
export declare const SAMPLE_ABOUT: {
|
|
19
|
+
title: string;
|
|
20
|
+
bio: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Sample products for e-commerce schema
|
|
24
|
+
*/
|
|
25
|
+
export declare const SAMPLE_PRODUCTS: {
|
|
26
|
+
slug: string;
|
|
27
|
+
data: {
|
|
28
|
+
name: string;
|
|
29
|
+
price: number;
|
|
30
|
+
description: string;
|
|
31
|
+
inStock: boolean;
|
|
32
|
+
images: string[];
|
|
33
|
+
};
|
|
34
|
+
}[];
|
|
35
|
+
/**
|
|
36
|
+
* Seed blog content into a ContentStore
|
|
37
|
+
*/
|
|
38
|
+
export declare function seedBlogContent(store: ContentStore): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Seed e-commerce content into a ContentStore
|
|
41
|
+
*/
|
|
42
|
+
export declare function seedEcommerceContent(store: ContentStore): Promise<void>;
|
|
43
|
+
//# sourceMappingURL=content-seeds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-seeds.d.ts","sourceRoot":"","sources":["../../../src/__integration__/fixtures/content-seeds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGvD;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;GA+BxB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;;;CAGxB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;GAqB3B,CAAA;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBxE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7E"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { unsafeAsLogicalPath, unsafeAsEntrySlug } from '../../paths/test-utils';
|
|
2
|
+
/**
|
|
3
|
+
* Sample blog posts for seeding test content
|
|
4
|
+
*/
|
|
5
|
+
export const SAMPLE_POSTS = [
|
|
6
|
+
{
|
|
7
|
+
slug: 'hello-world',
|
|
8
|
+
data: {
|
|
9
|
+
title: 'Hello World',
|
|
10
|
+
author: 'Test Author',
|
|
11
|
+
date: '2024-01-01T00:00:00Z',
|
|
12
|
+
tags: ['intro', 'test'],
|
|
13
|
+
body: 'Welcome to the test blog! This is the first post.',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
slug: 'second-post',
|
|
18
|
+
data: {
|
|
19
|
+
title: 'Second Post',
|
|
20
|
+
author: 'Test Author',
|
|
21
|
+
date: '2024-01-02T00:00:00Z',
|
|
22
|
+
tags: ['test'],
|
|
23
|
+
body: 'This is the second post for testing purposes.',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
slug: 'draft-post',
|
|
28
|
+
data: {
|
|
29
|
+
title: 'Draft Post',
|
|
30
|
+
author: 'Test Author',
|
|
31
|
+
date: '2024-01-03T00:00:00Z',
|
|
32
|
+
tags: ['draft'],
|
|
33
|
+
body: "This is a draft post that hasn't been published yet.",
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Sample about page content
|
|
39
|
+
*/
|
|
40
|
+
export const SAMPLE_ABOUT = {
|
|
41
|
+
title: 'About Us',
|
|
42
|
+
bio: 'This is a test about page for integration testing.',
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Sample products for e-commerce schema
|
|
46
|
+
*/
|
|
47
|
+
export const SAMPLE_PRODUCTS = [
|
|
48
|
+
{
|
|
49
|
+
slug: 'product-1',
|
|
50
|
+
data: {
|
|
51
|
+
name: 'Test Product 1',
|
|
52
|
+
price: 29.99,
|
|
53
|
+
description: 'A great test product',
|
|
54
|
+
inStock: true,
|
|
55
|
+
images: ['product1.jpg'],
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
slug: 'product-2',
|
|
60
|
+
data: {
|
|
61
|
+
name: 'Test Product 2',
|
|
62
|
+
price: 49.99,
|
|
63
|
+
description: 'Another test product',
|
|
64
|
+
inStock: false,
|
|
65
|
+
images: ['product2.jpg', 'product2-alt.jpg'],
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
/**
|
|
70
|
+
* Seed blog content into a ContentStore
|
|
71
|
+
*/
|
|
72
|
+
export async function seedBlogContent(store) {
|
|
73
|
+
// Seed posts
|
|
74
|
+
for (const post of SAMPLE_POSTS) {
|
|
75
|
+
await store.write(unsafeAsLogicalPath('content/posts'), unsafeAsEntrySlug(post.slug), {
|
|
76
|
+
format: 'mdx',
|
|
77
|
+
data: post.data,
|
|
78
|
+
body: post.data.body,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// Seed about page
|
|
82
|
+
await store.write(unsafeAsLogicalPath('content/about.md'), '', {
|
|
83
|
+
format: 'mdx',
|
|
84
|
+
data: SAMPLE_ABOUT,
|
|
85
|
+
body: SAMPLE_ABOUT.bio,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Seed e-commerce content into a ContentStore
|
|
90
|
+
*/
|
|
91
|
+
export async function seedEcommerceContent(store) {
|
|
92
|
+
for (const product of SAMPLE_PRODUCTS) {
|
|
93
|
+
await store.write(unsafeAsLogicalPath('content/products'), unsafeAsEntrySlug(product.slug), {
|
|
94
|
+
format: 'json',
|
|
95
|
+
data: product.data,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=content-seeds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-seeds.js","sourceRoot":"","sources":["../../../src/__integration__/fixtures/content-seeds.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE;YACJ,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;YACvB,IAAI,EAAE,mDAAmD;SAC1D;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE;YACJ,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,+CAA+C;SACtD;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,sDAAsD;SAC7D;KACF;CACF,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,oDAAoD;CAC1D,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE;YACJ,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,CAAC,cAAc,CAAC;SACzB;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE;YACJ,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC;SAC7C;KACF;CACF,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAmB;IACvD,aAAa;IACb,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpF,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAc;SAC/B,CAAC,CAAA;IACJ,CAAC;IAED,kBAAkB;IAClB,MAAM,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE;QAC7D,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,YAAY,CAAC,GAAa;KACjC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAmB;IAC5D,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1F,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RootCollectionConfig } from '../../config';
|
|
2
|
+
/**
|
|
3
|
+
* Blog schema for testing content workflows
|
|
4
|
+
* Contains posts collection
|
|
5
|
+
*/
|
|
6
|
+
export declare const BLOG_SCHEMA: RootCollectionConfig;
|
|
7
|
+
/**
|
|
8
|
+
* E-commerce schema for testing complex permission scenarios
|
|
9
|
+
* Contains products and categories
|
|
10
|
+
*/
|
|
11
|
+
export declare const ECOMMERCE_SCHEMA: RootCollectionConfig;
|
|
12
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/__integration__/fixtures/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAExD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,oBAoBzB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,oBAkC9B,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blog schema for testing content workflows
|
|
3
|
+
* Contains posts collection
|
|
4
|
+
*/
|
|
5
|
+
export const BLOG_SCHEMA = {
|
|
6
|
+
collections: [
|
|
7
|
+
{
|
|
8
|
+
name: 'posts',
|
|
9
|
+
path: 'posts',
|
|
10
|
+
entries: [
|
|
11
|
+
{
|
|
12
|
+
name: 'post',
|
|
13
|
+
format: 'mdx',
|
|
14
|
+
schema: [
|
|
15
|
+
{ name: 'title', type: 'string', required: true },
|
|
16
|
+
{ name: 'author', type: 'string' },
|
|
17
|
+
{ name: 'date', type: 'datetime' },
|
|
18
|
+
{ name: 'tags', type: 'string', list: true },
|
|
19
|
+
{ name: 'body', type: 'markdown', required: true },
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* E-commerce schema for testing complex permission scenarios
|
|
28
|
+
* Contains products and categories
|
|
29
|
+
*/
|
|
30
|
+
export const ECOMMERCE_SCHEMA = {
|
|
31
|
+
collections: [
|
|
32
|
+
{
|
|
33
|
+
name: 'products',
|
|
34
|
+
path: 'products',
|
|
35
|
+
entries: [
|
|
36
|
+
{
|
|
37
|
+
name: 'product',
|
|
38
|
+
format: 'json',
|
|
39
|
+
schema: [
|
|
40
|
+
{ name: 'name', type: 'string', required: true },
|
|
41
|
+
{ name: 'price', type: 'number', required: true },
|
|
42
|
+
{ name: 'description', type: 'markdown' },
|
|
43
|
+
{ name: 'inStock', type: 'boolean' },
|
|
44
|
+
{ name: 'images', type: 'string', list: true },
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'categories',
|
|
51
|
+
path: 'categories',
|
|
52
|
+
entries: [
|
|
53
|
+
{
|
|
54
|
+
name: 'category',
|
|
55
|
+
format: 'json',
|
|
56
|
+
schema: [
|
|
57
|
+
{ name: 'name', type: 'string', required: true },
|
|
58
|
+
{ name: 'description', type: 'string' },
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/__integration__/fixtures/schemas.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C,WAAW,EAAE;QACX;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE;wBACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;wBACjD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAClC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;wBAClC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5C,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;qBACnD;iBACF;aACF;SACF;KACF;CACF,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAyB;IACpD,WAAW,EAAE;QACX;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE;wBACN,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;wBAChD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;wBACjD,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE;wBACzC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;wBACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;qBAC/C;iBACF;aACF;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE;wBACN,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;wBAChD,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACxC;iBACF;aACF;SACF;KACF;CACF,CAAA"}
|