canopycms 0.0.68-int.98 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2131 -0
- package/README.md +47 -63
- package/dist/ai/generate.d.ts +5 -0
- package/dist/ai/generate.js +244 -115
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/json-to-markdown.d.ts +21 -1
- package/dist/ai/json-to-markdown.js +120 -57
- package/dist/ai/references.d.ts +72 -0
- package/dist/ai/references.js +223 -0
- package/dist/ai/resolve-branch.js +9 -2
- package/dist/ai/to-plain-text.d.ts +17 -8
- package/dist/ai/to-plain-text.js +18 -15
- package/dist/ai/types.d.ts +84 -3
- package/dist/api/admin-branch-health.d.ts +24 -1
- package/dist/api/admin-branch-health.js +52 -20
- package/dist/api/admin.d.ts +23 -5
- package/dist/api/admin.js +36 -1
- package/dist/api/assets.js +88 -78
- package/dist/api/branch-create-window.d.ts +12 -0
- package/dist/api/branch-create-window.js +13 -0
- package/dist/api/branch-merge.d.ts +1 -1
- package/dist/api/branch-merge.js +1 -1
- package/dist/api/branch-review.d.ts +3 -3
- package/dist/api/branch-review.js +16 -7
- package/dist/api/branch-status.d.ts +16 -6
- package/dist/api/branch-status.js +57 -12
- package/dist/api/branch-withdraw.d.ts +2 -2
- package/dist/api/branch-withdraw.js +8 -3
- package/dist/api/branch.d.ts +25 -12
- package/dist/api/branch.js +164 -103
- package/dist/api/client.d.ts +78 -58
- package/dist/api/client.js +150 -117
- package/dist/api/comments.d.ts +12 -3
- package/dist/api/comments.js +118 -9
- package/dist/api/content.d.ts +9 -9
- package/dist/api/content.js +131 -22
- package/dist/api/entries-constants.d.ts +14 -3
- package/dist/api/entries-constants.js +14 -3
- package/dist/api/entries.d.ts +40 -2
- package/dist/api/entries.js +102 -6
- package/dist/api/github-sync.d.ts +19 -0
- package/dist/api/github-sync.js +50 -3
- package/dist/api/groups.d.ts +4 -4
- package/dist/api/groups.js +2 -1
- package/dist/api/guards.js +23 -3
- package/dist/api/index.d.ts +3 -1
- package/dist/api/index.js +1 -0
- package/dist/api/permissions.d.ts +21 -2
- package/dist/api/permissions.js +50 -3
- package/dist/api/request-deadline.d.ts +59 -0
- package/dist/api/request-deadline.js +73 -0
- package/dist/api/resolve-references.js +8 -7
- package/dist/api/route-builder.d.ts +14 -0
- package/dist/api/route-builder.js +14 -1
- package/dist/api/schema.d.ts +11 -9
- package/dist/api/schema.js +2 -0
- package/dist/api/settings-helpers.d.ts +5 -1
- package/dist/api/settings-helpers.js +10 -2
- package/dist/api/types.d.ts +18 -0
- package/dist/api/users-constants.d.ts +6 -0
- package/dist/api/users-constants.js +6 -0
- package/dist/assets/asset-url.d.ts +28 -16
- package/dist/assets/asset-url.js +51 -25
- package/dist/assets/finalize.js +3 -0
- package/dist/assets/index.d.ts +1 -1
- package/dist/assets/materialize.d.ts +153 -0
- package/dist/assets/materialize.js +402 -0
- package/dist/assets/store-local.d.ts +19 -5
- package/dist/assets/store-local.js +69 -10
- package/dist/assets/store-s3.d.ts +38 -7
- package/dist/assets/store-s3.js +128 -22
- package/dist/assets/transform-directives.d.ts +52 -13
- package/dist/assets/transform-directives.js +87 -27
- package/dist/assets/transform.d.ts +3 -3
- package/dist/assets/transform.js +13 -8
- package/dist/assets/types.d.ts +31 -4
- package/dist/auth/cache.d.ts +1 -1
- package/dist/auth/cache.js +1 -1
- package/dist/auth/caching-auth-plugin.d.ts +2 -0
- package/dist/auth/caching-auth-plugin.js +12 -2
- package/dist/auth/file-based-auth-cache.d.ts +8 -0
- package/dist/auth/file-based-auth-cache.js +18 -8
- package/dist/auth/person-name.d.ts +5 -0
- package/dist/auth/person-name.js +8 -0
- package/dist/auth/plugin.d.ts +10 -1
- package/dist/auth/types.d.ts +2 -0
- package/dist/auth/user-metadata-lookup.d.ts +21 -0
- package/dist/auth/user-metadata-lookup.js +116 -0
- package/dist/authorization/branch.d.ts +1 -1
- package/dist/authorization/branch.js +12 -13
- package/dist/authorization/groups/schema.d.ts +4 -4
- package/dist/authorization/helpers.d.ts +8 -0
- package/dist/authorization/helpers.js +8 -0
- package/dist/authorization/index.d.ts +1 -1
- package/dist/authorization/index.js +1 -1
- package/dist/authorization/protected-branch.d.ts +5 -4
- package/dist/authorization/protected-branch.js +7 -5
- package/dist/branch-health.d.ts +35 -8
- package/dist/branch-health.js +54 -18
- package/dist/branch-metadata-error.d.ts +27 -0
- package/dist/branch-metadata-error.js +23 -0
- package/dist/branch-metadata-file.d.ts +205 -24
- package/dist/branch-metadata-file.js +126 -25
- package/dist/branch-metadata.d.ts +45 -6
- package/dist/branch-metadata.js +142 -50
- package/dist/branch-provisioning.d.ts +167 -0
- package/dist/branch-provisioning.js +501 -0
- package/dist/branch-registry.d.ts +8 -0
- package/dist/branch-registry.js +61 -9
- package/dist/branch-schema-cache.d.ts +29 -12
- package/dist/branch-schema-cache.js +64 -21
- package/dist/branch-sparse.d.ts +23 -0
- package/dist/branch-sparse.js +118 -0
- package/dist/branch-workspace.d.ts +42 -3
- package/dist/branch-workspace.js +239 -100
- package/dist/build/asset-refs.d.ts +94 -0
- package/dist/build/asset-refs.js +267 -0
- package/dist/build/generate-ai-content.js +5 -0
- package/dist/build/inline-flight.d.ts +37 -0
- package/dist/build/inline-flight.js +142 -0
- package/dist/cli/asset-refs.d.ts +52 -0
- package/dist/cli/asset-refs.js +194 -0
- package/dist/cli/cli.d.ts +15 -1
- package/dist/cli/cli.js +8543 -3193
- package/dist/cli/configured-asset-store.d.ts +12 -0
- package/dist/cli/configured-asset-store.js +46 -0
- package/dist/cli/generate-ai-content.js +4244 -1072
- package/dist/cli/init.js +217 -126
- package/dist/cli/project-detect.d.ts +2 -0
- package/dist/cli/project-detect.js +2 -0
- package/dist/cli/template-files/Dockerfile.cms.template +13 -5
- package/dist/cli/template-files/cms-stack.ts.template +16 -13
- package/dist/client.d.ts +1 -2
- package/dist/client.js +1 -2
- package/dist/comment-store.d.ts +25 -0
- package/dist/comment-store.js +43 -8
- package/dist/config/flatten.js +2 -0
- package/dist/config/helpers.js +2 -2
- package/dist/config/index.d.ts +1 -1
- package/dist/config/schemas/config.d.ts +12 -29
- package/dist/config/schemas/config.js +9 -12
- package/dist/config/schemas/field.d.ts +3 -0
- package/dist/config/schemas/field.js +58 -4
- package/dist/config/schemas/media.d.ts +4 -13
- package/dist/config/schemas/media.js +5 -8
- package/dist/config/schemas/url.d.ts +2 -20
- package/dist/config/schemas/url.js +2 -25
- package/dist/config/types.d.ts +116 -22
- package/dist/config/types.js +3 -9
- package/dist/config/validation.d.ts +25 -4
- package/dist/config/validation.js +116 -3
- package/dist/content-id-index.js +2 -2
- package/dist/content-index-generation.d.ts +1 -1
- package/dist/content-index-generation.js +1 -1
- package/dist/content-listing.d.ts +10 -1
- package/dist/content-listing.js +22 -5
- package/dist/content-reader.d.ts +9 -0
- package/dist/content-reader.js +16 -11
- package/dist/content-store.d.ts +75 -12
- package/dist/content-store.js +249 -86
- package/dist/content-tree.js +2 -2
- package/dist/context.js +5 -2
- package/dist/dangling-reference-log.d.ts +17 -0
- package/dist/dangling-reference-log.js +29 -0
- package/dist/dev-content-watcher.d.ts +1 -1
- package/dist/dev-content-watcher.js +1 -1
- package/dist/editor/BranchManager.d.ts +23 -7
- package/dist/editor/BranchManager.js +119 -54
- package/dist/editor/CanopyEditor.d.ts +1 -1
- package/dist/editor/CanopyEditor.js +1 -2
- package/dist/editor/CommentsPanel.d.ts +14 -0
- package/dist/editor/CommentsPanel.js +68 -43
- package/dist/editor/Editor.d.ts +11 -5
- package/dist/editor/Editor.js +891 -218
- package/dist/editor/EditorAuthGate.d.ts +7 -1
- package/dist/editor/EditorAuthGate.js +41 -9
- package/dist/editor/EntryNavigator.d.ts +22 -0
- package/dist/editor/EntryNavigator.js +353 -105
- package/dist/editor/FormHeader.d.ts +25 -0
- package/dist/editor/FormHeader.js +82 -0
- package/dist/editor/FormRenderer.d.ts +27 -3
- package/dist/editor/FormRenderer.js +171 -76
- package/dist/editor/PreviewFrame.d.ts +40 -0
- package/dist/editor/PreviewFrame.js +215 -0
- package/dist/editor/PreviewPane.d.ts +47 -0
- package/dist/editor/PreviewPane.js +147 -0
- package/dist/editor/PreviewToolbarTools.d.ts +22 -0
- package/dist/editor/PreviewToolbarTools.js +73 -0
- package/dist/editor/admin/SystemHealthPanel.d.ts +2 -1
- package/dist/editor/admin/SystemHealthPanel.js +163 -33
- package/dist/editor/admin/useSystemHealth.d.ts +18 -0
- package/dist/editor/admin/useSystemHealth.js +70 -1
- package/dist/editor/branch-status.d.ts +17 -0
- package/dist/editor/branch-status.js +29 -0
- package/dist/editor/canopy-path.d.ts +9 -6
- package/dist/editor/canopy-path.js +8 -11
- package/dist/editor/client-reference-resolver.d.ts +43 -16
- package/dist/editor/client-reference-resolver.js +155 -64
- package/dist/editor/comments/BranchComments.d.ts +1 -1
- package/dist/editor/comments/BranchComments.js +2 -2
- package/dist/editor/comments/CloseRefusedNotice.d.ts +4 -0
- package/dist/editor/comments/CloseRefusedNotice.js +7 -0
- package/dist/editor/comments/CommentThreadsPopover.d.ts +47 -0
- package/dist/editor/comments/CommentThreadsPopover.js +274 -0
- package/dist/editor/comments/CommentWriteAlert.d.ts +11 -0
- package/dist/editor/comments/CommentWriteAlert.js +13 -0
- package/dist/editor/comments/EntryComments.d.ts +10 -4
- package/dist/editor/comments/EntryComments.js +14 -17
- package/dist/editor/comments/FieldWrapper.d.ts +18 -4
- package/dist/editor/comments/FieldWrapper.js +62 -28
- package/dist/editor/comments/InlineCommentThread.d.ts +9 -2
- package/dist/editor/comments/InlineCommentThread.js +11 -47
- package/dist/editor/comments/ThreadCarousel.d.ts +1 -1
- package/dist/editor/comments/ThreadCarousel.js +18 -21
- package/dist/editor/comments/ThreadReplyControls.d.ts +28 -0
- package/dist/editor/comments/ThreadReplyControls.js +92 -0
- package/dist/editor/comments/field-comment-context.d.ts +14 -0
- package/dist/editor/comments/field-comment-context.js +14 -0
- package/dist/editor/comments/form-comments.d.ts +48 -0
- package/dist/editor/comments/form-comments.js +178 -0
- package/dist/editor/comments/item-anchor-copy.d.ts +6 -0
- package/dist/editor/comments/item-anchor-copy.js +6 -0
- package/dist/editor/comments/move-focus-if-unmoved.d.ts +6 -0
- package/dist/editor/comments/move-focus-if-unmoved.js +11 -0
- package/dist/editor/comments/popover-placement.d.ts +18 -0
- package/dist/editor/comments/popover-placement.js +58 -0
- package/dist/editor/comments/use-tracked-writes.d.ts +16 -0
- package/dist/editor/comments/use-tracked-writes.js +53 -0
- package/dist/editor/components/BranchAccessList.d.ts +15 -0
- package/dist/editor/components/BranchAccessList.js +52 -0
- package/dist/editor/components/BranchLockBanner.d.ts +22 -0
- package/dist/editor/components/BranchLockBanner.js +39 -0
- package/dist/editor/components/BranchPill.d.ts +32 -0
- package/dist/editor/components/BranchPill.js +33 -0
- package/dist/editor/components/BranchesDrawer.d.ts +11 -0
- package/dist/editor/components/BranchesDrawer.js +5 -0
- package/dist/editor/components/ConfirmDeleteModal.d.ts +6 -1
- package/dist/editor/components/ConfirmDeleteModal.js +3 -2
- package/dist/editor/components/DestructiveMenuItem.d.ts +7 -0
- package/dist/editor/components/DestructiveMenuItem.js +8 -0
- package/dist/editor/components/EditorCrashScreen.d.ts +17 -0
- package/dist/editor/components/EditorCrashScreen.js +22 -0
- package/dist/editor/components/EditorErrorBoundary.d.ts +38 -0
- package/dist/editor/components/EditorErrorBoundary.js +40 -0
- package/dist/editor/components/EditorHeader.d.ts +56 -106
- package/dist/editor/components/EditorHeader.js +130 -131
- package/dist/editor/components/EditorRail.d.ts +49 -0
- package/dist/editor/components/EditorRail.js +65 -0
- package/dist/editor/components/EntryBreadcrumb.d.ts +33 -0
- package/dist/editor/components/EntryBreadcrumb.js +56 -0
- package/dist/editor/components/EntryCreateModal.d.ts +12 -7
- package/dist/editor/components/EntryCreateModal.js +51 -57
- package/dist/editor/components/NoEditPermissionNotice.d.ts +6 -5
- package/dist/editor/components/NoEditPermissionNotice.js +5 -4
- package/dist/editor/components/QuickOpenPalette.d.ts +22 -0
- package/dist/editor/components/QuickOpenPalette.js +66 -0
- package/dist/editor/components/ReadOnlyDraftNotice.d.ts +11 -0
- package/dist/editor/components/ReadOnlyDraftNotice.js +12 -0
- package/dist/editor/components/ReasonedMenuItem.d.ts +15 -0
- package/dist/editor/components/ReasonedMenuItem.js +15 -0
- package/dist/editor/components/ReferencedByList.d.ts +11 -0
- package/dist/editor/components/ReferencedByList.js +28 -0
- package/dist/editor/components/RelativeTime.d.ts +10 -0
- package/dist/editor/components/RelativeTime.js +10 -0
- package/dist/editor/components/RenameEntryModal.d.ts +9 -1
- package/dist/editor/components/RenameEntryModal.js +19 -31
- package/dist/editor/components/RetryToastMessage.d.ts +9 -0
- package/dist/editor/components/RetryToastMessage.js +6 -0
- package/dist/editor/components/SaveAllResult.d.ts +25 -0
- package/dist/editor/components/SaveAllResult.js +86 -0
- package/dist/editor/components/SaveSplitButton.d.ts +30 -0
- package/dist/editor/components/SaveSplitButton.js +108 -0
- package/dist/editor/components/StagedChangesDrawer.d.ts +39 -0
- package/dist/editor/components/StagedChangesDrawer.js +92 -0
- package/dist/editor/components/UnavailableEntryNotice.d.ts +6 -0
- package/dist/editor/components/UnavailableEntryNotice.js +9 -0
- package/dist/editor/components/UnavailableTypeMessage.d.ts +6 -0
- package/dist/editor/components/UnavailableTypeMessage.js +9 -0
- package/dist/editor/components/UndoToastMessage.d.ts +18 -0
- package/dist/editor/components/UndoToastMessage.js +10 -0
- package/dist/editor/components/UserBadge.d.ts +2 -5
- package/dist/editor/components/UserBadge.js +62 -33
- package/dist/editor/components/ValidationSummary.d.ts +14 -0
- package/dist/editor/components/ValidationSummary.js +24 -0
- package/dist/editor/components/index.d.ts +2 -2
- package/dist/editor/components/index.js +2 -2
- package/dist/editor/context/ApiClientContext.d.ts +8 -2
- package/dist/editor/context/ApiClientContext.js +19 -8
- package/dist/editor/context/AssetContext.d.ts +13 -35
- package/dist/editor/context/AssetContext.js +12 -31
- package/dist/editor/context/EditorStateContext.d.ts +4 -4
- package/dist/editor/context/EditorStateContext.js +4 -4
- package/dist/editor/context/SWRProvider.d.ts +3 -3
- package/dist/editor/context/SiteMdxAllowContext.d.ts +4 -0
- package/dist/editor/context/SiteMdxAllowContext.js +7 -0
- package/dist/editor/context/index.d.ts +2 -1
- package/dist/editor/context/index.js +2 -1
- package/dist/editor/contrast.d.ts +19 -0
- package/dist/editor/contrast.js +41 -0
- package/dist/editor/copy.d.ts +18 -0
- package/dist/editor/copy.js +18 -0
- package/dist/editor/editor-config.js +16 -0
- package/dist/editor/editor-utils.d.ts +34 -8
- package/dist/editor/editor-utils.js +42 -20
- package/dist/editor/entry-search.d.ts +20 -0
- package/dist/editor/entry-search.js +34 -0
- package/dist/editor/field-breadcrumb.d.ts +12 -0
- package/dist/editor/field-breadcrumb.js +85 -0
- package/dist/editor/field-props.d.ts +86 -0
- package/dist/editor/field-props.js +27 -0
- package/dist/editor/field-target.d.ts +30 -0
- package/dist/editor/field-target.js +77 -0
- package/dist/editor/fields/BlockField.d.ts +12 -0
- package/dist/editor/fields/BlockField.js +89 -73
- package/dist/editor/fields/CodeField.d.ts +2 -0
- package/dist/editor/fields/CodeField.js +6 -2
- package/dist/editor/fields/DateTimeField.d.ts +4 -29
- package/dist/editor/fields/DateTimeField.js +79 -41
- package/dist/editor/fields/ExpandAllButton.d.ts +6 -0
- package/dist/editor/fields/ExpandAllButton.js +4 -0
- package/dist/editor/fields/FieldCrashFallback.d.ts +17 -0
- package/dist/editor/fields/FieldCrashFallback.js +30 -0
- package/dist/editor/fields/FieldLabel.d.ts +37 -0
- package/dist/editor/fields/FieldLabel.js +19 -0
- package/dist/editor/fields/ImageField.d.ts +4 -0
- package/dist/editor/fields/ImageField.js +29 -14
- package/dist/editor/fields/InlineGroupField.js +4 -3
- package/dist/editor/fields/ItemList.d.ts +42 -0
- package/dist/editor/fields/ItemList.js +130 -0
- package/dist/editor/fields/MarkdownField.d.ts +32 -0
- package/dist/editor/fields/MarkdownField.js +223 -46
- package/dist/editor/fields/MdxImageDialog.js +1 -1
- package/dist/editor/fields/NumberField.d.ts +2 -0
- package/dist/editor/fields/NumberField.js +8 -5
- package/dist/editor/fields/NumberListField.d.ts +2 -0
- package/dist/editor/fields/NumberListField.js +19 -16
- package/dist/editor/fields/ObjectField.d.ts +2 -7
- package/dist/editor/fields/ObjectField.js +15 -5
- package/dist/editor/fields/ObjectListField.d.ts +29 -0
- package/dist/editor/fields/ObjectListField.js +57 -0
- package/dist/editor/fields/ReferenceField.d.ts +2 -0
- package/dist/editor/fields/ReferenceField.js +34 -9
- package/dist/editor/fields/SelectField.d.ts +2 -0
- package/dist/editor/fields/SelectField.js +11 -2
- package/dist/editor/fields/StringListField.d.ts +4 -1
- package/dist/editor/fields/StringListField.js +22 -8
- package/dist/editor/fields/TextField.d.ts +2 -0
- package/dist/editor/fields/TextField.js +6 -2
- package/dist/editor/fields/ToggleField.d.ts +2 -0
- package/dist/editor/fields/ToggleField.js +8 -3
- package/dist/editor/fields/entry-link/InsertEntryLink.d.ts +1 -1
- package/dist/editor/fields/entry-link/InsertEntryLink.js +1 -1
- package/dist/editor/fields/form-expansion.d.ts +9 -0
- package/dist/editor/fields/form-expansion.js +2 -0
- package/dist/editor/fields/item-expansion.d.ts +15 -0
- package/dist/editor/fields/item-expansion.js +60 -0
- package/dist/editor/fields/list-item-keys.d.ts +8 -0
- package/dist/editor/fields/list-item-keys.js +50 -0
- package/dist/editor/fields/list-item-title.d.ts +20 -0
- package/dist/editor/fields/list-item-title.js +85 -0
- package/dist/editor/fields/markdown-export-options.d.ts +2 -0
- package/dist/editor/fields/markdown-export-options.js +8 -0
- package/dist/editor/fields/markdown-fidelity-visitors.d.ts +11 -0
- package/dist/editor/fields/markdown-fidelity-visitors.js +160 -0
- package/dist/editor/fields/mdx-jsx-support.d.ts +5 -1
- package/dist/editor/fields/mdx-jsx-support.js +157 -69
- package/dist/editor/fields/rich-text-failures.d.ts +5 -0
- package/dist/editor/fields/rich-text-failures.js +26 -0
- package/dist/editor/fields/toolbar-wrap.d.ts +7 -0
- package/dist/editor/fields/toolbar-wrap.js +35 -0
- package/dist/editor/form-outline.d.ts +13 -0
- package/dist/editor/form-outline.js +70 -0
- package/dist/editor/group-manager/GroupCard.d.ts +4 -1
- package/dist/editor/group-manager/GroupCard.js +12 -3
- package/dist/editor/group-manager/GroupForm.js +1 -1
- package/dist/editor/group-manager/InternalGroupsTab.d.ts +2 -1
- package/dist/editor/group-manager/InternalGroupsTab.js +4 -4
- package/dist/editor/group-manager/MemberList.d.ts +2 -1
- package/dist/editor/group-manager/MemberList.js +15 -4
- package/dist/editor/group-manager/hooks/useGroupState.d.ts +5 -0
- package/dist/editor/group-manager/hooks/useGroupState.js +30 -7
- package/dist/editor/group-manager/index.js +34 -5
- package/dist/editor/group-manager/types.d.ts +5 -2
- package/dist/editor/hooks/create-branch-request.d.ts +20 -0
- package/dist/editor/hooks/create-branch-request.js +54 -0
- package/dist/editor/hooks/save-all.d.ts +68 -0
- package/dist/editor/hooks/save-all.js +61 -0
- package/dist/editor/hooks/useBranchActions.d.ts +11 -1
- package/dist/editor/hooks/useBranchActions.js +42 -19
- package/dist/editor/hooks/useBranchManager.d.ts +21 -0
- package/dist/editor/hooks/useBranchManager.js +321 -125
- package/dist/editor/hooks/useBranchesData.d.ts +8 -4
- package/dist/editor/hooks/useBranchesData.js +9 -5
- package/dist/editor/hooks/useCommentSystem.d.ts +14 -2
- package/dist/editor/hooks/useCommentSystem.js +79 -55
- package/dist/editor/hooks/useCommentsData.d.ts +11 -7
- package/dist/editor/hooks/useCommentsData.js +20 -19
- package/dist/editor/hooks/useDraftManager.d.ts +77 -3
- package/dist/editor/hooks/useDraftManager.js +887 -94
- package/dist/editor/hooks/useEditorLayout.d.ts +53 -7
- package/dist/editor/hooks/useEditorLayout.js +98 -20
- package/dist/editor/hooks/useEntriesData.d.ts +2 -1
- package/dist/editor/hooks/useEntriesData.js +18 -4
- package/dist/editor/hooks/useEntryManager.d.ts +41 -2
- package/dist/editor/hooks/useEntryManager.js +227 -41
- package/dist/editor/hooks/useGroupManager.js +13 -16
- package/dist/editor/hooks/usePermissionManager.js +14 -6
- package/dist/editor/hooks/usePreviewMarks.d.ts +21 -0
- package/dist/editor/hooks/usePreviewMarks.js +33 -0
- package/dist/editor/hooks/useReferenceResolution.d.ts +10 -3
- package/dist/editor/hooks/useReferenceResolution.js +34 -177
- package/dist/editor/hooks/useSchemaManager.d.ts +25 -6
- package/dist/editor/hooks/useSchemaManager.js +97 -39
- package/dist/editor/hooks/useUserMetadata.d.ts +14 -4
- package/dist/editor/hooks/useUserMetadata.js +76 -47
- package/dist/editor/hooks/user-metadata-batcher.d.ts +8 -0
- package/dist/editor/hooks/user-metadata-batcher.js +33 -0
- package/dist/editor/media/AssetCard.d.ts +6 -7
- package/dist/editor/media/AssetCard.js +24 -31
- package/dist/editor/media/AssetListRow.d.ts +16 -0
- package/dist/editor/media/AssetListRow.js +41 -0
- package/dist/editor/media/CropStep.js +6 -1
- package/dist/editor/media/MediaLibrary.d.ts +4 -3
- package/dist/editor/media/MediaLibrary.js +11 -4
- package/dist/editor/media/MediaLibraryBody.d.ts +3 -3
- package/dist/editor/media/MediaLibraryBody.js +195 -80
- package/dist/editor/media/MediaLibrarySkeleton.d.ts +6 -0
- package/dist/editor/media/MediaLibrarySkeleton.js +14 -0
- package/dist/editor/media/crop-math.d.ts +3 -4
- package/dist/editor/media/crop-math.js +11 -22
- package/dist/editor/media/editor-image-src.d.ts +8 -0
- package/dist/editor/media/editor-image-src.js +10 -0
- package/dist/editor/media/format-bytes.d.ts +2 -0
- package/dist/editor/media/format-bytes.js +23 -0
- package/dist/editor/media/media-library-prefs.d.ts +23 -0
- package/dist/editor/media/media-library-prefs.js +49 -0
- package/dist/editor/media/media-library-view.d.ts +34 -0
- package/dist/editor/media/media-library-view.js +40 -0
- package/dist/editor/media/useAssetLibrary.d.ts +30 -0
- package/dist/editor/media/useAssetLibrary.js +126 -0
- package/dist/editor/media/useStableAssetOrder.d.ts +11 -0
- package/dist/editor/media/useStableAssetOrder.js +37 -0
- package/dist/editor/media/useThumbnailFailure.d.ts +6 -0
- package/dist/editor/media/useThumbnailFailure.js +16 -0
- package/dist/editor/permission-manager/GroupSelector.js +2 -2
- package/dist/editor/permission-manager/PermissionEditor.d.ts +1 -1
- package/dist/editor/permission-manager/PermissionEditor.js +15 -4
- package/dist/editor/permission-manager/PermissionLevelBadge.js +1 -1
- package/dist/editor/permission-manager/PermissionTree.d.ts +1 -1
- package/dist/editor/permission-manager/UserSelector.d.ts +1 -1
- package/dist/editor/permission-manager/UserSelector.js +3 -3
- package/dist/editor/permission-manager/index.js +12 -3
- package/dist/editor/permission-manager/types.d.ts +5 -2
- package/dist/editor/platform.d.ts +3 -0
- package/dist/editor/platform.js +9 -0
- package/dist/editor/preview-asset-base.d.ts +9 -0
- package/dist/editor/preview-asset-base.js +17 -0
- package/dist/editor/preview-bridge.d.ts +51 -27
- package/dist/editor/preview-bridge.js +103 -144
- package/dist/editor/preview-marks.d.ts +15 -0
- package/dist/editor/preview-marks.js +74 -0
- package/dist/editor/preview-path.d.ts +12 -0
- package/dist/editor/preview-path.js +45 -1
- package/dist/editor/preview-scale.d.ts +27 -0
- package/dist/editor/preview-scale.js +34 -0
- package/dist/editor/raw-asset-base.d.ts +5 -0
- package/dist/editor/raw-asset-base.js +14 -0
- package/dist/editor/relative-time.d.ts +4 -4
- package/dist/editor/relative-time.js +16 -8
- package/dist/editor/schema-editor/CollectionEditor.d.ts +20 -3
- package/dist/editor/schema-editor/CollectionEditor.js +361 -62
- package/dist/editor/schema-editor/EntryTypeEditor.d.ts +5 -1
- package/dist/editor/schema-editor/EntryTypeEditor.js +11 -6
- package/dist/editor/schema-editor/collection-draft.d.ts +22 -0
- package/dist/editor/schema-editor/collection-draft.js +40 -0
- package/dist/editor/schema-editor/index.d.ts +1 -1
- package/dist/editor/schema-label.d.ts +10 -0
- package/dist/editor/schema-label.js +17 -0
- package/dist/editor/settings-conflict.d.ts +5 -0
- package/dist/editor/settings-conflict.js +8 -0
- package/dist/editor/shell/ActivityRail.d.ts +37 -0
- package/dist/editor/shell/ActivityRail.js +91 -0
- package/dist/editor/shell/EditorShell.d.ts +17 -0
- package/dist/editor/shell/EditorShell.js +31 -0
- package/dist/editor/shell/PaneLayout.d.ts +28 -0
- package/dist/editor/shell/PaneLayout.js +116 -0
- package/dist/editor/shell/SidePanelHost.d.ts +35 -0
- package/dist/editor/shell/SidePanelHost.js +184 -0
- package/dist/editor/shell/TopBar.d.ts +12 -0
- package/dist/editor/shell/TopBar.js +14 -0
- package/dist/editor/shell/host-chrome.d.ts +16 -0
- package/dist/editor/shell/host-chrome.js +69 -0
- package/dist/editor/slug.d.ts +16 -0
- package/dist/editor/slug.js +43 -0
- package/dist/editor/theme.d.ts +2 -1
- package/dist/editor/theme.js +314 -13
- package/dist/editor/unanswered.d.ts +17 -0
- package/dist/editor/unanswered.js +26 -0
- package/dist/editor/unavailable-entry-type.d.ts +20 -0
- package/dist/editor/unavailable-entry-type.js +28 -0
- package/dist/editor/undo-removal.d.ts +57 -0
- package/dist/editor/undo-removal.js +163 -0
- package/dist/editor/user-display.d.ts +4 -0
- package/dist/editor/user-display.js +5 -0
- package/dist/editor/utils/confirm-modal.d.ts +8 -0
- package/dist/editor/utils/confirm-modal.js +12 -0
- package/dist/editor/utils/editor-errors.d.ts +19 -0
- package/dist/editor/utils/editor-errors.js +32 -0
- package/dist/editor/utils/focus-return.d.ts +56 -0
- package/dist/editor/utils/focus-return.js +106 -0
- package/dist/entry-link-resolver.d.ts +11 -1
- package/dist/entry-link-resolver.js +65 -5
- package/dist/entry-schema-registry.d.ts +3 -3
- package/dist/entry-schema-registry.js +7 -4
- package/dist/entry-schema.d.ts +49 -3
- package/dist/entry-schema.js +18 -0
- package/dist/git-manager.d.ts +172 -10
- package/dist/git-manager.js +449 -107
- package/dist/github-service.d.ts +39 -2
- package/dist/github-service.js +101 -7
- package/dist/http/handler.js +74 -9
- package/dist/http/types.d.ts +2 -0
- package/dist/http/worker-not-ready.d.ts +9 -4
- package/dist/http/worker-not-ready.js +59 -6
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/item-keys.d.ts +46 -0
- package/dist/item-keys.js +235 -0
- package/dist/operating-mode/editor-mode-check.d.ts +15 -0
- package/dist/operating-mode/editor-mode-check.js +24 -0
- package/dist/operating-mode/mode-env.d.ts +13 -14
- package/dist/operating-mode/mode-env.js +13 -14
- package/dist/operating-mode/types.d.ts +2 -2
- package/dist/paths/branch.d.ts +0 -1
- package/dist/paths/branch.js +1 -8
- package/dist/paths/index.d.ts +1 -1
- package/dist/paths/index.js +1 -1
- package/dist/paths/validation.js +0 -2
- package/dist/preview.d.ts +8 -0
- package/dist/preview.js +7 -0
- package/dist/reference-resolver.js +1 -0
- package/dist/resolve-canopy-user.d.ts +1 -1
- package/dist/resolve-canopy-user.js +1 -1
- package/dist/schema/meta-loader.d.ts +18 -8
- package/dist/schema/meta-loader.js +42 -9
- package/dist/schema/registry-fingerprint.d.ts +14 -0
- package/dist/schema/registry-fingerprint.js +63 -0
- package/dist/schema/resolver.d.ts +7 -4
- package/dist/schema/resolver.js +7 -6
- package/dist/schema/schema-store.d.ts +7 -10
- package/dist/schema/schema-store.js +13 -11
- package/dist/schema/schema-unavailable-error.d.ts +11 -0
- package/dist/schema/schema-unavailable-error.js +15 -0
- package/dist/schema/types.d.ts +22 -0
- package/dist/schema-registry-record.d.ts +35 -0
- package/dist/schema-registry-record.js +134 -0
- package/dist/server.d.ts +79 -9
- package/dist/server.js +62 -8
- package/dist/services.d.ts +33 -5
- package/dist/services.js +155 -37
- package/dist/settings-workspace.d.ts +23 -3
- package/dist/settings-workspace.js +159 -45
- package/dist/stamp-on-publish.d.ts +36 -0
- package/dist/stamp-on-publish.js +71 -0
- package/dist/static/index.d.ts +58 -5
- package/dist/static/index.js +133 -3
- package/dist/static/seo.d.ts +5 -5
- package/dist/static/seo.js +5 -5
- package/dist/submission-attribution.d.ts +8 -0
- package/dist/submission-attribution.js +22 -0
- package/dist/system-users.d.ts +12 -0
- package/dist/system-users.js +12 -0
- package/dist/task-queue/cms-task-queue.d.ts +1 -1
- package/dist/task-queue/cms-task-queue.js +1 -1
- package/dist/task-queue/index.d.ts +1 -1
- package/dist/task-queue/index.js +1 -1
- package/dist/task-queue/task-queue.d.ts +6 -0
- package/dist/task-queue/task-queue.js +29 -0
- package/dist/task-queue/worker-status.d.ts +35 -9
- package/dist/task-queue/worker-status.js +84 -17
- package/dist/types.d.ts +90 -9
- package/dist/url-collision.js +3 -3
- package/dist/url-exclusivity-fixtures.d.ts +8 -1
- package/dist/url-exclusivity-fixtures.js +11 -1
- package/dist/user.js +2 -1
- package/dist/utils/atomic-write.js +2 -1
- package/dist/utils/base-branch.d.ts +13 -0
- package/dist/utils/base-branch.js +23 -0
- package/dist/utils/content-serialize.d.ts +15 -7
- package/dist/utils/content-serialize.js +353 -51
- package/dist/utils/content-write-lock.d.ts +6 -1
- package/dist/utils/content-write-lock.js +21 -6
- package/dist/utils/debug.d.ts +1 -1
- package/dist/utils/debug.js +5 -3
- package/dist/utils/error.js +13 -2
- package/dist/utils/escape-text.d.ts +7 -0
- package/dist/utils/escape-text.js +27 -0
- package/dist/utils/fs.d.ts +12 -4
- package/dist/utils/fs.js +18 -5
- package/dist/utils/git.d.ts +21 -1
- package/dist/utils/git.js +63 -8
- package/dist/utils/json-source-splice.d.ts +14 -0
- package/dist/utils/json-source-splice.js +120 -0
- package/dist/utils/markdown-body-splice.d.ts +39 -0
- package/dist/utils/markdown-body-splice.js +421 -0
- package/dist/utils/occ-json-write.js +18 -12
- package/dist/utils/provision-log.d.ts +25 -0
- package/dist/utils/provision-log.js +49 -0
- package/dist/utils/provisioning-lock.d.ts +32 -1
- package/dist/utils/provisioning-lock.js +78 -32
- package/dist/utils/sanitize-href.d.ts +9 -23
- package/dist/utils/sanitize-href.js +14 -28
- package/dist/utils/title-field.d.ts +10 -0
- package/dist/utils/title-field.js +47 -0
- package/dist/utils/yaml-source-splice.d.ts +58 -0
- package/dist/utils/yaml-source-splice.js +515 -0
- package/dist/validation/block-structural-keys.d.ts +1 -1
- package/dist/validation/block-structural-keys.js +1 -1
- package/dist/validation/deletion-checker.d.ts +21 -29
- package/dist/validation/deletion-checker.js +41 -117
- package/dist/validation/entry-validator.d.ts +6 -10
- package/dist/validation/entry-validator.js +19 -26
- package/dist/validation/field-traversal.d.ts +22 -0
- package/dist/validation/field-traversal.js +39 -8
- package/dist/validation/markdown-safety.d.ts +68 -0
- package/dist/validation/markdown-safety.js +596 -0
- package/dist/validation/mdx-allowlist.d.ts +55 -0
- package/dist/validation/mdx-allowlist.js +183 -0
- package/dist/validation/reference-validator.d.ts +2 -0
- package/dist/validation/reference-validator.js +3 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker/branch-policy.d.ts +124 -0
- package/dist/worker/branch-policy.js +243 -0
- package/dist/worker/bundle-header.d.ts +117 -0
- package/dist/worker/bundle-header.js +253 -0
- package/dist/worker/cms-worker.d.ts +236 -142
- package/dist/worker/cms-worker.js +772 -285
- package/dist/worker/gateway-egress.d.ts +43 -0
- package/dist/worker/gateway-egress.js +209 -0
- package/dist/worker/gateway-instance.d.ts +42 -0
- package/dist/worker/gateway-instance.js +129 -0
- package/dist/worker/git-process.d.ts +81 -0
- package/dist/worker/git-process.js +234 -0
- package/dist/worker/git-sync.d.ts +34 -17
- package/dist/worker/git-sync.js +394 -131
- package/dist/worker/github-auth.d.ts +9 -9
- package/dist/worker/github-auth.js +13 -15
- package/dist/worker/github-gateway-http.d.ts +62 -0
- package/dist/worker/github-gateway-http.js +977 -0
- package/dist/worker/github-gateway-wire.d.ts +590 -0
- package/dist/worker/github-gateway-wire.js +488 -0
- package/dist/worker/github-gateway.d.ts +238 -0
- package/dist/worker/github-gateway.js +726 -0
- package/dist/worker/github-mirror-upkeep.d.ts +75 -0
- package/dist/worker/github-mirror-upkeep.js +266 -0
- package/dist/worker/github-mirror.d.ts +364 -0
- package/dist/worker/github-mirror.js +1030 -0
- package/dist/worker/github-transfer.d.ts +56 -0
- package/dist/worker/github-transfer.js +444 -0
- package/dist/worker/history-rewrite.d.ts +4 -5
- package/dist/worker/history-rewrite.js +12 -17
- package/dist/worker/provisioned-workspace.d.ts +5 -5
- package/dist/worker/provisioned-workspace.js +5 -5
- package/dist/worker/rebase.d.ts +1 -1
- package/dist/worker/rebase.js +58 -54
- package/dist/worker/remote-git-maintenance.d.ts +3 -0
- package/dist/worker/remote-git-maintenance.js +12 -0
- package/dist/worker/schema-gate.d.ts +49 -0
- package/dist/worker/schema-gate.js +226 -0
- package/dist/worker/self-checks.d.ts +107 -0
- package/dist/worker/self-checks.js +358 -0
- package/dist/worker/shared-repo-git.d.ts +96 -0
- package/dist/worker/shared-repo-git.js +459 -0
- package/dist/worker/sparse-cone.d.ts +20 -0
- package/dist/worker/sparse-cone.js +136 -0
- package/dist/worker/stale-mirror.d.ts +82 -0
- package/dist/worker/stale-mirror.js +130 -0
- package/dist/worker/task-runner.d.ts +5 -3
- package/dist/worker/task-runner.js +287 -186
- package/dist/worker/worker-context.d.ts +36 -37
- package/package.json +35 -7
- package/dist/editor/EditorPanes.d.ts +0 -10
- package/dist/editor/EditorPanes.js +0 -98
- package/dist/editor/components/EditorFooter.d.ts +0 -11
- package/dist/editor/components/EditorFooter.js +0 -9
- package/dist/editor/components/EditorSidebar.d.ts +0 -67
- package/dist/editor/components/EditorSidebar.js +0 -22
package/dist/api/client.js
CHANGED
|
@@ -6,10 +6,14 @@
|
|
|
6
6
|
* (changes will be overwritten), edit the generator's templates instead.
|
|
7
7
|
*/
|
|
8
8
|
import { computeContentSha256Hex } from './request-body-hash.js';
|
|
9
|
+
import { resolveTimeoutMs, runWithDeadline } from './request-deadline.js';
|
|
10
|
+
export { isApiTimeoutError, WRITE_TIMED_OUT_MESSAGE } from './request-deadline.js';
|
|
9
11
|
import { readTrailingSlashEnv, withTrailingSlash } from '../utils/url-prefix.js';
|
|
12
|
+
import { EDITOR_MODE_HEADER, EDITOR_MODE_MISMATCH_STATUS } from '../operating-mode/editor-mode-check.js';
|
|
10
13
|
/**
|
|
11
14
|
* Typed client for the CanopyCMS API: one method per endpoint, grouped by namespace, each
|
|
12
|
-
* returning that endpoint's ApiResponse.
|
|
15
|
+
* returning that endpoint's ApiResponse. Every method takes {@link RequestOptions} last; a call
|
|
16
|
+
* that outlives its deadline rejects with an `ApiTimeoutError` (request-deadline.ts).
|
|
13
17
|
*
|
|
14
18
|
* @example
|
|
15
19
|
* ```ts
|
|
@@ -21,106 +25,106 @@ export class CanopyApiClient {
|
|
|
21
25
|
constructor(options = {}) {
|
|
22
26
|
this.branches = {
|
|
23
27
|
/** GET /branches */
|
|
24
|
-
list: () => {
|
|
25
|
-
return this.request('GET', '/branches');
|
|
28
|
+
list: (options) => {
|
|
29
|
+
return this.request('GET', '/branches', undefined, 'standard', options);
|
|
26
30
|
},
|
|
27
31
|
/** POST /branches */
|
|
28
|
-
create: (body) => {
|
|
29
|
-
return this.request('POST', '/branches', body);
|
|
32
|
+
create: (body, options) => {
|
|
33
|
+
return this.request('POST', '/branches', body, 'long', options);
|
|
30
34
|
},
|
|
31
35
|
/** DELETE /:branch */
|
|
32
|
-
delete: (params) => {
|
|
33
|
-
return this.request('DELETE', this.buildPath('/:branch', params));
|
|
36
|
+
delete: (params, options) => {
|
|
37
|
+
return this.request('DELETE', this.buildPath('/:branch', params), undefined, 'standard', options);
|
|
34
38
|
},
|
|
35
39
|
/** PATCH /:branch/access */
|
|
36
|
-
updateAccess: (params, body) => {
|
|
37
|
-
return this.request('PATCH', this.buildPath('/:branch/access', params), body);
|
|
40
|
+
updateAccess: (params, body, options) => {
|
|
41
|
+
return this.request('PATCH', this.buildPath('/:branch/access', params), body, 'standard', options);
|
|
38
42
|
},
|
|
39
43
|
};
|
|
40
44
|
this.workflow = {
|
|
41
45
|
/** POST /:branch/withdraw */
|
|
42
|
-
withdraw: (params) => {
|
|
43
|
-
return this.request('POST', this.buildPath('/:branch/withdraw', params));
|
|
46
|
+
withdraw: (params, options) => {
|
|
47
|
+
return this.request('POST', this.buildPath('/:branch/withdraw', params), undefined, 'standard', options);
|
|
44
48
|
},
|
|
45
49
|
/** POST /:branch/request-changes */
|
|
46
|
-
requestChanges: (params) => {
|
|
47
|
-
return this.request('POST', this.buildPath('/:branch/request-changes', params));
|
|
50
|
+
requestChanges: (params, options) => {
|
|
51
|
+
return this.request('POST', this.buildPath('/:branch/request-changes', params), undefined, 'standard', options);
|
|
48
52
|
},
|
|
49
53
|
/** POST /:branch/approve */
|
|
50
|
-
approve: (params) => {
|
|
51
|
-
return this.request('POST', this.buildPath('/:branch/approve', params));
|
|
54
|
+
approve: (params, options) => {
|
|
55
|
+
return this.request('POST', this.buildPath('/:branch/approve', params), undefined, 'standard', options);
|
|
52
56
|
},
|
|
53
57
|
/** POST /:branch/mark-merged */
|
|
54
|
-
markMerged: (params) => {
|
|
55
|
-
return this.request('POST', this.buildPath('/:branch/mark-merged', params));
|
|
58
|
+
markMerged: (params, options) => {
|
|
59
|
+
return this.request('POST', this.buildPath('/:branch/mark-merged', params), undefined, 'standard', options);
|
|
56
60
|
},
|
|
57
61
|
/** GET /:branch/status */
|
|
58
|
-
getStatus: (params) => {
|
|
59
|
-
return this.request('GET', this.buildPath('/:branch/status', params));
|
|
62
|
+
getStatus: (params, options) => {
|
|
63
|
+
return this.request('GET', this.buildPath('/:branch/status', params), undefined, 'standard', options);
|
|
60
64
|
},
|
|
61
65
|
/** POST /:branch/submit */
|
|
62
|
-
submit: (params) => {
|
|
63
|
-
return this.request('POST', this.buildPath('/:branch/submit', params));
|
|
66
|
+
submit: (params, options) => {
|
|
67
|
+
return this.request('POST', this.buildPath('/:branch/submit', params), undefined, 'long', options);
|
|
64
68
|
},
|
|
65
69
|
};
|
|
66
70
|
this.comments = {
|
|
67
71
|
/** GET /:branch/comments */
|
|
68
|
-
list: (params) => {
|
|
69
|
-
return this.request('GET', this.buildPath('/:branch/comments', params));
|
|
72
|
+
list: (params, options) => {
|
|
73
|
+
return this.request('GET', this.buildPath('/:branch/comments', params), undefined, 'standard', options);
|
|
70
74
|
},
|
|
71
75
|
/** POST /:branch/comments */
|
|
72
|
-
add: (params, body) => {
|
|
73
|
-
return this.request('POST', this.buildPath('/:branch/comments', params), body);
|
|
76
|
+
add: (params, body, options) => {
|
|
77
|
+
return this.request('POST', this.buildPath('/:branch/comments', params), body, 'standard', options);
|
|
74
78
|
},
|
|
75
79
|
/** POST /:branch/comments/:threadId/resolve */
|
|
76
|
-
resolve: (params) => {
|
|
77
|
-
return this.request('POST', this.buildPath('/:branch/comments/:threadId/resolve', params));
|
|
80
|
+
resolve: (params, options) => {
|
|
81
|
+
return this.request('POST', this.buildPath('/:branch/comments/:threadId/resolve', params), undefined, 'standard', options);
|
|
78
82
|
},
|
|
79
83
|
};
|
|
80
84
|
this.content = {
|
|
81
85
|
/** GET /:branch/content/...path */
|
|
82
|
-
read: (params) => {
|
|
83
|
-
return this.request('GET', this.buildPath('/:branch/content/...path', params));
|
|
86
|
+
read: (params, options) => {
|
|
87
|
+
return this.request('GET', this.buildPath('/:branch/content/...path', params), undefined, 'standard', options);
|
|
84
88
|
},
|
|
85
89
|
/** PUT /:branch/content/...path */
|
|
86
|
-
write: (params, body) => {
|
|
87
|
-
return this.request('PUT', this.buildPath('/:branch/content/...path', params), body);
|
|
90
|
+
write: (params, body, options) => {
|
|
91
|
+
return this.request('PUT', this.buildPath('/:branch/content/...path', params), body, 'standard', options);
|
|
88
92
|
},
|
|
89
93
|
/** POST /:branch/validate-references/...path */
|
|
90
|
-
validateReferences: (params, body) => {
|
|
91
|
-
return this.request('POST', this.buildPath('/:branch/validate-references/...path', params), body);
|
|
94
|
+
validateReferences: (params, body, options) => {
|
|
95
|
+
return this.request('POST', this.buildPath('/:branch/validate-references/...path', params), body, 'standard', options, true);
|
|
92
96
|
},
|
|
93
97
|
/** PATCH /:branch/rename-entry/...path */
|
|
94
|
-
renameEntry: (params, body) => {
|
|
95
|
-
return this.request('PATCH', this.buildPath('/:branch/rename-entry/...path', params), body);
|
|
98
|
+
renameEntry: (params, body, options) => {
|
|
99
|
+
return this.request('PATCH', this.buildPath('/:branch/rename-entry/...path', params), body, 'standard', options);
|
|
96
100
|
},
|
|
97
101
|
/** GET /:branch/reference-options */
|
|
98
|
-
getReferenceOptions: (params) => {
|
|
99
|
-
return this.request('GET', this.buildPath('/:branch/reference-options', params));
|
|
102
|
+
getReferenceOptions: (params, options) => {
|
|
103
|
+
return this.request('GET', this.buildPath('/:branch/reference-options', params), undefined, 'standard', options);
|
|
100
104
|
},
|
|
101
105
|
/** POST /:branch/resolve-references */
|
|
102
|
-
resolveReferences: (params, body) => {
|
|
103
|
-
return this.request('POST', this.buildPath('/:branch/resolve-references', params), body);
|
|
106
|
+
resolveReferences: (params, body, options) => {
|
|
107
|
+
return this.request('POST', this.buildPath('/:branch/resolve-references', params), body, 'standard', options, true);
|
|
104
108
|
},
|
|
105
109
|
};
|
|
106
110
|
this.entries = {
|
|
107
111
|
/** GET /:branch/entries */
|
|
108
|
-
list: (params) => {
|
|
109
|
-
return this.request('GET', this.buildPath('/:branch/entries', params));
|
|
112
|
+
list: (params, options) => {
|
|
113
|
+
return this.request('GET', this.buildPath('/:branch/entries', params), undefined, 'standard', options);
|
|
110
114
|
},
|
|
111
115
|
/** DELETE /:branch/entries/...entryPath */
|
|
112
|
-
delete: (params) => {
|
|
113
|
-
return this.request('DELETE', this.buildPath('/:branch/entries/...entryPath', params));
|
|
116
|
+
delete: (params, options) => {
|
|
117
|
+
return this.request('DELETE', this.buildPath('/:branch/entries/...entryPath', params), undefined, 'standard', options);
|
|
114
118
|
},
|
|
115
119
|
};
|
|
116
120
|
this.assets = {
|
|
117
121
|
/** POST /assets/presign */
|
|
118
|
-
presign: (body) => {
|
|
119
|
-
return this.request('POST', '/assets/presign', body);
|
|
122
|
+
presign: (body, options) => {
|
|
123
|
+
return this.request('POST', '/assets/presign', body, 'standard', options, true);
|
|
120
124
|
},
|
|
121
125
|
/** POST /assets/finalize */
|
|
122
|
-
finalize: (body) => {
|
|
123
|
-
return this.request('POST', '/assets/finalize', body);
|
|
126
|
+
finalize: (body, options) => {
|
|
127
|
+
return this.request('POST', '/assets/finalize', body, 'standard', options);
|
|
124
128
|
},
|
|
125
129
|
/** POST /assets/upload: multipart upload, hand-written because the generic template only knows JSON bodies. */
|
|
126
130
|
uploadProxied: (file, options) => {
|
|
@@ -129,133 +133,137 @@ export class CanopyApiClient {
|
|
|
129
133
|
if (options?.filename) {
|
|
130
134
|
formData.append('filename', options.filename);
|
|
131
135
|
}
|
|
132
|
-
return this.request('POST', '/assets/upload', formData);
|
|
136
|
+
return this.request('POST', '/assets/upload', formData, 'long', options);
|
|
133
137
|
},
|
|
134
138
|
/** GET /assets */
|
|
135
|
-
list: (params) => {
|
|
136
|
-
return this.request('GET', this.buildPath('/assets', params));
|
|
139
|
+
list: (params, options) => {
|
|
140
|
+
return this.request('GET', this.buildPath('/assets', params), undefined, 'standard', options);
|
|
137
141
|
},
|
|
138
142
|
/** DELETE /assets */
|
|
139
|
-
delete: (params) => {
|
|
140
|
-
return this.request('DELETE', this.buildPath('/assets', params));
|
|
143
|
+
delete: (params, options) => {
|
|
144
|
+
return this.request('DELETE', this.buildPath('/assets', params), undefined, 'standard', options);
|
|
141
145
|
},
|
|
142
146
|
};
|
|
143
147
|
this.permissions = {
|
|
144
148
|
/** GET /permissions */
|
|
145
|
-
get: () => {
|
|
146
|
-
return this.request('GET', '/permissions');
|
|
149
|
+
get: (options) => {
|
|
150
|
+
return this.request('GET', '/permissions', undefined, 'standard', options);
|
|
147
151
|
},
|
|
148
152
|
/** PUT /permissions */
|
|
149
|
-
update: (body) => {
|
|
150
|
-
return this.request('PUT', '/permissions', body);
|
|
153
|
+
update: (body, options) => {
|
|
154
|
+
return this.request('PUT', '/permissions', body, 'standard', options);
|
|
151
155
|
},
|
|
152
156
|
/** GET /users/search */
|
|
153
|
-
searchUsers: (params) => {
|
|
154
|
-
return this.request('GET', this.buildPath('/users/search', params));
|
|
157
|
+
searchUsers: (params, options) => {
|
|
158
|
+
return this.request('GET', this.buildPath('/users/search', params), undefined, 'standard', options);
|
|
155
159
|
},
|
|
156
160
|
/** GET /groups */
|
|
157
|
-
listGroups: () => {
|
|
158
|
-
return this.request('GET', '/groups');
|
|
161
|
+
listGroups: (options) => {
|
|
162
|
+
return this.request('GET', '/groups', undefined, 'standard', options);
|
|
159
163
|
},
|
|
160
164
|
/** GET /users/:userId */
|
|
161
|
-
getUserMetadata: (params) => {
|
|
162
|
-
return this.request('GET', this.buildPath('/users/:userId', params));
|
|
165
|
+
getUserMetadata: (params, options) => {
|
|
166
|
+
return this.request('GET', this.buildPath('/users/:userId', params), undefined, 'standard', options);
|
|
167
|
+
},
|
|
168
|
+
/** POST /users/batch */
|
|
169
|
+
batchGetUserMetadata: (body, options) => {
|
|
170
|
+
return this.request('POST', '/users/batch', body, 'standard', options, true);
|
|
163
171
|
},
|
|
164
172
|
};
|
|
165
173
|
this.groups = {
|
|
166
174
|
/** GET /groups/internal */
|
|
167
|
-
getInternal: () => {
|
|
168
|
-
return this.request('GET', '/groups/internal');
|
|
175
|
+
getInternal: (options) => {
|
|
176
|
+
return this.request('GET', '/groups/internal', undefined, 'standard', options);
|
|
169
177
|
},
|
|
170
178
|
/** PUT /groups/internal */
|
|
171
|
-
updateInternal: (body) => {
|
|
172
|
-
return this.request('PUT', '/groups/internal', body);
|
|
179
|
+
updateInternal: (body, options) => {
|
|
180
|
+
return this.request('PUT', '/groups/internal', body, 'standard', options);
|
|
173
181
|
},
|
|
174
182
|
/** GET /groups/search */
|
|
175
|
-
searchExternal: (params) => {
|
|
176
|
-
return this.request('GET', this.buildPath('/groups/search', params));
|
|
183
|
+
searchExternal: (params, options) => {
|
|
184
|
+
return this.request('GET', this.buildPath('/groups/search', params), undefined, 'standard', options);
|
|
177
185
|
},
|
|
178
186
|
};
|
|
179
187
|
this.user = {
|
|
180
188
|
/** GET /whoami */
|
|
181
|
-
whoami: () => {
|
|
182
|
-
return this.request('GET', '/whoami');
|
|
189
|
+
whoami: (options) => {
|
|
190
|
+
return this.request('GET', '/whoami', undefined, 'standard', options);
|
|
183
191
|
},
|
|
184
192
|
};
|
|
185
193
|
this.schema = {
|
|
186
194
|
/** GET /:branch/schema */
|
|
187
|
-
get: (params) => {
|
|
188
|
-
return this.request('GET', this.buildPath('/:branch/schema', params));
|
|
195
|
+
get: (params, options) => {
|
|
196
|
+
return this.request('GET', this.buildPath('/:branch/schema', params), undefined, 'standard', options);
|
|
189
197
|
},
|
|
190
198
|
/** GET /:branch/schema/collection/...collectionPath */
|
|
191
|
-
getCollection: (params) => {
|
|
192
|
-
return this.request('GET', this.buildPath('/:branch/schema/collection/...collectionPath', params));
|
|
199
|
+
getCollection: (params, options) => {
|
|
200
|
+
return this.request('GET', this.buildPath('/:branch/schema/collection/...collectionPath', params), undefined, 'standard', options);
|
|
193
201
|
},
|
|
194
202
|
/** POST /:branch/schema/collections */
|
|
195
|
-
createCollection: (params, body) => {
|
|
196
|
-
return this.request('POST', this.buildPath('/:branch/schema/collections', params), body);
|
|
203
|
+
createCollection: (params, body, options) => {
|
|
204
|
+
return this.request('POST', this.buildPath('/:branch/schema/collections', params), body, 'standard', options);
|
|
197
205
|
},
|
|
198
206
|
/** PATCH /:branch/schema/collection/...collectionPath */
|
|
199
|
-
updateCollection: (params, body) => {
|
|
200
|
-
return this.request('PATCH', this.buildPath('/:branch/schema/collection/...collectionPath', params), body);
|
|
207
|
+
updateCollection: (params, body, options) => {
|
|
208
|
+
return this.request('PATCH', this.buildPath('/:branch/schema/collection/...collectionPath', params), body, 'standard', options);
|
|
201
209
|
},
|
|
202
210
|
/** DELETE /:branch/schema/collection/...collectionPath */
|
|
203
|
-
deleteCollection: (params) => {
|
|
204
|
-
return this.request('DELETE', this.buildPath('/:branch/schema/collection/...collectionPath', params));
|
|
211
|
+
deleteCollection: (params, options) => {
|
|
212
|
+
return this.request('DELETE', this.buildPath('/:branch/schema/collection/...collectionPath', params), undefined, 'standard', options);
|
|
205
213
|
},
|
|
206
214
|
/** POST /:branch/schema/entry-types/...collectionPath */
|
|
207
|
-
addEntryType: (params, body) => {
|
|
208
|
-
return this.request('POST', this.buildPath('/:branch/schema/entry-types/...collectionPath', params), body);
|
|
215
|
+
addEntryType: (params, body, options) => {
|
|
216
|
+
return this.request('POST', this.buildPath('/:branch/schema/entry-types/...collectionPath', params), body, 'standard', options);
|
|
209
217
|
},
|
|
210
218
|
/** PATCH /:branch/schema/entry-types/:entryTypeName/...collectionPath */
|
|
211
|
-
updateEntryType: (params, body) => {
|
|
212
|
-
return this.request('PATCH', this.buildPath('/:branch/schema/entry-types/:entryTypeName/...collectionPath', params), body);
|
|
219
|
+
updateEntryType: (params, body, options) => {
|
|
220
|
+
return this.request('PATCH', this.buildPath('/:branch/schema/entry-types/:entryTypeName/...collectionPath', params), body, 'standard', options);
|
|
213
221
|
},
|
|
214
222
|
/** DELETE /:branch/schema/entry-types/:entryTypeName/...collectionPath */
|
|
215
|
-
removeEntryType: (params) => {
|
|
216
|
-
return this.request('DELETE', this.buildPath('/:branch/schema/entry-types/:entryTypeName/...collectionPath', params));
|
|
223
|
+
removeEntryType: (params, options) => {
|
|
224
|
+
return this.request('DELETE', this.buildPath('/:branch/schema/entry-types/:entryTypeName/...collectionPath', params), undefined, 'standard', options);
|
|
217
225
|
},
|
|
218
226
|
/** PATCH /:branch/schema/order/...collectionPath */
|
|
219
|
-
updateOrder: (params, body) => {
|
|
220
|
-
return this.request('PATCH', this.buildPath('/:branch/schema/order/...collectionPath', params), body);
|
|
227
|
+
updateOrder: (params, body, options) => {
|
|
228
|
+
return this.request('PATCH', this.buildPath('/:branch/schema/order/...collectionPath', params), body, 'standard', options);
|
|
221
229
|
},
|
|
222
230
|
/** POST /:branch/schema/invalidate-cache */
|
|
223
|
-
invalidateSchemaCache: (params) => {
|
|
224
|
-
return this.request('POST', this.buildPath('/:branch/schema/invalidate-cache', params));
|
|
231
|
+
invalidateSchemaCache: (params, options) => {
|
|
232
|
+
return this.request('POST', this.buildPath('/:branch/schema/invalidate-cache', params), undefined, 'standard', options);
|
|
225
233
|
},
|
|
226
234
|
};
|
|
227
235
|
this.admin = {
|
|
228
236
|
/** GET /admin/branch-health */
|
|
229
|
-
branchHealth: () => {
|
|
230
|
-
return this.request('GET', '/admin/branch-health');
|
|
237
|
+
branchHealth: (params, options) => {
|
|
238
|
+
return this.request('GET', this.buildPath('/admin/branch-health', params), undefined, 'long', options);
|
|
231
239
|
},
|
|
232
240
|
/** POST /admin/branch-dirs/:dirName/purge */
|
|
233
|
-
purgeBranchDir: (params) => {
|
|
234
|
-
return this.request('POST', this.buildPath('/admin/branch-dirs/:dirName/purge', params));
|
|
241
|
+
purgeBranchDir: (params, options) => {
|
|
242
|
+
return this.request('POST', this.buildPath('/admin/branch-dirs/:dirName/purge', params), undefined, 'long', options);
|
|
235
243
|
},
|
|
236
244
|
/** POST /admin/branch-dirs/:dirName/repair-metadata */
|
|
237
|
-
repairBranchDir: (params) => {
|
|
238
|
-
return this.request('POST', this.buildPath('/admin/branch-dirs/:dirName/repair-metadata', params));
|
|
245
|
+
repairBranchDir: (params, options) => {
|
|
246
|
+
return this.request('POST', this.buildPath('/admin/branch-dirs/:dirName/repair-metadata', params), undefined, 'long', options);
|
|
239
247
|
},
|
|
240
248
|
/** POST /admin/branch-dirs/:dirName/repair-content-duplicates */
|
|
241
|
-
repairContentDuplicates: (params) => {
|
|
242
|
-
return this.request('POST', this.buildPath('/admin/branch-dirs/:dirName/repair-content-duplicates', params));
|
|
249
|
+
repairContentDuplicates: (params, options) => {
|
|
250
|
+
return this.request('POST', this.buildPath('/admin/branch-dirs/:dirName/repair-content-duplicates', params), undefined, 'long', options);
|
|
243
251
|
},
|
|
244
252
|
/** GET /admin/status */
|
|
245
|
-
status: () => {
|
|
246
|
-
return this.request('GET', '/admin/status');
|
|
253
|
+
status: (options) => {
|
|
254
|
+
return this.request('GET', '/admin/status', undefined, 'standard', options);
|
|
247
255
|
},
|
|
248
256
|
/** GET /admin/tasks/:status */
|
|
249
|
-
listTasks: (params) => {
|
|
250
|
-
return this.request('GET', this.buildPath('/admin/tasks/:status', params));
|
|
257
|
+
listTasks: (params, options) => {
|
|
258
|
+
return this.request('GET', this.buildPath('/admin/tasks/:status', params), undefined, 'standard', options);
|
|
251
259
|
},
|
|
252
260
|
/** POST /admin/tasks/:taskId/retry */
|
|
253
|
-
retryTask: (params) => {
|
|
254
|
-
return this.request('POST', this.buildPath('/admin/tasks/:taskId/retry', params));
|
|
261
|
+
retryTask: (params, options) => {
|
|
262
|
+
return this.request('POST', this.buildPath('/admin/tasks/:taskId/retry', params), undefined, 'standard', options);
|
|
255
263
|
},
|
|
256
264
|
/** DELETE /admin/tasks/:status/:fileName */
|
|
257
|
-
deleteTask: (params) => {
|
|
258
|
-
return this.request('DELETE', this.buildPath('/admin/tasks/:status/:fileName', params));
|
|
265
|
+
deleteTask: (params, options) => {
|
|
266
|
+
return this.request('DELETE', this.buildPath('/admin/tasks/:status/:fileName', params), undefined, 'standard', options);
|
|
259
267
|
},
|
|
260
268
|
};
|
|
261
269
|
this.baseUrl = options.baseUrl ?? '/api/canopycms';
|
|
@@ -263,6 +271,8 @@ export class CanopyApiClient {
|
|
|
263
271
|
this.fetchFn = options.fetch ?? (typeof window !== 'undefined' ? fetch.bind(window) : fetch);
|
|
264
272
|
this.trailingSlash = options.trailingSlash ?? readTrailingSlashEnv();
|
|
265
273
|
this.onUnauthorized = options.onUnauthorized;
|
|
274
|
+
this.editorMode = options.editorMode;
|
|
275
|
+
this.onEditorModeMismatch = options.onEditorModeMismatch;
|
|
266
276
|
}
|
|
267
277
|
buildPath(template, params) {
|
|
268
278
|
let result = template;
|
|
@@ -293,11 +303,21 @@ export class CanopyApiClient {
|
|
|
293
303
|
}
|
|
294
304
|
return result;
|
|
295
305
|
}
|
|
296
|
-
|
|
306
|
+
/** One API call, 429 resends included, under the deadline `timeout` and `options` give it. */
|
|
307
|
+
request(method, path, body, timeout, options, readOnly = method === 'GET') {
|
|
308
|
+
return runWithDeadline((signal) => this.send(method, path, body, signal), {
|
|
309
|
+
method,
|
|
310
|
+
path,
|
|
311
|
+
readOnly,
|
|
312
|
+
timeoutMs: resolveTimeoutMs(timeout, options),
|
|
313
|
+
signal: options?.signal,
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
async send(method, path, body, signal) {
|
|
297
317
|
const url = `${this.baseUrl}${this.trailingSlash ? withTrailingSlash(path) : path}`;
|
|
298
|
-
const requestHeaders = {
|
|
299
|
-
|
|
300
|
-
|
|
318
|
+
const requestHeaders = {};
|
|
319
|
+
if (this.editorMode)
|
|
320
|
+
requestHeaders[EDITOR_MODE_HEADER] = this.editorMode;
|
|
301
321
|
let requestBody;
|
|
302
322
|
if (body !== undefined) {
|
|
303
323
|
if (body instanceof FormData) {
|
|
@@ -322,10 +342,13 @@ export class CanopyApiClient {
|
|
|
322
342
|
const init = {
|
|
323
343
|
method,
|
|
324
344
|
headers: requestHeaders,
|
|
345
|
+
signal,
|
|
325
346
|
};
|
|
326
347
|
if (requestBody !== undefined) {
|
|
327
348
|
init.body = requestBody;
|
|
328
349
|
}
|
|
350
|
+
// Hashing the body is async, so the deadline may already have passed: send nothing then.
|
|
351
|
+
signal.throwIfAborted();
|
|
329
352
|
let response = await this.fetchFn(url, init);
|
|
330
353
|
// A body from in front of the API (a proxy or CDN error page) may be empty, not JSON, or
|
|
331
354
|
// not an ApiResponse; every such body becomes an `ok: false` ApiResponse, never a throw.
|
|
@@ -338,13 +361,20 @@ export class CanopyApiClient {
|
|
|
338
361
|
if (delay === undefined)
|
|
339
362
|
break;
|
|
340
363
|
await sleep(delay);
|
|
364
|
+
signal.throwIfAborted();
|
|
341
365
|
response = await this.fetchFn(url, init);
|
|
342
366
|
parsed = await response.json().catch(() => undefined);
|
|
343
367
|
}
|
|
344
|
-
|
|
368
|
+
// The body's status is the signal: `unauthenticatedStatus` may send it under HTTP 419.
|
|
369
|
+
if (response.status === 401 || (isApiResponseBody(parsed) && parsed.status === 401)) {
|
|
345
370
|
this.onUnauthorized?.();
|
|
346
371
|
return { ok: false, status: 401, error: errorFromBody(parsed) ?? 'Unauthorized' };
|
|
347
372
|
}
|
|
373
|
+
if (isApiResponseBody(parsed) &&
|
|
374
|
+
parsed.status === EDITOR_MODE_MISMATCH_STATUS &&
|
|
375
|
+
parsed.code === 'EDITOR_MODE_MISMATCH') {
|
|
376
|
+
this.onEditorModeMismatch?.();
|
|
377
|
+
}
|
|
348
378
|
if (isApiResponseBody(parsed))
|
|
349
379
|
return parsed;
|
|
350
380
|
const converted = {
|
|
@@ -361,13 +391,13 @@ export class CanopyApiClient {
|
|
|
361
391
|
* clears as they finish, so the waits span a few seconds.
|
|
362
392
|
*/
|
|
363
393
|
const THROTTLE_RETRY_DELAYS_MS = [250, 1000, 3000];
|
|
364
|
-
/** The longest `Retry-After`
|
|
394
|
+
/** The longest `Retry-After` honoured; a throttle asking for longer is reported, not resent. */
|
|
365
395
|
const MAX_RETRY_AFTER_MS = 5000;
|
|
366
396
|
/**
|
|
367
397
|
* The wait before resend `attempt`, or undefined when there is to be no resend: the attempts
|
|
368
|
-
* are used up, or `Retry-After` asks for longer than {@link MAX_RETRY_AFTER_MS}.
|
|
369
|
-
* `Retry-After
|
|
370
|
-
* lockstep.
|
|
398
|
+
* are used up, or `Retry-After` asks for longer than {@link MAX_RETRY_AFTER_MS}. The base delay,
|
|
399
|
+
* or `Retry-After` when longer, plus up to half the base again, so requests throttled in one
|
|
400
|
+
* burst do not resend in lockstep.
|
|
371
401
|
*/
|
|
372
402
|
function throttleRetryDelayMs(response, attempt) {
|
|
373
403
|
const base = THROTTLE_RETRY_DELAYS_MS[attempt];
|
|
@@ -377,11 +407,14 @@ function throttleRetryDelayMs(response, attempt) {
|
|
|
377
407
|
// `fetch` option may return a Response-like without headers.
|
|
378
408
|
const header = response.headers?.get('retry-after')?.trim();
|
|
379
409
|
const retryAfter = header ? Number(header) : Number.NaN;
|
|
410
|
+
let wait = base;
|
|
380
411
|
if (Number.isFinite(retryAfter) && retryAfter >= 0) {
|
|
381
412
|
const ms = retryAfter * 1000;
|
|
382
|
-
|
|
413
|
+
if (ms > MAX_RETRY_AFTER_MS)
|
|
414
|
+
return undefined;
|
|
415
|
+
wait = Math.max(ms, base);
|
|
383
416
|
}
|
|
384
|
-
return
|
|
417
|
+
return wait + Math.random() * base * 0.5;
|
|
385
418
|
}
|
|
386
419
|
function sleep(ms) {
|
|
387
420
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
package/dist/api/comments.d.ts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import type { ApiResponse } from './types.js';
|
|
3
3
|
import type { CommentThread, CommentType } from '../comment-store.js';
|
|
4
|
+
import type { UserProfile } from '../auth/types.js';
|
|
5
|
+
import type { LogicalPath } from '../paths/types.js';
|
|
4
6
|
export interface AddCommentBody {
|
|
5
7
|
text: string;
|
|
6
8
|
threadId?: string;
|
|
7
9
|
type: CommentType;
|
|
8
10
|
entryPath?: string;
|
|
9
11
|
canopyPath?: string;
|
|
12
|
+
/** For a new field thread: the key of each list item on `canopyPath` (`CommentThread.itemKeys`). */
|
|
13
|
+
itemKeys?: string[];
|
|
10
14
|
}
|
|
11
15
|
interface ListCommentsResponse {
|
|
12
16
|
threads: CommentThread[];
|
|
17
|
+
/** Profiles of the people who wrote or resolved `threads`, in no order; unknown ids are absent. */
|
|
18
|
+
users: UserProfile[];
|
|
13
19
|
}
|
|
14
20
|
/** Response type for listing comments */
|
|
15
21
|
export type CommentsResponse = ApiResponse<ListCommentsResponse>;
|
|
@@ -48,19 +54,22 @@ export declare const COMMENT_ROUTES: {
|
|
|
48
54
|
text: z.ZodString;
|
|
49
55
|
threadId: z.ZodOptional<z.ZodString>;
|
|
50
56
|
type: z.ZodEnum<["field", "entry", "branch"]>;
|
|
51
|
-
entryPath: z.ZodOptional<z.ZodType<
|
|
57
|
+
entryPath: z.ZodOptional<z.ZodType<LogicalPath, z.ZodTypeDef, LogicalPath>>;
|
|
52
58
|
canopyPath: z.ZodOptional<z.ZodString>;
|
|
59
|
+
itemKeys: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
|
|
53
60
|
}, "strip", z.ZodTypeAny, {
|
|
54
61
|
type: "branch" | "entry" | "field";
|
|
55
62
|
text: string;
|
|
56
|
-
entryPath?:
|
|
63
|
+
entryPath?: LogicalPath | undefined;
|
|
57
64
|
threadId?: string | undefined;
|
|
65
|
+
itemKeys?: string[] | undefined;
|
|
58
66
|
canopyPath?: string | undefined;
|
|
59
67
|
}, {
|
|
60
68
|
type: "branch" | "entry" | "field";
|
|
61
69
|
text: string;
|
|
62
|
-
entryPath?:
|
|
70
|
+
entryPath?: LogicalPath | undefined;
|
|
63
71
|
threadId?: string | undefined;
|
|
72
|
+
itemKeys?: string[] | undefined;
|
|
64
73
|
canopyPath?: string | undefined;
|
|
65
74
|
}>, AddCommentResponse>;
|
|
66
75
|
readonly resolve: import("./route-builder.js").RouteDefinition<z.ZodObject<{
|