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/entry-schema.d.ts
CHANGED
|
@@ -116,6 +116,45 @@ export type RestrictedReference = Simplify<ResolvedReferenceMeta & {
|
|
|
116
116
|
}>;
|
|
117
117
|
/** Assemble a {@link RestrictedReference}. Takes no target data, so none can leak into it. */
|
|
118
118
|
export declare function buildRestrictedReference(meta: ResolvedReferenceMeta, title: string): RestrictedReference;
|
|
119
|
+
/**
|
|
120
|
+
* What a reference resolves to when its id names no readable entry: a deleted target, an id a
|
|
121
|
+
* merge or hand edit left behind, or one naming a collection. It carries the id and nothing else,
|
|
122
|
+
* so a save of the referring entry writes the id back rather than erasing it, and a renderer can
|
|
123
|
+
* say which entry is missing. The production build fails on one (`static/index.ts`,
|
|
124
|
+
* `assertNoDanglingReferences`).
|
|
125
|
+
*/
|
|
126
|
+
export type MissingReference = {
|
|
127
|
+
id: string;
|
|
128
|
+
unavailable: true;
|
|
129
|
+
reason: 'missing';
|
|
130
|
+
};
|
|
131
|
+
/** Assemble a {@link MissingReference}. */
|
|
132
|
+
export declare function buildMissingReference(id: string): MissingReference;
|
|
133
|
+
/**
|
|
134
|
+
* Every reference value that is not the target's data. Narrow on `unavailable`, then on `reason`:
|
|
135
|
+
* only a `'restricted'` one carries a title and URL.
|
|
136
|
+
*/
|
|
137
|
+
export type UnavailableReference = RestrictedReference | MissingReference;
|
|
138
|
+
/**
|
|
139
|
+
* The resolved-target member of a reference field's value type `T`: the object members that
|
|
140
|
+
* are not marked `unavailable`. When `T` has none (`unknown`, or `string | null` for a reference
|
|
141
|
+
* without `resolvedSchema`), any resolved reference.
|
|
142
|
+
*/
|
|
143
|
+
export type ResolvedReferenceOf<T> = unknown extends T ? AnyResolvedReference : [Exclude<Extract<T, object>, {
|
|
144
|
+
unavailable: true;
|
|
145
|
+
}>] extends [never] ? AnyResolvedReference : Exclude<Extract<T, object>, {
|
|
146
|
+
unavailable: true;
|
|
147
|
+
}>;
|
|
148
|
+
type AnyResolvedReference = Record<string, unknown> & ResolvedReferenceMeta;
|
|
149
|
+
/**
|
|
150
|
+
* Whether a reference field's value is its resolved target, narrowing it to that target's type.
|
|
151
|
+
*
|
|
152
|
+
* True for a record carrying a string `id` and not marked `unavailable`. False for everything
|
|
153
|
+
* else a reference can hold: `null` or `undefined` (empty, or in live preview, still resolving),
|
|
154
|
+
* a bare id string (a reference that was not resolved), and a reference marked `unavailable` (a
|
|
155
|
+
* target the reader may not see, or one that no longer exists).
|
|
156
|
+
*/
|
|
157
|
+
export declare function isResolvedReference<T>(value: T): value is T & ResolvedReferenceOf<T>;
|
|
119
158
|
/**
|
|
120
159
|
* Recursively flatten inline groups (type: 'group') out of a field tuple: they contribute
|
|
121
160
|
* no key to the content shape, so their children merge into the parent level and
|
|
@@ -171,9 +210,16 @@ type SelectOptionValue<O> = O extends {
|
|
|
171
210
|
type SelectValue<F extends InferableField> = F extends {
|
|
172
211
|
options: infer O extends readonly unknown[];
|
|
173
212
|
} ? [O[number]] extends [never] ? string : SelectOptionValue<O[number]> : string;
|
|
213
|
+
/**
|
|
214
|
+
* The key a list item or block carries (`ITEM_KEY` in item-keys.ts), spelled out as `ImageValue`
|
|
215
|
+
* is. Every canopy read returns it; optional so data built by hand, such as a write, needn't.
|
|
216
|
+
*/
|
|
217
|
+
type ItemKeyed = {
|
|
218
|
+
_key?: string;
|
|
219
|
+
};
|
|
174
220
|
type ObjectValue<F extends InferableField & {
|
|
175
221
|
fields: readonly InferableField[];
|
|
176
|
-
}> = F['list'] extends true ? Array<InferContentShape<F['fields']
|
|
222
|
+
}> = F['list'] extends true ? Array<InferContentShape<F['fields']> & ItemKeyed> : InferContentShape<F['fields']>;
|
|
177
223
|
/**
|
|
178
224
|
* Distributes over each member of a block-templates union to produce a discriminated union. The
|
|
179
225
|
* bare type parameter `T` is what makes the conditional distribute: `{ name: 'hero'; ... } |
|
|
@@ -185,7 +231,7 @@ type DistributeBlockTemplate<T> = T extends {
|
|
|
185
231
|
} ? {
|
|
186
232
|
template: N & string;
|
|
187
233
|
value: InferContentShape<Extract<Fields, readonly InferableField[]>>;
|
|
188
|
-
} : never;
|
|
234
|
+
} & ItemKeyed : never;
|
|
189
235
|
type BlockValue<F extends InferableField & {
|
|
190
236
|
templates: ReadonlyArray<{
|
|
191
237
|
name: string;
|
|
@@ -228,7 +274,7 @@ type FieldValue<F extends InferableField> = F extends {
|
|
|
228
274
|
resolvedSchema: infer S;
|
|
229
275
|
} ? ScalarValue<F, (InferContentShape<Extract<S, readonly InferableField[]>> & ResolvedReferenceMeta & {
|
|
230
276
|
unavailable?: undefined;
|
|
231
|
-
}) |
|
|
277
|
+
}) | UnavailableReference | null> : F extends {
|
|
232
278
|
type: 'reference';
|
|
233
279
|
} ? ScalarValue<F, string | null> : F extends {
|
|
234
280
|
type: 'image';
|
package/dist/entry-schema.js
CHANGED
|
@@ -54,6 +54,24 @@ export function buildRestrictedReference(meta, title) {
|
|
|
54
54
|
reason: 'restricted',
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
+
/** Assemble a {@link MissingReference}. */
|
|
58
|
+
export function buildMissingReference(id) {
|
|
59
|
+
return { id, unavailable: true, reason: 'missing' };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Whether a reference field's value is its resolved target, narrowing it to that target's type.
|
|
63
|
+
*
|
|
64
|
+
* True for a record carrying a string `id` and not marked `unavailable`. False for everything
|
|
65
|
+
* else a reference can hold: `null` or `undefined` (empty, or in live preview, still resolving),
|
|
66
|
+
* a bare id string (a reference that was not resolved), and a reference marked `unavailable` (a
|
|
67
|
+
* target the reader may not see, or one that no longer exists).
|
|
68
|
+
*/
|
|
69
|
+
export function isResolvedReference(value) {
|
|
70
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
71
|
+
return false;
|
|
72
|
+
const record = value;
|
|
73
|
+
return typeof record.id === 'string' && record[RESTRICTED_REFERENCE_MARKER] !== true;
|
|
74
|
+
}
|
|
57
75
|
/** Define an entry schema's field array with literal inference, without sprinkling `as const`. */
|
|
58
76
|
export const defineEntrySchema = (fields) => fields;
|
|
59
77
|
/**
|
package/dist/git-manager.d.ts
CHANGED
|
@@ -1,7 +1,79 @@
|
|
|
1
|
-
import { type SimpleGitOptions, type StatusResult } from 'simple-git';
|
|
1
|
+
import { type SimpleGit, type SimpleGitOptions, type StatusResult } from 'simple-git';
|
|
2
|
+
import type { CanopyConfig } from './config/index.js';
|
|
2
3
|
import type { OperatingMode } from './operating-mode/index.js';
|
|
4
|
+
import type { WorkerStartupFailure } from './task-queue/worker-status.js';
|
|
5
|
+
import type { ProvisionLog } from './utils/provision-log.js';
|
|
3
6
|
export declare function gitChildEnv(overrides: Record<string, string>): Record<string, string>;
|
|
4
7
|
export declare function gitNetworkChildEnv(): Record<string, string>;
|
|
8
|
+
/**
|
|
9
|
+
* Settings written into every bare `remote.git` CanopyCMS creates: the worker's (prod) and the
|
|
10
|
+
* simulated remote (dev). A push runs `receive-pack` with remote.git's own config and none of the
|
|
11
|
+
* pusher's: git unsets `GIT_CONFIG_PARAMETERS` before spawning it for a local-path push. Unset, a
|
|
12
|
+
* push starts auto-housekeeping there (detached, or inside a Lambda that is frozen mid-run) that
|
|
13
|
+
* repacks while another process clones, and pushes under the default `unpackLimit` (100) leave
|
|
14
|
+
* loose objects that every local clone copies one NFS round trip at a time.
|
|
15
|
+
*
|
|
16
|
+
* Never an `extensions.*` key: once a repo is at `repositoryformatversion` 1, a git that does not
|
|
17
|
+
* know the key refuses it, and Lambda runs git 2.39.
|
|
18
|
+
* @internal Exported for tests.
|
|
19
|
+
*/
|
|
20
|
+
export declare const REMOTE_GIT_CONFIG: ReadonlyArray<readonly [key: string, value: string]>;
|
|
21
|
+
/**
|
|
22
|
+
* Write each of {@link REMOTE_GIT_CONFIG} into the bare repo `gitDir` only where it differs. `git`
|
|
23
|
+
* is how the worker passes the instance it runs every shared repository with.
|
|
24
|
+
*/
|
|
25
|
+
export declare function ensureRemoteGitConfig(gitDir: string, git?: SimpleGit): Promise<void>;
|
|
26
|
+
interface BareRemoteObjectCounts {
|
|
27
|
+
loose: number;
|
|
28
|
+
packs: number;
|
|
29
|
+
}
|
|
30
|
+
export type BareRemoteRepackResult = {
|
|
31
|
+
repacked: false;
|
|
32
|
+
before: BareRemoteObjectCounts;
|
|
33
|
+
} | {
|
|
34
|
+
repacked: true;
|
|
35
|
+
before: BareRemoteObjectCounts;
|
|
36
|
+
after: BareRemoteObjectCounts;
|
|
37
|
+
ms: number;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Repack the bare repo `gitDir` once it holds more than {@link REMOTE_GIT_MAX_LOOSE_OBJECTS}
|
|
41
|
+
* loose objects or {@link REMOTE_GIT_MAX_PACKS} packs, then pack its refs. Under
|
|
42
|
+
* {@link REMOTE_GIT_CONFIG} every push adds a pack, and nothing else ever compacts them.
|
|
43
|
+
*
|
|
44
|
+
* Safe beside concurrent pushes and clones, which is why it is `--cruft` with no expiry:
|
|
45
|
+
* unreachable objects move into a cruft pack rather than being dropped, so a push that read an
|
|
46
|
+
* old object before the repack still finds it, and a repack only deletes packs it listed when it
|
|
47
|
+
* began. A clone that hardlinked a pack keeps that inode when the repack unlinks the remote's
|
|
48
|
+
* name for it, and packs are never modified in place. `repack -d` also removes the loose objects
|
|
49
|
+
* it packed and their emptied fan-out directories. `git` as for `ensureRemoteGitConfig`.
|
|
50
|
+
*/
|
|
51
|
+
export declare function repackBareRemoteIfNeeded(gitDir: string, git?: SimpleGit): Promise<BareRemoteRepackResult>;
|
|
52
|
+
/**
|
|
53
|
+
* simple-git reads a git that exited by signal (exit code null, often with no stderr) as success,
|
|
54
|
+
* so a clone or checkout the OOM killer stopped would pass for complete. Given as `errors` to a
|
|
55
|
+
* GitManager's own instance, to `cloneRepo`'s, and to the worker's ref probes of an existing
|
|
56
|
+
* remote.git (worker/cms-worker.ts); its static helpers and the bare-remote functions do not pass
|
|
57
|
+
* it yet (safeinsights/canopycms#845).
|
|
58
|
+
*/
|
|
59
|
+
export declare function failOnSignalExit(error: Buffer | Error | undefined, result: {
|
|
60
|
+
exitCode: number;
|
|
61
|
+
}): Buffer | Error | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Config every workspace clone writes into its own `.git/config`: the managed
|
|
64
|
+
* marker that ensureRemote's guard checks, and a fallback author for internal
|
|
65
|
+
* commits such as the orphan settings init (ensureAuthor() sets the real one
|
|
66
|
+
* before user-facing commits).
|
|
67
|
+
*/
|
|
68
|
+
export declare function managedWorkspaceConfig(gitBotAuthorName: string, gitBotAuthorEmail: string): Record<string, string>;
|
|
69
|
+
export interface CloneRepoOptions {
|
|
70
|
+
/** The clone's remote name; git's default is `origin`. */
|
|
71
|
+
remoteName?: string;
|
|
72
|
+
/** Leave the working tree unpopulated for the caller to check out. */
|
|
73
|
+
noCheckout?: boolean;
|
|
74
|
+
/** Written into the new repo's own config by the clone (`git clone -c`). */
|
|
75
|
+
config?: Record<string, string>;
|
|
76
|
+
}
|
|
5
77
|
/**
|
|
6
78
|
* Remote-tracking namespace that `syncGit()`'s GitHub fetch lands refs in
|
|
7
79
|
* (`+refs/heads/*:${GITHUB_TRACKING_REF_PREFIX}*`), instead of writing
|
|
@@ -17,8 +89,8 @@ export declare function gitNetworkChildEnv(): Record<string, string>;
|
|
|
17
89
|
* next push no-ops and the editor's commit never arrives while the branch still
|
|
18
90
|
* reports `synced`. Confining `+`/`--prune` to this namespace keeps them off
|
|
19
91
|
* those local heads; `reconcileTrackedBranches()` (worker/git-sync.ts) is what
|
|
20
|
-
*
|
|
21
|
-
*
|
|
92
|
+
* then brings `refs/heads/*` toward GitHub's branches, never moving a head it
|
|
93
|
+
* finds editor work in.
|
|
22
94
|
*/
|
|
23
95
|
export declare const GITHUB_TRACKING_REF_PREFIX = "refs/remotes/github/";
|
|
24
96
|
/**
|
|
@@ -78,7 +150,13 @@ export declare class GitRemoteRefMissingError extends Error {
|
|
|
78
150
|
*/
|
|
79
151
|
export declare class RemoteNotReadyError extends Error {
|
|
80
152
|
readonly expectedRemotePath: string;
|
|
81
|
-
|
|
153
|
+
readonly workerStartupFailure?: WorkerStartupFailure | undefined;
|
|
154
|
+
/**
|
|
155
|
+
* @param workerStartupFailure - The startup failure the worker recorded, if it recorded one;
|
|
156
|
+
* a current one means the worker is not coming without an admin's fix.
|
|
157
|
+
* @param configured - `expectedRemotePath` is a configured local remote, not the auto-detected one.
|
|
158
|
+
*/
|
|
159
|
+
constructor(expectedRemotePath: string, workerStartupFailure?: WorkerStartupFailure | undefined, configured?: boolean);
|
|
82
160
|
}
|
|
83
161
|
export interface ResolveRemoteUrlOptions {
|
|
84
162
|
mode: OperatingMode;
|
|
@@ -93,6 +171,10 @@ export interface ResolveRemoteUrlOptions {
|
|
|
93
171
|
*/
|
|
94
172
|
allowNetworkRemoteInProd?: boolean;
|
|
95
173
|
}
|
|
174
|
+
/** Where prod reads an unset base branch from: the remote a workspace would clone. */
|
|
175
|
+
type BaseBranchRemoteOptions = Pick<CanopyConfig, 'defaultRemoteUrl' | 'sourceRoot' | 'allowNetworkRemoteInProd'> & {
|
|
176
|
+
remoteUrl?: string;
|
|
177
|
+
};
|
|
96
178
|
export interface InitializeWorkspaceOptions {
|
|
97
179
|
workspacePath: string;
|
|
98
180
|
branchName: string;
|
|
@@ -119,6 +201,8 @@ export interface InitializeWorkspaceOptions {
|
|
|
119
201
|
* only; settings workspaces commit by explicit path and don't need it.
|
|
120
202
|
*/
|
|
121
203
|
gitExcludePattern?: string;
|
|
204
|
+
/** Times each provisioning step; no step lines are printed without one. */
|
|
205
|
+
provisionLog?: ProvisionLog;
|
|
122
206
|
}
|
|
123
207
|
export declare class GitManager {
|
|
124
208
|
private readonly git;
|
|
@@ -127,7 +211,13 @@ export declare class GitManager {
|
|
|
127
211
|
private readonly remote;
|
|
128
212
|
private readonly skipIndexMarker;
|
|
129
213
|
constructor(options: GitManagerOptions, gitOptions?: Partial<SimpleGitOptions>);
|
|
130
|
-
|
|
214
|
+
/**
|
|
215
|
+
* Single-branch clone of `baseBranch`, retried once: a clone can lose a race
|
|
216
|
+
* with the worker's repack of `remote.git` deleting a pack it had just
|
|
217
|
+
* listed. Before the retry it clears only what it created itself, so a
|
|
218
|
+
* target that held files beforehand is never touched.
|
|
219
|
+
*/
|
|
220
|
+
static cloneRepo(remoteUrl: string, targetPath: string, baseBranch?: string, options?: CloneRepoOptions): Promise<void>;
|
|
131
221
|
/**
|
|
132
222
|
* Initializes a local bare git repository to simulate a remote for dev mode,
|
|
133
223
|
* seeded with the current state of baseBranch. Idempotent: an existing remote
|
|
@@ -178,10 +268,10 @@ export declare class GitManager {
|
|
|
178
268
|
* Delete `refs/heads/<branch>` from a bare local mirror, if present. A
|
|
179
269
|
* no-op (not an error) when the ref doesn't exist.
|
|
180
270
|
*
|
|
181
|
-
* The
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
271
|
+
* The path that removes a deleted branch's local head at once; the sync
|
|
272
|
+
* loop's reconcileTrackedBranches removes one only after GitHub no longer
|
|
273
|
+
* has the branch. Called by api/branch.ts's deleteBranchHandler: a head
|
|
274
|
+
* left in `remote.git` makes the
|
|
185
275
|
* create -> publish -> squash-merge -> delete -> reuse-the-name cycle reject
|
|
186
276
|
* the reused branch's first publish non-fast-forward against the stale head
|
|
187
277
|
* (`GitManager.push()` pushes the branch to the same name, and a squash-merged old tip is
|
|
@@ -234,7 +324,10 @@ export declare class GitManager {
|
|
|
234
324
|
* @param source - Where `url` came from, for the thrown error message only.
|
|
235
325
|
*/
|
|
236
326
|
private static assertRemoteUrlAllowedInMode;
|
|
237
|
-
/**
|
|
327
|
+
/**
|
|
328
|
+
* The not-ready error for a mode whose remote is auto-detected, carrying the worker's recorded
|
|
329
|
+
* startup failure, or `undefined` for other modes.
|
|
330
|
+
*/
|
|
238
331
|
private static remoteNotReadyError;
|
|
239
332
|
/**
|
|
240
333
|
* Resolves the remote URL for git operations following the priority:
|
|
@@ -252,6 +345,38 @@ export declare class GitManager {
|
|
|
252
345
|
* @returns Remote URL or undefined if no remote is needed
|
|
253
346
|
*/
|
|
254
347
|
static resolveRemoteUrl(options: ResolveRemoteUrlOptions): Promise<string | undefined>;
|
|
348
|
+
/**
|
|
349
|
+
* {@link resolveRemoteUrl} for a workspace about to be cloned, which needs a
|
|
350
|
+
* remote: none resolving is the worker-not-ready error in a mode whose
|
|
351
|
+
* remote the worker creates, and a configuration error otherwise.
|
|
352
|
+
*/
|
|
353
|
+
static resolveCloneRemoteUrl(options: ResolveRemoteUrlOptions): Promise<string>;
|
|
354
|
+
/**
|
|
355
|
+
* Prod's base branch when `defaultBaseBranch` is unset: the branch named by the HEAD of the
|
|
356
|
+
* remote the workspaces clone from, read locally because the Lambda has no internet. That
|
|
357
|
+
* remote is the bare `remote.git` the worker keeps, whose HEAD it sets to the base branch it
|
|
358
|
+
* uses (worker/cms-worker.ts `recordBaseBranchInRemoteHead`), so the two agree.
|
|
359
|
+
*
|
|
360
|
+
* While that remote does not exist yet, whether auto-detected or configured as a local path,
|
|
361
|
+
* `'pending'` resolves `undefined` and `'throw'` rejects with {@link RemoteNotReadyError}. A network remote, or a HEAD that names no branch, throws
|
|
362
|
+
* `BaseBranchUnresolvedError`.
|
|
363
|
+
*/
|
|
364
|
+
static detectBaseBranch(config: BaseBranchRemoteOptions, whenNoRemote: 'pending'): Promise<string | undefined>;
|
|
365
|
+
static detectBaseBranch(config: BaseBranchRemoteOptions, whenNoRemote: 'throw'): Promise<string>;
|
|
366
|
+
/**
|
|
367
|
+
* The base branch a workspace about to be provisioned forks from: the configured one, else
|
|
368
|
+
* dev's git HEAD (resolveBaseBranch), else prod's remote HEAD ({@link detectBaseBranch}), which
|
|
369
|
+
* rejects with RemoteNotReadyError while the worker has not created the remote.
|
|
370
|
+
*/
|
|
371
|
+
static resolveWorkspaceBaseBranch(options: BaseBranchRemoteOptions & {
|
|
372
|
+
mode: OperatingMode;
|
|
373
|
+
baseBranch?: string;
|
|
374
|
+
}): Promise<string>;
|
|
375
|
+
/**
|
|
376
|
+
* {@link cloneRepo} for a workspace, failing with one message that names the
|
|
377
|
+
* workspace, the remote and the base branch, which git's own error mixes.
|
|
378
|
+
*/
|
|
379
|
+
static cloneWorkspace(remoteUrl: string, workspacePath: string, baseBranch: string, options: CloneRepoOptions): Promise<void>;
|
|
255
380
|
/**
|
|
256
381
|
* Check whether a git repository is already initialized at `workspacePath`.
|
|
257
382
|
*
|
|
@@ -288,6 +413,14 @@ export declare class GitManager {
|
|
|
288
413
|
*/
|
|
289
414
|
private invalidateContentIndexes;
|
|
290
415
|
checkoutBranch(branch: string): Promise<void>;
|
|
416
|
+
/**
|
|
417
|
+
* The one checkout of a `--no-checkout` clone, which has the base branch
|
|
418
|
+
* and its remote-tracking ref and nothing else, so neither the branch
|
|
419
|
+
* listing nor the fetch that {@link checkoutBranch} starts with is needed.
|
|
420
|
+
* The missing index makes git populate the whole tree, even for the base
|
|
421
|
+
* branch HEAD already names.
|
|
422
|
+
*/
|
|
423
|
+
checkoutFreshClone(branch: string): Promise<void>;
|
|
291
424
|
private checkoutBranchInner;
|
|
292
425
|
pullBase(): Promise<void>;
|
|
293
426
|
private pullBaseInner;
|
|
@@ -295,10 +428,25 @@ export declare class GitManager {
|
|
|
295
428
|
private pullCurrentBranchInner;
|
|
296
429
|
rebaseOntoBase(): Promise<void>;
|
|
297
430
|
private rebaseOntoBaseInner;
|
|
431
|
+
/** `--sparse` stages a named path outside a sparse clone's cone (branch-sparse.ts). */
|
|
298
432
|
add(files: string | string[]): Promise<void>;
|
|
433
|
+
/**
|
|
434
|
+
* Restrict the working tree to `dirs` in cone mode, which always keeps the root-level files.
|
|
435
|
+
* Runs before a `--no-checkout` clone's one checkout, which invalidates the content caches.
|
|
436
|
+
*/
|
|
437
|
+
setSparseCone(dirs: readonly string[]): Promise<void>;
|
|
299
438
|
/** Stage every working-tree change except canopycms's own state. See {@link stageAllExceptCanopyState}. */
|
|
300
439
|
addAllExceptCanopyState(): Promise<void>;
|
|
301
440
|
commit(message: string): Promise<void>;
|
|
441
|
+
/** The checked-out commit's SHA. */
|
|
442
|
+
headSha(): Promise<string>;
|
|
443
|
+
/**
|
|
444
|
+
* Move the checked-out branch back to `sha`, leaving everything after it unstaged in the
|
|
445
|
+
* working tree (`reset --mixed`). Takes a SHA the caller read itself, never a relative ref:
|
|
446
|
+
* a commit call that committed nothing still resolves, so "the last commit" is not always
|
|
447
|
+
* the caller's.
|
|
448
|
+
*/
|
|
449
|
+
resetKeepingChanges(sha: string): Promise<void>;
|
|
302
450
|
push(branch?: string): Promise<void>;
|
|
303
451
|
/**
|
|
304
452
|
* The checked-out branch's plain name. `rev-parse --abbrev-ref HEAD` prints
|
|
@@ -330,10 +478,23 @@ export declare class GitManager {
|
|
|
330
478
|
* constraint.
|
|
331
479
|
*/
|
|
332
480
|
listChangedPathsSinceBase(): Promise<string[]>;
|
|
481
|
+
/**
|
|
482
|
+
* Repo-relative paths of every file in the base branch's just-fetched tip or in its merge base
|
|
483
|
+
* with HEAD, limited to `under` (a repo-relative directory) when given. The merge base counts
|
|
484
|
+
* because a file the base deleted after the fork is still the base's on a branch not yet
|
|
485
|
+
* rebased. Reads commits, never the working tree, so a sparse clone lists the whole base.
|
|
486
|
+
*/
|
|
487
|
+
listBaseFiles(under?: string): Promise<string[]>;
|
|
488
|
+
/** Fetch the base branch and return its tip, pinned as pullBaseInner explains. */
|
|
489
|
+
private fetchBaseTip;
|
|
490
|
+
/** Repo-relative paths of every file in `rev`'s tree, under `under` when given. */
|
|
491
|
+
private listTreeFiles;
|
|
333
492
|
ensureAuthor(author: {
|
|
334
493
|
name: string;
|
|
335
494
|
email: string;
|
|
336
495
|
}): Promise<void>;
|
|
496
|
+
/** Writes each key into this repo's own config only where it differs. */
|
|
497
|
+
ensureLocalConfig(values: Record<string, string>): Promise<void>;
|
|
337
498
|
ensureRemote(remoteUrl: string): Promise<void>;
|
|
338
499
|
hasUncommittedChanges(): Promise<boolean>;
|
|
339
500
|
getUncommittedFiles(): Promise<string[]>;
|
|
@@ -399,3 +560,4 @@ export declare class GitManager {
|
|
|
399
560
|
*/
|
|
400
561
|
private isEmptyInitialBranch;
|
|
401
562
|
}
|
|
563
|
+
export {};
|