canopycms 0.0.67-int.90 → 0.0.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -3
- package/dist/ai/generate.js +1 -27
- package/dist/ai/handler.d.ts +0 -4
- package/dist/ai/handler.js +0 -11
- package/dist/ai/index.d.ts +1 -8
- package/dist/ai/index.js +1 -8
- package/dist/ai/json-to-markdown.js +15 -58
- package/dist/ai/resolve-branch.d.ts +2 -7
- package/dist/ai/resolve-branch.js +2 -8
- package/dist/ai/strip-mdx.d.ts +5 -13
- package/dist/ai/strip-mdx.js +5 -17
- package/dist/ai/to-plain-text.d.ts +10 -28
- package/dist/ai/to-plain-text.js +10 -28
- package/dist/ai/transform-components.d.ts +2 -4
- package/dist/ai/transform-components.js +8 -19
- package/dist/ai/types.d.ts +5 -10
- package/dist/api/admin-branch-health.d.ts +4 -12
- package/dist/api/admin-branch-health.js +26 -66
- package/dist/api/admin.d.ts +4 -12
- package/dist/api/admin.js +10 -26
- package/dist/api/assets.d.ts +0 -25
- package/dist/api/assets.js +50 -91
- package/dist/api/branch-merge.d.ts +1 -1
- package/dist/api/branch-merge.js +0 -2
- package/dist/api/branch-review.d.ts +0 -8
- package/dist/api/branch-review.js +0 -13
- package/dist/api/branch-status.d.ts +0 -3
- package/dist/api/branch-status.js +8 -33
- package/dist/api/branch-withdraw.d.ts +0 -1
- package/dist/api/branch-withdraw.js +6 -9
- package/dist/api/branch.d.ts +7 -12
- package/dist/api/branch.js +7 -44
- package/dist/api/client.d.ts +71 -224
- package/dist/api/client.js +82 -233
- package/dist/api/comments.d.ts +2 -4
- package/dist/api/comments.js +0 -17
- package/dist/api/content.d.ts +0 -6
- package/dist/api/content.js +66 -142
- package/dist/api/entries-constants.d.ts +5 -9
- package/dist/api/entries-constants.js +5 -9
- package/dist/api/entries.d.ts +8 -13
- package/dist/api/entries.js +20 -51
- package/dist/api/github-sync.d.ts +2 -4
- package/dist/api/github-sync.js +4 -8
- package/dist/api/groups.d.ts +3 -0
- package/dist/api/groups.js +8 -21
- package/dist/api/guards.d.ts +4 -16
- package/dist/api/guards.js +3 -22
- package/dist/api/index.d.ts +4 -4
- package/dist/api/permissions.d.ts +2 -0
- package/dist/api/permissions.js +18 -40
- package/dist/api/reference-options.d.ts +0 -1
- package/dist/api/reference-options.js +3 -11
- package/dist/api/request-body-hash.d.ts +12 -23
- package/dist/api/request-body-hash.js +12 -23
- package/dist/api/resolve-references.d.ts +0 -1
- package/dist/api/resolve-references.js +13 -28
- package/dist/api/route-builder.d.ts +3 -7
- package/dist/api/route-builder.js +1 -1
- package/dist/api/routes.d.ts +12 -0
- package/dist/api/routes.js +47 -0
- package/dist/api/schema.d.ts +23 -33
- package/dist/api/schema.js +20 -74
- package/dist/api/settings-helpers.js +4 -5
- package/dist/api/types.d.ts +0 -5
- package/dist/api/user.js +0 -5
- package/dist/api/validators.d.ts +14 -52
- package/dist/api/validators.js +14 -52
- package/dist/assets/asset-prefixes.d.ts +4 -8
- package/dist/assets/asset-prefixes.js +4 -8
- package/dist/assets/asset-src.d.ts +5 -22
- package/dist/assets/asset-src.js +5 -21
- package/dist/assets/factory.d.ts +1 -2
- package/dist/assets/factory.js +1 -2
- package/dist/assets/finalize.d.ts +3 -1
- package/dist/assets/finalize.js +3 -1
- package/dist/assets/index.d.ts +3 -3
- package/dist/assets/index.js +1 -1
- package/dist/assets/keys.d.ts +5 -3
- package/dist/assets/keys.js +6 -3
- package/dist/assets/pipeline.d.ts +3 -2
- package/dist/assets/pipeline.js +22 -56
- package/dist/assets/sharp-loader.d.ts +2 -10
- package/dist/assets/sharp-loader.js +2 -10
- package/dist/assets/store-local.d.ts +1 -2
- package/dist/assets/store-local.js +1 -2
- package/dist/assets/store-s3.d.ts +3 -4
- package/dist/assets/svg-sanitizer.d.ts +6 -14
- package/dist/assets/svg-sanitizer.js +6 -14
- package/dist/assets/transform-directives.d.ts +3 -4
- package/dist/assets/transform-directives.js +1 -1
- package/dist/assets/transform.d.ts +19 -30
- package/dist/assets/transform.js +18 -31
- package/dist/auth/cache.d.ts +2 -3
- package/dist/auth/cache.js +2 -3
- package/dist/auth/caching-auth-plugin.d.ts +11 -22
- package/dist/auth/caching-auth-plugin.js +12 -14
- package/dist/auth/context-helpers.d.ts +6 -20
- package/dist/auth/context-helpers.js +5 -17
- package/dist/auth/file-based-auth-cache.d.ts +10 -21
- package/dist/auth/file-based-auth-cache.js +23 -51
- package/dist/auth/plugin.d.ts +29 -61
- package/dist/auth/plugin.js +9 -13
- package/dist/auth/types.d.ts +11 -20
- package/dist/authorization/branch.d.ts +30 -49
- package/dist/authorization/branch.js +16 -42
- package/dist/authorization/content.d.ts +11 -40
- package/dist/authorization/content.js +13 -45
- package/dist/authorization/groups/index.d.ts +0 -3
- package/dist/authorization/groups/index.js +0 -3
- package/dist/authorization/groups/loader.d.ts +14 -28
- package/dist/authorization/groups/loader.js +14 -38
- package/dist/authorization/groups/schema.d.ts +0 -6
- package/dist/authorization/groups/schema.js +4 -7
- package/dist/authorization/helpers.d.ts +9 -28
- package/dist/authorization/helpers.js +9 -28
- package/dist/authorization/index.d.ts +3 -25
- package/dist/authorization/index.js +3 -35
- package/dist/authorization/path.d.ts +6 -13
- package/dist/authorization/path.js +8 -25
- package/dist/authorization/permissions/index.d.ts +0 -3
- package/dist/authorization/permissions/index.js +0 -3
- package/dist/authorization/permissions/loader.d.ts +14 -27
- package/dist/authorization/permissions/loader.js +14 -32
- package/dist/authorization/permissions/schema.d.ts +1 -6
- package/dist/authorization/permissions/schema.js +6 -13
- package/dist/authorization/protected-branch.d.ts +36 -65
- package/dist/authorization/protected-branch.js +29 -41
- package/dist/authorization/settings-file-store.d.ts +38 -81
- package/dist/authorization/settings-file-store.js +38 -79
- package/dist/authorization/types.d.ts +4 -26
- package/dist/authorization/types.js +0 -6
- package/dist/authorization/validation.d.ts +1 -23
- package/dist/authorization/validation.js +1 -24
- package/dist/branch-health.d.ts +39 -67
- package/dist/branch-health.js +27 -43
- package/dist/branch-metadata-file.d.ts +16 -32
- package/dist/branch-metadata-file.js +13 -26
- package/dist/branch-metadata.d.ts +49 -80
- package/dist/branch-metadata.js +57 -87
- package/dist/branch-registry.d.ts +26 -64
- package/dist/branch-registry.js +44 -93
- package/dist/branch-schema-cache.d.ts +34 -124
- package/dist/branch-schema-cache.js +49 -155
- package/dist/branch-workspace.d.ts +4 -4
- package/dist/branch-workspace.js +15 -19
- package/dist/build/generate-ai-content.d.ts +1 -0
- package/dist/build/generate-ai-content.js +12 -25
- package/dist/build-canopy.d.ts +17 -27
- package/dist/build-canopy.js +16 -23
- package/dist/build-mode.d.ts +25 -27
- package/dist/build-mode.js +25 -29
- package/dist/cli/cli.d.ts +15 -26
- package/dist/cli/cli.js +601 -978
- package/dist/cli/generate-ai-content.js +351 -628
- package/dist/cli/github-app-manifest.d.ts +84 -0
- package/dist/cli/github-app-manifest.js +161 -0
- package/dist/cli/init-github-app.d.ts +110 -444
- package/dist/cli/init-github-app.js +236 -773
- package/dist/cli/init.js +39 -80
- package/dist/cli/migrate.d.ts +13 -10
- package/dist/cli/migrate.js +22 -30
- package/dist/cli/project-detect.d.ts +17 -31
- package/dist/cli/project-detect.js +31 -42
- package/dist/cli/project-root.d.ts +4 -11
- package/dist/cli/project-root.js +4 -11
- package/dist/cli/prompt.d.ts +10 -0
- package/dist/cli/prompt.js +67 -0
- package/dist/cli/sync.d.ts +0 -8
- package/dist/cli/sync.js +8 -28
- package/dist/cli/template-files/middleware.ts.template +15 -29
- package/dist/cli/templates.d.ts +2 -12
- package/dist/cli/templates.js +4 -4
- package/dist/client.d.ts +1 -1
- package/dist/comment-store.d.ts +32 -53
- package/dist/comment-store.js +32 -52
- package/dist/config/flatten.d.ts +0 -3
- package/dist/config/flatten.js +2 -12
- package/dist/config/helpers.js +2 -2
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.js +1 -4
- package/dist/config/schemas/collection.d.ts +0 -8
- package/dist/config/schemas/collection.js +0 -10
- package/dist/config/schemas/config.d.ts +6 -78
- package/dist/config/schemas/config.js +38 -54
- package/dist/config/schemas/field.d.ts +2 -242
- package/dist/config/schemas/field.js +9 -20
- package/dist/config/schemas/media.js +1 -1
- package/dist/config/schemas/permissions.js +0 -2
- package/dist/config/schemas/url.d.ts +5 -6
- package/dist/config/schemas/url.js +5 -6
- package/dist/config/types.d.ts +45 -33
- package/dist/config/types.js +0 -1
- package/dist/config.d.ts +1 -8
- package/dist/config.js +1 -9
- package/dist/content-id-index.d.ts +76 -188
- package/dist/content-id-index.js +79 -230
- package/dist/content-index-generation.d.ts +27 -48
- package/dist/content-index-generation.js +35 -84
- package/dist/content-index-registry.d.ts +15 -24
- package/dist/content-index-registry.js +5 -9
- package/dist/content-listing.d.ts +64 -107
- package/dist/content-listing.js +68 -118
- package/dist/content-reader.d.ts +20 -29
- package/dist/content-reader.js +10 -18
- package/dist/content-store.d.ts +210 -336
- package/dist/content-store.js +413 -657
- package/dist/content-tree.d.ts +44 -86
- package/dist/content-tree.js +26 -54
- package/dist/context.d.ts +67 -94
- package/dist/context.js +53 -72
- package/dist/dev-content-watcher.d.ts +18 -18
- package/dist/dev-content-watcher.js +41 -44
- package/dist/editor/BranchManager.d.ts +3 -6
- package/dist/editor/BranchManager.js +24 -44
- package/dist/editor/CanopyEditor.js +5 -2
- package/dist/editor/CommentsPanel.js +0 -2
- package/dist/editor/Editor.js +19 -76
- package/dist/editor/EditorAuthGate.d.ts +27 -0
- package/dist/editor/EditorAuthGate.js +140 -0
- package/dist/editor/EntryNavigator.js +0 -20
- package/dist/editor/FormRenderer.d.ts +1 -2
- package/dist/editor/FormRenderer.js +8 -23
- package/dist/editor/admin/SystemHealthPanel.js +20 -37
- package/dist/editor/admin/useSystemHealth.d.ts +2 -3
- package/dist/editor/admin/useSystemHealth.js +10 -12
- package/dist/editor/client-reference-resolver.d.ts +2 -5
- package/dist/editor/client-reference-resolver.js +2 -19
- package/dist/editor/comments/BranchComments.js +0 -4
- package/dist/editor/comments/EntryComments.js +0 -4
- package/dist/editor/comments/FieldWrapper.js +0 -4
- package/dist/editor/comments/InlineCommentThread.js +0 -2
- package/dist/editor/comments/ThreadCarousel.d.ts +0 -58
- package/dist/editor/comments/ThreadCarousel.js +0 -12
- package/dist/editor/components/EditorFooter.d.ts +0 -8
- package/dist/editor/components/EditorFooter.js +0 -5
- package/dist/editor/components/EditorHeader.d.ts +0 -31
- package/dist/editor/components/EditorHeader.js +21 -71
- package/dist/editor/components/EditorSidebar.d.ts +0 -19
- package/dist/editor/components/EditorSidebar.js +0 -16
- package/dist/editor/components/EntryCreateModal.d.ts +4 -4
- package/dist/editor/components/EntryCreateModal.js +7 -22
- package/dist/editor/components/RenameEntryModal.js +0 -4
- package/dist/editor/components/UserBadge.js +0 -10
- package/dist/editor/components/index.js +0 -2
- package/dist/editor/context/ApiClientContext.d.ts +8 -7
- package/dist/editor/context/ApiClientContext.js +39 -11
- package/dist/editor/context/AssetContext.d.ts +7 -17
- package/dist/editor/context/AssetContext.js +7 -17
- package/dist/editor/context/EditorIdentityContext.d.ts +13 -0
- package/dist/editor/context/EditorIdentityContext.js +7 -0
- package/dist/editor/context/EditorStateContext.d.ts +10 -41
- package/dist/editor/context/EditorStateContext.js +7 -23
- package/dist/editor/context/SWRProvider.d.ts +3 -6
- package/dist/editor/context/index.d.ts +1 -20
- package/dist/editor/context/index.js +1 -20
- package/dist/editor/editor-utils.d.ts +8 -47
- package/dist/editor/editor-utils.js +19 -72
- package/dist/editor/fields/BlockField.d.ts +2 -2
- package/dist/editor/fields/BlockField.js +1 -2
- package/dist/editor/fields/CodeField.d.ts +0 -1
- package/dist/editor/fields/CodeField.js +0 -1
- package/dist/editor/fields/DateTimeField.d.ts +15 -22
- package/dist/editor/fields/DateTimeField.js +17 -26
- package/dist/editor/fields/ImageField.d.ts +2 -2
- package/dist/editor/fields/ImageField.js +8 -14
- package/dist/editor/fields/InlineGroupField.d.ts +0 -1
- package/dist/editor/fields/InlineGroupField.js +0 -1
- package/dist/editor/fields/MarkdownField.d.ts +0 -1
- package/dist/editor/fields/MarkdownField.js +6 -11
- package/dist/editor/fields/MdxImageDialog.d.ts +1 -1
- package/dist/editor/fields/MdxImageDialog.js +0 -1
- package/dist/editor/fields/NumberField.d.ts +9 -19
- package/dist/editor/fields/NumberField.js +11 -22
- package/dist/editor/fields/NumberListField.d.ts +7 -10
- package/dist/editor/fields/NumberListField.js +7 -10
- package/dist/editor/fields/ObjectField.d.ts +5 -8
- package/dist/editor/fields/ObjectField.js +0 -1
- package/dist/editor/fields/ReferenceField.d.ts +1 -1
- package/dist/editor/fields/ReferenceField.js +11 -16
- package/dist/editor/fields/SelectField.d.ts +2 -2
- package/dist/editor/fields/SelectField.js +0 -1
- package/dist/editor/fields/StringListField.d.ts +0 -4
- package/dist/editor/fields/StringListField.js +4 -9
- package/dist/editor/fields/TextField.d.ts +0 -1
- package/dist/editor/fields/TextField.js +0 -1
- package/dist/editor/fields/ToggleField.d.ts +0 -1
- package/dist/editor/fields/ToggleField.js +0 -1
- package/dist/editor/fields/entry-link/EntryLinkContext.js +2 -4
- package/dist/editor/fields/entry-link/InsertEntryLink.d.ts +0 -3
- package/dist/editor/fields/entry-link/InsertEntryLink.js +0 -4
- package/dist/editor/group-manager/ExternalGroupsTab.d.ts +0 -3
- package/dist/editor/group-manager/ExternalGroupsTab.js +0 -1
- package/dist/editor/group-manager/GroupCard.d.ts +0 -3
- package/dist/editor/group-manager/GroupForm.d.ts +0 -3
- package/dist/editor/group-manager/InternalGroupsTab.d.ts +0 -3
- package/dist/editor/group-manager/InternalGroupsTab.js +0 -2
- package/dist/editor/group-manager/MemberList.d.ts +0 -3
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.d.ts +0 -3
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.js +0 -3
- package/dist/editor/group-manager/hooks/useGroupState.d.ts +0 -3
- package/dist/editor/group-manager/hooks/useGroupState.js +0 -5
- package/dist/editor/group-manager/hooks/useUserSearch.d.ts +0 -3
- package/dist/editor/group-manager/hooks/useUserSearch.js +0 -3
- package/dist/editor/group-manager/index.d.ts +0 -6
- package/dist/editor/group-manager/index.js +0 -10
- package/dist/editor/group-manager/types.d.ts +2 -5
- package/dist/editor/group-manager/types.js +0 -3
- package/dist/editor/hooks/index.d.ts +6 -11
- package/dist/editor/hooks/index.js +6 -12
- package/dist/editor/hooks/useBranchActions.d.ts +0 -14
- package/dist/editor/hooks/useBranchActions.js +0 -22
- package/dist/editor/hooks/useBranchManager.d.ts +2 -48
- package/dist/editor/hooks/useBranchManager.js +4 -64
- package/dist/editor/hooks/useBranchesData.d.ts +7 -6
- package/dist/editor/hooks/useBranchesData.js +7 -6
- package/dist/editor/hooks/useCommentSystem.d.ts +0 -49
- package/dist/editor/hooks/useCommentSystem.js +1 -36
- package/dist/editor/hooks/useDraftManager.d.ts +2 -35
- package/dist/editor/hooks/useDraftManager.js +23 -64
- package/dist/editor/hooks/useEditorLayout.d.ts +0 -20
- package/dist/editor/hooks/useEditorLayout.js +0 -23
- package/dist/editor/hooks/useEntriesData.d.ts +1 -0
- package/dist/editor/hooks/useEntriesData.js +2 -3
- package/dist/editor/hooks/useEntryLinkResolution.d.ts +2 -2
- package/dist/editor/hooks/useEntryLinkResolution.js +2 -2
- package/dist/editor/hooks/useEntryManager.d.ts +2 -27
- package/dist/editor/hooks/useEntryManager.js +29 -78
- package/dist/editor/hooks/useGroupManager.d.ts +0 -21
- package/dist/editor/hooks/useGroupManager.js +0 -21
- package/dist/editor/hooks/usePermissionManager.d.ts +0 -20
- package/dist/editor/hooks/usePermissionManager.js +0 -20
- package/dist/editor/hooks/useReferenceResolution.d.ts +2 -33
- package/dist/editor/hooks/useReferenceResolution.js +1 -48
- package/dist/editor/hooks/useSchemaManager.d.ts +8 -27
- package/dist/editor/hooks/useSchemaManager.js +0 -19
- package/dist/editor/hooks/useUserContext.d.ts +2 -9
- package/dist/editor/hooks/useUserContext.js +10 -10
- package/dist/editor/hooks/useUserMetadata.d.ts +0 -2
- package/dist/editor/hooks/useUserMetadata.js +0 -3
- package/dist/editor/media/AssetCard.d.ts +0 -1
- package/dist/editor/media/AssetCard.js +1 -2
- package/dist/editor/media/CropStep.d.ts +0 -1
- package/dist/editor/media/CropStep.js +0 -1
- package/dist/editor/media/MediaLibrary.d.ts +1 -2
- package/dist/editor/media/MediaLibrary.js +1 -2
- package/dist/editor/media/MediaLibraryBody.d.ts +0 -1
- package/dist/editor/media/MediaLibraryBody.js +0 -1
- package/dist/editor/media/crop-math.d.ts +1 -1
- package/dist/editor/media/crop-math.js +1 -1
- package/dist/editor/permission-manager/GroupSelector.d.ts +0 -3
- package/dist/editor/permission-manager/PermissionEditor.d.ts +0 -4
- package/dist/editor/permission-manager/PermissionEditor.js +0 -1
- package/dist/editor/permission-manager/PermissionLevelBadge.d.ts +0 -7
- package/dist/editor/permission-manager/PermissionLevelBadge.js +0 -4
- package/dist/editor/permission-manager/PermissionTree.d.ts +0 -4
- package/dist/editor/permission-manager/UserSelector.d.ts +0 -3
- package/dist/editor/permission-manager/constants.d.ts +0 -3
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts +0 -3
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js +0 -10
- package/dist/editor/permission-manager/hooks/usePermissionTree.d.ts +0 -14
- package/dist/editor/permission-manager/hooks/usePermissionTree.js +0 -11
- package/dist/editor/permission-manager/index.d.ts +0 -7
- package/dist/editor/permission-manager/index.js +0 -16
- package/dist/editor/permission-manager/types.d.ts +2 -12
- package/dist/editor/permission-manager/types.js +0 -3
- package/dist/editor/permission-manager/utils.d.ts +0 -28
- package/dist/editor/permission-manager/utils.js +9 -23
- package/dist/editor/preview-bridge.d.ts +5 -1
- package/dist/editor/preview-bridge.js +4 -4
- package/dist/editor/schema-editor/CollectionEditor.d.ts +0 -5
- package/dist/editor/schema-editor/CollectionEditor.js +9 -31
- package/dist/editor/schema-editor/EntryTypeEditor.d.ts +0 -6
- package/dist/editor/schema-editor/EntryTypeEditor.js +3 -24
- package/dist/editor/schema-editor/index.d.ts +0 -7
- package/dist/editor/schema-editor/index.js +0 -7
- package/dist/editor/utils/env.d.ts +3 -18
- package/dist/editor/utils/env.js +6 -25
- package/dist/entry-link-resolver.d.ts +13 -35
- package/dist/entry-link-resolver.js +20 -53
- package/dist/entry-schema-registry.d.ts +20 -60
- package/dist/entry-schema-registry.js +20 -69
- package/dist/entry-schema.d.ts +118 -223
- package/dist/entry-schema.js +46 -91
- package/dist/git-manager.d.ts +101 -200
- package/dist/git-manager.js +211 -384
- package/dist/github-service.d.ts +34 -75
- package/dist/github-service.js +37 -91
- package/dist/http/handler.d.ts +6 -37
- package/dist/http/handler.js +65 -120
- package/dist/http/router.d.ts +15 -32
- package/dist/http/router.js +34 -99
- package/dist/http/types.d.ts +15 -40
- package/dist/http/types.js +3 -7
- package/dist/id.d.ts +4 -10
- package/dist/id.js +4 -10
- package/dist/index.js +6 -9
- package/dist/operating-mode/client-safe-strategy.d.ts +7 -14
- package/dist/operating-mode/client-safe-strategy.js +8 -28
- package/dist/operating-mode/client-unsafe-strategy.d.ts +6 -16
- package/dist/operating-mode/client-unsafe-strategy.js +9 -34
- package/dist/operating-mode/client.d.ts +3 -10
- package/dist/operating-mode/client.js +3 -8
- package/dist/operating-mode/deployment-name-fixtures.d.ts +14 -18
- package/dist/operating-mode/deployment-name-fixtures.js +14 -18
- package/dist/operating-mode/deployment-name.d.ts +19 -29
- package/dist/operating-mode/deployment-name.js +29 -47
- package/dist/operating-mode/index.d.ts +4 -25
- package/dist/operating-mode/index.js +9 -31
- package/dist/operating-mode/mode-env.d.ts +32 -54
- package/dist/operating-mode/mode-env.js +36 -58
- package/dist/operating-mode/types.d.ts +24 -72
- package/dist/operating-mode/types.js +1 -7
- package/dist/paths/branch-name.d.ts +30 -40
- package/dist/paths/branch-name.js +30 -40
- package/dist/paths/branch.d.ts +4 -18
- package/dist/paths/branch.js +6 -22
- package/dist/paths/index.d.ts +2 -13
- package/dist/paths/index.js +3 -23
- package/dist/paths/normalize-server.d.ts +3 -15
- package/dist/paths/normalize-server.js +3 -15
- package/dist/paths/normalize.d.ts +13 -33
- package/dist/paths/normalize.js +13 -33
- package/dist/paths/resolve.d.ts +4 -17
- package/dist/paths/resolve.js +4 -22
- package/dist/paths/types.d.ts +12 -34
- package/dist/paths/types.js +5 -7
- package/dist/paths/validation.d.ts +22 -119
- package/dist/paths/validation.js +30 -148
- package/dist/reference-resolver.d.ts +0 -13
- package/dist/reference-resolver.js +0 -18
- package/dist/resolve-canopy-user.d.ts +16 -18
- package/dist/resolve-canopy-user.js +17 -26
- package/dist/resource-generation.d.ts +16 -25
- package/dist/resource-generation.js +34 -97
- package/dist/schema/meta-loader.d.ts +2 -14
- package/dist/schema/meta-loader.js +15 -64
- package/dist/schema/resolver.d.ts +1 -4
- package/dist/schema/resolver.js +1 -6
- package/dist/schema/schema-store-types.d.ts +0 -12
- package/dist/schema/schema-store.d.ts +61 -138
- package/dist/schema/schema-store.js +85 -282
- package/dist/schema/types.d.ts +0 -4
- package/dist/server.d.ts +62 -93
- package/dist/server.js +63 -94
- package/dist/services.d.ts +23 -47
- package/dist/services.js +55 -98
- package/dist/settings-workspace.d.ts +17 -30
- package/dist/settings-workspace.js +51 -81
- package/dist/static/index.d.ts +26 -52
- package/dist/static/index.js +33 -67
- package/dist/{worker/task-queue.d.ts → task-queue/cms-task-queue.d.ts} +7 -9
- package/dist/task-queue/cms-task-queue.js +13 -0
- package/dist/task-queue/task-queue-config.d.ts +3 -0
- package/dist/{worker → task-queue}/task-queue-config.js +1 -6
- package/dist/task-queue/task-queue.d.ts +16 -22
- package/dist/task-queue/task-queue.js +20 -44
- package/dist/task-queue/types.d.ts +0 -1
- package/dist/task-queue/worker-status.d.ts +35 -0
- package/dist/task-queue/worker-status.js +40 -0
- package/dist/types.d.ts +40 -51
- package/dist/url-collision.d.ts +26 -40
- package/dist/url-collision.js +47 -63
- package/dist/url-exclusivity-fixtures.d.ts +15 -20
- package/dist/url-exclusivity-fixtures.js +14 -19
- package/dist/url-path-resolver.d.ts +8 -16
- package/dist/url-path-resolver.js +19 -29
- package/dist/user.d.ts +8 -21
- package/dist/user.js +10 -19
- package/dist/utils/async-mutex.js +4 -6
- package/dist/utils/atomic-write.d.ts +2 -11
- package/dist/utils/atomic-write.js +2 -11
- package/dist/utils/body-field.d.ts +8 -15
- package/dist/utils/body-field.js +8 -15
- package/dist/utils/content-serialize.d.ts +18 -24
- package/dist/utils/content-serialize.js +109 -160
- package/dist/utils/content-write-lock.d.ts +51 -106
- package/dist/utils/content-write-lock.js +66 -111
- package/dist/utils/debug.d.ts +7 -23
- package/dist/utils/debug.js +7 -23
- package/dist/utils/entry-url.d.ts +11 -23
- package/dist/utils/entry-url.js +11 -26
- package/dist/utils/error.d.ts +25 -90
- package/dist/utils/error.js +60 -147
- package/dist/utils/flatten-group-fields.d.ts +5 -7
- package/dist/utils/flatten-group-fields.js +5 -7
- package/dist/utils/format.d.ts +1 -5
- package/dist/utils/format.js +1 -5
- package/dist/utils/fs.d.ts +3 -4
- package/dist/utils/fs.js +3 -4
- package/dist/utils/git.d.ts +52 -83
- package/dist/utils/git.js +79 -125
- package/dist/utils/logger.d.ts +35 -50
- package/dist/utils/logger.js +35 -52
- package/dist/utils/provisioning-lock.d.ts +23 -35
- package/dist/utils/provisioning-lock.js +49 -69
- package/dist/utils/sanitize-href.d.ts +5 -10
- package/dist/utils/sanitize-href.js +8 -18
- package/dist/utils/title-field.d.ts +17 -20
- package/dist/utils/title-field.js +18 -27
- package/dist/utils/typed-filename.d.ts +20 -48
- package/dist/utils/typed-filename.js +25 -61
- package/dist/utils/url-prefix.d.ts +3 -3
- package/dist/utils/url-prefix.js +3 -3
- package/dist/validation/block-structural-keys.d.ts +16 -31
- package/dist/validation/block-structural-keys.js +19 -29
- package/dist/validation/deletion-checker.d.ts +0 -34
- package/dist/validation/deletion-checker.js +1 -43
- package/dist/validation/entry-link-validator.d.ts +6 -13
- package/dist/validation/entry-link-validator.js +4 -13
- package/dist/validation/entry-type-reference-validator.d.ts +13 -18
- package/dist/validation/entry-type-reference-validator.js +13 -18
- package/dist/validation/entry-validator.d.ts +13 -25
- package/dist/validation/entry-validator.js +15 -32
- package/dist/validation/field-traversal.d.ts +3 -30
- package/dist/validation/field-traversal.js +1 -32
- package/dist/validation/reference-validator.d.ts +5 -24
- package/dist/validation/reference-validator.js +5 -30
- package/dist/worker/cms-worker.d.ts +172 -232
- package/dist/worker/cms-worker.js +241 -333
- package/dist/worker/git-sync.d.ts +32 -133
- package/dist/worker/git-sync.js +129 -191
- package/dist/worker/github-auth.d.ts +13 -19
- package/dist/worker/github-auth.js +13 -19
- package/dist/worker/history-rewrite.d.ts +53 -66
- package/dist/worker/history-rewrite.js +54 -60
- package/dist/worker/log.d.ts +24 -41
- package/dist/worker/log.js +25 -42
- package/dist/worker/rebase.d.ts +20 -110
- package/dist/worker/rebase.js +279 -354
- package/dist/worker/task-runner.d.ts +32 -66
- package/dist/worker/task-runner.js +126 -162
- package/dist/worker/worker-context.d.ts +41 -81
- package/package.json +4 -4
- package/dist/cli/template-files/middleware-clerk.ts.template +0 -37
- package/dist/worker/task-queue-config.d.ts +0 -8
- package/dist/worker/task-queue.js +0 -19
- package/dist/worker/worker-status.d.ts +0 -47
- package/dist/worker/worker-status.js +0 -52
package/dist/git-manager.d.ts
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { type SimpleGitOptions, type StatusResult } from 'simple-git';
|
|
2
2
|
import type { OperatingMode } from './operating-mode/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* Exported for GitManager's own use (see `this.git.env(...)` above),
|
|
5
|
-
* the worker's push-rejection-classified GitHub calls
|
|
6
|
-
* (`pushBranchToGitHub` in worker/task-runner.ts, `syncGit`'s
|
|
7
|
-
* fetch/`pushSettingsBranches` instance in worker/git-sync.ts),
|
|
8
|
-
* and tests.
|
|
9
|
-
*/
|
|
10
3
|
export declare function gitChildEnv(overrides: Record<string, string>): Record<string, string>;
|
|
11
4
|
export declare function gitNetworkChildEnv(): Record<string, string>;
|
|
12
5
|
/**
|
|
@@ -14,31 +7,18 @@ export declare function gitNetworkChildEnv(): Record<string, string>;
|
|
|
14
7
|
* (`+refs/heads/*:${GITHUB_TRACKING_REF_PREFIX}*`), instead of writing
|
|
15
8
|
* directly into `refs/heads/*`.
|
|
16
9
|
*
|
|
17
|
-
* `remote.git`'s `refs/heads/*` is NOT a throwaway mirror: it
|
|
18
|
-
* deployment's local origin. `GitManager.push()` writes editor work into it
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* reaches GitHub even though the branch reports `synced`.
|
|
30
|
-
*
|
|
31
|
-
* Fetching into this remote-tracking namespace instead makes `--prune`/`+`
|
|
32
|
-
* safe again -- they now only ever affect GitHub's-view-of-the-world refs,
|
|
33
|
-
* never the local heads other code depends on. `reconcileTrackedBranches()`
|
|
34
|
-
* (worker/git-sync.ts) is what subsequently, and non-destructively, brings
|
|
35
|
-
* `refs/heads/*` toward what's tracked here.
|
|
36
|
-
*
|
|
37
|
-
* Lives here (not the worker, where this constant originated) so
|
|
38
|
-
* `GitManager.bareRemoteHasBranch` -- which must recognize this namespace
|
|
39
|
-
* too, since it's what a branch pushed by another CanopyCMS deployment (or
|
|
40
|
-
* pushed directly to GitHub) shows up in before/without ever gaining a local
|
|
41
|
-
* head -- doesn't need a worker/ -> git-manager.ts back-reference.
|
|
10
|
+
* `remote.git`'s `refs/heads/*` is NOT a throwaway mirror: it is the
|
|
11
|
+
* deployment's local origin. `GitManager.push()` writes editor work into it,
|
|
12
|
+
* branch-workspace clones are cloned FROM it, and the worker pushes it on to
|
|
13
|
+
* GitHub. A fetch that force-writes GitHub's refs straight into `refs/heads/*`
|
|
14
|
+
* therefore destroys work that reached `remote.git` but not GitHub yet: with
|
|
15
|
+
* `--prune` a not-yet-pushed branch is deleted outright, and a branch where
|
|
16
|
+
* `remote.git` is ahead is force-rewound to GitHub's older tip, so the worker's
|
|
17
|
+
* next push no-ops and the editor's commit never arrives while the branch still
|
|
18
|
+
* reports `synced`. Confining `+`/`--prune` to this namespace keeps them off
|
|
19
|
+
* those local heads; `reconcileTrackedBranches()` (worker/git-sync.ts) is what
|
|
20
|
+
* subsequently, and non-destructively, brings `refs/heads/*` toward what is
|
|
21
|
+
* tracked here.
|
|
42
22
|
*/
|
|
43
23
|
export declare const GITHUB_TRACKING_REF_PREFIX = "refs/remotes/github/";
|
|
44
24
|
/**
|
|
@@ -61,6 +41,7 @@ export interface GitManagerOptions {
|
|
|
61
41
|
skipIndexMarker?: boolean;
|
|
62
42
|
}
|
|
63
43
|
export type GitStatus = Pick<StatusResult, 'files' | 'ahead' | 'behind' | 'current' | 'tracking'>;
|
|
44
|
+
/** @internal Exported for tests. */
|
|
64
45
|
export declare class GitConflictError extends Error {
|
|
65
46
|
readonly conflictedFiles: string[];
|
|
66
47
|
constructor(conflictedFiles: string[]);
|
|
@@ -68,12 +49,10 @@ export declare class GitConflictError extends Error {
|
|
|
68
49
|
/**
|
|
69
50
|
* The branch has no ref on the remote yet, so there is nothing to pull.
|
|
70
51
|
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
* cannot proceed, a corrupt workspace, an unreachable remote — is a genuine
|
|
76
|
-
* error the caller has to surface.
|
|
52
|
+
* The ONLY benign outcome of `pullCurrentBranch`: callers that shrug it off (a
|
|
53
|
+
* settings branch's first-ever commit — services.ts `commitToSettingsBranch`)
|
|
54
|
+
* must not shrug off anything else with it. A merge that cannot proceed, a
|
|
55
|
+
* corrupt workspace and an unreachable remote are genuine errors to surface.
|
|
77
56
|
*/
|
|
78
57
|
export declare class GitRemoteRefMissingError extends Error {
|
|
79
58
|
readonly branch: string;
|
|
@@ -124,11 +103,9 @@ export interface InitializeWorkspaceOptions {
|
|
|
124
103
|
/** Git author email for internal commits (e.g., orphan branch init). */
|
|
125
104
|
gitBotAuthorEmail: string;
|
|
126
105
|
/**
|
|
127
|
-
* Pattern
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* (their payloads live at the workspace root and are committed by
|
|
131
|
-
* explicit path).
|
|
106
|
+
* Pattern added to `.git/info/exclude` so runtime metadata (e.g.
|
|
107
|
+
* `.canopy-meta/`) never enters the workspace's git history. Content branches
|
|
108
|
+
* only; settings workspaces commit by explicit path and don't need it.
|
|
132
109
|
*/
|
|
133
110
|
gitExcludePattern?: string;
|
|
134
111
|
}
|
|
@@ -141,17 +118,11 @@ export declare class GitManager {
|
|
|
141
118
|
constructor(options: GitManagerOptions, gitOptions?: Partial<SimpleGitOptions>);
|
|
142
119
|
static cloneRepo(remoteUrl: string, targetPath: string, baseBranch?: string): Promise<void>;
|
|
143
120
|
/**
|
|
144
|
-
* Initializes a local bare git repository to simulate a remote for dev mode
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* When the remote already exists but is missing the requested baseBranch
|
|
150
|
-
* (dev-mode branch auto-detect makes this routine: any git branch created
|
|
151
|
-
* after the remote was first seeded), that branch is pushed from the source
|
|
152
|
-
* repo on demand. Branches that already exist in the remote are never
|
|
153
|
-
* updated here — the CMS pushes editor state into this remote, and a
|
|
154
|
-
* refresh from the source repo would clobber it.
|
|
121
|
+
* Initializes a local bare git repository to simulate a remote for dev mode,
|
|
122
|
+
* seeded with the current state of baseBranch. Idempotent: an existing remote
|
|
123
|
+
* is never recreated, and a branch already in it is never refreshed from the
|
|
124
|
+
* source repo — the CMS pushes editor state into this remote, so a refresh
|
|
125
|
+
* would clobber it. A baseBranch the remote lacks is pushed on demand.
|
|
155
126
|
*
|
|
156
127
|
* @throws Error if not a git repo, no commits, or baseBranch doesn't exist
|
|
157
128
|
*/
|
|
@@ -166,39 +137,28 @@ export declare class GitManager {
|
|
|
166
137
|
* EITHER the local-heads namespace (`refs/heads/<branch>`) or the GitHub
|
|
167
138
|
* tracking namespace (`GITHUB_TRACKING_REF_PREFIX<branch>`).
|
|
168
139
|
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
* directly (see that constant's doc comment above), and
|
|
176
|
-
* `reconcileTrackedBranches()` (worker/git-sync.ts) only
|
|
177
|
-
* non-destructively brings `refs/heads/*` toward what's tracked there — so
|
|
178
|
-
* a branch that another CanopyCMS deployment sharing this repo (or a
|
|
179
|
-
* direct push to GitHub) just created can sit in the tracking namespace
|
|
180
|
-
* for a while before, or without ever, gaining a local head here. Checking
|
|
181
|
-
* `refs/heads/*` alone would miss exactly the two-deployments-one-repo
|
|
182
|
-
* collision that guard exists to catch.
|
|
140
|
+
* Both namespaces matter to api/branch.ts's create-time collision guard: a
|
|
141
|
+
* branch another CanopyCMS deployment sharing this repo (or a direct push to
|
|
142
|
+
* GitHub) just created sits in the tracking namespace before, or without
|
|
143
|
+
* ever, gaining a local head here (see GITHUB_TRACKING_REF_PREFIX above), so
|
|
144
|
+
* checking `refs/heads/*` alone would miss exactly the
|
|
145
|
+
* two-deployments-one-repo collision that guard exists to catch.
|
|
183
146
|
*
|
|
184
147
|
* Runs git with an explicit `--git-dir` instead of a cwd inside the repo:
|
|
185
148
|
* environments with `safe.bareRepository=explicit` (sandboxed/CI git setups)
|
|
186
149
|
* refuse cwd-based discovery of bare repos but expressly allow `--git-dir`.
|
|
187
|
-
* A single `for-each-ref` call checks both candidate refs at once
|
|
188
|
-
* exception-based control flow —
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
* `push` below does, since `branch` here can be a sanitized but otherwise
|
|
194
|
-
* caller-influenced string.
|
|
150
|
+
* A single `for-each-ref` call checks both candidate refs at once, without
|
|
151
|
+
* exception-based control flow — it exits 0 whether or not either ref
|
|
152
|
+
* exists, whereas `rev-parse --verify --quiet` suppresses the stderr output
|
|
153
|
+
* that is the only thing simple-git fails a task on. `--end-of-options`
|
|
154
|
+
* guards the ref-name positionals the same way `push` below does, since
|
|
155
|
+
* `branch` here is sanitized but otherwise caller-influenced.
|
|
195
156
|
*
|
|
196
157
|
* A failure here therefore means the remote itself is unreadable and is
|
|
197
158
|
* surfaced, NOT treated as "branch absent" — that would route
|
|
198
159
|
* `ensureLocalSimulatedRemote` to the push path against a repo it couldn't
|
|
199
160
|
* even read, and would silently skip api/branch.ts's collision check
|
|
200
|
-
* instead of letting that caller distinguish "unreadable" from "absent"
|
|
201
|
-
* and decide what to do.
|
|
161
|
+
* instead of letting that caller distinguish "unreadable" from "absent".
|
|
202
162
|
*/
|
|
203
163
|
static bareRemoteHasBranch(remotePath: string, branch: string, options?: {
|
|
204
164
|
namespaces?: 'both' | 'tracking';
|
|
@@ -207,36 +167,30 @@ export declare class GitManager {
|
|
|
207
167
|
* Delete `refs/heads/<branch>` from a bare local mirror, if present. A
|
|
208
168
|
* no-op (not an error) when the ref doesn't exist.
|
|
209
169
|
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
* branch
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
* the worker push of the STALE head, resurrecting the deleted branch's
|
|
221
|
-
* content on GitHub as an apparent success.
|
|
170
|
+
* The explicit path for removing a deleted branch's local head, which the
|
|
171
|
+
* sync loop deliberately is not (reconcileTrackedBranches never deletes a
|
|
172
|
+
* head — see GITHUB_TRACKING_REF_PREFIX). Called by api/branch.ts's
|
|
173
|
+
* deleteBranchHandler: a head left in `remote.git` forever makes the
|
|
174
|
+
* create -> publish -> squash-merge -> delete -> reuse-the-name cycle reject
|
|
175
|
+
* the reused branch's first publish non-fast-forward against the stale head
|
|
176
|
+
* (`GitManager.push()` pushes `branch:branch`, and a squash-merged old tip is
|
|
177
|
+
* not an ancestor of the new branch), and a retried submit then skips the
|
|
178
|
+
* local push on a clean tree and enqueues the worker push of the STALE head,
|
|
179
|
+
* resurrecting the deleted branch's content on GitHub as an apparent success.
|
|
222
180
|
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
* it until the remote side is actually gone.
|
|
181
|
+
* Leaves the tracking ref (`GITHUB_TRACKING_REF_PREFIX<branch>`) alone: that
|
|
182
|
+
* namespace mirrors GitHub's view, so while the branch still exists there the
|
|
183
|
+
* create-time collision check SHOULD keep reporting it.
|
|
227
184
|
*
|
|
228
|
-
* Same `--git-dir` invocation style as bareRemoteHasBranch above (works
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
237
|
-
* `--end-of-options` on update-ref (older gits don't accept it there);
|
|
238
|
-
* the ref argument always begins with the literal `refs/heads/` prefix,
|
|
239
|
-
* so it can never parse as an option.
|
|
185
|
+
* Same `--git-dir` invocation style as bareRemoteHasBranch above (works under
|
|
186
|
+
* `safe.bareRepository=explicit`). The existence pre-check makes "absent"
|
|
187
|
+
* deterministic instead of parsing update-ref's locale-dependent failure
|
|
188
|
+
* text, and its captured SHA is passed to `update-ref -d` as the expected old
|
|
189
|
+
* value, so a concurrent push re-creating or moving this branch between the
|
|
190
|
+
* read and the delete makes update-ref throw instead of silently deleting a
|
|
191
|
+
* just-pushed commit. No `--end-of-options` on update-ref (older gits reject
|
|
192
|
+
* it there); the ref argument always begins with the literal `refs/heads/`
|
|
193
|
+
* prefix, so it can never parse as an option.
|
|
240
194
|
*/
|
|
241
195
|
static deleteBareRemoteHead(remotePath: string, branch: string): Promise<void>;
|
|
242
196
|
/**
|
|
@@ -250,34 +204,23 @@ export declare class GitManager {
|
|
|
250
204
|
*/
|
|
251
205
|
private static pushBranchToLocalRemote;
|
|
252
206
|
/**
|
|
253
|
-
* Find the git root directory
|
|
254
207
|
* @returns Path to git root, or cwd if not in a git repo
|
|
255
208
|
*/
|
|
256
209
|
static findGitRoot(): Promise<string>;
|
|
257
210
|
/**
|
|
258
|
-
* Validate that a git repository exists at the given path
|
|
259
|
-
* @param repoPath - Path to check for .git directory
|
|
260
211
|
* @throws Error if git repo doesn't exist
|
|
261
212
|
*/
|
|
262
213
|
static validateGitRepoExists(repoPath: string): Promise<void>;
|
|
263
214
|
/**
|
|
264
215
|
* Guards prod mode against pointing git operations at a NETWORK remote
|
|
265
|
-
* (http(s)://, ssh://, git://, or scp-like `user@host:path`)
|
|
216
|
+
* (http(s)://, ssh://, git://, or scp-like `user@host:path`): the prod CMS
|
|
217
|
+
* Lambda has no internet access and would hang until timeout trying to
|
|
218
|
+
* clone/fetch/push one. Fires only for `mode === 'prod'`, and only for the
|
|
219
|
+
* three resolvable sources (explicit param, config, env var) — `file://`
|
|
220
|
+
* URLs, plain filesystem paths and `resolveRemoteUrl`'s auto-detect step
|
|
221
|
+
* (local by construction) are always allowed.
|
|
266
222
|
*
|
|
267
|
-
*
|
|
268
|
-
* all git network I/O happens on the EC2 worker against the EFS-local bare
|
|
269
|
-
* repo `{workspace}/remote.git`, which the Lambda reaches via auto-detect
|
|
270
|
-
* (see `resolveRemoteUrl`'s auto-detect step, which always yields a local
|
|
271
|
-
* path by construction — never checked here). A network URL supplied via
|
|
272
|
-
* any of the three resolvable sources (explicit param, config, env var) is
|
|
273
|
-
* almost always a misconfiguration: the internet-less Lambda would try to
|
|
274
|
-
* clone/fetch/push it directly and hang until timeout.
|
|
275
|
-
*
|
|
276
|
-
* Dev mode is never restricted here — this only fires for `mode === 'prod'`.
|
|
277
|
-
* `file://` URLs and plain filesystem paths are LOCAL and always allowed.
|
|
278
|
-
*
|
|
279
|
-
* @param source - Human-readable description of where `url` came from, used
|
|
280
|
-
* only in the thrown error message (e.g. "config.defaultRemoteUrl").
|
|
223
|
+
* @param source - Where `url` came from, for the thrown error message only.
|
|
281
224
|
*/
|
|
282
225
|
private static assertRemoteUrlAllowedInMode;
|
|
283
226
|
/**
|
|
@@ -287,17 +230,12 @@ export declare class GitManager {
|
|
|
287
230
|
* 3. Environment variable (mode-specific)
|
|
288
231
|
* 4. Auto-initialized local remote (for dev mode)
|
|
289
232
|
*
|
|
290
|
-
*
|
|
291
|
-
*
|
|
292
|
-
*
|
|
293
|
-
* is rejected unless `options.allowNetworkRemoteInProd` is set — see
|
|
294
|
-
* `assertRemoteUrlAllowedInMode`. Auto-detect/auto-init (source 4) are never
|
|
295
|
-
* checked: they always yield a local filesystem path by construction.
|
|
296
|
-
*
|
|
297
|
-
* @param options.sourceRoot - Optional source directory for monorepos. When provided,
|
|
298
|
-
* this directory (relative to git root) is used as the source for the simulated remote.
|
|
299
|
-
* Defaults to process.cwd().
|
|
233
|
+
* In prod mode a resolved network URL from any of the first three sources is
|
|
234
|
+
* rejected unless `options.allowNetworkRemoteInProd` is set — see
|
|
235
|
+
* `assertRemoteUrlAllowedInMode`.
|
|
300
236
|
*
|
|
237
|
+
* @param options.sourceRoot - Source directory for monorepos, relative to the
|
|
238
|
+
* git root; the source for the simulated remote. Defaults to process.cwd().
|
|
301
239
|
* @returns Remote URL or undefined if no remote is needed
|
|
302
240
|
*/
|
|
303
241
|
static resolveRemoteUrl(options: ResolveRemoteUrlOptions): Promise<string | undefined>;
|
|
@@ -306,45 +244,34 @@ export declare class GitManager {
|
|
|
306
244
|
*
|
|
307
245
|
* Uses `rev-parse --git-dir` with `GIT_CEILING_DIRECTORIES` pinned to the
|
|
308
246
|
* parent directory so a corrupt/missing `.git` can't make git silently
|
|
309
|
-
* traverse upward and report a false positive from an ancestor repo
|
|
310
|
-
* same protection `initializeWorkspace` relies on below).
|
|
247
|
+
* traverse upward and report a false positive from an ancestor repo.
|
|
311
248
|
*
|
|
312
249
|
* Shared by `initializeWorkspace` (clone-vs-reuse decision) and
|
|
313
250
|
* `SettingsWorkspaceManager`'s rename guard (settings-workspace.ts), which
|
|
314
251
|
* must know whether a settings workspace ALREADY exists before touching it —
|
|
315
|
-
*
|
|
316
|
-
* permissions.json/groups.json (see that guard's doc comment).
|
|
252
|
+
* re-initializing one under a different name wipes permissions.json/groups.json.
|
|
317
253
|
*/
|
|
318
254
|
static repoExistsAt(workspacePath: string): Promise<boolean>;
|
|
319
255
|
/**
|
|
320
256
|
* Ensures a git workspace is initialized and ready for use.
|
|
321
257
|
* Handles cloning, remote configuration, and branch checkout/creation.
|
|
322
258
|
*
|
|
323
|
-
* This centralizes the common initialization sequence used by both BranchWorkspaceManager
|
|
324
|
-
* and SettingsWorkspaceManager.
|
|
325
|
-
*
|
|
326
259
|
* Note: Does NOT configure git author - that should be done before commits, not during init.
|
|
327
|
-
*
|
|
328
|
-
* @returns Configured GitManager instance for the workspace
|
|
329
260
|
*/
|
|
330
261
|
static initializeWorkspace(options: InitializeWorkspaceOptions): Promise<GitManager>;
|
|
331
262
|
status(): Promise<GitStatus>;
|
|
332
263
|
/**
|
|
333
264
|
* Mark ContentStore ID indexes AND the resolved-schema cache rooted at (or
|
|
334
|
-
* under) this repo as stale
|
|
335
|
-
*
|
|
336
|
-
*
|
|
337
|
-
*
|
|
338
|
-
* pinned to the pre-mutation schema. Invoked in `finally` blocks because
|
|
339
|
-
* even failed merges/rebases may have touched the tree before aborting;
|
|
340
|
-
* over-invalidating is safe.
|
|
265
|
+
* under) this repo as stale, so ID→path lookups and `.collection.json`
|
|
266
|
+
* schemas don't stay pinned to the pre-mutation tree. Called in `finally`
|
|
267
|
+
* blocks around every working-tree mutation (checkout/merge/rebase) because
|
|
268
|
+
* even a failed merge may have touched the tree; over-invalidating is safe.
|
|
341
269
|
*
|
|
342
|
-
* Covers
|
|
343
|
-
*
|
|
344
|
-
*
|
|
345
|
-
*
|
|
346
|
-
*
|
|
347
|
-
* workspaces have no schema cache of their own either).
|
|
270
|
+
* Covers in-process stores/caches via their registries and other processes
|
|
271
|
+
* sharing the filesystem (worker vs Lambda on EFS) via the on-disk generation
|
|
272
|
+
* markers — except on a settings workspace (skipIndexMarker), where only the
|
|
273
|
+
* free in-process content-index invalidation runs and NEITHER marker is
|
|
274
|
+
* bumped (such workspaces have no schema cache of their own either).
|
|
348
275
|
*/
|
|
349
276
|
private invalidateContentIndexes;
|
|
350
277
|
checkoutBranch(branch: string): Promise<void>;
|
|
@@ -359,27 +286,21 @@ export declare class GitManager {
|
|
|
359
286
|
commit(message: string): Promise<void>;
|
|
360
287
|
push(branch?: string): Promise<void>;
|
|
361
288
|
/**
|
|
362
|
-
*
|
|
363
|
-
*
|
|
289
|
+
* Whether the local branch has commits the remote mirror doesn't -- i.e.
|
|
290
|
+
* whether push() would move the remote ref forward.
|
|
364
291
|
*
|
|
365
|
-
*
|
|
366
|
-
*
|
|
367
|
-
*
|
|
368
|
-
*
|
|
369
|
-
* commit never reached the remote (see services.ts submitBranch).
|
|
292
|
+
* Callers (services.ts submitBranch) gate pushing on this rather than on "is
|
|
293
|
+
* the working tree dirty": committing cleans the tree, so a dirty-tree gate
|
|
294
|
+
* around commit+push skips the push entirely when retried after a failed
|
|
295
|
+
* push, even though the commit never reached the remote.
|
|
370
296
|
*
|
|
371
|
-
*
|
|
372
|
-
*
|
|
373
|
-
* constraint
|
|
374
|
-
*
|
|
375
|
-
* pullBaseInner) and pins the result to FETCH_HEAD's SHA immediately after
|
|
376
|
-
* the fetch that populated it, rather than trusting `<remote>/<branch>`:
|
|
377
|
-
* FETCH_HEAD is a shared mutable file that any other fetch in this clone
|
|
378
|
-
* can repoint before it's read.
|
|
297
|
+
* Fetches the specific branch directly and pins FETCH_HEAD's SHA immediately
|
|
298
|
+
* after, rather than trusting `<remote>/<branch>` -- the pullBaseInner
|
|
299
|
+
* constraint: single-branch clones have no remote-tracking ref for any other
|
|
300
|
+
* branch, and FETCH_HEAD is shared mutable state.
|
|
379
301
|
*
|
|
380
|
-
* A branch
|
|
381
|
-
*
|
|
382
|
-
* as "ahead" (needs pushing) rather than an error.
|
|
302
|
+
* A branch never pushed has no ref on the remote, so `git fetch` fails
|
|
303
|
+
* ("couldn't find remote ref"); that counts as "ahead", not an error.
|
|
383
304
|
*/
|
|
384
305
|
hasUnpushedCommits(branch?: string): Promise<boolean>;
|
|
385
306
|
ensureAuthor(author: {
|
|
@@ -387,39 +308,19 @@ export declare class GitManager {
|
|
|
387
308
|
email: string;
|
|
388
309
|
}): Promise<void>;
|
|
389
310
|
ensureRemote(remoteUrl: string): Promise<void>;
|
|
390
|
-
/**
|
|
391
|
-
* Check if working directory has uncommitted changes
|
|
392
|
-
*/
|
|
393
311
|
hasUncommittedChanges(): Promise<boolean>;
|
|
394
|
-
/**
|
|
395
|
-
* Get list of uncommitted file paths
|
|
396
|
-
*/
|
|
397
312
|
getUncommittedFiles(): Promise<string[]>;
|
|
398
|
-
/**
|
|
399
|
-
* Get remote URL for current repo
|
|
400
|
-
*/
|
|
401
313
|
getRemoteUrl(): Promise<string | undefined>;
|
|
402
314
|
/**
|
|
403
|
-
*
|
|
404
|
-
*
|
|
405
|
-
*
|
|
406
|
-
* .git/info/exclude is a per-repository gitignore that never gets committed.
|
|
407
|
-
* Perfect for runtime metadata that should never leave the workspace.
|
|
408
|
-
*
|
|
409
|
-
* This is idempotent - if the pattern already exists, it won't be added again.
|
|
315
|
+
* Excludes `pattern` (e.g. `.canopy-meta/`) from this workspace's git, so it
|
|
316
|
+
* can never be committed or pushed. See {@link ensureGitExcludePattern}.
|
|
410
317
|
*/
|
|
411
318
|
ensureGitExclude(pattern: string): Promise<void>;
|
|
412
319
|
/**
|
|
413
|
-
* Create an orphan branch for settings
|
|
414
|
-
*
|
|
415
|
-
*
|
|
416
|
-
*
|
|
417
|
-
*
|
|
418
|
-
* The branch contains only settings files committed by explicit path
|
|
419
|
-
* (e.g. permissions.json, groups.json at the workspace root).
|
|
420
|
-
*
|
|
421
|
-
* @param branchName - Name of the orphan branch (e.g., 'canopycms-settings-prod')
|
|
422
|
-
* @param initialFiles - Files to commit to the new branch (e.g., { 'permissions.json': '{}', 'groups.json': '{}' })
|
|
320
|
+
* Create an orphan branch (no shared history) for settings, so
|
|
321
|
+
* deployment-specific settings never pollute content history. It holds only
|
|
322
|
+
* settings files committed by explicit path (permissions.json, groups.json at
|
|
323
|
+
* the workspace root).
|
|
423
324
|
*/
|
|
424
325
|
createOrphanSettingsBranch(branchName: string, initialFiles: Record<string, string>): Promise<void>;
|
|
425
326
|
private createOrphanSettingsBranchInner;
|