canopycms 0.0.67-int.90 → 0.0.67
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 +30 -3
- package/dist/ai/generate.js +1 -27
- package/dist/ai/handler.d.ts +0 -4
- package/dist/ai/handler.js +0 -11
- package/dist/ai/index.d.ts +1 -8
- package/dist/ai/index.js +1 -8
- package/dist/ai/json-to-markdown.js +15 -58
- package/dist/ai/resolve-branch.d.ts +2 -7
- package/dist/ai/resolve-branch.js +2 -8
- package/dist/ai/strip-mdx.d.ts +5 -13
- package/dist/ai/strip-mdx.js +5 -17
- package/dist/ai/to-plain-text.d.ts +10 -28
- package/dist/ai/to-plain-text.js +10 -28
- package/dist/ai/transform-components.d.ts +2 -4
- package/dist/ai/transform-components.js +8 -19
- package/dist/ai/types.d.ts +5 -10
- package/dist/api/admin-branch-health.d.ts +4 -12
- package/dist/api/admin-branch-health.js +26 -66
- package/dist/api/admin.d.ts +4 -12
- package/dist/api/admin.js +10 -26
- package/dist/api/assets.d.ts +0 -25
- package/dist/api/assets.js +50 -91
- package/dist/api/branch-merge.d.ts +1 -1
- package/dist/api/branch-merge.js +0 -2
- package/dist/api/branch-review.d.ts +0 -8
- package/dist/api/branch-review.js +0 -13
- package/dist/api/branch-status.d.ts +0 -3
- package/dist/api/branch-status.js +8 -33
- package/dist/api/branch-withdraw.d.ts +0 -1
- package/dist/api/branch-withdraw.js +6 -9
- package/dist/api/branch.d.ts +7 -12
- package/dist/api/branch.js +7 -44
- package/dist/api/client.d.ts +71 -224
- package/dist/api/client.js +82 -233
- package/dist/api/comments.d.ts +2 -4
- package/dist/api/comments.js +0 -17
- package/dist/api/content.d.ts +0 -6
- package/dist/api/content.js +66 -142
- package/dist/api/entries-constants.d.ts +5 -9
- package/dist/api/entries-constants.js +5 -9
- package/dist/api/entries.d.ts +8 -13
- package/dist/api/entries.js +20 -51
- package/dist/api/github-sync.d.ts +2 -4
- package/dist/api/github-sync.js +4 -8
- package/dist/api/groups.d.ts +3 -0
- package/dist/api/groups.js +8 -21
- package/dist/api/guards.d.ts +4 -16
- package/dist/api/guards.js +3 -22
- package/dist/api/index.d.ts +4 -4
- package/dist/api/permissions.d.ts +2 -0
- package/dist/api/permissions.js +18 -40
- package/dist/api/reference-options.d.ts +0 -1
- package/dist/api/reference-options.js +3 -11
- package/dist/api/request-body-hash.d.ts +12 -23
- package/dist/api/request-body-hash.js +12 -23
- package/dist/api/resolve-references.d.ts +0 -1
- package/dist/api/resolve-references.js +13 -28
- package/dist/api/route-builder.d.ts +3 -7
- package/dist/api/route-builder.js +1 -1
- package/dist/api/routes.d.ts +12 -0
- package/dist/api/routes.js +47 -0
- package/dist/api/schema.d.ts +23 -33
- package/dist/api/schema.js +20 -74
- package/dist/api/settings-helpers.js +4 -5
- package/dist/api/types.d.ts +0 -5
- package/dist/api/user.js +0 -5
- package/dist/api/validators.d.ts +14 -52
- package/dist/api/validators.js +14 -52
- package/dist/assets/asset-prefixes.d.ts +4 -8
- package/dist/assets/asset-prefixes.js +4 -8
- package/dist/assets/asset-src.d.ts +5 -22
- package/dist/assets/asset-src.js +5 -21
- package/dist/assets/factory.d.ts +1 -2
- package/dist/assets/factory.js +1 -2
- package/dist/assets/finalize.d.ts +3 -1
- package/dist/assets/finalize.js +3 -1
- package/dist/assets/index.d.ts +3 -3
- package/dist/assets/index.js +1 -1
- package/dist/assets/keys.d.ts +5 -3
- package/dist/assets/keys.js +6 -3
- package/dist/assets/pipeline.d.ts +3 -2
- package/dist/assets/pipeline.js +22 -56
- package/dist/assets/sharp-loader.d.ts +2 -10
- package/dist/assets/sharp-loader.js +2 -10
- package/dist/assets/store-local.d.ts +1 -2
- package/dist/assets/store-local.js +1 -2
- package/dist/assets/store-s3.d.ts +3 -4
- package/dist/assets/svg-sanitizer.d.ts +6 -14
- package/dist/assets/svg-sanitizer.js +6 -14
- package/dist/assets/transform-directives.d.ts +3 -4
- package/dist/assets/transform-directives.js +1 -1
- package/dist/assets/transform.d.ts +19 -30
- package/dist/assets/transform.js +18 -31
- package/dist/auth/cache.d.ts +2 -3
- package/dist/auth/cache.js +2 -3
- package/dist/auth/caching-auth-plugin.d.ts +11 -22
- package/dist/auth/caching-auth-plugin.js +12 -14
- package/dist/auth/context-helpers.d.ts +6 -20
- package/dist/auth/context-helpers.js +5 -17
- package/dist/auth/file-based-auth-cache.d.ts +10 -21
- package/dist/auth/file-based-auth-cache.js +23 -51
- package/dist/auth/plugin.d.ts +29 -61
- package/dist/auth/plugin.js +9 -13
- package/dist/auth/types.d.ts +11 -20
- package/dist/authorization/branch.d.ts +30 -49
- package/dist/authorization/branch.js +16 -42
- package/dist/authorization/content.d.ts +11 -40
- package/dist/authorization/content.js +13 -45
- package/dist/authorization/groups/index.d.ts +0 -3
- package/dist/authorization/groups/index.js +0 -3
- package/dist/authorization/groups/loader.d.ts +14 -28
- package/dist/authorization/groups/loader.js +14 -38
- package/dist/authorization/groups/schema.d.ts +0 -6
- package/dist/authorization/groups/schema.js +4 -7
- package/dist/authorization/helpers.d.ts +9 -28
- package/dist/authorization/helpers.js +9 -28
- package/dist/authorization/index.d.ts +3 -25
- package/dist/authorization/index.js +3 -35
- package/dist/authorization/path.d.ts +6 -13
- package/dist/authorization/path.js +8 -25
- package/dist/authorization/permissions/index.d.ts +0 -3
- package/dist/authorization/permissions/index.js +0 -3
- package/dist/authorization/permissions/loader.d.ts +14 -27
- package/dist/authorization/permissions/loader.js +14 -32
- package/dist/authorization/permissions/schema.d.ts +1 -6
- package/dist/authorization/permissions/schema.js +6 -13
- package/dist/authorization/protected-branch.d.ts +36 -65
- package/dist/authorization/protected-branch.js +29 -41
- package/dist/authorization/settings-file-store.d.ts +38 -81
- package/dist/authorization/settings-file-store.js +38 -79
- package/dist/authorization/types.d.ts +4 -26
- package/dist/authorization/types.js +0 -6
- package/dist/authorization/validation.d.ts +1 -23
- package/dist/authorization/validation.js +1 -24
- package/dist/branch-health.d.ts +39 -67
- package/dist/branch-health.js +27 -43
- package/dist/branch-metadata-file.d.ts +16 -32
- package/dist/branch-metadata-file.js +13 -26
- package/dist/branch-metadata.d.ts +49 -80
- package/dist/branch-metadata.js +57 -87
- package/dist/branch-registry.d.ts +26 -64
- package/dist/branch-registry.js +44 -93
- package/dist/branch-schema-cache.d.ts +34 -124
- package/dist/branch-schema-cache.js +49 -155
- package/dist/branch-workspace.d.ts +4 -4
- package/dist/branch-workspace.js +15 -19
- package/dist/build/generate-ai-content.d.ts +1 -0
- package/dist/build/generate-ai-content.js +12 -25
- package/dist/build-canopy.d.ts +17 -27
- package/dist/build-canopy.js +16 -23
- package/dist/build-mode.d.ts +25 -27
- package/dist/build-mode.js +25 -29
- package/dist/cli/cli.d.ts +15 -26
- package/dist/cli/cli.js +601 -978
- package/dist/cli/generate-ai-content.js +351 -628
- package/dist/cli/github-app-manifest.d.ts +84 -0
- package/dist/cli/github-app-manifest.js +161 -0
- package/dist/cli/init-github-app.d.ts +110 -444
- package/dist/cli/init-github-app.js +236 -773
- package/dist/cli/init.js +39 -80
- package/dist/cli/migrate.d.ts +13 -10
- package/dist/cli/migrate.js +22 -30
- package/dist/cli/project-detect.d.ts +17 -31
- package/dist/cli/project-detect.js +31 -42
- package/dist/cli/project-root.d.ts +4 -11
- package/dist/cli/project-root.js +4 -11
- package/dist/cli/prompt.d.ts +10 -0
- package/dist/cli/prompt.js +67 -0
- package/dist/cli/sync.d.ts +0 -8
- package/dist/cli/sync.js +8 -28
- package/dist/cli/template-files/middleware.ts.template +15 -29
- package/dist/cli/templates.d.ts +2 -12
- package/dist/cli/templates.js +4 -4
- package/dist/client.d.ts +1 -1
- package/dist/comment-store.d.ts +32 -53
- package/dist/comment-store.js +32 -52
- package/dist/config/flatten.d.ts +0 -3
- package/dist/config/flatten.js +2 -12
- package/dist/config/helpers.js +2 -2
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.js +1 -4
- package/dist/config/schemas/collection.d.ts +0 -8
- package/dist/config/schemas/collection.js +0 -10
- package/dist/config/schemas/config.d.ts +6 -78
- package/dist/config/schemas/config.js +38 -54
- package/dist/config/schemas/field.d.ts +2 -242
- package/dist/config/schemas/field.js +9 -20
- package/dist/config/schemas/media.js +1 -1
- package/dist/config/schemas/permissions.js +0 -2
- package/dist/config/schemas/url.d.ts +5 -6
- package/dist/config/schemas/url.js +5 -6
- package/dist/config/types.d.ts +45 -33
- package/dist/config/types.js +0 -1
- package/dist/config.d.ts +1 -8
- package/dist/config.js +1 -9
- package/dist/content-id-index.d.ts +76 -188
- package/dist/content-id-index.js +79 -230
- package/dist/content-index-generation.d.ts +27 -48
- package/dist/content-index-generation.js +35 -84
- package/dist/content-index-registry.d.ts +15 -24
- package/dist/content-index-registry.js +5 -9
- package/dist/content-listing.d.ts +64 -107
- package/dist/content-listing.js +68 -118
- package/dist/content-reader.d.ts +20 -29
- package/dist/content-reader.js +10 -18
- package/dist/content-store.d.ts +210 -336
- package/dist/content-store.js +413 -657
- package/dist/content-tree.d.ts +44 -86
- package/dist/content-tree.js +26 -54
- package/dist/context.d.ts +67 -94
- package/dist/context.js +53 -72
- package/dist/dev-content-watcher.d.ts +18 -18
- package/dist/dev-content-watcher.js +41 -44
- package/dist/editor/BranchManager.d.ts +3 -6
- package/dist/editor/BranchManager.js +24 -44
- package/dist/editor/CanopyEditor.js +5 -2
- package/dist/editor/CommentsPanel.js +0 -2
- package/dist/editor/Editor.js +19 -76
- package/dist/editor/EditorAuthGate.d.ts +27 -0
- package/dist/editor/EditorAuthGate.js +140 -0
- package/dist/editor/EntryNavigator.js +0 -20
- package/dist/editor/FormRenderer.d.ts +1 -2
- package/dist/editor/FormRenderer.js +8 -23
- package/dist/editor/admin/SystemHealthPanel.js +20 -37
- package/dist/editor/admin/useSystemHealth.d.ts +2 -3
- package/dist/editor/admin/useSystemHealth.js +10 -12
- package/dist/editor/client-reference-resolver.d.ts +2 -5
- package/dist/editor/client-reference-resolver.js +2 -19
- package/dist/editor/comments/BranchComments.js +0 -4
- package/dist/editor/comments/EntryComments.js +0 -4
- package/dist/editor/comments/FieldWrapper.js +0 -4
- package/dist/editor/comments/InlineCommentThread.js +0 -2
- package/dist/editor/comments/ThreadCarousel.d.ts +0 -58
- package/dist/editor/comments/ThreadCarousel.js +0 -12
- package/dist/editor/components/EditorFooter.d.ts +0 -8
- package/dist/editor/components/EditorFooter.js +0 -5
- package/dist/editor/components/EditorHeader.d.ts +0 -31
- package/dist/editor/components/EditorHeader.js +21 -71
- package/dist/editor/components/EditorSidebar.d.ts +0 -19
- package/dist/editor/components/EditorSidebar.js +0 -16
- package/dist/editor/components/EntryCreateModal.d.ts +4 -4
- package/dist/editor/components/EntryCreateModal.js +7 -22
- package/dist/editor/components/RenameEntryModal.js +0 -4
- package/dist/editor/components/UserBadge.js +0 -10
- package/dist/editor/components/index.js +0 -2
- package/dist/editor/context/ApiClientContext.d.ts +8 -7
- package/dist/editor/context/ApiClientContext.js +39 -11
- package/dist/editor/context/AssetContext.d.ts +7 -17
- package/dist/editor/context/AssetContext.js +7 -17
- package/dist/editor/context/EditorIdentityContext.d.ts +13 -0
- package/dist/editor/context/EditorIdentityContext.js +7 -0
- package/dist/editor/context/EditorStateContext.d.ts +10 -41
- package/dist/editor/context/EditorStateContext.js +7 -23
- package/dist/editor/context/SWRProvider.d.ts +3 -6
- package/dist/editor/context/index.d.ts +1 -20
- package/dist/editor/context/index.js +1 -20
- package/dist/editor/editor-utils.d.ts +8 -47
- package/dist/editor/editor-utils.js +19 -72
- package/dist/editor/fields/BlockField.d.ts +2 -2
- package/dist/editor/fields/BlockField.js +1 -2
- package/dist/editor/fields/CodeField.d.ts +0 -1
- package/dist/editor/fields/CodeField.js +0 -1
- package/dist/editor/fields/DateTimeField.d.ts +15 -22
- package/dist/editor/fields/DateTimeField.js +17 -26
- package/dist/editor/fields/ImageField.d.ts +2 -2
- package/dist/editor/fields/ImageField.js +8 -14
- package/dist/editor/fields/InlineGroupField.d.ts +0 -1
- package/dist/editor/fields/InlineGroupField.js +0 -1
- package/dist/editor/fields/MarkdownField.d.ts +0 -1
- package/dist/editor/fields/MarkdownField.js +6 -11
- package/dist/editor/fields/MdxImageDialog.d.ts +1 -1
- package/dist/editor/fields/MdxImageDialog.js +0 -1
- package/dist/editor/fields/NumberField.d.ts +9 -19
- package/dist/editor/fields/NumberField.js +11 -22
- package/dist/editor/fields/NumberListField.d.ts +7 -10
- package/dist/editor/fields/NumberListField.js +7 -10
- package/dist/editor/fields/ObjectField.d.ts +5 -8
- package/dist/editor/fields/ObjectField.js +0 -1
- package/dist/editor/fields/ReferenceField.d.ts +1 -1
- package/dist/editor/fields/ReferenceField.js +11 -16
- package/dist/editor/fields/SelectField.d.ts +2 -2
- package/dist/editor/fields/SelectField.js +0 -1
- package/dist/editor/fields/StringListField.d.ts +0 -4
- package/dist/editor/fields/StringListField.js +4 -9
- package/dist/editor/fields/TextField.d.ts +0 -1
- package/dist/editor/fields/TextField.js +0 -1
- package/dist/editor/fields/ToggleField.d.ts +0 -1
- package/dist/editor/fields/ToggleField.js +0 -1
- package/dist/editor/fields/entry-link/EntryLinkContext.js +2 -4
- package/dist/editor/fields/entry-link/InsertEntryLink.d.ts +0 -3
- package/dist/editor/fields/entry-link/InsertEntryLink.js +0 -4
- package/dist/editor/group-manager/ExternalGroupsTab.d.ts +0 -3
- package/dist/editor/group-manager/ExternalGroupsTab.js +0 -1
- package/dist/editor/group-manager/GroupCard.d.ts +0 -3
- package/dist/editor/group-manager/GroupForm.d.ts +0 -3
- package/dist/editor/group-manager/InternalGroupsTab.d.ts +0 -3
- package/dist/editor/group-manager/InternalGroupsTab.js +0 -2
- package/dist/editor/group-manager/MemberList.d.ts +0 -3
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.d.ts +0 -3
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.js +0 -3
- package/dist/editor/group-manager/hooks/useGroupState.d.ts +0 -3
- package/dist/editor/group-manager/hooks/useGroupState.js +0 -5
- package/dist/editor/group-manager/hooks/useUserSearch.d.ts +0 -3
- package/dist/editor/group-manager/hooks/useUserSearch.js +0 -3
- package/dist/editor/group-manager/index.d.ts +0 -6
- package/dist/editor/group-manager/index.js +0 -10
- package/dist/editor/group-manager/types.d.ts +2 -5
- package/dist/editor/group-manager/types.js +0 -3
- package/dist/editor/hooks/index.d.ts +6 -11
- package/dist/editor/hooks/index.js +6 -12
- package/dist/editor/hooks/useBranchActions.d.ts +0 -14
- package/dist/editor/hooks/useBranchActions.js +0 -22
- package/dist/editor/hooks/useBranchManager.d.ts +2 -48
- package/dist/editor/hooks/useBranchManager.js +4 -64
- package/dist/editor/hooks/useBranchesData.d.ts +7 -6
- package/dist/editor/hooks/useBranchesData.js +7 -6
- package/dist/editor/hooks/useCommentSystem.d.ts +0 -49
- package/dist/editor/hooks/useCommentSystem.js +1 -36
- package/dist/editor/hooks/useDraftManager.d.ts +2 -35
- package/dist/editor/hooks/useDraftManager.js +23 -64
- package/dist/editor/hooks/useEditorLayout.d.ts +0 -20
- package/dist/editor/hooks/useEditorLayout.js +0 -23
- package/dist/editor/hooks/useEntriesData.d.ts +1 -0
- package/dist/editor/hooks/useEntriesData.js +2 -3
- package/dist/editor/hooks/useEntryLinkResolution.d.ts +2 -2
- package/dist/editor/hooks/useEntryLinkResolution.js +2 -2
- package/dist/editor/hooks/useEntryManager.d.ts +2 -27
- package/dist/editor/hooks/useEntryManager.js +29 -78
- package/dist/editor/hooks/useGroupManager.d.ts +0 -21
- package/dist/editor/hooks/useGroupManager.js +0 -21
- package/dist/editor/hooks/usePermissionManager.d.ts +0 -20
- package/dist/editor/hooks/usePermissionManager.js +0 -20
- package/dist/editor/hooks/useReferenceResolution.d.ts +2 -33
- package/dist/editor/hooks/useReferenceResolution.js +1 -48
- package/dist/editor/hooks/useSchemaManager.d.ts +8 -27
- package/dist/editor/hooks/useSchemaManager.js +0 -19
- package/dist/editor/hooks/useUserContext.d.ts +2 -9
- package/dist/editor/hooks/useUserContext.js +10 -10
- package/dist/editor/hooks/useUserMetadata.d.ts +0 -2
- package/dist/editor/hooks/useUserMetadata.js +0 -3
- package/dist/editor/media/AssetCard.d.ts +0 -1
- package/dist/editor/media/AssetCard.js +1 -2
- package/dist/editor/media/CropStep.d.ts +0 -1
- package/dist/editor/media/CropStep.js +0 -1
- package/dist/editor/media/MediaLibrary.d.ts +1 -2
- package/dist/editor/media/MediaLibrary.js +1 -2
- package/dist/editor/media/MediaLibraryBody.d.ts +0 -1
- package/dist/editor/media/MediaLibraryBody.js +0 -1
- package/dist/editor/media/crop-math.d.ts +1 -1
- package/dist/editor/media/crop-math.js +1 -1
- package/dist/editor/permission-manager/GroupSelector.d.ts +0 -3
- package/dist/editor/permission-manager/PermissionEditor.d.ts +0 -4
- package/dist/editor/permission-manager/PermissionEditor.js +0 -1
- package/dist/editor/permission-manager/PermissionLevelBadge.d.ts +0 -7
- package/dist/editor/permission-manager/PermissionLevelBadge.js +0 -4
- package/dist/editor/permission-manager/PermissionTree.d.ts +0 -4
- package/dist/editor/permission-manager/UserSelector.d.ts +0 -3
- package/dist/editor/permission-manager/constants.d.ts +0 -3
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts +0 -3
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js +0 -10
- package/dist/editor/permission-manager/hooks/usePermissionTree.d.ts +0 -14
- package/dist/editor/permission-manager/hooks/usePermissionTree.js +0 -11
- package/dist/editor/permission-manager/index.d.ts +0 -7
- package/dist/editor/permission-manager/index.js +0 -16
- package/dist/editor/permission-manager/types.d.ts +2 -12
- package/dist/editor/permission-manager/types.js +0 -3
- package/dist/editor/permission-manager/utils.d.ts +0 -28
- package/dist/editor/permission-manager/utils.js +9 -23
- package/dist/editor/preview-bridge.d.ts +5 -1
- package/dist/editor/preview-bridge.js +4 -4
- package/dist/editor/schema-editor/CollectionEditor.d.ts +0 -5
- package/dist/editor/schema-editor/CollectionEditor.js +9 -31
- package/dist/editor/schema-editor/EntryTypeEditor.d.ts +0 -6
- package/dist/editor/schema-editor/EntryTypeEditor.js +3 -24
- package/dist/editor/schema-editor/index.d.ts +0 -7
- package/dist/editor/schema-editor/index.js +0 -7
- package/dist/editor/utils/env.d.ts +3 -18
- package/dist/editor/utils/env.js +6 -25
- package/dist/entry-link-resolver.d.ts +13 -35
- package/dist/entry-link-resolver.js +20 -53
- package/dist/entry-schema-registry.d.ts +20 -60
- package/dist/entry-schema-registry.js +20 -69
- package/dist/entry-schema.d.ts +118 -223
- package/dist/entry-schema.js +46 -91
- package/dist/git-manager.d.ts +101 -200
- package/dist/git-manager.js +211 -384
- package/dist/github-service.d.ts +34 -75
- package/dist/github-service.js +37 -91
- package/dist/http/handler.d.ts +6 -37
- package/dist/http/handler.js +65 -120
- package/dist/http/router.d.ts +15 -32
- package/dist/http/router.js +34 -99
- package/dist/http/types.d.ts +15 -40
- package/dist/http/types.js +3 -7
- package/dist/id.d.ts +4 -10
- package/dist/id.js +4 -10
- package/dist/index.js +6 -9
- package/dist/operating-mode/client-safe-strategy.d.ts +7 -14
- package/dist/operating-mode/client-safe-strategy.js +8 -28
- package/dist/operating-mode/client-unsafe-strategy.d.ts +6 -16
- package/dist/operating-mode/client-unsafe-strategy.js +9 -34
- package/dist/operating-mode/client.d.ts +3 -10
- package/dist/operating-mode/client.js +3 -8
- package/dist/operating-mode/deployment-name-fixtures.d.ts +14 -18
- package/dist/operating-mode/deployment-name-fixtures.js +14 -18
- package/dist/operating-mode/deployment-name.d.ts +19 -29
- package/dist/operating-mode/deployment-name.js +29 -47
- package/dist/operating-mode/index.d.ts +4 -25
- package/dist/operating-mode/index.js +9 -31
- package/dist/operating-mode/mode-env.d.ts +32 -54
- package/dist/operating-mode/mode-env.js +36 -58
- package/dist/operating-mode/types.d.ts +24 -72
- package/dist/operating-mode/types.js +1 -7
- package/dist/paths/branch-name.d.ts +30 -40
- package/dist/paths/branch-name.js +30 -40
- package/dist/paths/branch.d.ts +4 -18
- package/dist/paths/branch.js +6 -22
- package/dist/paths/index.d.ts +2 -13
- package/dist/paths/index.js +3 -23
- package/dist/paths/normalize-server.d.ts +3 -15
- package/dist/paths/normalize-server.js +3 -15
- package/dist/paths/normalize.d.ts +13 -33
- package/dist/paths/normalize.js +13 -33
- package/dist/paths/resolve.d.ts +4 -17
- package/dist/paths/resolve.js +4 -22
- package/dist/paths/types.d.ts +12 -34
- package/dist/paths/types.js +5 -7
- package/dist/paths/validation.d.ts +22 -119
- package/dist/paths/validation.js +30 -148
- package/dist/reference-resolver.d.ts +0 -13
- package/dist/reference-resolver.js +0 -18
- package/dist/resolve-canopy-user.d.ts +16 -18
- package/dist/resolve-canopy-user.js +17 -26
- package/dist/resource-generation.d.ts +16 -25
- package/dist/resource-generation.js +34 -97
- package/dist/schema/meta-loader.d.ts +2 -14
- package/dist/schema/meta-loader.js +15 -64
- package/dist/schema/resolver.d.ts +1 -4
- package/dist/schema/resolver.js +1 -6
- package/dist/schema/schema-store-types.d.ts +0 -12
- package/dist/schema/schema-store.d.ts +61 -138
- package/dist/schema/schema-store.js +85 -282
- package/dist/schema/types.d.ts +0 -4
- package/dist/server.d.ts +62 -93
- package/dist/server.js +63 -94
- package/dist/services.d.ts +23 -47
- package/dist/services.js +55 -98
- package/dist/settings-workspace.d.ts +17 -30
- package/dist/settings-workspace.js +51 -81
- package/dist/static/index.d.ts +26 -52
- package/dist/static/index.js +33 -67
- package/dist/{worker/task-queue.d.ts → task-queue/cms-task-queue.d.ts} +7 -9
- package/dist/task-queue/cms-task-queue.js +13 -0
- package/dist/task-queue/task-queue-config.d.ts +3 -0
- package/dist/{worker → task-queue}/task-queue-config.js +1 -6
- package/dist/task-queue/task-queue.d.ts +16 -22
- package/dist/task-queue/task-queue.js +20 -44
- package/dist/task-queue/types.d.ts +0 -1
- package/dist/task-queue/worker-status.d.ts +35 -0
- package/dist/task-queue/worker-status.js +40 -0
- package/dist/types.d.ts +40 -51
- package/dist/url-collision.d.ts +26 -40
- package/dist/url-collision.js +47 -63
- package/dist/url-exclusivity-fixtures.d.ts +15 -20
- package/dist/url-exclusivity-fixtures.js +14 -19
- package/dist/url-path-resolver.d.ts +8 -16
- package/dist/url-path-resolver.js +19 -29
- package/dist/user.d.ts +8 -21
- package/dist/user.js +10 -19
- package/dist/utils/async-mutex.js +4 -6
- package/dist/utils/atomic-write.d.ts +2 -11
- package/dist/utils/atomic-write.js +2 -11
- package/dist/utils/body-field.d.ts +8 -15
- package/dist/utils/body-field.js +8 -15
- package/dist/utils/content-serialize.d.ts +18 -24
- package/dist/utils/content-serialize.js +109 -160
- package/dist/utils/content-write-lock.d.ts +51 -106
- package/dist/utils/content-write-lock.js +66 -111
- package/dist/utils/debug.d.ts +7 -23
- package/dist/utils/debug.js +7 -23
- package/dist/utils/entry-url.d.ts +11 -23
- package/dist/utils/entry-url.js +11 -26
- package/dist/utils/error.d.ts +25 -90
- package/dist/utils/error.js +60 -147
- package/dist/utils/flatten-group-fields.d.ts +5 -7
- package/dist/utils/flatten-group-fields.js +5 -7
- package/dist/utils/format.d.ts +1 -5
- package/dist/utils/format.js +1 -5
- package/dist/utils/fs.d.ts +3 -4
- package/dist/utils/fs.js +3 -4
- package/dist/utils/git.d.ts +52 -83
- package/dist/utils/git.js +79 -125
- package/dist/utils/logger.d.ts +35 -50
- package/dist/utils/logger.js +35 -52
- package/dist/utils/provisioning-lock.d.ts +23 -35
- package/dist/utils/provisioning-lock.js +49 -69
- package/dist/utils/sanitize-href.d.ts +5 -10
- package/dist/utils/sanitize-href.js +8 -18
- package/dist/utils/title-field.d.ts +17 -20
- package/dist/utils/title-field.js +18 -27
- package/dist/utils/typed-filename.d.ts +20 -48
- package/dist/utils/typed-filename.js +25 -61
- package/dist/utils/url-prefix.d.ts +3 -3
- package/dist/utils/url-prefix.js +3 -3
- package/dist/validation/block-structural-keys.d.ts +16 -31
- package/dist/validation/block-structural-keys.js +19 -29
- package/dist/validation/deletion-checker.d.ts +0 -34
- package/dist/validation/deletion-checker.js +1 -43
- package/dist/validation/entry-link-validator.d.ts +6 -13
- package/dist/validation/entry-link-validator.js +4 -13
- package/dist/validation/entry-type-reference-validator.d.ts +13 -18
- package/dist/validation/entry-type-reference-validator.js +13 -18
- package/dist/validation/entry-validator.d.ts +13 -25
- package/dist/validation/entry-validator.js +15 -32
- package/dist/validation/field-traversal.d.ts +3 -30
- package/dist/validation/field-traversal.js +1 -32
- package/dist/validation/reference-validator.d.ts +5 -24
- package/dist/validation/reference-validator.js +5 -30
- package/dist/worker/cms-worker.d.ts +172 -232
- package/dist/worker/cms-worker.js +241 -333
- package/dist/worker/git-sync.d.ts +32 -133
- package/dist/worker/git-sync.js +129 -191
- package/dist/worker/github-auth.d.ts +13 -19
- package/dist/worker/github-auth.js +13 -19
- package/dist/worker/history-rewrite.d.ts +53 -66
- package/dist/worker/history-rewrite.js +54 -60
- package/dist/worker/log.d.ts +24 -41
- package/dist/worker/log.js +25 -42
- package/dist/worker/rebase.d.ts +20 -110
- package/dist/worker/rebase.js +279 -354
- package/dist/worker/task-runner.d.ts +32 -66
- package/dist/worker/task-runner.js +126 -162
- package/dist/worker/worker-context.d.ts +41 -81
- package/package.json +4 -4
- package/dist/cli/template-files/middleware-clerk.ts.template +0 -37
- package/dist/worker/task-queue-config.d.ts +0 -8
- package/dist/worker/task-queue.js +0 -19
- package/dist/worker/worker-status.d.ts +0 -47
- package/dist/worker/worker-status.js +0 -52
|
@@ -1,32 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Computes the `x-amz-content-sha256` header
|
|
3
|
-
*
|
|
2
|
+
* Computes the `x-amz-content-sha256` header CloudFront's Origin Access Control (OAC) requires
|
|
3
|
+
* for SigV4-signed origin requests that carry a body: OAC signs the request but never hashes the
|
|
4
|
+
* payload itself, so the viewer request must carry this header or the Function URL returns 403.
|
|
5
|
+
* See docs/deploying-to-aws.md for the deployment topology.
|
|
4
6
|
*
|
|
5
|
-
*
|
|
6
|
-
* Lambda Function URLs, but it never hashes the payload itself - it forwards
|
|
7
|
-
* whatever `x-amz-content-sha256` header value the viewer request already
|
|
8
|
-
* has. If a request has a body and this header is missing, Lambda's
|
|
9
|
-
* signature verification fails and the origin responds 403. See
|
|
10
|
-
* docs/deploying-to-aws.md for the full explanation.
|
|
11
|
-
*
|
|
12
|
-
* Uses WebCrypto (available in secure-context browsers and in Node >= 18) to
|
|
13
|
-
* compute the lowercase-hex SHA-256 digest of the exact bytes sent as the
|
|
14
|
-
* request body.
|
|
7
|
+
* Uses WebCrypto (secure-context browsers, Node >= 18) to hash the exact bytes sent.
|
|
15
8
|
*/
|
|
16
9
|
/**
|
|
17
|
-
* Hash a string request body (e.g. a JSON-serialized payload).
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* running over plain http, which is not a secure context) so callers can
|
|
21
|
-
* skip the header rather than throw - production deployments are always
|
|
22
|
-
* https.
|
|
10
|
+
* Hash a string request body (e.g. a JSON-serialized payload). Returns `undefined` when
|
|
11
|
+
* WebCrypto is unavailable (a dev server over plain http, not a secure context) so callers can
|
|
12
|
+
* skip the header instead of throwing — production is always https.
|
|
23
13
|
*/
|
|
24
14
|
export declare function computeContentSha256Hex(body: string): Promise<string | undefined>;
|
|
25
15
|
/**
|
|
26
|
-
* Hash a raw-bytes request body (e.g. an ArrayBuffer or Blob upload).
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* known until after the request would already need to be signed.
|
|
16
|
+
* Hash a raw-bytes request body (e.g. an ArrayBuffer or Blob upload). Not usable for `FormData`
|
|
17
|
+
* bodies — the multipart boundary is generated at send time, after the request would already
|
|
18
|
+
* need to be signed.
|
|
19
|
+
* @internal Exported for tests.
|
|
31
20
|
*/
|
|
32
21
|
export declare function computeContentSha256HexFromBytes(bytes: BufferSource): Promise<string | undefined>;
|
|
@@ -1,35 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Computes the `x-amz-content-sha256` header
|
|
3
|
-
*
|
|
2
|
+
* Computes the `x-amz-content-sha256` header CloudFront's Origin Access Control (OAC) requires
|
|
3
|
+
* for SigV4-signed origin requests that carry a body: OAC signs the request but never hashes the
|
|
4
|
+
* payload itself, so the viewer request must carry this header or the Function URL returns 403.
|
|
5
|
+
* See docs/deploying-to-aws.md for the deployment topology.
|
|
4
6
|
*
|
|
5
|
-
*
|
|
6
|
-
* Lambda Function URLs, but it never hashes the payload itself - it forwards
|
|
7
|
-
* whatever `x-amz-content-sha256` header value the viewer request already
|
|
8
|
-
* has. If a request has a body and this header is missing, Lambda's
|
|
9
|
-
* signature verification fails and the origin responds 403. See
|
|
10
|
-
* docs/deploying-to-aws.md for the full explanation.
|
|
11
|
-
*
|
|
12
|
-
* Uses WebCrypto (available in secure-context browsers and in Node >= 18) to
|
|
13
|
-
* compute the lowercase-hex SHA-256 digest of the exact bytes sent as the
|
|
14
|
-
* request body.
|
|
7
|
+
* Uses WebCrypto (secure-context browsers, Node >= 18) to hash the exact bytes sent.
|
|
15
8
|
*/
|
|
16
9
|
/**
|
|
17
|
-
* Hash a string request body (e.g. a JSON-serialized payload).
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* running over plain http, which is not a secure context) so callers can
|
|
21
|
-
* skip the header rather than throw - production deployments are always
|
|
22
|
-
* https.
|
|
10
|
+
* Hash a string request body (e.g. a JSON-serialized payload). Returns `undefined` when
|
|
11
|
+
* WebCrypto is unavailable (a dev server over plain http, not a secure context) so callers can
|
|
12
|
+
* skip the header instead of throwing — production is always https.
|
|
23
13
|
*/
|
|
24
14
|
export async function computeContentSha256Hex(body) {
|
|
25
15
|
return computeContentSha256HexFromBytes(new TextEncoder().encode(body));
|
|
26
16
|
}
|
|
27
17
|
/**
|
|
28
|
-
* Hash a raw-bytes request body (e.g. an ArrayBuffer or Blob upload).
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* known until after the request would already need to be signed.
|
|
18
|
+
* Hash a raw-bytes request body (e.g. an ArrayBuffer or Blob upload). Not usable for `FormData`
|
|
19
|
+
* bodies — the multipart boundary is generated at send time, after the request would already
|
|
20
|
+
* need to be signed.
|
|
21
|
+
* @internal Exported for tests.
|
|
33
22
|
*/
|
|
34
23
|
export async function computeContentSha256HexFromBytes(bytes) {
|
|
35
24
|
const subtle = globalThis.crypto?.subtle;
|
|
@@ -5,14 +5,10 @@ import { ReferenceResolver } from '../reference-resolver.js';
|
|
|
5
5
|
import { buildResolvedReference } from '../entry-schema.js';
|
|
6
6
|
import { computeEntryUrl } from '../utils/entry-url.js';
|
|
7
7
|
import { branchNameSchema, contentIdSchema } from './validators.js';
|
|
8
|
-
// ============================================================================
|
|
9
|
-
// Zod Schemas for Validation
|
|
10
|
-
// ============================================================================
|
|
11
8
|
/**
|
|
12
|
-
* Resolution does sequential per-ID file I/O
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* reference fields) while keeping worst-case latency/IO bounded (API-M1).
|
|
9
|
+
* Resolution does sequential per-ID file I/O, so the request body caps how much filesystem work
|
|
10
|
+
* a single caller can force. 100 is generous for real UI usage (a page's worth of reference
|
|
11
|
+
* fields) while keeping worst-case latency/IO bounded (API-M1).
|
|
16
12
|
*/
|
|
17
13
|
const MAX_RESOLVE_REFERENCE_IDS = 100;
|
|
18
14
|
const resolveReferencesParamsSchema = z.object({
|
|
@@ -33,10 +29,9 @@ const resolveReferencesHandler = async (gc, ctx, req, params, body) => {
|
|
|
33
29
|
const idIndex = await store.idIndex();
|
|
34
30
|
// Resolve each ID to full document
|
|
35
31
|
const resolver = new ReferenceResolver(store, idIndex);
|
|
36
|
-
// Build the access checker once
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
// being silently swallowed per id.
|
|
32
|
+
// Build the access checker once, reused for every id instead of re-loading per id in the loop.
|
|
33
|
+
// A failure here (e.g. settings workspace unavailable) surfaces as a handler error, not
|
|
34
|
+
// swallowed silently per id.
|
|
40
35
|
const checkAccess = await ctx.services.createContentAccessChecker(branchContext, branchContext.branchRoot, req.user);
|
|
41
36
|
const resolved = {};
|
|
42
37
|
for (const id of ids) {
|
|
@@ -48,22 +43,15 @@ const resolveReferencesHandler = async (gc, ctx, req, params, body) => {
|
|
|
48
43
|
const access = checkAccess(resolvedPath.relativePath, 'read');
|
|
49
44
|
if (!access.allowed)
|
|
50
45
|
continue;
|
|
51
|
-
// `resolveReferences: false` matches
|
|
52
|
-
//
|
|
53
|
-
//
|
|
54
|
-
// reference inside a target rendered as an object in live preview and as a bare ID
|
|
55
|
-
// string on the published site.
|
|
46
|
+
// `resolveReferences: false` matches the server-side resolver (content-store.ts's
|
|
47
|
+
// resolveSingleReferenceOnce), so a nested reference inside a target renders the same way
|
|
48
|
+
// in live preview as on the published site, instead of resolving one level deeper.
|
|
56
49
|
const doc = await store.read(result.collection, result.slug, { resolveReferences: false });
|
|
57
50
|
if (doc && doc.data) {
|
|
58
|
-
// Same shape the server-side resolver
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
// as content must not shadow the real content ID. The extra KEYS are what stops the
|
|
63
|
-
// editor's live preview disagreeing with production: this endpoint feeds
|
|
64
|
-
// client-reference-resolver.ts, so without `urlPath` a component rendering
|
|
65
|
-
// `<a href={ref.urlPath}>` showed `undefined` while previewing and a real URL once
|
|
66
|
-
// published -- exactly the class of divergence live preview exists to rule out.
|
|
51
|
+
// Same shape as the server-side resolver: target data first, then the reserved keys.
|
|
52
|
+
// Order is the corruption guard (a target modelling `id` as content must not shadow the
|
|
53
|
+
// real content ID); the extra keys (incl. `urlPath`) keep live preview and production
|
|
54
|
+
// in sync for consumers like client-reference-resolver.ts.
|
|
67
55
|
resolved[id] = buildResolvedReference(doc.data, {
|
|
68
56
|
id,
|
|
69
57
|
slug: result.slug,
|
|
@@ -84,9 +72,6 @@ const resolveReferencesHandler = async (gc, ctx, req, params, body) => {
|
|
|
84
72
|
data: { resolved },
|
|
85
73
|
};
|
|
86
74
|
};
|
|
87
|
-
// ============================================================================
|
|
88
|
-
// Route Definitions
|
|
89
|
-
// ============================================================================
|
|
90
75
|
/**
|
|
91
76
|
* Resolve reference IDs to full document objects
|
|
92
77
|
* POST /:branch/resolve-references
|
|
@@ -18,7 +18,7 @@ import { type GuardId, type ComputeGuardContext } from './guards.js';
|
|
|
18
18
|
* @example
|
|
19
19
|
* { 'collectionPath': 'createLogicalPath', 'items.*.path': 'createPhysicalPath' }
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
type MockDataCasts = Record<string, 'createLogicalPath' | 'createPhysicalPath' | 'as ContentId'>;
|
|
22
22
|
/**
|
|
23
23
|
* Metadata for code generation
|
|
24
24
|
*/
|
|
@@ -35,10 +35,6 @@ export interface RouteMetadata {
|
|
|
35
35
|
/** Casts to apply to mock data fields for branded types */
|
|
36
36
|
mockDataCasts?: MockDataCasts;
|
|
37
37
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Global registry - generator reads this
|
|
40
|
-
*/
|
|
41
|
-
export declare const ROUTE_REGISTRY: RouteMetadata[];
|
|
42
38
|
/**
|
|
43
39
|
* Route definition created by defineEndpoint.
|
|
44
40
|
* Contains all metadata needed for:
|
|
@@ -77,7 +73,7 @@ export interface RouteDefinition<TParams extends z.ZodType | undefined = undefin
|
|
|
77
73
|
/**
|
|
78
74
|
* Handler function signature with validated params and body (no guards)
|
|
79
75
|
*/
|
|
80
|
-
|
|
76
|
+
type RouteHandler<TParams extends z.ZodType | undefined, TBody extends z.ZodType | undefined, TResponse> = (ctx: ApiContext, req: ApiRequest, ...args: [
|
|
81
77
|
...(TParams extends z.ZodType ? [params: z.infer<TParams>] : []),
|
|
82
78
|
...(TBody extends z.ZodType ? [body: z.infer<TBody>] : [])
|
|
83
79
|
]) => Promise<TResponse>;
|
|
@@ -85,7 +81,7 @@ export type RouteHandler<TParams extends z.ZodType | undefined, TBody extends z.
|
|
|
85
81
|
* Guarded handler: receives guard context as first argument.
|
|
86
82
|
* The guard context shape is computed from the declared guards.
|
|
87
83
|
*/
|
|
88
|
-
|
|
84
|
+
type GuardedRouteHandler<TGuards extends readonly GuardId[], TParams extends z.ZodType | undefined, TBody extends z.ZodType | undefined, TResponse> = (gc: ComputeGuardContext<TGuards>, ctx: ApiContext, req: ApiRequest, ...args: [
|
|
89
85
|
...(TParams extends z.ZodType ? [params: z.infer<TParams>] : []),
|
|
90
86
|
...(TBody extends z.ZodType ? [body: z.infer<TBody>] : [])
|
|
91
87
|
]) => Promise<TResponse>;
|
|
@@ -12,7 +12,7 @@ import { executeGuards } from './guards.js';
|
|
|
12
12
|
/**
|
|
13
13
|
* Global registry - generator reads this
|
|
14
14
|
*/
|
|
15
|
-
|
|
15
|
+
const ROUTE_REGISTRY = [];
|
|
16
16
|
/** Implementation — uses `any` for the union of overloaded config types */
|
|
17
17
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
18
|
export function defineEndpoint(config) {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every route table, assembled for http/router.ts. Server-only: the tables
|
|
3
|
+
* pull in node built-ins, so api/index.ts (reachable from client.ts) never
|
|
4
|
+
* re-exports this module. `pnpm lint:bundle` holds that edge and the
|
|
5
|
+
* `http-reaches-api-only-via-routes` dependency-cruiser rule holds this one.
|
|
6
|
+
*/
|
|
7
|
+
import type { RouteDefinition } from '../http/router.js';
|
|
8
|
+
/**
|
|
9
|
+
* A function, not a top-level constant, so every route module is fully
|
|
10
|
+
* initialized before its exports are read.
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildCanopyRoutes(): RouteDefinition[];
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every route table, assembled for http/router.ts. Server-only: the tables
|
|
3
|
+
* pull in node built-ins, so api/index.ts (reachable from client.ts) never
|
|
4
|
+
* re-exports this module. `pnpm lint:bundle` holds that edge and the
|
|
5
|
+
* `http-reaches-api-only-via-routes` dependency-cruiser rule holds this one.
|
|
6
|
+
*/
|
|
7
|
+
import { BRANCH_ROUTES } from './branch.js';
|
|
8
|
+
import { WORKFLOW_ROUTES } from './branch-status.js';
|
|
9
|
+
import { COMMENT_ROUTES } from './comments.js';
|
|
10
|
+
import { CONTENT_ROUTES } from './content.js';
|
|
11
|
+
import { REFERENCE_OPTIONS_ROUTES } from './reference-options.js';
|
|
12
|
+
import { RESOLVE_REFERENCES_ROUTES } from './resolve-references.js';
|
|
13
|
+
import { ENTRY_ROUTES } from './entries.js';
|
|
14
|
+
import { ASSET_ROUTES, assetRawRoute } from './assets.js';
|
|
15
|
+
import { PERMISSION_ROUTES } from './permissions.js';
|
|
16
|
+
import { GROUP_ROUTES } from './groups.js';
|
|
17
|
+
import { USER_ROUTES } from './user.js';
|
|
18
|
+
import { SCHEMA_ROUTES } from './schema.js';
|
|
19
|
+
import { ADMIN_ROUTES } from './admin.js';
|
|
20
|
+
/**
|
|
21
|
+
* A function, not a top-level constant, so every route module is fully
|
|
22
|
+
* initialized before its exports are read.
|
|
23
|
+
*/
|
|
24
|
+
export function buildCanopyRoutes() {
|
|
25
|
+
return [
|
|
26
|
+
...Object.values(BRANCH_ROUTES),
|
|
27
|
+
...Object.values(WORKFLOW_ROUTES),
|
|
28
|
+
...Object.values(COMMENT_ROUTES),
|
|
29
|
+
...Object.values(CONTENT_ROUTES),
|
|
30
|
+
...Object.values(REFERENCE_OPTIONS_ROUTES),
|
|
31
|
+
...Object.values(RESOLVE_REFERENCES_ROUTES),
|
|
32
|
+
...Object.values(ENTRY_ROUTES),
|
|
33
|
+
...Object.values(ASSET_ROUTES),
|
|
34
|
+
assetRawRoute,
|
|
35
|
+
...Object.values(PERMISSION_ROUTES),
|
|
36
|
+
...Object.values(GROUP_ROUTES),
|
|
37
|
+
...Object.values(USER_ROUTES),
|
|
38
|
+
...Object.values(SCHEMA_ROUTES),
|
|
39
|
+
...Object.values(ADMIN_ROUTES),
|
|
40
|
+
].map((route) => ({
|
|
41
|
+
method: route.method,
|
|
42
|
+
pattern: route.pattern,
|
|
43
|
+
handler: route.handler,
|
|
44
|
+
validate: 'validate' in route ? route.validate : undefined,
|
|
45
|
+
bodyFormat: 'bodyFormat' in route ? route.bodyFormat : undefined,
|
|
46
|
+
}));
|
|
47
|
+
}
|
package/dist/api/schema.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Schema API - endpoints for managing collection structure.
|
|
3
3
|
*
|
|
4
|
-
* Provides CRUD operations for:
|
|
5
|
-
* - Collections (create, read, update, delete)
|
|
6
|
-
* - Entry types (add, update, remove)
|
|
7
|
-
* - Ordering (update item order within collections)
|
|
8
|
-
*
|
|
9
4
|
* All mutations require Admin group membership.
|
|
10
5
|
* Schema changes are branch-specific (like content edits).
|
|
11
6
|
*/
|
|
@@ -14,7 +9,7 @@ import type { ApiResponse } from './types.js';
|
|
|
14
9
|
import type { ContentFormat, EntrySchema } from '../config/index.js';
|
|
15
10
|
import { type LogicalPath, type ContentId } from '../paths/index.js';
|
|
16
11
|
/** Entry type in wire format: schemaRef instead of resolved schema */
|
|
17
|
-
|
|
12
|
+
interface WireEntryType {
|
|
18
13
|
readonly name: string;
|
|
19
14
|
readonly format: ContentFormat;
|
|
20
15
|
readonly schemaRef: string;
|
|
@@ -23,7 +18,7 @@ export interface WireEntryType {
|
|
|
23
18
|
readonly maxItems?: number;
|
|
24
19
|
}
|
|
25
20
|
/** Collection in wire format (entry types carry schemaRef, not resolved schema) */
|
|
26
|
-
|
|
21
|
+
interface WireCollectionConfig {
|
|
27
22
|
readonly name: string;
|
|
28
23
|
readonly path: string;
|
|
29
24
|
readonly label?: string;
|
|
@@ -38,7 +33,7 @@ export interface WireCollectionConfig {
|
|
|
38
33
|
* collections appear as their own flat items, linked via `parentPath`.
|
|
39
34
|
* Embedding subtrees would re-serialize every collection once per ancestor.
|
|
40
35
|
*/
|
|
41
|
-
|
|
36
|
+
type WireFlatSchemaItem = {
|
|
42
37
|
type: 'collection';
|
|
43
38
|
logicalPath: LogicalPath;
|
|
44
39
|
name: string;
|
|
@@ -58,12 +53,12 @@ export type WireFlatSchemaItem = {
|
|
|
58
53
|
default?: boolean;
|
|
59
54
|
maxItems?: number;
|
|
60
55
|
};
|
|
61
|
-
|
|
56
|
+
interface SchemaResponse {
|
|
62
57
|
flatSchema: WireFlatSchemaItem[];
|
|
63
58
|
/** Entry schema definitions keyed by registry name */
|
|
64
59
|
entrySchemas: Record<string, EntrySchema>;
|
|
65
60
|
}
|
|
66
|
-
|
|
61
|
+
interface EntryTypeWithUsage {
|
|
67
62
|
name: string;
|
|
68
63
|
label?: string;
|
|
69
64
|
format: ContentFormat;
|
|
@@ -73,36 +68,36 @@ export interface EntryTypeWithUsage {
|
|
|
73
68
|
/** Number of entries using this entry type (for locking validation) */
|
|
74
69
|
usageCount: number;
|
|
75
70
|
}
|
|
76
|
-
|
|
71
|
+
interface CollectionResponse {
|
|
77
72
|
collection: WireCollectionConfig | null;
|
|
78
73
|
/** Entry types with usage counts (only present when collection exists) */
|
|
79
74
|
entryTypesWithUsage?: EntryTypeWithUsage[];
|
|
80
75
|
}
|
|
81
|
-
|
|
76
|
+
interface CreateCollectionResponse {
|
|
82
77
|
/** The logical path to the created collection (e.g., "posts" or "blog/posts") */
|
|
83
78
|
collectionPath: LogicalPath;
|
|
84
79
|
/** The unique 12-character content ID for the collection */
|
|
85
80
|
contentId: ContentId;
|
|
86
81
|
}
|
|
87
|
-
|
|
82
|
+
interface UpdateCollectionResponse {
|
|
88
83
|
success: boolean;
|
|
89
84
|
}
|
|
90
|
-
|
|
85
|
+
interface DeleteCollectionResponse {
|
|
91
86
|
success: boolean;
|
|
92
87
|
}
|
|
93
|
-
|
|
88
|
+
interface AddEntryTypeResponse {
|
|
94
89
|
success: boolean;
|
|
95
90
|
}
|
|
96
|
-
|
|
91
|
+
interface UpdateEntryTypeResponse {
|
|
97
92
|
success: boolean;
|
|
98
93
|
}
|
|
99
|
-
|
|
94
|
+
interface RemoveEntryTypeResponse {
|
|
100
95
|
success: boolean;
|
|
101
96
|
}
|
|
102
|
-
|
|
97
|
+
interface UpdateOrderResponse {
|
|
103
98
|
success: boolean;
|
|
104
99
|
}
|
|
105
|
-
|
|
100
|
+
interface InvalidateSchemaCacheResponse {
|
|
106
101
|
success: boolean;
|
|
107
102
|
message: string;
|
|
108
103
|
}
|
|
@@ -125,6 +120,7 @@ declare const updateOrderBodySchema: z.ZodObject<{
|
|
|
125
120
|
}>;
|
|
126
121
|
/**
|
|
127
122
|
* GET /:branch/schema - Get full schema
|
|
123
|
+
* @internal Exported for tests.
|
|
128
124
|
*/
|
|
129
125
|
export declare const getSchema: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|
|
130
126
|
branch: z.ZodType<import("../paths/index.js").BranchName, z.ZodTypeDef, import("../paths/index.js").BranchName>;
|
|
@@ -140,6 +136,7 @@ export declare const getSchema: import("./route-builder.js").RouteDefinition<z.Z
|
|
|
140
136
|
/**
|
|
141
137
|
* GET /:branch/schema/collection/...collectionPath - Get single collection
|
|
142
138
|
* Note: Uses 'collection' (singular) with catch-all to support paths with slashes
|
|
139
|
+
* @internal Exported for tests.
|
|
143
140
|
*/
|
|
144
141
|
export declare const getCollection: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|
|
145
142
|
branch: z.ZodType<import("../paths/index.js").BranchName, z.ZodTypeDef, import("../paths/index.js").BranchName>;
|
|
@@ -161,6 +158,7 @@ export declare const getCollection: import("./route-builder.js").RouteDefinition
|
|
|
161
158
|
}>, undefined, GetCollectionApiResponse>;
|
|
162
159
|
/**
|
|
163
160
|
* POST /:branch/schema/collections - Create collection
|
|
161
|
+
* @internal Exported for tests.
|
|
164
162
|
*/
|
|
165
163
|
export declare const createCollection: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|
|
166
164
|
branch: z.ZodType<import("../paths/index.js").BranchName, z.ZodTypeDef, import("../paths/index.js").BranchName>;
|
|
@@ -226,6 +224,7 @@ export declare const createCollection: import("./route-builder.js").RouteDefinit
|
|
|
226
224
|
/**
|
|
227
225
|
* PATCH /:branch/schema/collection/...collectionPath - Update collection
|
|
228
226
|
* Note: Uses 'collection' (singular) with catch-all to support paths with slashes
|
|
227
|
+
* @internal Exported for tests.
|
|
229
228
|
*/
|
|
230
229
|
export declare const updateCollection: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|
|
231
230
|
branch: z.ZodType<import("../paths/index.js").BranchName, z.ZodTypeDef, import("../paths/index.js").BranchName>;
|
|
@@ -263,6 +262,7 @@ export declare const updateCollection: import("./route-builder.js").RouteDefinit
|
|
|
263
262
|
/**
|
|
264
263
|
* DELETE /:branch/schema/collection/...collectionPath - Delete collection
|
|
265
264
|
* Note: Uses 'collection' (singular) with catch-all to support paths with slashes
|
|
265
|
+
* @internal Exported for tests.
|
|
266
266
|
*/
|
|
267
267
|
export declare const deleteCollection: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|
|
268
268
|
branch: z.ZodType<import("../paths/index.js").BranchName, z.ZodTypeDef, import("../paths/index.js").BranchName>;
|
|
@@ -285,6 +285,7 @@ export declare const deleteCollection: import("./route-builder.js").RouteDefinit
|
|
|
285
285
|
/**
|
|
286
286
|
* POST /:branch/schema/entry-types/...collectionPath - Add entry type
|
|
287
287
|
* Note: Restructured URL with catch-all at end to support paths with slashes
|
|
288
|
+
* @internal Exported for tests.
|
|
288
289
|
*/
|
|
289
290
|
export declare const addEntryType: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|
|
290
291
|
branch: z.ZodType<import("../paths/index.js").BranchName, z.ZodTypeDef, import("../paths/index.js").BranchName>;
|
|
@@ -328,6 +329,7 @@ export declare const addEntryType: import("./route-builder.js").RouteDefinition<
|
|
|
328
329
|
/**
|
|
329
330
|
* PATCH /:branch/schema/entry-types/:entryTypeName/...collectionPath - Update entry type
|
|
330
331
|
* Note: Restructured URL with entry type name before catch-all path
|
|
332
|
+
* @internal Exported for tests.
|
|
331
333
|
*/
|
|
332
334
|
export declare const updateEntryType: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|
|
333
335
|
branch: z.ZodType<import("../paths/index.js").BranchName, z.ZodTypeDef, import("../paths/index.js").BranchName>;
|
|
@@ -371,6 +373,7 @@ export declare const updateEntryType: import("./route-builder.js").RouteDefiniti
|
|
|
371
373
|
/**
|
|
372
374
|
* DELETE /:branch/schema/entry-types/:entryTypeName/...collectionPath - Remove entry type
|
|
373
375
|
* Note: Restructured URL with entry type name before catch-all path
|
|
376
|
+
* @internal Exported for tests.
|
|
374
377
|
*/
|
|
375
378
|
export declare const removeEntryType: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|
|
376
379
|
branch: z.ZodType<import("../paths/index.js").BranchName, z.ZodTypeDef, import("../paths/index.js").BranchName>;
|
|
@@ -396,6 +399,7 @@ export declare const removeEntryType: import("./route-builder.js").RouteDefiniti
|
|
|
396
399
|
/**
|
|
397
400
|
* PATCH /:branch/schema/order/...collectionPath - Update item order
|
|
398
401
|
* Note: Restructured URL with catch-all at end to support paths with slashes
|
|
402
|
+
* @internal Exported for tests.
|
|
399
403
|
*/
|
|
400
404
|
export declare const updateOrder: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|
|
401
405
|
branch: z.ZodType<import("../paths/index.js").BranchName, z.ZodTypeDef, import("../paths/index.js").BranchName>;
|
|
@@ -421,20 +425,6 @@ export declare const updateOrder: import("./route-builder.js").RouteDefinition<z
|
|
|
421
425
|
}, {
|
|
422
426
|
order: string[];
|
|
423
427
|
}>, UpdateOrderApiResponse>;
|
|
424
|
-
/**
|
|
425
|
-
* POST /:branch/schema/invalidate-cache - Invalidate schema cache
|
|
426
|
-
*/
|
|
427
|
-
export declare const invalidateSchemaCache: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|
|
428
|
-
branch: z.ZodType<import("../paths/index.js").BranchName, z.ZodTypeDef, import("../paths/index.js").BranchName>;
|
|
429
|
-
}, "strip", z.ZodTypeAny, {
|
|
430
|
-
branch: string & {
|
|
431
|
-
readonly __brand: "BranchName";
|
|
432
|
-
};
|
|
433
|
-
}, {
|
|
434
|
-
branch: string & {
|
|
435
|
-
readonly __brand: "BranchName";
|
|
436
|
-
};
|
|
437
|
-
}>, undefined, InvalidateSchemaCacheApiResponse>;
|
|
438
428
|
/** Body type for updateOrder endpoint */
|
|
439
429
|
export type UpdateOrderBody = z.infer<typeof updateOrderBodySchema>;
|
|
440
430
|
export declare const SCHEMA_ROUTES: {
|