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
package/dist/api/client.js
CHANGED
|
@@ -1,207 +1,127 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Typed API client for CanopyCMS
|
|
2
|
+
* Typed API client for CanopyCMS: one method per endpoint, each returning that
|
|
3
|
+
* endpoint's ApiResponse.
|
|
3
4
|
*
|
|
4
|
-
* AUTO-GENERATED by scripts/generate-client.ts
|
|
5
|
-
*
|
|
5
|
+
* AUTO-GENERATED by scripts/generate-client.ts; do not edit this file manually
|
|
6
|
+
* (changes will be overwritten), edit the generator's templates instead.
|
|
6
7
|
*/
|
|
7
8
|
import { computeContentSha256Hex } from './request-body-hash.js';
|
|
8
9
|
/**
|
|
9
|
-
*
|
|
10
|
+
* Typed client for the CanopyCMS API: one method per endpoint, grouped by namespace, each
|
|
11
|
+
* returning that endpoint's ApiResponse.
|
|
10
12
|
*
|
|
11
|
-
*
|
|
12
|
-
* response unwrapping and error handling.
|
|
13
|
-
*
|
|
14
|
-
* @example Browser usage
|
|
15
|
-
* ```ts
|
|
16
|
-
* const client = createApiClient()
|
|
17
|
-
* const branches = await client.branches.list()
|
|
18
|
-
* if (branches.ok) {
|
|
19
|
-
* console.log(branches.data.branches)
|
|
20
|
-
* }
|
|
21
|
-
* ```
|
|
22
|
-
*
|
|
23
|
-
* @example Test usage
|
|
13
|
+
* @example
|
|
24
14
|
* ```ts
|
|
25
|
-
* const
|
|
26
|
-
*
|
|
27
|
-
* })
|
|
15
|
+
* const branches = await createApiClient().branches.list()
|
|
16
|
+
* if (branches.ok) console.log(branches.data.branches)
|
|
28
17
|
* ```
|
|
29
18
|
*/
|
|
30
19
|
export class CanopyApiClient {
|
|
31
20
|
constructor(options = {}) {
|
|
32
|
-
// ========== Auto-Generated Client Namespaces ==========
|
|
33
|
-
// Generated by scripts/generate-client.ts - DO NOT EDIT MANUALLY
|
|
34
|
-
/**
|
|
35
|
-
* branches - Auto-generated methods
|
|
36
|
-
*/
|
|
37
21
|
this.branches = {
|
|
38
|
-
/**
|
|
39
|
-
* list - GET /branches
|
|
40
|
-
*/
|
|
22
|
+
/** GET /branches */
|
|
41
23
|
list: () => {
|
|
42
24
|
return this.request('GET', '/branches');
|
|
43
25
|
},
|
|
44
|
-
/**
|
|
45
|
-
* create - POST /branches
|
|
46
|
-
*/
|
|
26
|
+
/** POST /branches */
|
|
47
27
|
create: (body) => {
|
|
48
28
|
return this.request('POST', '/branches', body);
|
|
49
29
|
},
|
|
50
|
-
/**
|
|
51
|
-
* delete - DELETE /:branch
|
|
52
|
-
*/
|
|
30
|
+
/** DELETE /:branch */
|
|
53
31
|
delete: (params) => {
|
|
54
32
|
return this.request('DELETE', this.buildPath('/:branch', params));
|
|
55
33
|
},
|
|
56
|
-
/**
|
|
57
|
-
* updateAccess - PATCH /:branch/access
|
|
58
|
-
*/
|
|
34
|
+
/** PATCH /:branch/access */
|
|
59
35
|
updateAccess: (params, body) => {
|
|
60
36
|
return this.request('PATCH', this.buildPath('/:branch/access', params), body);
|
|
61
37
|
},
|
|
62
38
|
};
|
|
63
|
-
/**
|
|
64
|
-
* workflow - Auto-generated methods
|
|
65
|
-
*/
|
|
66
39
|
this.workflow = {
|
|
67
|
-
/**
|
|
68
|
-
* withdraw - POST /:branch/withdraw
|
|
69
|
-
*/
|
|
40
|
+
/** POST /:branch/withdraw */
|
|
70
41
|
withdraw: (params) => {
|
|
71
42
|
return this.request('POST', this.buildPath('/:branch/withdraw', params));
|
|
72
43
|
},
|
|
73
|
-
/**
|
|
74
|
-
* requestChanges - POST /:branch/request-changes
|
|
75
|
-
*/
|
|
44
|
+
/** POST /:branch/request-changes */
|
|
76
45
|
requestChanges: (params) => {
|
|
77
46
|
return this.request('POST', this.buildPath('/:branch/request-changes', params));
|
|
78
47
|
},
|
|
79
|
-
/**
|
|
80
|
-
* approve - POST /:branch/approve
|
|
81
|
-
*/
|
|
48
|
+
/** POST /:branch/approve */
|
|
82
49
|
approve: (params) => {
|
|
83
50
|
return this.request('POST', this.buildPath('/:branch/approve', params));
|
|
84
51
|
},
|
|
85
|
-
/**
|
|
86
|
-
* markMerged - POST /:branch/mark-merged
|
|
87
|
-
*/
|
|
52
|
+
/** POST /:branch/mark-merged */
|
|
88
53
|
markMerged: (params) => {
|
|
89
54
|
return this.request('POST', this.buildPath('/:branch/mark-merged', params));
|
|
90
55
|
},
|
|
91
|
-
/**
|
|
92
|
-
* getStatus - GET /:branch/status
|
|
93
|
-
*/
|
|
56
|
+
/** GET /:branch/status */
|
|
94
57
|
getStatus: (params) => {
|
|
95
58
|
return this.request('GET', this.buildPath('/:branch/status', params));
|
|
96
59
|
},
|
|
97
|
-
/**
|
|
98
|
-
* submit - POST /:branch/submit
|
|
99
|
-
*/
|
|
60
|
+
/** POST /:branch/submit */
|
|
100
61
|
submit: (params) => {
|
|
101
62
|
return this.request('POST', this.buildPath('/:branch/submit', params));
|
|
102
63
|
},
|
|
103
64
|
};
|
|
104
|
-
/**
|
|
105
|
-
* comments - Auto-generated methods
|
|
106
|
-
*/
|
|
107
65
|
this.comments = {
|
|
108
|
-
/**
|
|
109
|
-
* list - GET /:branch/comments
|
|
110
|
-
*/
|
|
66
|
+
/** GET /:branch/comments */
|
|
111
67
|
list: (params) => {
|
|
112
68
|
return this.request('GET', this.buildPath('/:branch/comments', params));
|
|
113
69
|
},
|
|
114
|
-
/**
|
|
115
|
-
* add - POST /:branch/comments
|
|
116
|
-
*/
|
|
70
|
+
/** POST /:branch/comments */
|
|
117
71
|
add: (params, body) => {
|
|
118
72
|
return this.request('POST', this.buildPath('/:branch/comments', params), body);
|
|
119
73
|
},
|
|
120
|
-
/**
|
|
121
|
-
* resolve - POST /:branch/comments/:threadId/resolve
|
|
122
|
-
*/
|
|
74
|
+
/** POST /:branch/comments/:threadId/resolve */
|
|
123
75
|
resolve: (params) => {
|
|
124
76
|
return this.request('POST', this.buildPath('/:branch/comments/:threadId/resolve', params));
|
|
125
77
|
},
|
|
126
78
|
};
|
|
127
|
-
/**
|
|
128
|
-
* content - Auto-generated methods
|
|
129
|
-
*/
|
|
130
79
|
this.content = {
|
|
131
|
-
/**
|
|
132
|
-
* read - GET /:branch/content/...path
|
|
133
|
-
*/
|
|
80
|
+
/** GET /:branch/content/...path */
|
|
134
81
|
read: (params) => {
|
|
135
82
|
return this.request('GET', this.buildPath('/:branch/content/...path', params));
|
|
136
83
|
},
|
|
137
|
-
/**
|
|
138
|
-
* write - PUT /:branch/content/...path
|
|
139
|
-
*/
|
|
84
|
+
/** PUT /:branch/content/...path */
|
|
140
85
|
write: (params, body) => {
|
|
141
86
|
return this.request('PUT', this.buildPath('/:branch/content/...path', params), body);
|
|
142
87
|
},
|
|
143
|
-
/**
|
|
144
|
-
* validateReferences - POST /:branch/validate-references/...path
|
|
145
|
-
*/
|
|
88
|
+
/** POST /:branch/validate-references/...path */
|
|
146
89
|
validateReferences: (params, body) => {
|
|
147
90
|
return this.request('POST', this.buildPath('/:branch/validate-references/...path', params), body);
|
|
148
91
|
},
|
|
149
|
-
/**
|
|
150
|
-
* renameEntry - PATCH /:branch/rename-entry/...path
|
|
151
|
-
*/
|
|
92
|
+
/** PATCH /:branch/rename-entry/...path */
|
|
152
93
|
renameEntry: (params, body) => {
|
|
153
94
|
return this.request('PATCH', this.buildPath('/:branch/rename-entry/...path', params), body);
|
|
154
95
|
},
|
|
155
|
-
/**
|
|
156
|
-
* getReferenceOptions - GET /:branch/reference-options
|
|
157
|
-
*/
|
|
96
|
+
/** GET /:branch/reference-options */
|
|
158
97
|
getReferenceOptions: (params) => {
|
|
159
98
|
return this.request('GET', this.buildPath('/:branch/reference-options', params));
|
|
160
99
|
},
|
|
161
|
-
/**
|
|
162
|
-
* resolveReferences - POST /:branch/resolve-references
|
|
163
|
-
*/
|
|
100
|
+
/** POST /:branch/resolve-references */
|
|
164
101
|
resolveReferences: (params, body) => {
|
|
165
102
|
return this.request('POST', this.buildPath('/:branch/resolve-references', params), body);
|
|
166
103
|
},
|
|
167
104
|
};
|
|
168
|
-
/**
|
|
169
|
-
* entries - Auto-generated methods
|
|
170
|
-
*/
|
|
171
105
|
this.entries = {
|
|
172
|
-
/**
|
|
173
|
-
* list - GET /:branch/entries
|
|
174
|
-
*/
|
|
106
|
+
/** GET /:branch/entries */
|
|
175
107
|
list: (params) => {
|
|
176
108
|
return this.request('GET', this.buildPath('/:branch/entries', params));
|
|
177
109
|
},
|
|
178
|
-
/**
|
|
179
|
-
* delete - DELETE /:branch/entries/...entryPath
|
|
180
|
-
*/
|
|
110
|
+
/** DELETE /:branch/entries/...entryPath */
|
|
181
111
|
delete: (params) => {
|
|
182
112
|
return this.request('DELETE', this.buildPath('/:branch/entries/...entryPath', params));
|
|
183
113
|
},
|
|
184
114
|
};
|
|
185
|
-
/**
|
|
186
|
-
* assets - Auto-generated methods
|
|
187
|
-
*/
|
|
188
115
|
this.assets = {
|
|
189
|
-
/**
|
|
190
|
-
* presign - POST /assets/presign
|
|
191
|
-
*/
|
|
116
|
+
/** POST /assets/presign */
|
|
192
117
|
presign: (body) => {
|
|
193
118
|
return this.request('POST', '/assets/presign', body);
|
|
194
119
|
},
|
|
195
|
-
/**
|
|
196
|
-
* finalize - POST /assets/finalize
|
|
197
|
-
*/
|
|
120
|
+
/** POST /assets/finalize */
|
|
198
121
|
finalize: (body) => {
|
|
199
122
|
return this.request('POST', '/assets/finalize', body);
|
|
200
123
|
},
|
|
201
|
-
/**
|
|
202
|
-
* uploadProxied - POST /assets/upload (multipart/form-data - hand-written;
|
|
203
|
-
* the generic template only knows JSON bodies, and this route accepts a file)
|
|
204
|
-
*/
|
|
124
|
+
/** POST /assets/upload: multipart upload, hand-written because the generic template only knows JSON bodies. */
|
|
205
125
|
uploadProxied: (file, options) => {
|
|
206
126
|
const formData = new FormData();
|
|
207
127
|
formData.append('file', file);
|
|
@@ -210,217 +130,142 @@ export class CanopyApiClient {
|
|
|
210
130
|
}
|
|
211
131
|
return this.request('POST', '/assets/upload', formData);
|
|
212
132
|
},
|
|
213
|
-
/**
|
|
214
|
-
* list - GET /assets
|
|
215
|
-
*/
|
|
133
|
+
/** GET /assets */
|
|
216
134
|
list: (params) => {
|
|
217
135
|
return this.request('GET', this.buildPath('/assets', params));
|
|
218
136
|
},
|
|
219
|
-
/**
|
|
220
|
-
* delete - DELETE /assets
|
|
221
|
-
*/
|
|
137
|
+
/** DELETE /assets */
|
|
222
138
|
delete: (params) => {
|
|
223
139
|
return this.request('DELETE', this.buildPath('/assets', params));
|
|
224
140
|
},
|
|
225
141
|
};
|
|
226
|
-
/**
|
|
227
|
-
* permissions - Auto-generated methods
|
|
228
|
-
*/
|
|
229
142
|
this.permissions = {
|
|
230
|
-
/**
|
|
231
|
-
* get - GET /permissions
|
|
232
|
-
*/
|
|
143
|
+
/** GET /permissions */
|
|
233
144
|
get: () => {
|
|
234
145
|
return this.request('GET', '/permissions');
|
|
235
146
|
},
|
|
236
|
-
/**
|
|
237
|
-
* update - PUT /permissions
|
|
238
|
-
*/
|
|
147
|
+
/** PUT /permissions */
|
|
239
148
|
update: (body) => {
|
|
240
149
|
return this.request('PUT', '/permissions', body);
|
|
241
150
|
},
|
|
242
|
-
/**
|
|
243
|
-
* searchUsers - GET /users/search
|
|
244
|
-
*/
|
|
151
|
+
/** GET /users/search */
|
|
245
152
|
searchUsers: (params) => {
|
|
246
153
|
return this.request('GET', this.buildPath('/users/search', params));
|
|
247
154
|
},
|
|
248
|
-
/**
|
|
249
|
-
* listGroups - GET /groups
|
|
250
|
-
*/
|
|
155
|
+
/** GET /groups */
|
|
251
156
|
listGroups: () => {
|
|
252
157
|
return this.request('GET', '/groups');
|
|
253
158
|
},
|
|
254
|
-
/**
|
|
255
|
-
* getUserMetadata - GET /users/:userId
|
|
256
|
-
*/
|
|
159
|
+
/** GET /users/:userId */
|
|
257
160
|
getUserMetadata: (params) => {
|
|
258
161
|
return this.request('GET', this.buildPath('/users/:userId', params));
|
|
259
162
|
},
|
|
260
163
|
};
|
|
261
|
-
/**
|
|
262
|
-
* groups - Auto-generated methods
|
|
263
|
-
*/
|
|
264
164
|
this.groups = {
|
|
265
|
-
/**
|
|
266
|
-
* getInternal - GET /groups/internal
|
|
267
|
-
*/
|
|
165
|
+
/** GET /groups/internal */
|
|
268
166
|
getInternal: () => {
|
|
269
167
|
return this.request('GET', '/groups/internal');
|
|
270
168
|
},
|
|
271
|
-
/**
|
|
272
|
-
* updateInternal - PUT /groups/internal
|
|
273
|
-
*/
|
|
169
|
+
/** PUT /groups/internal */
|
|
274
170
|
updateInternal: (body) => {
|
|
275
171
|
return this.request('PUT', '/groups/internal', body);
|
|
276
172
|
},
|
|
277
|
-
/**
|
|
278
|
-
* searchExternal - GET /groups/search
|
|
279
|
-
*/
|
|
173
|
+
/** GET /groups/search */
|
|
280
174
|
searchExternal: (params) => {
|
|
281
175
|
return this.request('GET', this.buildPath('/groups/search', params));
|
|
282
176
|
},
|
|
283
177
|
};
|
|
284
|
-
/**
|
|
285
|
-
* user - Auto-generated methods
|
|
286
|
-
*/
|
|
287
178
|
this.user = {
|
|
288
|
-
/**
|
|
289
|
-
* whoami - GET /whoami
|
|
290
|
-
*/
|
|
179
|
+
/** GET /whoami */
|
|
291
180
|
whoami: () => {
|
|
292
181
|
return this.request('GET', '/whoami');
|
|
293
182
|
},
|
|
294
183
|
};
|
|
295
|
-
/**
|
|
296
|
-
* schema - Auto-generated methods
|
|
297
|
-
*/
|
|
298
184
|
this.schema = {
|
|
299
|
-
/**
|
|
300
|
-
* get - GET /:branch/schema
|
|
301
|
-
*/
|
|
185
|
+
/** GET /:branch/schema */
|
|
302
186
|
get: (params) => {
|
|
303
187
|
return this.request('GET', this.buildPath('/:branch/schema', params));
|
|
304
188
|
},
|
|
305
|
-
/**
|
|
306
|
-
* getCollection - GET /:branch/schema/collection/...collectionPath
|
|
307
|
-
*/
|
|
189
|
+
/** GET /:branch/schema/collection/...collectionPath */
|
|
308
190
|
getCollection: (params) => {
|
|
309
191
|
return this.request('GET', this.buildPath('/:branch/schema/collection/...collectionPath', params));
|
|
310
192
|
},
|
|
311
|
-
/**
|
|
312
|
-
* createCollection - POST /:branch/schema/collections
|
|
313
|
-
*/
|
|
193
|
+
/** POST /:branch/schema/collections */
|
|
314
194
|
createCollection: (params, body) => {
|
|
315
195
|
return this.request('POST', this.buildPath('/:branch/schema/collections', params), body);
|
|
316
196
|
},
|
|
317
|
-
/**
|
|
318
|
-
* updateCollection - PATCH /:branch/schema/collection/...collectionPath
|
|
319
|
-
*/
|
|
197
|
+
/** PATCH /:branch/schema/collection/...collectionPath */
|
|
320
198
|
updateCollection: (params, body) => {
|
|
321
199
|
return this.request('PATCH', this.buildPath('/:branch/schema/collection/...collectionPath', params), body);
|
|
322
200
|
},
|
|
323
|
-
/**
|
|
324
|
-
* deleteCollection - DELETE /:branch/schema/collection/...collectionPath
|
|
325
|
-
*/
|
|
201
|
+
/** DELETE /:branch/schema/collection/...collectionPath */
|
|
326
202
|
deleteCollection: (params) => {
|
|
327
203
|
return this.request('DELETE', this.buildPath('/:branch/schema/collection/...collectionPath', params));
|
|
328
204
|
},
|
|
329
|
-
/**
|
|
330
|
-
* addEntryType - POST /:branch/schema/entry-types/...collectionPath
|
|
331
|
-
*/
|
|
205
|
+
/** POST /:branch/schema/entry-types/...collectionPath */
|
|
332
206
|
addEntryType: (params, body) => {
|
|
333
207
|
return this.request('POST', this.buildPath('/:branch/schema/entry-types/...collectionPath', params), body);
|
|
334
208
|
},
|
|
335
|
-
/**
|
|
336
|
-
* updateEntryType - PATCH /:branch/schema/entry-types/:entryTypeName/...collectionPath
|
|
337
|
-
*/
|
|
209
|
+
/** PATCH /:branch/schema/entry-types/:entryTypeName/...collectionPath */
|
|
338
210
|
updateEntryType: (params, body) => {
|
|
339
211
|
return this.request('PATCH', this.buildPath('/:branch/schema/entry-types/:entryTypeName/...collectionPath', params), body);
|
|
340
212
|
},
|
|
341
|
-
/**
|
|
342
|
-
* removeEntryType - DELETE /:branch/schema/entry-types/:entryTypeName/...collectionPath
|
|
343
|
-
*/
|
|
213
|
+
/** DELETE /:branch/schema/entry-types/:entryTypeName/...collectionPath */
|
|
344
214
|
removeEntryType: (params) => {
|
|
345
215
|
return this.request('DELETE', this.buildPath('/:branch/schema/entry-types/:entryTypeName/...collectionPath', params));
|
|
346
216
|
},
|
|
347
|
-
/**
|
|
348
|
-
* updateOrder - PATCH /:branch/schema/order/...collectionPath
|
|
349
|
-
*/
|
|
217
|
+
/** PATCH /:branch/schema/order/...collectionPath */
|
|
350
218
|
updateOrder: (params, body) => {
|
|
351
219
|
return this.request('PATCH', this.buildPath('/:branch/schema/order/...collectionPath', params), body);
|
|
352
220
|
},
|
|
353
|
-
/**
|
|
354
|
-
* invalidateSchemaCache - POST /:branch/schema/invalidate-cache
|
|
355
|
-
*/
|
|
221
|
+
/** POST /:branch/schema/invalidate-cache */
|
|
356
222
|
invalidateSchemaCache: (params) => {
|
|
357
223
|
return this.request('POST', this.buildPath('/:branch/schema/invalidate-cache', params));
|
|
358
224
|
},
|
|
359
225
|
};
|
|
360
|
-
/**
|
|
361
|
-
* admin - Auto-generated methods
|
|
362
|
-
*/
|
|
363
226
|
this.admin = {
|
|
364
|
-
/**
|
|
365
|
-
* branchHealth - GET /admin/branch-health
|
|
366
|
-
*/
|
|
227
|
+
/** GET /admin/branch-health */
|
|
367
228
|
branchHealth: () => {
|
|
368
229
|
return this.request('GET', '/admin/branch-health');
|
|
369
230
|
},
|
|
370
|
-
/**
|
|
371
|
-
* purgeBranchDir - POST /admin/branch-dirs/:dirName/purge
|
|
372
|
-
*/
|
|
231
|
+
/** POST /admin/branch-dirs/:dirName/purge */
|
|
373
232
|
purgeBranchDir: (params) => {
|
|
374
233
|
return this.request('POST', this.buildPath('/admin/branch-dirs/:dirName/purge', params));
|
|
375
234
|
},
|
|
376
|
-
/**
|
|
377
|
-
* repairBranchDir - POST /admin/branch-dirs/:dirName/repair-metadata
|
|
378
|
-
*/
|
|
235
|
+
/** POST /admin/branch-dirs/:dirName/repair-metadata */
|
|
379
236
|
repairBranchDir: (params) => {
|
|
380
237
|
return this.request('POST', this.buildPath('/admin/branch-dirs/:dirName/repair-metadata', params));
|
|
381
238
|
},
|
|
382
|
-
/**
|
|
383
|
-
* repairContentDuplicates - POST /admin/branch-dirs/:dirName/repair-content-duplicates
|
|
384
|
-
*/
|
|
239
|
+
/** POST /admin/branch-dirs/:dirName/repair-content-duplicates */
|
|
385
240
|
repairContentDuplicates: (params) => {
|
|
386
241
|
return this.request('POST', this.buildPath('/admin/branch-dirs/:dirName/repair-content-duplicates', params));
|
|
387
242
|
},
|
|
388
|
-
/**
|
|
389
|
-
* status - GET /admin/status
|
|
390
|
-
*/
|
|
243
|
+
/** GET /admin/status */
|
|
391
244
|
status: () => {
|
|
392
245
|
return this.request('GET', '/admin/status');
|
|
393
246
|
},
|
|
394
|
-
/**
|
|
395
|
-
* listTasks - GET /admin/tasks/:status
|
|
396
|
-
*/
|
|
247
|
+
/** GET /admin/tasks/:status */
|
|
397
248
|
listTasks: (params) => {
|
|
398
249
|
return this.request('GET', this.buildPath('/admin/tasks/:status', params));
|
|
399
250
|
},
|
|
400
|
-
/**
|
|
401
|
-
* retryTask - POST /admin/tasks/:taskId/retry
|
|
402
|
-
*/
|
|
251
|
+
/** POST /admin/tasks/:taskId/retry */
|
|
403
252
|
retryTask: (params) => {
|
|
404
253
|
return this.request('POST', this.buildPath('/admin/tasks/:taskId/retry', params));
|
|
405
254
|
},
|
|
406
|
-
/**
|
|
407
|
-
* deleteTask - DELETE /admin/tasks/:status/:fileName
|
|
408
|
-
*/
|
|
255
|
+
/** DELETE /admin/tasks/:status/:fileName */
|
|
409
256
|
deleteTask: (params) => {
|
|
410
257
|
return this.request('DELETE', this.buildPath('/admin/tasks/:status/:fileName', params));
|
|
411
258
|
},
|
|
412
259
|
};
|
|
413
260
|
this.baseUrl = options.baseUrl ?? '/api/canopycms';
|
|
414
|
-
//
|
|
415
|
-
// In Node.js tests, window is undefined so use fetch directly
|
|
261
|
+
// An unbound fetch throws "Illegal invocation" in browsers; Node has no window.
|
|
416
262
|
this.fetchFn = options.fetch ?? (typeof window !== 'undefined' ? fetch.bind(window) : fetch);
|
|
263
|
+
this.onUnauthorized = options.onUnauthorized;
|
|
417
264
|
}
|
|
418
|
-
// ========== Low-level HTTP methods ==========
|
|
419
265
|
buildPath(template, params) {
|
|
420
266
|
let result = template;
|
|
421
267
|
const queryParams = {};
|
|
422
268
|
for (const [key, value] of Object.entries(params)) {
|
|
423
|
-
// Check if this param is in the path template
|
|
424
269
|
const pathParamPattern = `:${key}`;
|
|
425
270
|
const restParamPattern = `...${key}`;
|
|
426
271
|
if (result.includes(pathParamPattern)) {
|
|
@@ -432,15 +277,13 @@ export class CanopyApiClient {
|
|
|
432
277
|
result = result.replace(restParamPattern, encoded);
|
|
433
278
|
}
|
|
434
279
|
else {
|
|
435
|
-
// Not in path template, so it's a query param
|
|
436
280
|
queryParams[key] = value;
|
|
437
281
|
}
|
|
438
282
|
}
|
|
439
|
-
// Append query params if any
|
|
440
283
|
if (Object.keys(queryParams).length > 0) {
|
|
441
284
|
const queryString = Object.entries(queryParams)
|
|
442
285
|
.map(([key, value]) => {
|
|
443
|
-
//
|
|
286
|
+
// Spaces encode as '+' in the query string.
|
|
444
287
|
return `${encodeURIComponent(key)}=${encodeURIComponent(String(value)).replace(/%20/g, '+')}`;
|
|
445
288
|
})
|
|
446
289
|
.join('&');
|
|
@@ -456,20 +299,18 @@ export class CanopyApiClient {
|
|
|
456
299
|
let requestBody;
|
|
457
300
|
if (body !== undefined) {
|
|
458
301
|
if (body instanceof FormData) {
|
|
459
|
-
//
|
|
460
|
-
//
|
|
461
|
-
//
|
|
462
|
-
// FormData body will 403 behind the CloudFront OAC prod shape. See
|
|
302
|
+
// No Content-Type for FormData: the browser sets it with the boundary. A
|
|
303
|
+
// FormData body cannot carry x-amz-content-sha256 (the boundary is generated
|
|
304
|
+
// at send time), so it 403s behind the CloudFront OAC prod shape -- see
|
|
463
305
|
// docs/deploying-to-aws.md.
|
|
464
306
|
requestBody = body;
|
|
465
307
|
}
|
|
466
308
|
else {
|
|
467
309
|
requestHeaders['Content-Type'] = 'application/json';
|
|
468
310
|
requestBody = JSON.stringify(body);
|
|
469
|
-
// CloudFront's
|
|
470
|
-
//
|
|
471
|
-
//
|
|
472
|
-
// rejects the request with 403. Harmless on non-AWS deployments.
|
|
311
|
+
// CloudFront's OAC signs the origin request but never hashes the payload, so
|
|
312
|
+
// the viewer request must carry x-amz-content-sha256 or the OAC-protected
|
|
313
|
+
// Function URL returns 403. Harmless on non-AWS deployments.
|
|
473
314
|
const contentHash = await computeContentSha256Hex(requestBody);
|
|
474
315
|
if (contentHash) {
|
|
475
316
|
requestHeaders['x-amz-content-sha256'] = contentHash;
|
|
@@ -484,14 +325,22 @@ export class CanopyApiClient {
|
|
|
484
325
|
init.body = requestBody;
|
|
485
326
|
}
|
|
486
327
|
const response = await this.fetchFn(url, init);
|
|
328
|
+
if (response.status === 401) {
|
|
329
|
+
this.onUnauthorized?.();
|
|
330
|
+
// A 401 is an auth answer whatever its body: one from in front of the API (a proxy) may
|
|
331
|
+
// not be an ApiResponse, or not JSON. Always return it as one rather than throwing.
|
|
332
|
+
const body = await response.json().catch(() => undefined);
|
|
333
|
+
const error = typeof body === 'object' && body !== null && 'error' in body && typeof body.error === 'string'
|
|
334
|
+
? body.error
|
|
335
|
+
: 'Unauthorized';
|
|
336
|
+
return { ok: false, status: 401, error };
|
|
337
|
+
}
|
|
487
338
|
const payload = await response.json();
|
|
488
339
|
// All responses use ApiResponse format: { ok, status, data?, error? }
|
|
489
340
|
return payload;
|
|
490
341
|
}
|
|
491
342
|
}
|
|
492
|
-
/**
|
|
493
|
-
* Create a new API client instance
|
|
494
|
-
*/
|
|
343
|
+
/** Create a {@link CanopyApiClient}; pass a custom fetch for tests. */
|
|
495
344
|
export function createApiClient(options) {
|
|
496
345
|
return new CanopyApiClient(options);
|
|
497
346
|
}
|
package/dist/api/comments.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export interface AddCommentBody {
|
|
|
8
8
|
entryPath?: string;
|
|
9
9
|
canopyPath?: string;
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
interface ListCommentsResponse {
|
|
12
12
|
threads: CommentThread[];
|
|
13
13
|
}
|
|
14
14
|
/** Response type for listing comments */
|
|
@@ -22,9 +22,6 @@ export type AddCommentResponse = ApiResponse<{
|
|
|
22
22
|
export type ResolveCommentResponse = ApiResponse<{
|
|
23
23
|
resolved: boolean;
|
|
24
24
|
}>;
|
|
25
|
-
/**
|
|
26
|
-
* Exported routes for router registration
|
|
27
|
-
*/
|
|
28
25
|
export declare const COMMENT_ROUTES: {
|
|
29
26
|
readonly list: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|
|
30
27
|
branch: z.ZodType<import("../paths/index.js").BranchName, z.ZodTypeDef, import("../paths/index.js").BranchName>;
|
|
@@ -81,3 +78,4 @@ export declare const COMMENT_ROUTES: {
|
|
|
81
78
|
threadId: string;
|
|
82
79
|
}>, undefined, ResolveCommentResponse>;
|
|
83
80
|
};
|
|
81
|
+
export {};
|
package/dist/api/comments.js
CHANGED
|
@@ -54,7 +54,6 @@ const addCommentHandler = async (gc, _ctx, req, _params, body) => {
|
|
|
54
54
|
const resolveCommentHandler = async (gc, _ctx, req, params) => {
|
|
55
55
|
const { branchContext } = gc;
|
|
56
56
|
const commentStore = new CommentStore(branchContext.branchRoot);
|
|
57
|
-
// Get the thread to check permissions
|
|
58
57
|
const thread = await commentStore.getThread(params.threadId);
|
|
59
58
|
if (!thread) {
|
|
60
59
|
return { ok: false, status: 404, error: 'Thread not found' };
|
|
@@ -75,17 +74,9 @@ const resolveCommentHandler = async (gc, _ctx, req, params) => {
|
|
|
75
74
|
}
|
|
76
75
|
return { ok: true, status: 200, data: { resolved: true } };
|
|
77
76
|
};
|
|
78
|
-
// ============================================================================
|
|
79
|
-
// Route Definitions with defineEndpoint
|
|
80
|
-
// ============================================================================
|
|
81
|
-
//
|
|
82
77
|
// Deliberately no 'writableBranch' guard on any endpoint below: comments live
|
|
83
78
|
// in .canopy-meta/comments.json, which is never committed to git. Commenting
|
|
84
79
|
// while browsing the (read-only) protected base branch is desirable.
|
|
85
|
-
/**
|
|
86
|
-
* List all comment threads for a branch
|
|
87
|
-
* GET /:branch/comments
|
|
88
|
-
*/
|
|
89
80
|
const listComments = defineEndpoint({
|
|
90
81
|
namespace: 'comments',
|
|
91
82
|
name: 'list',
|
|
@@ -100,7 +91,6 @@ const listComments = defineEndpoint({
|
|
|
100
91
|
});
|
|
101
92
|
/**
|
|
102
93
|
* Add a comment to a thread or create new thread
|
|
103
|
-
* POST /:branch/comments
|
|
104
94
|
*/
|
|
105
95
|
const addComment = defineEndpoint({
|
|
106
96
|
namespace: 'comments',
|
|
@@ -116,10 +106,6 @@ const addComment = defineEndpoint({
|
|
|
116
106
|
guards: ['branchAccess'],
|
|
117
107
|
handler: addCommentHandler,
|
|
118
108
|
});
|
|
119
|
-
/**
|
|
120
|
-
* Resolve a comment thread
|
|
121
|
-
* POST /:branch/comments/:threadId/resolve
|
|
122
|
-
*/
|
|
123
109
|
const resolveComment = defineEndpoint({
|
|
124
110
|
namespace: 'comments',
|
|
125
111
|
name: 'resolve',
|
|
@@ -132,9 +118,6 @@ const resolveComment = defineEndpoint({
|
|
|
132
118
|
guards: ['branchAccess'],
|
|
133
119
|
handler: resolveCommentHandler,
|
|
134
120
|
});
|
|
135
|
-
/**
|
|
136
|
-
* Exported routes for router registration
|
|
137
|
-
*/
|
|
138
121
|
export const COMMENT_ROUTES = {
|
|
139
122
|
list: listComments,
|
|
140
123
|
add: addComment,
|