canopycms 0.0.63 → 0.0.64
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 +153 -19
- package/dist/ai/generate.d.ts +4 -5
- package/dist/ai/generate.js +0 -1
- package/dist/ai/handler.d.ts +3 -4
- package/dist/ai/handler.js +0 -1
- package/dist/ai/index.d.ts +7 -8
- package/dist/ai/index.js +0 -1
- package/dist/ai/json-to-markdown.d.ts +1 -2
- package/dist/ai/json-to-markdown.js +11 -2
- package/dist/ai/resolve-branch.d.ts +1 -2
- package/dist/ai/resolve-branch.js +0 -1
- package/dist/ai/strip-mdx.d.ts +0 -1
- package/dist/ai/strip-mdx.js +0 -1
- package/dist/ai/to-plain-text.d.ts +4 -1
- package/dist/ai/to-plain-text.js +47 -1
- package/dist/ai/transform-components.d.ts +1 -2
- package/dist/ai/transform-components.js +0 -1
- package/dist/ai/types.d.ts +1 -2
- package/dist/ai/types.js +0 -1
- package/dist/api/admin-branch-health.d.ts +7 -8
- package/dist/api/admin-branch-health.js +0 -1
- package/dist/api/admin.d.ts +16 -17
- package/dist/api/admin.js +0 -1
- package/dist/api/assets.d.ts +8 -9
- package/dist/api/assets.js +0 -1
- package/dist/api/branch-merge.d.ts +3 -4
- package/dist/api/branch-merge.js +0 -1
- package/dist/api/branch-review.d.ts +5 -6
- package/dist/api/branch-review.js +0 -1
- package/dist/api/branch-status.d.ts +15 -16
- package/dist/api/branch-status.js +0 -1
- package/dist/api/branch-withdraw.d.ts +3 -4
- package/dist/api/branch-withdraw.js +0 -1
- package/dist/api/branch.d.ts +13 -14
- package/dist/api/branch.js +0 -1
- package/dist/api/client.d.ts +14 -15
- package/dist/api/client.js +0 -1
- package/dist/api/comments.d.ts +11 -12
- package/dist/api/comments.js +0 -1
- package/dist/api/content.d.ts +22 -24
- package/dist/api/content.js +132 -18
- package/dist/api/entries-constants.d.ts +0 -1
- package/dist/api/entries-constants.js +0 -1
- package/dist/api/entries.d.ts +12 -13
- package/dist/api/entries.js +12 -2
- package/dist/api/github-sync.d.ts +2 -3
- package/dist/api/github-sync.js +0 -1
- package/dist/api/groups.d.ts +6 -7
- package/dist/api/groups.js +0 -1
- package/dist/api/guards.d.ts +2 -3
- package/dist/api/guards.js +0 -1
- package/dist/api/index.d.ts +18 -19
- package/dist/api/index.js +0 -1
- package/dist/api/permissions.d.ts +10 -11
- package/dist/api/permissions.js +0 -1
- package/dist/api/reference-options.d.ts +3 -4
- package/dist/api/reference-options.js +0 -1
- package/dist/api/request-body-hash.d.ts +0 -1
- package/dist/api/request-body-hash.js +0 -1
- package/dist/api/resolve-references.d.ts +6 -7
- package/dist/api/resolve-references.js +24 -6
- package/dist/api/route-builder.d.ts +2 -3
- package/dist/api/route-builder.js +0 -1
- package/dist/api/schema.d.ts +43 -44
- package/dist/api/schema.js +0 -1
- package/dist/api/settings-helpers.d.ts +2 -3
- package/dist/api/settings-helpers.js +0 -1
- package/dist/api/types.d.ts +6 -7
- package/dist/api/types.js +0 -1
- package/dist/api/user.d.ts +2 -3
- package/dist/api/user.js +0 -1
- package/dist/api/validators.d.ts +3 -4
- package/dist/api/validators.js +0 -1
- package/dist/assets/asset-prefixes.d.ts +1 -2
- package/dist/assets/asset-prefixes.js +0 -1
- package/dist/assets/asset-src.d.ts +17 -5
- package/dist/assets/asset-src.js +15 -3
- package/dist/assets/asset-url.d.ts +28 -7
- package/dist/assets/asset-url.js +20 -15
- package/dist/assets/factory.d.ts +2 -3
- package/dist/assets/factory.js +0 -2
- package/dist/assets/finalize.d.ts +2 -3
- package/dist/assets/finalize.js +0 -1
- package/dist/assets/index.d.ts +12 -13
- package/dist/assets/index.js +0 -1
- package/dist/assets/keys.d.ts +1 -2
- package/dist/assets/keys.js +0 -1
- package/dist/assets/pipeline.d.ts +1 -2
- package/dist/assets/pipeline.js +0 -1
- package/dist/assets/store-local.d.ts +1 -2
- package/dist/assets/store-local.js +0 -1
- package/dist/assets/store-s3.d.ts +2 -4
- package/dist/assets/store-s3.js +0 -1
- package/dist/assets/svg-sanitizer.d.ts +0 -1
- package/dist/assets/svg-sanitizer.js +0 -1
- package/dist/assets/transform-directives.d.ts +0 -1
- package/dist/assets/transform-directives.js +0 -1
- package/dist/assets/transform.d.ts +1 -2
- package/dist/assets/transform.js +0 -1
- package/dist/assets/types.d.ts +0 -1
- package/dist/assets/types.js +0 -1
- package/dist/auth/cache.d.ts +2 -3
- package/dist/auth/cache.js +0 -1
- package/dist/auth/caching-auth-plugin.d.ts +3 -4
- package/dist/auth/caching-auth-plugin.js +0 -1
- package/dist/auth/context-helpers.d.ts +1 -2
- package/dist/auth/context-helpers.js +0 -1
- package/dist/auth/file-based-auth-cache.d.ts +3 -4
- package/dist/auth/file-based-auth-cache.js +0 -1
- package/dist/auth/index.d.ts +6 -7
- package/dist/auth/index.js +0 -1
- package/dist/auth/plugin.d.ts +3 -4
- package/dist/auth/plugin.js +0 -1
- package/dist/auth/types.d.ts +1 -2
- package/dist/auth/types.js +0 -1
- package/dist/authorization/branch.d.ts +4 -5
- package/dist/authorization/branch.js +0 -1
- package/dist/authorization/content.d.ts +6 -7
- package/dist/authorization/content.js +0 -1
- package/dist/authorization/groups/index.d.ts +2 -3
- package/dist/authorization/groups/index.js +0 -1
- package/dist/authorization/groups/loader.d.ts +3 -4
- package/dist/authorization/groups/loader.js +0 -1
- package/dist/authorization/groups/schema.d.ts +1 -2
- package/dist/authorization/groups/schema.js +0 -1
- package/dist/authorization/helpers.d.ts +0 -1
- package/dist/authorization/helpers.js +0 -1
- package/dist/authorization/index.d.ts +11 -12
- package/dist/authorization/index.js +0 -1
- package/dist/authorization/path.d.ts +4 -5
- package/dist/authorization/path.js +0 -1
- package/dist/authorization/permissions/index.d.ts +2 -3
- package/dist/authorization/permissions/index.js +0 -1
- package/dist/authorization/permissions/loader.d.ts +4 -5
- package/dist/authorization/permissions/loader.js +0 -1
- package/dist/authorization/permissions/schema.d.ts +2 -3
- package/dist/authorization/permissions/schema.js +0 -1
- package/dist/authorization/protected-branch.d.ts +2 -3
- package/dist/authorization/protected-branch.js +0 -1
- package/dist/authorization/settings-file-store.d.ts +1 -2
- package/dist/authorization/settings-file-store.js +0 -1
- package/dist/authorization/types.d.ts +6 -7
- package/dist/authorization/types.js +0 -1
- package/dist/authorization/validation.d.ts +1 -2
- package/dist/authorization/validation.js +0 -1
- package/dist/branch-health.d.ts +2 -3
- package/dist/branch-health.js +0 -1
- package/dist/branch-metadata.d.ts +2 -3
- package/dist/branch-metadata.js +0 -1
- package/dist/branch-registry.d.ts +1 -2
- package/dist/branch-registry.js +0 -1
- package/dist/branch-schema-cache.d.ts +4 -5
- package/dist/branch-schema-cache.js +0 -1
- package/dist/branch-workspace.d.ts +4 -5
- package/dist/branch-workspace.js +0 -1
- package/dist/build/generate-ai-content.d.ts +21 -5
- package/dist/build/generate-ai-content.js +98 -6
- package/dist/build/index.d.ts +2 -3
- package/dist/build/index.js +0 -1
- package/dist/build-canopy.d.ts +5 -6
- package/dist/build-canopy.js +0 -1
- package/dist/build-mode.d.ts +1 -2
- package/dist/build-mode.js +0 -1
- package/dist/cli/cli.d.ts +1 -2
- package/dist/cli/cli.js +1131 -486
- package/dist/cli/generate-ai-content.d.ts +0 -1
- package/dist/cli/generate-ai-content.js +1000 -360
- package/dist/cli/init.d.ts +1 -2
- package/dist/cli/init.js +12 -2
- package/dist/cli/migrate.d.ts +5 -3
- package/dist/cli/migrate.js +5 -3
- package/dist/cli/project-detect.d.ts +5 -2
- package/dist/cli/project-detect.js +5 -1
- package/dist/cli/project-root.d.ts +0 -1
- package/dist/cli/project-root.js +0 -1
- package/dist/cli/sync.d.ts +0 -1
- package/dist/cli/sync.js +0 -1
- package/dist/cli/template-files/deploy-cms.yml.template +8 -6
- package/dist/cli/templates.d.ts +0 -1
- package/dist/cli/templates.js +0 -1
- package/dist/client.d.ts +13 -14
- package/dist/client.js +0 -1
- package/dist/comment-store.d.ts +0 -1
- package/dist/comment-store.js +0 -1
- package/dist/config/flatten.d.ts +1 -2
- package/dist/config/flatten.js +0 -1
- package/dist/config/helpers.d.ts +3 -4
- package/dist/config/helpers.js +2 -2
- package/dist/config/index.d.ts +10 -11
- package/dist/config/index.js +0 -1
- package/dist/config/schemas/collection.d.ts +0 -1
- package/dist/config/schemas/collection.js +0 -1
- package/dist/config/schemas/config.d.ts +7 -4
- package/dist/config/schemas/config.js +12 -1
- package/dist/config/schemas/field.d.ts +3 -1
- package/dist/config/schemas/field.js +5 -1
- package/dist/config/schemas/media.d.ts +0 -1
- package/dist/config/schemas/media.js +0 -1
- package/dist/config/schemas/permissions.d.ts +0 -1
- package/dist/config/schemas/permissions.js +0 -1
- package/dist/config/types.d.ts +55 -9
- package/dist/config/types.js +0 -1
- package/dist/config/validation.d.ts +1 -2
- package/dist/config/validation.js +0 -1
- package/dist/config.d.ts +2 -3
- package/dist/config.js +0 -1
- package/dist/content-id-index.d.ts +1 -2
- package/dist/content-id-index.js +0 -1
- package/dist/content-index-generation.d.ts +0 -1
- package/dist/content-index-generation.js +0 -1
- package/dist/content-index-registry.d.ts +0 -1
- package/dist/content-index-registry.js +0 -1
- package/dist/content-listing.d.ts +75 -59
- package/dist/content-listing.js +76 -83
- package/dist/content-reader.d.ts +4 -5
- package/dist/content-reader.js +22 -3
- package/dist/content-store.d.ts +137 -6
- package/dist/content-store.js +294 -22
- package/dist/content-tree.d.ts +15 -5
- package/dist/content-tree.js +27 -8
- package/dist/context.d.ts +9 -6
- package/dist/context.js +0 -1
- package/dist/dev-content-watcher.d.ts +2 -3
- package/dist/dev-content-watcher.js +0 -1
- package/dist/editor/BranchManager.d.ts +4 -5
- package/dist/editor/BranchManager.js +0 -1
- package/dist/editor/CanopyEditor.d.ts +2 -3
- package/dist/editor/CanopyEditor.js +1 -2
- package/dist/editor/CanopyEditorPage.d.ts +2 -3
- package/dist/editor/CanopyEditorPage.js +0 -1
- package/dist/editor/CommentsPanel.d.ts +2 -3
- package/dist/editor/CommentsPanel.js +0 -1
- package/dist/editor/Editor.d.ts +13 -8
- package/dist/editor/Editor.js +4 -5
- package/dist/editor/EditorPanes.d.ts +0 -1
- package/dist/editor/EditorPanes.js +0 -1
- package/dist/editor/EntryNavigator.d.ts +1 -2
- package/dist/editor/EntryNavigator.js +0 -1
- package/dist/editor/FormRenderer.d.ts +2 -3
- package/dist/editor/FormRenderer.js +22 -3
- package/dist/editor/GroupManager.d.ts +2 -3
- package/dist/editor/GroupManager.js +0 -1
- package/dist/editor/PermissionManager.d.ts +2 -3
- package/dist/editor/PermissionManager.js +0 -1
- package/dist/editor/admin/SystemHealthPanel.d.ts +0 -1
- package/dist/editor/admin/SystemHealthPanel.js +0 -1
- package/dist/editor/admin/useSystemHealth.d.ts +2 -3
- package/dist/editor/admin/useSystemHealth.js +0 -1
- package/dist/editor/canopy-path.d.ts +0 -1
- package/dist/editor/canopy-path.js +0 -1
- package/dist/editor/client-reference-resolver.d.ts +13 -4
- package/dist/editor/client-reference-resolver.js +18 -8
- package/dist/editor/comments/BranchComments.d.ts +2 -3
- package/dist/editor/comments/BranchComments.js +0 -1
- package/dist/editor/comments/EntryComments.d.ts +1 -2
- package/dist/editor/comments/EntryComments.js +0 -1
- package/dist/editor/comments/FieldWrapper.d.ts +1 -2
- package/dist/editor/comments/FieldWrapper.js +0 -1
- package/dist/editor/comments/InlineCommentThread.d.ts +2 -3
- package/dist/editor/comments/InlineCommentThread.js +0 -1
- package/dist/editor/comments/ThreadCarousel.d.ts +2 -3
- package/dist/editor/comments/ThreadCarousel.js +0 -1
- package/dist/editor/components/ConfirmDeleteModal.d.ts +0 -1
- package/dist/editor/components/ConfirmDeleteModal.js +0 -1
- package/dist/editor/components/EditorFooter.d.ts +0 -1
- package/dist/editor/components/EditorFooter.js +0 -1
- package/dist/editor/components/EditorHeader.d.ts +4 -5
- package/dist/editor/components/EditorHeader.js +0 -1
- package/dist/editor/components/EditorSidebar.d.ts +1 -2
- package/dist/editor/components/EditorSidebar.js +0 -1
- package/dist/editor/components/EntryCreateModal.d.ts +0 -1
- package/dist/editor/components/EntryCreateModal.js +21 -10
- package/dist/editor/components/RenameEntryModal.d.ts +0 -1
- package/dist/editor/components/RenameEntryModal.js +0 -1
- package/dist/editor/components/UserBadge.d.ts +2 -3
- package/dist/editor/components/UserBadge.js +0 -1
- package/dist/editor/components/index.d.ts +3 -4
- package/dist/editor/components/index.js +0 -1
- package/dist/editor/context/ApiClientContext.d.ts +9 -3
- package/dist/editor/context/ApiClientContext.js +8 -4
- package/dist/editor/context/AssetContext.d.ts +26 -2
- package/dist/editor/context/AssetContext.js +23 -3
- package/dist/editor/context/EditorStateContext.d.ts +1 -2
- package/dist/editor/context/EditorStateContext.js +0 -1
- package/dist/editor/context/SWRProvider.d.ts +0 -1
- package/dist/editor/context/SWRProvider.js +0 -1
- package/dist/editor/context/index.d.ts +4 -5
- package/dist/editor/context/index.js +0 -1
- package/dist/editor/editor-config.d.ts +2 -3
- package/dist/editor/editor-config.js +0 -1
- package/dist/editor/editor-utils.d.ts +22 -10
- package/dist/editor/editor-utils.js +41 -10
- package/dist/editor/fields/BlockField.d.ts +1 -2
- package/dist/editor/fields/BlockField.js +0 -1
- package/dist/editor/fields/CodeField.d.ts +0 -1
- package/dist/editor/fields/CodeField.js +0 -1
- package/dist/editor/fields/DateTimeField.d.ts +0 -1
- package/dist/editor/fields/DateTimeField.js +0 -1
- package/dist/editor/fields/ImageField.d.ts +1 -2
- package/dist/editor/fields/ImageField.js +0 -1
- package/dist/editor/fields/InlineGroupField.d.ts +2 -3
- package/dist/editor/fields/InlineGroupField.js +0 -1
- package/dist/editor/fields/MarkdownField.d.ts +0 -1
- package/dist/editor/fields/MarkdownField.js +0 -1
- package/dist/editor/fields/MdxImageDialog.d.ts +0 -1
- package/dist/editor/fields/MdxImageDialog.js +0 -1
- package/dist/editor/fields/NumberField.d.ts +0 -1
- package/dist/editor/fields/NumberField.js +0 -1
- package/dist/editor/fields/NumberListField.d.ts +0 -1
- package/dist/editor/fields/NumberListField.js +0 -1
- package/dist/editor/fields/ObjectField.d.ts +11 -2
- package/dist/editor/fields/ObjectField.js +3 -4
- package/dist/editor/fields/ReferenceField.d.ts +0 -1
- package/dist/editor/fields/ReferenceField.js +8 -3
- package/dist/editor/fields/SelectField.d.ts +0 -1
- package/dist/editor/fields/SelectField.js +0 -1
- package/dist/editor/fields/StringListField.d.ts +0 -1
- package/dist/editor/fields/StringListField.js +0 -1
- 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.d.ts +1 -2
- package/dist/editor/fields/entry-link/EntryLinkContext.js +0 -1
- package/dist/editor/fields/entry-link/InsertEntryLink.d.ts +0 -1
- package/dist/editor/fields/entry-link/InsertEntryLink.js +0 -1
- package/dist/editor/fields/entry-link/index.d.ts +2 -3
- package/dist/editor/fields/entry-link/index.js +0 -1
- package/dist/editor/group-manager/ExternalGroupsTab.d.ts +1 -2
- package/dist/editor/group-manager/ExternalGroupsTab.js +0 -1
- package/dist/editor/group-manager/GroupCard.d.ts +1 -2
- package/dist/editor/group-manager/GroupCard.js +0 -1
- package/dist/editor/group-manager/GroupForm.d.ts +1 -2
- package/dist/editor/group-manager/GroupForm.js +0 -1
- package/dist/editor/group-manager/InternalGroupsTab.d.ts +1 -2
- package/dist/editor/group-manager/InternalGroupsTab.js +0 -1
- package/dist/editor/group-manager/MemberList.d.ts +1 -2
- package/dist/editor/group-manager/MemberList.js +0 -1
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.d.ts +1 -2
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.js +0 -1
- package/dist/editor/group-manager/hooks/useGroupState.d.ts +1 -2
- package/dist/editor/group-manager/hooks/useGroupState.js +0 -1
- package/dist/editor/group-manager/hooks/useUserSearch.d.ts +1 -2
- package/dist/editor/group-manager/hooks/useUserSearch.js +0 -1
- package/dist/editor/group-manager/index.d.ts +5 -6
- package/dist/editor/group-manager/index.js +0 -1
- package/dist/editor/group-manager/types.d.ts +4 -5
- package/dist/editor/group-manager/types.js +0 -1
- package/dist/editor/hooks/index.d.ts +14 -15
- package/dist/editor/hooks/index.js +0 -1
- package/dist/editor/hooks/useBranchActions.d.ts +0 -1
- package/dist/editor/hooks/useBranchActions.js +0 -1
- package/dist/editor/hooks/useBranchManager.d.ts +4 -5
- package/dist/editor/hooks/useBranchManager.js +0 -1
- package/dist/editor/hooks/useBranchesData.d.ts +2 -3
- package/dist/editor/hooks/useBranchesData.js +0 -1
- package/dist/editor/hooks/useCommentSystem.d.ts +2 -3
- package/dist/editor/hooks/useCommentSystem.js +0 -1
- package/dist/editor/hooks/useCommentsData.d.ts +2 -3
- package/dist/editor/hooks/useCommentsData.js +0 -1
- package/dist/editor/hooks/useDraftManager.d.ts +3 -4
- package/dist/editor/hooks/useDraftManager.js +0 -1
- package/dist/editor/hooks/useEditorLayout.d.ts +1 -2
- package/dist/editor/hooks/useEditorLayout.js +0 -1
- package/dist/editor/hooks/useEntriesData.d.ts +3 -5
- package/dist/editor/hooks/useEntriesData.js +0 -3
- package/dist/editor/hooks/useEntryLinkResolution.d.ts +2 -3
- package/dist/editor/hooks/useEntryLinkResolution.js +0 -1
- package/dist/editor/hooks/useEntryManager.d.ts +5 -7
- package/dist/editor/hooks/useEntryManager.js +8 -3
- package/dist/editor/hooks/useGroupManager.d.ts +2 -3
- package/dist/editor/hooks/useGroupManager.js +0 -1
- package/dist/editor/hooks/usePermissionManager.d.ts +2 -3
- package/dist/editor/hooks/usePermissionManager.js +0 -1
- package/dist/editor/hooks/useReferenceResolution.d.ts +1 -2
- package/dist/editor/hooks/useReferenceResolution.js +8 -3
- package/dist/editor/hooks/useSchemaManager.d.ts +2 -3
- package/dist/editor/hooks/useSchemaManager.js +0 -1
- package/dist/editor/hooks/useUserContext.d.ts +1 -2
- package/dist/editor/hooks/useUserContext.js +8 -3
- package/dist/editor/hooks/useUserMetadata.d.ts +2 -3
- package/dist/editor/hooks/useUserMetadata.js +0 -1
- package/dist/editor/media/AssetCard.d.ts +1 -2
- package/dist/editor/media/AssetCard.js +0 -1
- package/dist/editor/media/CropStep.d.ts +1 -2
- package/dist/editor/media/CropStep.js +0 -1
- package/dist/editor/media/MediaLibrary.d.ts +1 -2
- package/dist/editor/media/MediaLibrary.js +0 -1
- package/dist/editor/media/MediaLibraryBody.d.ts +1 -2
- package/dist/editor/media/MediaLibraryBody.js +0 -1
- package/dist/editor/media/crop-math.d.ts +1 -2
- package/dist/editor/media/crop-math.js +0 -1
- package/dist/editor/media/upload-asset.d.ts +2 -3
- package/dist/editor/media/upload-asset.js +0 -1
- package/dist/editor/media/upload-constants.d.ts +0 -1
- package/dist/editor/media/upload-constants.js +0 -1
- package/dist/editor/media/useAssetUpload.d.ts +1 -2
- package/dist/editor/media/useAssetUpload.js +0 -1
- package/dist/editor/media/xhr-upload.d.ts +0 -1
- package/dist/editor/media/xhr-upload.js +0 -1
- package/dist/editor/permission-manager/GroupSelector.d.ts +1 -2
- package/dist/editor/permission-manager/GroupSelector.js +0 -1
- package/dist/editor/permission-manager/PermissionEditor.d.ts +1 -2
- package/dist/editor/permission-manager/PermissionEditor.js +0 -1
- package/dist/editor/permission-manager/PermissionLevelBadge.d.ts +1 -2
- package/dist/editor/permission-manager/PermissionLevelBadge.js +0 -1
- package/dist/editor/permission-manager/PermissionTree.d.ts +1 -2
- package/dist/editor/permission-manager/PermissionTree.js +0 -1
- package/dist/editor/permission-manager/UserSelector.d.ts +1 -2
- package/dist/editor/permission-manager/UserSelector.js +0 -1
- package/dist/editor/permission-manager/constants.d.ts +1 -2
- package/dist/editor/permission-manager/constants.js +0 -1
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts +1 -2
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js +0 -1
- package/dist/editor/permission-manager/hooks/usePermissionTree.d.ts +2 -3
- package/dist/editor/permission-manager/hooks/usePermissionTree.js +0 -1
- package/dist/editor/permission-manager/index.d.ts +4 -5
- package/dist/editor/permission-manager/index.js +0 -1
- package/dist/editor/permission-manager/types.d.ts +3 -4
- package/dist/editor/permission-manager/types.js +0 -1
- package/dist/editor/permission-manager/utils.d.ts +2 -3
- package/dist/editor/permission-manager/utils.js +0 -1
- package/dist/editor/preview-bridge.d.ts +1 -2
- package/dist/editor/preview-bridge.js +0 -1
- package/dist/editor/relative-time.d.ts +0 -1
- package/dist/editor/relative-time.js +0 -1
- package/dist/editor/schema-editor/CollectionEditor.d.ts +4 -5
- package/dist/editor/schema-editor/CollectionEditor.js +0 -1
- package/dist/editor/schema-editor/EntryTypeEditor.d.ts +2 -3
- package/dist/editor/schema-editor/EntryTypeEditor.js +0 -1
- package/dist/editor/schema-editor/index.d.ts +2 -3
- package/dist/editor/schema-editor/index.js +0 -1
- package/dist/editor/theme.d.ts +0 -1
- package/dist/editor/theme.js +0 -1
- package/dist/editor/utils/env.d.ts +0 -1
- package/dist/editor/utils/env.js +0 -1
- package/dist/entry-link-resolver.d.ts +1 -2
- package/dist/entry-link-resolver.js +0 -1
- package/dist/entry-schema-registry.d.ts +3 -4
- package/dist/entry-schema-registry.js +6 -2
- package/dist/entry-schema.d.ts +114 -3
- package/dist/entry-schema.js +46 -1
- package/dist/git-manager.d.ts +1 -2
- package/dist/git-manager.js +0 -1
- package/dist/github-service.d.ts +1 -2
- package/dist/github-service.js +0 -1
- package/dist/http/handler.d.ts +6 -7
- package/dist/http/handler.js +0 -1
- package/dist/http/index.d.ts +6 -7
- package/dist/http/index.js +0 -1
- package/dist/http/router.d.ts +2 -3
- package/dist/http/router.js +0 -1
- package/dist/http/types.d.ts +0 -1
- package/dist/http/types.js +0 -1
- package/dist/id.d.ts +2 -3
- package/dist/id.js +0 -1
- package/dist/index.d.ts +17 -18
- package/dist/index.js +0 -1
- package/dist/operating-mode/client-safe-strategy.d.ts +1 -2
- package/dist/operating-mode/client-safe-strategy.js +0 -1
- package/dist/operating-mode/client-unsafe-strategy.d.ts +1 -2
- package/dist/operating-mode/client-unsafe-strategy.js +0 -1
- package/dist/operating-mode/client.d.ts +3 -4
- package/dist/operating-mode/client.js +0 -1
- package/dist/operating-mode/deployment-name-fixtures.d.ts +0 -1
- package/dist/operating-mode/deployment-name-fixtures.js +0 -1
- package/dist/operating-mode/deployment-name.d.ts +0 -1
- package/dist/operating-mode/deployment-name.js +0 -1
- package/dist/operating-mode/index.d.ts +5 -6
- package/dist/operating-mode/index.js +0 -1
- package/dist/operating-mode/mode-env.d.ts +1 -2
- package/dist/operating-mode/mode-env.js +0 -1
- package/dist/operating-mode/types.d.ts +2 -3
- package/dist/operating-mode/types.js +0 -1
- package/dist/paths/branch-name.d.ts +1 -2
- package/dist/paths/branch-name.js +0 -1
- package/dist/paths/branch.d.ts +3 -4
- package/dist/paths/branch.js +0 -1
- package/dist/paths/index.d.ts +8 -9
- package/dist/paths/index.js +0 -1
- package/dist/paths/normalize-server.d.ts +1 -2
- package/dist/paths/normalize-server.js +0 -1
- package/dist/paths/normalize.d.ts +1 -2
- package/dist/paths/normalize.js +0 -1
- package/dist/paths/resolve.d.ts +2 -3
- package/dist/paths/resolve.js +0 -1
- package/dist/paths/types.d.ts +0 -1
- package/dist/paths/types.js +0 -1
- package/dist/paths/validation.d.ts +1 -2
- package/dist/paths/validation.js +0 -1
- package/dist/reference-resolver.d.ts +3 -4
- package/dist/reference-resolver.js +0 -1
- package/dist/resolve-canopy-user.d.ts +3 -4
- package/dist/resolve-canopy-user.js +0 -1
- package/dist/resource-generation.d.ts +0 -1
- package/dist/resource-generation.js +0 -1
- package/dist/schema/index.d.ts +3 -4
- package/dist/schema/index.js +0 -1
- package/dist/schema/meta-loader.d.ts +3 -4
- package/dist/schema/meta-loader.js +3 -3
- package/dist/schema/resolver.d.ts +2 -3
- package/dist/schema/resolver.js +0 -1
- package/dist/schema/schema-store-types.d.ts +2 -3
- package/dist/schema/schema-store-types.js +0 -1
- package/dist/schema/schema-store.d.ts +6 -7
- package/dist/schema/schema-store.js +33 -1
- package/dist/schema/types.d.ts +1 -2
- package/dist/schema/types.js +0 -1
- package/dist/server.d.ts +54 -45
- package/dist/server.js +11 -3
- package/dist/services.d.ts +10 -11
- package/dist/services.js +0 -1
- package/dist/settings-workspace.d.ts +12 -15
- package/dist/settings-workspace.js +10 -13
- package/dist/static/index.d.ts +164 -6
- package/dist/static/index.js +242 -7
- package/dist/static/seo.d.ts +8 -30
- package/dist/static/seo.js +19 -46
- package/dist/sync-core.d.ts +0 -1
- package/dist/sync-core.js +0 -1
- package/dist/task-queue/index.d.ts +2 -3
- package/dist/task-queue/index.js +0 -1
- package/dist/task-queue/task-queue.d.ts +1 -2
- package/dist/task-queue/task-queue.js +0 -1
- package/dist/task-queue/types.d.ts +0 -1
- package/dist/task-queue/types.js +0 -1
- package/dist/types.d.ts +3 -4
- package/dist/types.js +0 -1
- package/dist/url-collision.d.ts +86 -0
- package/dist/url-collision.js +186 -0
- package/dist/url-path-resolver.d.ts +11 -2
- package/dist/url-path-resolver.js +37 -5
- package/dist/user.d.ts +3 -4
- package/dist/user.js +0 -1
- package/dist/utils/async-mutex.d.ts +0 -1
- package/dist/utils/async-mutex.js +0 -1
- package/dist/utils/atomic-write.d.ts +0 -1
- package/dist/utils/atomic-write.js +0 -1
- package/dist/utils/body-field.d.ts +12 -2
- package/dist/utils/body-field.js +17 -1
- package/dist/utils/content-serialize.d.ts +37 -0
- package/dist/utils/content-serialize.js +429 -0
- package/dist/utils/content-write-lock.d.ts +12 -16
- package/dist/utils/content-write-lock.js +38 -22
- package/dist/utils/debug.d.ts +0 -1
- package/dist/utils/debug.js +0 -1
- package/dist/utils/entry-url.d.ts +17 -1
- package/dist/utils/entry-url.js +21 -3
- package/dist/utils/error.d.ts +0 -1
- package/dist/utils/error.js +0 -1
- package/dist/utils/flatten-group-fields.d.ts +1 -2
- package/dist/utils/flatten-group-fields.js +0 -1
- package/dist/utils/format.d.ts +1 -2
- package/dist/utils/format.js +0 -1
- package/dist/utils/fs.d.ts +7 -1
- package/dist/utils/fs.js +16 -1
- package/dist/utils/git.d.ts +1 -2
- package/dist/utils/git.js +0 -1
- package/dist/utils/logger.d.ts +0 -1
- package/dist/utils/logger.js +0 -1
- package/dist/utils/occ-json-write.d.ts +0 -1
- package/dist/utils/occ-json-write.js +0 -1
- package/dist/utils/provisioning-lock.d.ts +17 -4
- package/dist/utils/provisioning-lock.js +94 -14
- package/dist/utils/sanitize-href.d.ts +2 -3
- package/dist/utils/sanitize-href.js +2 -3
- package/dist/utils/title-field.d.ts +1 -2
- package/dist/utils/title-field.js +0 -1
- package/dist/utils/typed-filename.d.ts +61 -0
- package/dist/utils/typed-filename.js +92 -0
- package/dist/utils/url-prefix.d.ts +121 -0
- package/dist/utils/url-prefix.js +158 -0
- package/dist/validation/block-structural-keys.d.ts +42 -0
- package/dist/validation/block-structural-keys.js +44 -0
- package/dist/validation/deletion-checker.d.ts +4 -5
- package/dist/validation/deletion-checker.js +0 -1
- package/dist/validation/entry-link-validator.d.ts +2 -3
- package/dist/validation/entry-link-validator.js +0 -1
- package/dist/validation/entry-type-reference-validator.d.ts +1 -2
- package/dist/validation/entry-type-reference-validator.js +0 -1
- package/dist/validation/entry-validator.d.ts +23 -2
- package/dist/validation/entry-validator.js +34 -2
- package/dist/validation/field-traversal.d.ts +28 -4
- package/dist/validation/field-traversal.js +24 -7
- package/dist/validation/reference-validator.d.ts +2 -3
- package/dist/validation/reference-validator.js +0 -1
- package/dist/worker/cms-worker.d.ts +9 -2
- package/dist/worker/cms-worker.js +59 -2
- package/dist/worker/log.d.ts +0 -1
- package/dist/worker/log.js +0 -1
- package/dist/worker/task-queue-config.d.ts +1 -2
- package/dist/worker/task-queue-config.js +0 -1
- package/dist/worker/task-queue.d.ts +3 -4
- package/dist/worker/task-queue.js +0 -1
- package/dist/worker/worker-status.d.ts +1 -2
- package/dist/worker/worker-status.js +0 -1
- package/package.json +2 -6
- package/dist/ai/generate.d.ts.map +0 -1
- package/dist/ai/generate.js.map +0 -1
- package/dist/ai/handler.d.ts.map +0 -1
- package/dist/ai/handler.js.map +0 -1
- package/dist/ai/index.d.ts.map +0 -1
- package/dist/ai/index.js.map +0 -1
- package/dist/ai/json-to-markdown.d.ts.map +0 -1
- package/dist/ai/json-to-markdown.js.map +0 -1
- package/dist/ai/resolve-branch.d.ts.map +0 -1
- package/dist/ai/resolve-branch.js.map +0 -1
- package/dist/ai/strip-mdx.d.ts.map +0 -1
- package/dist/ai/strip-mdx.js.map +0 -1
- package/dist/ai/to-plain-text.d.ts.map +0 -1
- package/dist/ai/to-plain-text.js.map +0 -1
- package/dist/ai/transform-components.d.ts.map +0 -1
- package/dist/ai/transform-components.js.map +0 -1
- package/dist/ai/types.d.ts.map +0 -1
- package/dist/ai/types.js.map +0 -1
- package/dist/api/__test__/mock-client.d.ts +0 -231
- package/dist/api/__test__/mock-client.d.ts.map +0 -1
- package/dist/api/__test__/mock-client.js +0 -388
- package/dist/api/__test__/mock-client.js.map +0 -1
- package/dist/api/admin-branch-health.d.ts.map +0 -1
- package/dist/api/admin-branch-health.js.map +0 -1
- package/dist/api/admin.d.ts.map +0 -1
- package/dist/api/admin.js.map +0 -1
- package/dist/api/assets.d.ts.map +0 -1
- package/dist/api/assets.js.map +0 -1
- package/dist/api/branch-merge.d.ts.map +0 -1
- package/dist/api/branch-merge.js.map +0 -1
- package/dist/api/branch-review.d.ts.map +0 -1
- package/dist/api/branch-review.js.map +0 -1
- package/dist/api/branch-status.d.ts.map +0 -1
- package/dist/api/branch-status.js.map +0 -1
- package/dist/api/branch-withdraw.d.ts.map +0 -1
- package/dist/api/branch-withdraw.js.map +0 -1
- package/dist/api/branch.d.ts.map +0 -1
- package/dist/api/branch.js.map +0 -1
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js.map +0 -1
- package/dist/api/comments.d.ts.map +0 -1
- package/dist/api/comments.js.map +0 -1
- package/dist/api/content.d.ts.map +0 -1
- package/dist/api/content.js.map +0 -1
- package/dist/api/entries-constants.d.ts.map +0 -1
- package/dist/api/entries-constants.js.map +0 -1
- package/dist/api/entries.d.ts.map +0 -1
- package/dist/api/entries.js.map +0 -1
- package/dist/api/github-sync.d.ts.map +0 -1
- package/dist/api/github-sync.js.map +0 -1
- package/dist/api/groups.d.ts.map +0 -1
- package/dist/api/groups.js.map +0 -1
- package/dist/api/guards.d.ts.map +0 -1
- package/dist/api/guards.js.map +0 -1
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/permissions.d.ts.map +0 -1
- package/dist/api/permissions.js.map +0 -1
- package/dist/api/reference-options.d.ts.map +0 -1
- package/dist/api/reference-options.js.map +0 -1
- package/dist/api/request-body-hash.d.ts.map +0 -1
- package/dist/api/request-body-hash.js.map +0 -1
- package/dist/api/resolve-references.d.ts.map +0 -1
- package/dist/api/resolve-references.js.map +0 -1
- package/dist/api/route-builder.d.ts.map +0 -1
- package/dist/api/route-builder.js.map +0 -1
- package/dist/api/schema.d.ts.map +0 -1
- package/dist/api/schema.js.map +0 -1
- package/dist/api/settings-helpers.d.ts.map +0 -1
- package/dist/api/settings-helpers.js.map +0 -1
- package/dist/api/types.d.ts.map +0 -1
- package/dist/api/types.js.map +0 -1
- package/dist/api/user.d.ts.map +0 -1
- package/dist/api/user.js.map +0 -1
- package/dist/api/validators.d.ts.map +0 -1
- package/dist/api/validators.js.map +0 -1
- package/dist/assets/asset-prefixes.d.ts.map +0 -1
- package/dist/assets/asset-prefixes.js.map +0 -1
- package/dist/assets/asset-src.d.ts.map +0 -1
- package/dist/assets/asset-src.js.map +0 -1
- package/dist/assets/asset-url.d.ts.map +0 -1
- package/dist/assets/asset-url.js.map +0 -1
- package/dist/assets/factory.d.ts.map +0 -1
- package/dist/assets/factory.js.map +0 -1
- package/dist/assets/finalize.d.ts.map +0 -1
- package/dist/assets/finalize.js.map +0 -1
- package/dist/assets/index.d.ts.map +0 -1
- package/dist/assets/index.js.map +0 -1
- package/dist/assets/keys.d.ts.map +0 -1
- package/dist/assets/keys.js.map +0 -1
- package/dist/assets/pipeline.d.ts.map +0 -1
- package/dist/assets/pipeline.js.map +0 -1
- package/dist/assets/store-local.d.ts.map +0 -1
- package/dist/assets/store-local.js.map +0 -1
- package/dist/assets/store-s3.d.ts.map +0 -1
- package/dist/assets/store-s3.js.map +0 -1
- package/dist/assets/svg-sanitizer.d.ts.map +0 -1
- package/dist/assets/svg-sanitizer.js.map +0 -1
- package/dist/assets/transform-directives.d.ts.map +0 -1
- package/dist/assets/transform-directives.js.map +0 -1
- package/dist/assets/transform.d.ts.map +0 -1
- package/dist/assets/transform.js.map +0 -1
- package/dist/assets/types.d.ts.map +0 -1
- package/dist/assets/types.js.map +0 -1
- package/dist/auth/cache.d.ts.map +0 -1
- package/dist/auth/cache.js.map +0 -1
- package/dist/auth/caching-auth-plugin.d.ts.map +0 -1
- package/dist/auth/caching-auth-plugin.js.map +0 -1
- package/dist/auth/context-helpers.d.ts.map +0 -1
- package/dist/auth/context-helpers.js.map +0 -1
- package/dist/auth/file-based-auth-cache.d.ts.map +0 -1
- package/dist/auth/file-based-auth-cache.js.map +0 -1
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/plugin.d.ts.map +0 -1
- package/dist/auth/plugin.js.map +0 -1
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js.map +0 -1
- package/dist/authorization/branch.d.ts.map +0 -1
- package/dist/authorization/branch.js.map +0 -1
- package/dist/authorization/content.d.ts.map +0 -1
- package/dist/authorization/content.js.map +0 -1
- package/dist/authorization/groups/index.d.ts.map +0 -1
- package/dist/authorization/groups/index.js.map +0 -1
- package/dist/authorization/groups/loader.d.ts.map +0 -1
- package/dist/authorization/groups/loader.js.map +0 -1
- package/dist/authorization/groups/schema.d.ts.map +0 -1
- package/dist/authorization/groups/schema.js.map +0 -1
- package/dist/authorization/helpers.d.ts.map +0 -1
- package/dist/authorization/helpers.js.map +0 -1
- package/dist/authorization/index.d.ts.map +0 -1
- package/dist/authorization/index.js.map +0 -1
- package/dist/authorization/path.d.ts.map +0 -1
- package/dist/authorization/path.js.map +0 -1
- package/dist/authorization/permissions/index.d.ts.map +0 -1
- package/dist/authorization/permissions/index.js.map +0 -1
- package/dist/authorization/permissions/loader.d.ts.map +0 -1
- package/dist/authorization/permissions/loader.js.map +0 -1
- package/dist/authorization/permissions/schema.d.ts.map +0 -1
- package/dist/authorization/permissions/schema.js.map +0 -1
- package/dist/authorization/protected-branch.d.ts.map +0 -1
- package/dist/authorization/protected-branch.js.map +0 -1
- package/dist/authorization/settings-file-store.d.ts.map +0 -1
- package/dist/authorization/settings-file-store.js.map +0 -1
- package/dist/authorization/test-utils.d.ts +0 -26
- package/dist/authorization/test-utils.d.ts.map +0 -1
- package/dist/authorization/test-utils.js +0 -23
- package/dist/authorization/test-utils.js.map +0 -1
- package/dist/authorization/types.d.ts.map +0 -1
- package/dist/authorization/types.js.map +0 -1
- package/dist/authorization/validation.d.ts.map +0 -1
- package/dist/authorization/validation.js.map +0 -1
- package/dist/branch-health.d.ts.map +0 -1
- package/dist/branch-health.js.map +0 -1
- package/dist/branch-metadata.d.ts.map +0 -1
- package/dist/branch-metadata.js.map +0 -1
- package/dist/branch-registry.d.ts.map +0 -1
- package/dist/branch-registry.js.map +0 -1
- package/dist/branch-schema-cache.d.ts.map +0 -1
- package/dist/branch-schema-cache.js.map +0 -1
- package/dist/branch-workspace.d.ts.map +0 -1
- package/dist/branch-workspace.js.map +0 -1
- package/dist/build/generate-ai-content.d.ts.map +0 -1
- package/dist/build/generate-ai-content.js.map +0 -1
- package/dist/build/index.d.ts.map +0 -1
- package/dist/build/index.js.map +0 -1
- package/dist/build-canopy.d.ts.map +0 -1
- package/dist/build-canopy.js.map +0 -1
- package/dist/build-mode.d.ts.map +0 -1
- package/dist/build-mode.js.map +0 -1
- package/dist/cli/cli.d.ts.map +0 -1
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/generate-ai-content.d.ts.map +0 -1
- package/dist/cli/generate-ai-content.js.map +0 -1
- package/dist/cli/init.d.ts.map +0 -1
- package/dist/cli/init.js.map +0 -1
- package/dist/cli/migrate.d.ts.map +0 -1
- package/dist/cli/migrate.js.map +0 -1
- package/dist/cli/project-detect.d.ts.map +0 -1
- package/dist/cli/project-detect.js.map +0 -1
- package/dist/cli/project-root.d.ts.map +0 -1
- package/dist/cli/project-root.js.map +0 -1
- package/dist/cli/sync.d.ts.map +0 -1
- package/dist/cli/sync.js.map +0 -1
- package/dist/cli/templates.d.ts.map +0 -1
- package/dist/cli/templates.js.map +0 -1
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/comment-store.d.ts.map +0 -1
- package/dist/comment-store.js.map +0 -1
- package/dist/config/flatten.d.ts.map +0 -1
- package/dist/config/flatten.js.map +0 -1
- package/dist/config/helpers.d.ts.map +0 -1
- package/dist/config/helpers.js.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/config/schemas/collection.d.ts.map +0 -1
- package/dist/config/schemas/collection.js.map +0 -1
- package/dist/config/schemas/config.d.ts.map +0 -1
- package/dist/config/schemas/config.js.map +0 -1
- package/dist/config/schemas/field.d.ts.map +0 -1
- package/dist/config/schemas/field.js.map +0 -1
- package/dist/config/schemas/media.d.ts.map +0 -1
- package/dist/config/schemas/media.js.map +0 -1
- package/dist/config/schemas/permissions.d.ts.map +0 -1
- package/dist/config/schemas/permissions.js.map +0 -1
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js.map +0 -1
- package/dist/config/validation.d.ts.map +0 -1
- package/dist/config/validation.js.map +0 -1
- package/dist/config-test.d.ts +0 -20
- package/dist/config-test.d.ts.map +0 -1
- package/dist/config-test.js +0 -49
- package/dist/config-test.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/content-id-index.d.ts.map +0 -1
- package/dist/content-id-index.js.map +0 -1
- package/dist/content-index-generation.d.ts.map +0 -1
- package/dist/content-index-generation.js.map +0 -1
- package/dist/content-index-registry.d.ts.map +0 -1
- package/dist/content-index-registry.js.map +0 -1
- package/dist/content-listing.d.ts.map +0 -1
- package/dist/content-listing.js.map +0 -1
- package/dist/content-reader.d.ts.map +0 -1
- package/dist/content-reader.js.map +0 -1
- package/dist/content-store.d.ts.map +0 -1
- package/dist/content-store.js.map +0 -1
- package/dist/content-tree.d.ts.map +0 -1
- package/dist/content-tree.js.map +0 -1
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js.map +0 -1
- package/dist/dev-content-watcher.d.ts.map +0 -1
- package/dist/dev-content-watcher.js.map +0 -1
- package/dist/editor/BranchManager.d.ts.map +0 -1
- package/dist/editor/BranchManager.js.map +0 -1
- package/dist/editor/CanopyEditor.d.ts.map +0 -1
- package/dist/editor/CanopyEditor.js.map +0 -1
- package/dist/editor/CanopyEditorPage.d.ts.map +0 -1
- package/dist/editor/CanopyEditorPage.js.map +0 -1
- package/dist/editor/CommentsPanel.d.ts.map +0 -1
- package/dist/editor/CommentsPanel.js.map +0 -1
- package/dist/editor/Editor.d.ts.map +0 -1
- package/dist/editor/Editor.js.map +0 -1
- package/dist/editor/EditorPanes.d.ts.map +0 -1
- package/dist/editor/EditorPanes.js.map +0 -1
- package/dist/editor/EntryNavigator.d.ts.map +0 -1
- package/dist/editor/EntryNavigator.js.map +0 -1
- package/dist/editor/FormRenderer.d.ts.map +0 -1
- package/dist/editor/FormRenderer.js.map +0 -1
- package/dist/editor/GroupManager.d.ts.map +0 -1
- package/dist/editor/GroupManager.js.map +0 -1
- package/dist/editor/PermissionManager.d.ts.map +0 -1
- package/dist/editor/PermissionManager.js.map +0 -1
- package/dist/editor/admin/SystemHealthPanel.d.ts.map +0 -1
- package/dist/editor/admin/SystemHealthPanel.js.map +0 -1
- package/dist/editor/admin/useSystemHealth.d.ts.map +0 -1
- package/dist/editor/admin/useSystemHealth.js.map +0 -1
- package/dist/editor/canopy-path.d.ts.map +0 -1
- package/dist/editor/canopy-path.js.map +0 -1
- package/dist/editor/client-reference-resolver.d.ts.map +0 -1
- package/dist/editor/client-reference-resolver.js.map +0 -1
- package/dist/editor/comments/BranchComments.d.ts.map +0 -1
- package/dist/editor/comments/BranchComments.js.map +0 -1
- package/dist/editor/comments/EntryComments.d.ts.map +0 -1
- package/dist/editor/comments/EntryComments.js.map +0 -1
- package/dist/editor/comments/FieldWrapper.d.ts.map +0 -1
- package/dist/editor/comments/FieldWrapper.js.map +0 -1
- package/dist/editor/comments/InlineCommentThread.d.ts.map +0 -1
- package/dist/editor/comments/InlineCommentThread.js.map +0 -1
- package/dist/editor/comments/ThreadCarousel.d.ts.map +0 -1
- package/dist/editor/comments/ThreadCarousel.js.map +0 -1
- package/dist/editor/components/ConfirmDeleteModal.d.ts.map +0 -1
- package/dist/editor/components/ConfirmDeleteModal.js.map +0 -1
- package/dist/editor/components/EditorFooter.d.ts.map +0 -1
- package/dist/editor/components/EditorFooter.js.map +0 -1
- package/dist/editor/components/EditorHeader.d.ts.map +0 -1
- package/dist/editor/components/EditorHeader.js.map +0 -1
- package/dist/editor/components/EditorSidebar.d.ts.map +0 -1
- package/dist/editor/components/EditorSidebar.js.map +0 -1
- package/dist/editor/components/EntryCreateModal.d.ts.map +0 -1
- package/dist/editor/components/EntryCreateModal.js.map +0 -1
- package/dist/editor/components/RenameEntryModal.d.ts.map +0 -1
- package/dist/editor/components/RenameEntryModal.js.map +0 -1
- package/dist/editor/components/UserBadge.d.ts.map +0 -1
- package/dist/editor/components/UserBadge.js.map +0 -1
- package/dist/editor/components/index.d.ts.map +0 -1
- package/dist/editor/components/index.js.map +0 -1
- package/dist/editor/context/ApiClientContext.d.ts.map +0 -1
- package/dist/editor/context/ApiClientContext.js.map +0 -1
- package/dist/editor/context/AssetContext.d.ts.map +0 -1
- package/dist/editor/context/AssetContext.js.map +0 -1
- package/dist/editor/context/EditorStateContext.d.ts.map +0 -1
- package/dist/editor/context/EditorStateContext.js.map +0 -1
- package/dist/editor/context/SWRProvider.d.ts.map +0 -1
- package/dist/editor/context/SWRProvider.js.map +0 -1
- package/dist/editor/context/index.d.ts.map +0 -1
- package/dist/editor/context/index.js.map +0 -1
- package/dist/editor/editor-config.d.ts.map +0 -1
- package/dist/editor/editor-config.js.map +0 -1
- package/dist/editor/editor-utils.d.ts.map +0 -1
- package/dist/editor/editor-utils.js.map +0 -1
- package/dist/editor/fields/BlockField.d.ts.map +0 -1
- package/dist/editor/fields/BlockField.js.map +0 -1
- package/dist/editor/fields/CodeField.d.ts.map +0 -1
- package/dist/editor/fields/CodeField.js.map +0 -1
- package/dist/editor/fields/DateTimeField.d.ts.map +0 -1
- package/dist/editor/fields/DateTimeField.js.map +0 -1
- package/dist/editor/fields/ImageField.d.ts.map +0 -1
- package/dist/editor/fields/ImageField.js.map +0 -1
- package/dist/editor/fields/InlineGroupField.d.ts.map +0 -1
- package/dist/editor/fields/InlineGroupField.js.map +0 -1
- package/dist/editor/fields/MarkdownField.d.ts.map +0 -1
- package/dist/editor/fields/MarkdownField.js.map +0 -1
- package/dist/editor/fields/MdxImageDialog.d.ts.map +0 -1
- package/dist/editor/fields/MdxImageDialog.js.map +0 -1
- package/dist/editor/fields/NumberField.d.ts.map +0 -1
- package/dist/editor/fields/NumberField.js.map +0 -1
- package/dist/editor/fields/NumberListField.d.ts.map +0 -1
- package/dist/editor/fields/NumberListField.js.map +0 -1
- package/dist/editor/fields/ObjectField.d.ts.map +0 -1
- package/dist/editor/fields/ObjectField.js.map +0 -1
- package/dist/editor/fields/ReferenceField.d.ts.map +0 -1
- package/dist/editor/fields/ReferenceField.js.map +0 -1
- package/dist/editor/fields/SelectField.d.ts.map +0 -1
- package/dist/editor/fields/SelectField.js.map +0 -1
- package/dist/editor/fields/StringListField.d.ts.map +0 -1
- package/dist/editor/fields/StringListField.js.map +0 -1
- package/dist/editor/fields/TextField.d.ts.map +0 -1
- package/dist/editor/fields/TextField.js.map +0 -1
- package/dist/editor/fields/ToggleField.d.ts.map +0 -1
- package/dist/editor/fields/ToggleField.js.map +0 -1
- package/dist/editor/fields/entry-link/EntryLinkContext.d.ts.map +0 -1
- package/dist/editor/fields/entry-link/EntryLinkContext.js.map +0 -1
- package/dist/editor/fields/entry-link/InsertEntryLink.d.ts.map +0 -1
- package/dist/editor/fields/entry-link/InsertEntryLink.js.map +0 -1
- package/dist/editor/fields/entry-link/index.d.ts.map +0 -1
- package/dist/editor/fields/entry-link/index.js.map +0 -1
- package/dist/editor/group-manager/ExternalGroupsTab.d.ts.map +0 -1
- package/dist/editor/group-manager/ExternalGroupsTab.js.map +0 -1
- package/dist/editor/group-manager/GroupCard.d.ts.map +0 -1
- package/dist/editor/group-manager/GroupCard.js.map +0 -1
- package/dist/editor/group-manager/GroupForm.d.ts.map +0 -1
- package/dist/editor/group-manager/GroupForm.js.map +0 -1
- package/dist/editor/group-manager/InternalGroupsTab.d.ts.map +0 -1
- package/dist/editor/group-manager/InternalGroupsTab.js.map +0 -1
- package/dist/editor/group-manager/MemberList.d.ts.map +0 -1
- package/dist/editor/group-manager/MemberList.js.map +0 -1
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.d.ts.map +0 -1
- package/dist/editor/group-manager/hooks/useExternalGroupSearch.js.map +0 -1
- package/dist/editor/group-manager/hooks/useGroupState.d.ts.map +0 -1
- package/dist/editor/group-manager/hooks/useGroupState.js.map +0 -1
- package/dist/editor/group-manager/hooks/useUserSearch.d.ts.map +0 -1
- package/dist/editor/group-manager/hooks/useUserSearch.js.map +0 -1
- package/dist/editor/group-manager/index.d.ts.map +0 -1
- package/dist/editor/group-manager/index.js.map +0 -1
- package/dist/editor/group-manager/types.d.ts.map +0 -1
- package/dist/editor/group-manager/types.js.map +0 -1
- package/dist/editor/hooks/__test__/test-utils.d.ts +0 -164
- package/dist/editor/hooks/__test__/test-utils.d.ts.map +0 -1
- package/dist/editor/hooks/__test__/test-utils.js +0 -203
- package/dist/editor/hooks/__test__/test-utils.js.map +0 -1
- package/dist/editor/hooks/index.d.ts.map +0 -1
- package/dist/editor/hooks/index.js.map +0 -1
- package/dist/editor/hooks/useBranchActions.d.ts.map +0 -1
- package/dist/editor/hooks/useBranchActions.js.map +0 -1
- package/dist/editor/hooks/useBranchManager.d.ts.map +0 -1
- package/dist/editor/hooks/useBranchManager.js.map +0 -1
- package/dist/editor/hooks/useBranchesData.d.ts.map +0 -1
- package/dist/editor/hooks/useBranchesData.js.map +0 -1
- package/dist/editor/hooks/useCommentSystem.d.ts.map +0 -1
- package/dist/editor/hooks/useCommentSystem.js.map +0 -1
- package/dist/editor/hooks/useCommentsData.d.ts.map +0 -1
- package/dist/editor/hooks/useCommentsData.js.map +0 -1
- package/dist/editor/hooks/useDraftManager.d.ts.map +0 -1
- package/dist/editor/hooks/useDraftManager.js.map +0 -1
- package/dist/editor/hooks/useEditorLayout.d.ts.map +0 -1
- package/dist/editor/hooks/useEditorLayout.js.map +0 -1
- package/dist/editor/hooks/useEntriesData.d.ts.map +0 -1
- package/dist/editor/hooks/useEntriesData.js.map +0 -1
- package/dist/editor/hooks/useEntryLinkResolution.d.ts.map +0 -1
- package/dist/editor/hooks/useEntryLinkResolution.js.map +0 -1
- package/dist/editor/hooks/useEntryManager.d.ts.map +0 -1
- package/dist/editor/hooks/useEntryManager.js.map +0 -1
- package/dist/editor/hooks/useGroupManager.d.ts.map +0 -1
- package/dist/editor/hooks/useGroupManager.js.map +0 -1
- package/dist/editor/hooks/usePermissionManager.d.ts.map +0 -1
- package/dist/editor/hooks/usePermissionManager.js.map +0 -1
- package/dist/editor/hooks/useReferenceResolution.d.ts.map +0 -1
- package/dist/editor/hooks/useReferenceResolution.js.map +0 -1
- package/dist/editor/hooks/useSchemaManager.d.ts.map +0 -1
- package/dist/editor/hooks/useSchemaManager.js.map +0 -1
- package/dist/editor/hooks/useUserContext.d.ts.map +0 -1
- package/dist/editor/hooks/useUserContext.js.map +0 -1
- package/dist/editor/hooks/useUserMetadata.d.ts.map +0 -1
- package/dist/editor/hooks/useUserMetadata.js.map +0 -1
- package/dist/editor/media/AssetCard.d.ts.map +0 -1
- package/dist/editor/media/AssetCard.js.map +0 -1
- package/dist/editor/media/CropStep.d.ts.map +0 -1
- package/dist/editor/media/CropStep.js.map +0 -1
- package/dist/editor/media/MediaLibrary.d.ts.map +0 -1
- package/dist/editor/media/MediaLibrary.js.map +0 -1
- package/dist/editor/media/MediaLibraryBody.d.ts.map +0 -1
- package/dist/editor/media/MediaLibraryBody.js.map +0 -1
- package/dist/editor/media/crop-math.d.ts.map +0 -1
- package/dist/editor/media/crop-math.js.map +0 -1
- package/dist/editor/media/upload-asset.d.ts.map +0 -1
- package/dist/editor/media/upload-asset.js.map +0 -1
- package/dist/editor/media/upload-constants.d.ts.map +0 -1
- package/dist/editor/media/upload-constants.js.map +0 -1
- package/dist/editor/media/useAssetUpload.d.ts.map +0 -1
- package/dist/editor/media/useAssetUpload.js.map +0 -1
- package/dist/editor/media/xhr-upload.d.ts.map +0 -1
- package/dist/editor/media/xhr-upload.js.map +0 -1
- package/dist/editor/permission-manager/GroupSelector.d.ts.map +0 -1
- package/dist/editor/permission-manager/GroupSelector.js.map +0 -1
- package/dist/editor/permission-manager/PermissionEditor.d.ts.map +0 -1
- package/dist/editor/permission-manager/PermissionEditor.js.map +0 -1
- package/dist/editor/permission-manager/PermissionLevelBadge.d.ts.map +0 -1
- package/dist/editor/permission-manager/PermissionLevelBadge.js.map +0 -1
- package/dist/editor/permission-manager/PermissionTree.d.ts.map +0 -1
- package/dist/editor/permission-manager/PermissionTree.js.map +0 -1
- package/dist/editor/permission-manager/UserSelector.d.ts.map +0 -1
- package/dist/editor/permission-manager/UserSelector.js.map +0 -1
- package/dist/editor/permission-manager/constants.d.ts.map +0 -1
- package/dist/editor/permission-manager/constants.js.map +0 -1
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts.map +0 -1
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js.map +0 -1
- package/dist/editor/permission-manager/hooks/usePermissionTree.d.ts.map +0 -1
- package/dist/editor/permission-manager/hooks/usePermissionTree.js.map +0 -1
- package/dist/editor/permission-manager/index.d.ts.map +0 -1
- package/dist/editor/permission-manager/index.js.map +0 -1
- package/dist/editor/permission-manager/types.d.ts.map +0 -1
- package/dist/editor/permission-manager/types.js.map +0 -1
- package/dist/editor/permission-manager/utils.d.ts.map +0 -1
- package/dist/editor/permission-manager/utils.js.map +0 -1
- package/dist/editor/preview-bridge.d.ts.map +0 -1
- package/dist/editor/preview-bridge.js.map +0 -1
- package/dist/editor/relative-time.d.ts.map +0 -1
- package/dist/editor/relative-time.js.map +0 -1
- package/dist/editor/schema-editor/CollectionEditor.d.ts.map +0 -1
- package/dist/editor/schema-editor/CollectionEditor.js.map +0 -1
- package/dist/editor/schema-editor/EntryTypeEditor.d.ts.map +0 -1
- package/dist/editor/schema-editor/EntryTypeEditor.js.map +0 -1
- package/dist/editor/schema-editor/index.d.ts.map +0 -1
- package/dist/editor/schema-editor/index.js.map +0 -1
- package/dist/editor/setup-test-dom.d.ts +0 -1
- package/dist/editor/setup-test-dom.d.ts.map +0 -1
- package/dist/editor/setup-test-dom.js +0 -12
- package/dist/editor/setup-test-dom.js.map +0 -1
- package/dist/editor/test-setup.d.ts +0 -6
- package/dist/editor/test-setup.d.ts.map +0 -1
- package/dist/editor/test-setup.js +0 -42
- package/dist/editor/test-setup.js.map +0 -1
- package/dist/editor/theme.d.ts.map +0 -1
- package/dist/editor/theme.js.map +0 -1
- package/dist/editor/utils/env.d.ts.map +0 -1
- package/dist/editor/utils/env.js.map +0 -1
- package/dist/entry-link-resolver.d.ts.map +0 -1
- package/dist/entry-link-resolver.js.map +0 -1
- package/dist/entry-schema-registry.d.ts.map +0 -1
- package/dist/entry-schema-registry.js.map +0 -1
- package/dist/entry-schema.d.ts.map +0 -1
- package/dist/entry-schema.js.map +0 -1
- package/dist/git-manager.d.ts.map +0 -1
- package/dist/git-manager.js.map +0 -1
- package/dist/github-service.d.ts.map +0 -1
- package/dist/github-service.js.map +0 -1
- package/dist/http/handler.d.ts.map +0 -1
- package/dist/http/handler.js.map +0 -1
- package/dist/http/index.d.ts.map +0 -1
- package/dist/http/index.js.map +0 -1
- package/dist/http/router.d.ts.map +0 -1
- package/dist/http/router.js.map +0 -1
- package/dist/http/types.d.ts.map +0 -1
- package/dist/http/types.js.map +0 -1
- package/dist/id.d.ts.map +0 -1
- package/dist/id.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/operating-mode/client-safe-strategy.d.ts.map +0 -1
- package/dist/operating-mode/client-safe-strategy.js.map +0 -1
- package/dist/operating-mode/client-unsafe-strategy.d.ts.map +0 -1
- package/dist/operating-mode/client-unsafe-strategy.js.map +0 -1
- package/dist/operating-mode/client.d.ts.map +0 -1
- package/dist/operating-mode/client.js.map +0 -1
- package/dist/operating-mode/deployment-name-fixtures.d.ts.map +0 -1
- package/dist/operating-mode/deployment-name-fixtures.js.map +0 -1
- package/dist/operating-mode/deployment-name.d.ts.map +0 -1
- package/dist/operating-mode/deployment-name.js.map +0 -1
- package/dist/operating-mode/index.d.ts.map +0 -1
- package/dist/operating-mode/index.js.map +0 -1
- package/dist/operating-mode/mode-env.d.ts.map +0 -1
- package/dist/operating-mode/mode-env.js.map +0 -1
- package/dist/operating-mode/types.d.ts.map +0 -1
- package/dist/operating-mode/types.js.map +0 -1
- package/dist/paths/branch-name.d.ts.map +0 -1
- package/dist/paths/branch-name.js.map +0 -1
- package/dist/paths/branch.d.ts.map +0 -1
- package/dist/paths/branch.js.map +0 -1
- package/dist/paths/index.d.ts.map +0 -1
- package/dist/paths/index.js.map +0 -1
- package/dist/paths/normalize-server.d.ts.map +0 -1
- package/dist/paths/normalize-server.js.map +0 -1
- package/dist/paths/normalize.d.ts.map +0 -1
- package/dist/paths/normalize.js.map +0 -1
- package/dist/paths/resolve.d.ts.map +0 -1
- package/dist/paths/resolve.js.map +0 -1
- package/dist/paths/test-utils.d.ts +0 -22
- package/dist/paths/test-utils.d.ts.map +0 -1
- package/dist/paths/test-utils.js +0 -21
- package/dist/paths/test-utils.js.map +0 -1
- package/dist/paths/types.d.ts.map +0 -1
- package/dist/paths/types.js.map +0 -1
- package/dist/paths/validation.d.ts.map +0 -1
- package/dist/paths/validation.js.map +0 -1
- package/dist/reference-resolver.d.ts.map +0 -1
- package/dist/reference-resolver.js.map +0 -1
- package/dist/resolve-canopy-user.d.ts.map +0 -1
- package/dist/resolve-canopy-user.js.map +0 -1
- package/dist/resource-generation.d.ts.map +0 -1
- package/dist/resource-generation.js.map +0 -1
- package/dist/schema/index.d.ts.map +0 -1
- package/dist/schema/index.js.map +0 -1
- package/dist/schema/meta-loader.d.ts.map +0 -1
- package/dist/schema/meta-loader.js.map +0 -1
- package/dist/schema/resolver.d.ts.map +0 -1
- package/dist/schema/resolver.js.map +0 -1
- package/dist/schema/schema-store-types.d.ts.map +0 -1
- package/dist/schema/schema-store-types.js.map +0 -1
- package/dist/schema/schema-store.d.ts.map +0 -1
- package/dist/schema/schema-store.js.map +0 -1
- package/dist/schema/types.d.ts.map +0 -1
- package/dist/schema/types.js.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/services.d.ts.map +0 -1
- package/dist/services.js.map +0 -1
- package/dist/settings-workspace.d.ts.map +0 -1
- package/dist/settings-workspace.js.map +0 -1
- package/dist/static/index.d.ts.map +0 -1
- package/dist/static/index.js.map +0 -1
- package/dist/static/seo.d.ts.map +0 -1
- package/dist/static/seo.js.map +0 -1
- package/dist/sync-core.d.ts.map +0 -1
- package/dist/sync-core.js.map +0 -1
- package/dist/task-queue/index.d.ts.map +0 -1
- package/dist/task-queue/index.js.map +0 -1
- package/dist/task-queue/task-queue.d.ts.map +0 -1
- package/dist/task-queue/task-queue.js.map +0 -1
- package/dist/task-queue/types.d.ts.map +0 -1
- package/dist/task-queue/types.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/url-path-resolver.d.ts.map +0 -1
- package/dist/url-path-resolver.js.map +0 -1
- package/dist/user.d.ts.map +0 -1
- package/dist/user.js.map +0 -1
- package/dist/utils/async-mutex.d.ts.map +0 -1
- package/dist/utils/async-mutex.js.map +0 -1
- package/dist/utils/atomic-write.d.ts.map +0 -1
- package/dist/utils/atomic-write.js.map +0 -1
- package/dist/utils/body-field.d.ts.map +0 -1
- package/dist/utils/body-field.js.map +0 -1
- package/dist/utils/content-write-lock.d.ts.map +0 -1
- package/dist/utils/content-write-lock.js.map +0 -1
- package/dist/utils/debug.d.ts.map +0 -1
- package/dist/utils/debug.js.map +0 -1
- package/dist/utils/entry-url.d.ts.map +0 -1
- package/dist/utils/entry-url.js.map +0 -1
- package/dist/utils/error.d.ts.map +0 -1
- package/dist/utils/error.js.map +0 -1
- package/dist/utils/flatten-group-fields.d.ts.map +0 -1
- package/dist/utils/flatten-group-fields.js.map +0 -1
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/fs.d.ts.map +0 -1
- package/dist/utils/fs.js.map +0 -1
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/occ-json-write.d.ts.map +0 -1
- package/dist/utils/occ-json-write.js.map +0 -1
- package/dist/utils/provisioning-lock.d.ts.map +0 -1
- package/dist/utils/provisioning-lock.js.map +0 -1
- package/dist/utils/sanitize-href.d.ts.map +0 -1
- package/dist/utils/sanitize-href.js.map +0 -1
- package/dist/utils/title-field.d.ts.map +0 -1
- package/dist/utils/title-field.js.map +0 -1
- package/dist/validation/deletion-checker.d.ts.map +0 -1
- package/dist/validation/deletion-checker.js.map +0 -1
- package/dist/validation/entry-link-validator.d.ts.map +0 -1
- package/dist/validation/entry-link-validator.js.map +0 -1
- package/dist/validation/entry-type-reference-validator.d.ts.map +0 -1
- package/dist/validation/entry-type-reference-validator.js.map +0 -1
- package/dist/validation/entry-validator.d.ts.map +0 -1
- package/dist/validation/entry-validator.js.map +0 -1
- package/dist/validation/field-traversal.d.ts.map +0 -1
- package/dist/validation/field-traversal.js.map +0 -1
- package/dist/validation/reference-validator.d.ts.map +0 -1
- package/dist/validation/reference-validator.js.map +0 -1
- package/dist/worker/cms-worker.d.ts.map +0 -1
- package/dist/worker/cms-worker.js.map +0 -1
- package/dist/worker/log.d.ts.map +0 -1
- package/dist/worker/log.js.map +0 -1
- package/dist/worker/task-queue-config.d.ts.map +0 -1
- package/dist/worker/task-queue-config.js.map +0 -1
- package/dist/worker/task-queue.d.ts.map +0 -1
- package/dist/worker/task-queue.js.map +0 -1
- package/dist/worker/worker-status.d.ts.map +0 -1
- package/dist/worker/worker-status.js.map +0 -1
package/dist/config/types.d.ts
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* Type definitions for CanopyCMS configuration.
|
|
3
3
|
* These are pure TypeScript types - Zod schemas are in ./schemas/
|
|
4
4
|
*/
|
|
5
|
-
import type { CanopyGroupId, CanopyUserId } from '../types';
|
|
6
|
-
import type { OperatingMode } from '../operating-mode';
|
|
7
|
-
import type { AuthPlugin } from '../auth/plugin';
|
|
8
|
-
import type { LogicalPath, ContentId } from '../paths/types';
|
|
9
|
-
import type { PermissionPath } from '../authorization/types';
|
|
10
|
-
import type { EntryLinkUrlResolver } from '../entry-link-resolver';
|
|
11
|
-
import type { CropRect } from '../assets/transform-directives';
|
|
5
|
+
import type { CanopyGroupId, CanopyUserId } from '../types.js';
|
|
6
|
+
import type { OperatingMode } from '../operating-mode/index.js';
|
|
7
|
+
import type { AuthPlugin } from '../auth/plugin.js';
|
|
8
|
+
import type { LogicalPath, ContentId } from '../paths/types.js';
|
|
9
|
+
import type { PermissionPath } from '../authorization/types.js';
|
|
10
|
+
import type { EntryLinkUrlResolver } from '../entry-link-resolver.js';
|
|
11
|
+
import type { CropRect } from '../assets/transform-directives.js';
|
|
12
12
|
export declare const primitiveFieldTypes: readonly ["string", "number", "boolean", "datetime", "markdown", "mdx", "code"];
|
|
13
13
|
export declare const fieldTypes: readonly ["string", "number", "boolean", "datetime", "markdown", "mdx", "code", "image", "select", "reference", "object", "block", "group"];
|
|
14
14
|
export type PrimitiveFieldType = (typeof primitiveFieldTypes)[number];
|
|
@@ -68,6 +68,27 @@ export interface ReferenceFieldConfig extends BaseFieldConfig {
|
|
|
68
68
|
entryTypes?: string[];
|
|
69
69
|
displayField?: string;
|
|
70
70
|
options?: ReferenceOption[];
|
|
71
|
+
/**
|
|
72
|
+
* Include the referenced entry's body in the resolved value, under that entry type's own
|
|
73
|
+
* body field name (`isBody: true`, else `body`). Defaults to `false`.
|
|
74
|
+
*
|
|
75
|
+
* This is the embed-vs-link distinction, declared where it is actually known. A reference
|
|
76
|
+
* that **embeds** its target — a shared call-to-action block rendered inline — needs the
|
|
77
|
+
* target's prose, and without this a resolved md/mdx target arrives as frontmatter only, so
|
|
78
|
+
* a search index built over pages with shared blocks silently contains nothing for them. A
|
|
79
|
+
* reference that merely **links** to its target — related posts, an author byline — wants
|
|
80
|
+
* `urlPath` and a title, and emphatically not the target's full body inlined into every
|
|
81
|
+
* page read.
|
|
82
|
+
*
|
|
83
|
+
* It lives on the field rather than on `read()`/`listEntries()` because one call routinely
|
|
84
|
+
* contains both kinds: a page with a shared CTA *and* a related-posts list cannot be served
|
|
85
|
+
* by a single call-level setting, and a call-level flag would mean the same field resolved
|
|
86
|
+
* to different shapes in different places.
|
|
87
|
+
*
|
|
88
|
+
* Only affects formats that HAVE a separate body — md and mdx. A json/yaml target's whole
|
|
89
|
+
* document is already its data, so this is a no-op there.
|
|
90
|
+
*/
|
|
91
|
+
includeBody?: boolean;
|
|
71
92
|
}
|
|
72
93
|
/**
|
|
73
94
|
* Image field config. The value is a structured object (see `ImageFieldValue`
|
|
@@ -215,6 +236,15 @@ export interface CanopyEditorConfig {
|
|
|
215
236
|
title?: string;
|
|
216
237
|
subtitle?: string;
|
|
217
238
|
theme?: unknown;
|
|
239
|
+
/**
|
|
240
|
+
* Per-collection overrides for the preview pane's URL, keyed by collection path or name
|
|
241
|
+
* (e.g. `{ 'content/posts': '/blog' }`) for sites whose routes don't mirror their content tree.
|
|
242
|
+
*
|
|
243
|
+
* Values are **site-relative** and must NOT include the deployment `basePath` — that is applied
|
|
244
|
+
* on top of whatever this yields (see `CanopyConfig.basePath`), so including it here would
|
|
245
|
+
* prefix it twice. An absolute value (`https://…`) is passed through untouched instead, which
|
|
246
|
+
* is the escape hatch for previewing against a different origin entirely.
|
|
247
|
+
*/
|
|
218
248
|
previewBase?: Record<string, string>;
|
|
219
249
|
onAccountClick?: () => void;
|
|
220
250
|
onLogoutClick?: () => void;
|
|
@@ -315,6 +345,21 @@ export interface CanopyConfig {
|
|
|
315
345
|
deploymentName?: string;
|
|
316
346
|
contentRoot: ContentRoot;
|
|
317
347
|
sourceRoot?: SourceRoot;
|
|
348
|
+
/**
|
|
349
|
+
* The deployment prefix the host Next.js app is served under (e.g. `/preview-123`), matching
|
|
350
|
+
* that app's `next.config` `basePath`. CanopyCMS cannot read `next.config` at runtime, so this
|
|
351
|
+
* must be stated here explicitly if the app sets one — without it, editor requests, the preview
|
|
352
|
+
* iframe `src`, and preview↔editor path matching all target the un-prefixed root and 404 or
|
|
353
|
+
* silently stop syncing. Normalized (leading slash added, trailing slashes stripped) via
|
|
354
|
+
* `joinUrlPrefix` at every use site; unset/empty means the app is served at its origin's root.
|
|
355
|
+
*
|
|
356
|
+
* NOT the same option as `collectStaticParams`'s `basePath` in
|
|
357
|
+
* `packages/canopycms-next/src/static.ts` — that one means "the route prefix of a nested
|
|
358
|
+
* catch-all route" (e.g. `/docs` for `app/docs/[[...slug]]`) and *filters* enumerated entries
|
|
359
|
+
* down to that prefix. Passing this deployment basePath to `collectStaticParams` instead would
|
|
360
|
+
* silently filter out every entry (zero static params, a build that goes green with no pages).
|
|
361
|
+
*/
|
|
362
|
+
basePath?: string;
|
|
318
363
|
editor?: CanopyEditorConfig;
|
|
319
364
|
authPlugin?: AuthPlugin;
|
|
320
365
|
/** Custom URL resolver for entry links. Overrides the default URL computation. */
|
|
@@ -362,6 +407,8 @@ export interface CanopyConfigInput {
|
|
|
362
407
|
deploymentName?: string;
|
|
363
408
|
contentRoot?: string;
|
|
364
409
|
sourceRoot?: string;
|
|
410
|
+
/** See `CanopyConfig.basePath` — the deployment prefix the host Next.js app is served under. */
|
|
411
|
+
basePath?: string;
|
|
365
412
|
editor?: CanopyEditorConfig;
|
|
366
413
|
authPlugin?: AuthPlugin;
|
|
367
414
|
/** Custom URL resolver for entry links. Overrides the default URL computation. */
|
|
@@ -413,7 +460,7 @@ export type FlatSchemaItem = {
|
|
|
413
460
|
* Use flatSchema for O(1) cached access to the flattened schema structure.
|
|
414
461
|
* Schema is loaded from .collection.json files on the server and provided as flatSchema.
|
|
415
462
|
*/
|
|
416
|
-
export type CanopyClientConfig = Pick<CanopyConfig, 'defaultBaseBranch' | 'defaultActiveBranch' | 'contentRoot' | 'editor' | 'mode' | 'entryLinkUrl'> & {
|
|
463
|
+
export type CanopyClientConfig = Pick<CanopyConfig, 'defaultBaseBranch' | 'defaultActiveBranch' | 'contentRoot' | 'editor' | 'mode' | 'entryLinkUrl' | 'basePath'> & {
|
|
417
464
|
flatSchema: FlatSchemaItem[];
|
|
418
465
|
/**
|
|
419
466
|
* `media.publicBaseUrl`, when configured - the only part of `media` safe/
|
|
@@ -431,4 +478,3 @@ export interface ClientOnlyFields {
|
|
|
431
478
|
AccountComponent?: React.ComponentType;
|
|
432
479
|
};
|
|
433
480
|
}
|
|
434
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/config/types.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* from `createEntrySchemaRegistry` so the canonical schema-authoring path runs
|
|
6
6
|
* the same checks. Exported so the test suite can exercise them directly.
|
|
7
7
|
*/
|
|
8
|
-
import type { CanopyConfig } from './types';
|
|
8
|
+
import type { CanopyConfig } from './types.js';
|
|
9
9
|
/**
|
|
10
10
|
* Recursively check that all select fields have options defined.
|
|
11
11
|
* Throws an error if a select field is missing options.
|
|
@@ -59,4 +59,3 @@ export declare const ensureNoGroupsInsideComplexFields: (fields: unknown) => voi
|
|
|
59
59
|
* @throws Error if validation fails
|
|
60
60
|
*/
|
|
61
61
|
export declare const validateCanopyConfig: (config: unknown) => CanopyConfig;
|
|
62
|
-
//# sourceMappingURL=validation.d.ts.map
|
package/dist/config.d.ts
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* CanopyCMS Configuration
|
|
3
3
|
*
|
|
4
4
|
* This file re-exports from the config module for backward compatibility.
|
|
5
|
-
* New code should import directly from './config/index' or './config'.
|
|
5
|
+
* New code should import directly from './config/index.js' or './config'.
|
|
6
6
|
*
|
|
7
7
|
* @module config
|
|
8
8
|
*/
|
|
9
|
-
export * from './config/index';
|
|
10
|
-
//# sourceMappingURL=config.d.ts.map
|
|
9
|
+
export * from './config/index.js';
|
package/dist/config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type LogicalPath, type PhysicalPath, type Slug, type ContentId } from './paths';
|
|
1
|
+
import { type LogicalPath, type PhysicalPath, type Slug, type ContentId } from './paths/index.js';
|
|
2
2
|
export interface IdLocation {
|
|
3
3
|
id: ContentId;
|
|
4
4
|
type: 'entry' | 'collection';
|
|
@@ -267,4 +267,3 @@ export declare function extractEntryTypeFromFilename(filename: string): string |
|
|
|
267
267
|
* If provided and matches first part, strips it from slug
|
|
268
268
|
*/
|
|
269
269
|
export declare function extractSlugFromFilename(filename: string, entryTypeName?: string): Slug;
|
|
270
|
-
//# sourceMappingURL=content-id-index.d.ts.map
|
package/dist/content-id-index.js
CHANGED
|
@@ -63,4 +63,3 @@ export declare function invalidateContentIndexesDurable(root: string): Promise<v
|
|
|
63
63
|
* staleness behavior plus whatever backstop the consumer implements.
|
|
64
64
|
*/
|
|
65
65
|
export declare function invalidateBranchContentCaches(root: string): Promise<void>;
|
|
66
|
-
//# sourceMappingURL=content-index-generation.d.ts.map
|
|
@@ -35,4 +35,3 @@ export declare function registerContentIndexForInvalidation(root: string, target
|
|
|
35
35
|
* index access, so calling this for a root with no live stores is free.
|
|
36
36
|
*/
|
|
37
37
|
export declare function invalidateContentIndexesForRoot(root: string): void;
|
|
38
|
-
//# sourceMappingURL=content-index-registry.d.ts.map
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Extracted from api/entries.ts to avoid duplication.
|
|
5
5
|
*/
|
|
6
|
-
import type { ContentFormat, FlatSchemaItem,
|
|
7
|
-
import type { LogicalPath, PhysicalPath, Slug, ContentId } from './paths/types';
|
|
6
|
+
import type { ContentFormat, FlatSchemaItem, EntrySchema } from './config/index.js';
|
|
7
|
+
import type { LogicalPath, PhysicalPath, Slug, ContentId } from './paths/types.js';
|
|
8
|
+
import { ContentStore, type ReferenceResolveCache } from './content-store.js';
|
|
8
9
|
/**
|
|
9
10
|
* An entry listing item with raw data from the filesystem.
|
|
10
11
|
* Does not include API-specific fields like canEdit.
|
|
@@ -30,60 +31,7 @@ export interface CollectionListItem {
|
|
|
30
31
|
* Returns an empty object on read/parse failure.
|
|
31
32
|
*/
|
|
32
33
|
export declare const readEntryData: (filePath: string, format: ContentFormat, bodyFieldName?: string) => Promise<Record<string, unknown>>;
|
|
33
|
-
|
|
34
|
-
* Parse a Canopy content filename into its `{type}.{slug}.{id}.{ext}` parts.
|
|
35
|
-
*
|
|
36
|
-
* ## Filename grammar
|
|
37
|
-
*
|
|
38
|
-
* Every entry file on disk is named `{type}.{slug}.{id}.{ext}`:
|
|
39
|
-
* - `type` — the entry type name (a key in the collection's `entries` config).
|
|
40
|
-
* - `slug` — the entry's URL slug. May itself contain dots (e.g. a slug of
|
|
41
|
-
* `getting.started.guide`), so the type and ID anchor the split: the ID is
|
|
42
|
-
* always the second-to-last dot-separated segment, and the slug is
|
|
43
|
-
* everything between the type and the ID. The returned `slug` is
|
|
44
|
-
* lowercased.
|
|
45
|
-
* - `id` — a 12-character Base58 content ID (`generateId()`/`isValidId()`).
|
|
46
|
-
* Base58 excludes the ambiguous characters `0`, `O`, `I`, `l` so IDs are
|
|
47
|
-
* unambiguous when read aloud or hand-transcribed. A filename whose
|
|
48
|
-
* would-be ID segment doesn't pass `isValidId` is rejected — the whole
|
|
49
|
-
* parse returns `null`, even if the rest of the shape looks right.
|
|
50
|
-
* - `ext` — the format extension (`.md`, `.mdx`, `.json`, `.yaml`), stripped
|
|
51
|
-
* before parsing and not part of the returned result.
|
|
52
|
-
*
|
|
53
|
-
* @param filename - The bare filename (no directory component). **This precondition is
|
|
54
|
-
* not enforced.** The parser splits purely on `.`, so a `/` or `\` you pass in is not
|
|
55
|
-
* rejected and is not treated as special — it becomes part of whichever segment it
|
|
56
|
-
* falls in, most often the `type` segment (e.g. `'foo/bar.slug.<validId>.md'` parses
|
|
57
|
-
* to `type: 'foo/bar'`). Strip any directory component yourself (e.g.
|
|
58
|
-
* `path.basename(filePath)`) before calling this — every internal caller already does.
|
|
59
|
-
* @param entryTypes - When provided, the parsed `type` segment must match one
|
|
60
|
-
* of these entry types by name, or the parse is rejected (this is how
|
|
61
|
-
* `listCollectionEntries` filters out files that don't belong to the
|
|
62
|
-
* collection's configured entry types). Omit this argument to parse
|
|
63
|
-
* structurally without validating the type against a known list — useful
|
|
64
|
-
* for adopter code that needs to recover `{type, slug, id}` from a
|
|
65
|
-
* filename without having a schema/entry-types list on hand (e.g. a
|
|
66
|
-
* filesystem walk over content for tooling or diagnostics). Even without
|
|
67
|
-
* `entryTypes`, a leading-dot filename (dotfile, editor swap/backup file)
|
|
68
|
-
* is always rejected — an empty string is never a legal type, matching the
|
|
69
|
-
* `filename.startsWith('.')` guard `extractEntryTypeFromFilename` in
|
|
70
|
-
* `content-id-index.ts` already applies.
|
|
71
|
-
* @returns `{ type, slug, id }`, or `null` if `filename` doesn't match the
|
|
72
|
-
* `{type}.{slug}.{id}.{ext}` shape (too few segments, no extension, a
|
|
73
|
-
* leading dot, an invalid ID, or — when `entryTypes` is given — an
|
|
74
|
-
* unrecognized type). `id` is validated (`isValidId`) and safe to trust. **`slug` is
|
|
75
|
-
* not** — it is the raw dot-joined middle segment(s), lowercased, cast to the branded
|
|
76
|
-
* `Slug` type without running `parseSlug`'s validation. A filename with an
|
|
77
|
-
* unconventional slug segment (e.g. containing a space) still parses and still
|
|
78
|
-
* receives the `Slug` brand. Callers that need a validated slug must run the result
|
|
79
|
-
* through `parseSlug` themselves; this function's contract is "split the filename
|
|
80
|
-
* grammar apart," not "validate every part."
|
|
81
|
-
*/
|
|
82
|
-
export declare const parseTypedFilename: (filename: string, entryTypes?: readonly EntryTypeConfig[]) => {
|
|
83
|
-
type: string;
|
|
84
|
-
slug: Slug;
|
|
85
|
-
id: ContentId;
|
|
86
|
-
} | null;
|
|
34
|
+
export { parseTypedFilename } from './utils/typed-filename.js';
|
|
87
35
|
/**
|
|
88
36
|
* A flat entry item from listEntries.
|
|
89
37
|
* Structural metadata is always present; `data` is controlled by the extract option.
|
|
@@ -97,7 +45,12 @@ export interface ListEntriesItem<T = Record<string, unknown>> {
|
|
|
97
45
|
* For regular entries: '/guides/glossary-of-terms'.
|
|
98
46
|
* For a root index entry: '/'.
|
|
99
47
|
*
|
|
100
|
-
* Round-trip safe: `readByUrlPath(item.urlPath)` resolves to the same entry.
|
|
48
|
+
* Round-trip safe: `readByUrlPath(item.urlPath)` resolves to the same entry. That guarantee
|
|
49
|
+
* depends on `slug` passing `parseSlug` — the filename grammar (`utils/typed-filename.ts`)
|
|
50
|
+
* allows a slug to contain characters `parseSlug` rejects (a dot, most commonly), and an entry
|
|
51
|
+
* whose slug does is listed here same as any other but can never be read back by URL.
|
|
52
|
+
* `static/index.ts`'s `assertRoutableSlugs` is the build-time guard that catches this outside
|
|
53
|
+
* this doc comment's promise.
|
|
101
54
|
*/
|
|
102
55
|
urlPath: string;
|
|
103
56
|
/** Entry slug within its collection */
|
|
@@ -152,6 +105,33 @@ export interface ListEntriesOptions<T = Record<string, unknown>> {
|
|
|
152
105
|
rootPath?: string;
|
|
153
106
|
/** Custom sort. */
|
|
154
107
|
sort?: (a: ListEntriesItem<T>, b: ListEntriesItem<T>) => number;
|
|
108
|
+
/**
|
|
109
|
+
* Resolve `reference` fields to the referenced entry's data, the way
|
|
110
|
+
* `read()`/`readByUrlPath()` do — including references nested inside `object` fields,
|
|
111
|
+
* inline `group`s and block templates (so a shared/referenced block finally carries its
|
|
112
|
+
* snippet's content here). Off leaves them as the bare id string, or `null`.
|
|
113
|
+
*
|
|
114
|
+
* **Defaults to `false`, unlike `read()`, which defaults to `true`.** The asymmetry is
|
|
115
|
+
* deliberate rather than an oversight. `data` is `T` and `extract` receives an untyped
|
|
116
|
+
* `Record<string, unknown>`, so turning this on changes a reference from `'a1b2c3d4e5f6'`
|
|
117
|
+
* to `{ ...data, id, slug, collection, urlPath }` with no compile error anywhere to catch it — an
|
|
118
|
+
* `/authors/${data.author}` template silently becomes `/authors/[object Object]`. Opting
|
|
119
|
+
* in is a decision you make per call site, next to the code that reads the field. It also
|
|
120
|
+
* keeps the common batch uses free: `collectStaticPaths` discards `data` outright, and
|
|
121
|
+
* `build/generate-ai-content.ts` lists purely to validate entry shapes.
|
|
122
|
+
*
|
|
123
|
+
* **Cost, and why it is bounded.** Resolution needs a `ContentStore` and its ContentId
|
|
124
|
+
* index, so turning it on adds one index scan per call plus one read per DISTINCT
|
|
125
|
+
* referenced entry — not per referencing entry. A single {@link ReferenceResolveCache}
|
|
126
|
+
* spans the whole call, so a shared block referenced by 40 pages is read once, not 40
|
|
127
|
+
* times. Nothing is constructed and nothing is scanned when this is off.
|
|
128
|
+
*
|
|
129
|
+
* **Path ACLs are not applied to the resolved targets**, matching `read()` exactly: a
|
|
130
|
+
* reference can resolve to an entry the user could not `read()` directly. The entries
|
|
131
|
+
* being LISTED are still ACL-filtered as always, and a filtered-out entry is never
|
|
132
|
+
* resolved at all.
|
|
133
|
+
*/
|
|
134
|
+
resolveReferences?: boolean;
|
|
155
135
|
}
|
|
156
136
|
/**
|
|
157
137
|
* Server-only path-ACL predicate, applied to raw entries before any of their data
|
|
@@ -170,6 +150,43 @@ export interface ContentVisibilityOptions {
|
|
|
170
150
|
/** Return false to drop an entry. Receives the entry's branch-root-relative physical path. */
|
|
171
151
|
shouldInclude?: (physicalPath: PhysicalPath) => boolean;
|
|
172
152
|
}
|
|
153
|
+
/** A collection node from the flattened schema. */
|
|
154
|
+
export type CollectionSchemaItem = Extract<FlatSchemaItem, {
|
|
155
|
+
type: 'collection';
|
|
156
|
+
}>;
|
|
157
|
+
/**
|
|
158
|
+
* Build the `ContentStore` + shared cache that a batch listing resolves references through.
|
|
159
|
+
*
|
|
160
|
+
* Unrelated to the `ReferenceResolver` class in reference-resolver.ts despite the adjacent
|
|
161
|
+
* name — that one resolves an id to a human-readable *display label* for the editor UI. This
|
|
162
|
+
* resolves a reference to the referenced entry's *data* for server-side listings.
|
|
163
|
+
*
|
|
164
|
+
* Constructed lazily by each listing surface, and ONLY when the caller opted in — a store
|
|
165
|
+
* builds a ContentId index on first use, which is a full scan of the content tree, and the
|
|
166
|
+
* default (`resolveReferences` off) must stay a pure filesystem walk with no index at all.
|
|
167
|
+
*
|
|
168
|
+
* One store and one cache per listing call, not per collection: the cache is the reason a
|
|
169
|
+
* shared block referenced from 40 pages costs one read instead of 40, so it has to span the
|
|
170
|
+
* whole batch. Per-call construction is the established shape here — content-reader.ts's
|
|
171
|
+
* `resolveStore` builds a store per read, and content-index-registry.ts holds stores through
|
|
172
|
+
* `WeakRef` + a `FinalizationRegistry` precisely so short-lived instances stay collectable.
|
|
173
|
+
*/
|
|
174
|
+
export declare const createReferenceResolver: (branchRoot: string, flatSchema: FlatSchemaItem[], contentRootName: string) => {
|
|
175
|
+
store: ContentStore;
|
|
176
|
+
cache: ReferenceResolveCache;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Resolve `reference` fields in a collection's listed entries, in place of their raw data.
|
|
180
|
+
*
|
|
181
|
+
* Shared by `listEntries` and `buildContentTree` so both opt into resolution through one
|
|
182
|
+
* implementation. Each entry resolves against its OWN entry type's field list, since that is
|
|
183
|
+
* what says which fields are references at all; an entry whose type has no resolvable schema
|
|
184
|
+
* is returned untouched rather than guessed at.
|
|
185
|
+
*/
|
|
186
|
+
export declare const resolveCollectionItemReferences: (items: CollectionListItem[], collection: CollectionSchemaItem, resolver: {
|
|
187
|
+
store: ContentStore;
|
|
188
|
+
cache: ReferenceResolveCache;
|
|
189
|
+
}) => Promise<CollectionListItem[]>;
|
|
173
190
|
/**
|
|
174
191
|
* List all content entries as a flat array.
|
|
175
192
|
*
|
|
@@ -196,7 +213,7 @@ export interface ContentVisibilityOptions {
|
|
|
196
213
|
* @param branchRoot - Absolute path to the branch workspace root
|
|
197
214
|
* @param flatSchema - Flattened schema items (from flattenSchema)
|
|
198
215
|
* @param contentRootName - The content root name (e.g. "content")
|
|
199
|
-
* @param options - Listing options (extract, filter, rootPath, sort)
|
|
216
|
+
* @param options - Listing options (extract, filter, rootPath, sort, resolveReferences)
|
|
200
217
|
* @param visibility - Internal path-ACL predicate; see `ContentVisibilityOptions`
|
|
201
218
|
*/
|
|
202
219
|
export declare function listEntries<T = Record<string, unknown>>(branchRoot: string, flatSchema: FlatSchemaItem[], contentRootName: string, options?: ListEntriesOptions<T>, visibility?: ContentVisibilityOptions): Promise<ListEntriesItem<T>[]>;
|
|
@@ -231,4 +248,3 @@ export interface SkippedListingFile {
|
|
|
231
248
|
* failure instead of a silent one.
|
|
232
249
|
*/
|
|
233
250
|
export declare const listCollectionEntries: (root: string, collection: FlatSchemaItem, onSkip?: (file: SkippedListingFile) => void) => Promise<CollectionListItem[]>;
|
|
234
|
-
//# sourceMappingURL=content-listing.d.ts.map
|
package/dist/content-listing.js
CHANGED
|
@@ -8,13 +8,13 @@ import path from 'node:path';
|
|
|
8
8
|
import matter from 'gray-matter';
|
|
9
9
|
import { parse as yamlParse } from 'yaml';
|
|
10
10
|
import { findBodyFieldName } from './utils/body-field.js';
|
|
11
|
+
import { computeEntryUrl } from './utils/entry-url.js';
|
|
11
12
|
import { asRecord, getFormatExtension } from './utils/format.js';
|
|
12
13
|
import { resolveCollectionPath } from './content-id-index.js';
|
|
13
14
|
import { validateAndNormalizePath } from './paths/index.js';
|
|
14
15
|
import { isNotFoundError, getErrorMessage } from './utils/error.js';
|
|
15
16
|
import { createDebugLogger } from './utils/debug.js';
|
|
16
|
-
import {
|
|
17
|
-
import { ContentStoreError } from './content-store.js';
|
|
17
|
+
import { ContentStore, ContentStoreError, createReferenceResolveCache, } from './content-store.js';
|
|
18
18
|
import { isBuildMode } from './build-mode.js';
|
|
19
19
|
const log = createDebugLogger({ prefix: 'ContentListing' });
|
|
20
20
|
/**
|
|
@@ -45,7 +45,17 @@ export const readEntryData = async (filePath, format, bodyFieldName = 'body') =>
|
|
|
45
45
|
return asRecord(yamlParse(raw));
|
|
46
46
|
}
|
|
47
47
|
const parsed = matter(raw);
|
|
48
|
-
|
|
48
|
+
// Copy before writing the body in. gray-matter keeps a PROCESS-GLOBAL cache keyed by file
|
|
49
|
+
// content and hands every caller the same `data` object instance, so mutating it in place
|
|
50
|
+
// wrote the body into a shared object that later, unrelated `matter()` calls then saw as
|
|
51
|
+
// frontmatter. Concretely, before this copy: listing a collection that contains an md entry
|
|
52
|
+
// poisoned the cache, and a subsequent reference resolution to that same entry — which goes
|
|
53
|
+
// through `ContentStore.read()`, whose md branch calls `matter()` again — returned the body
|
|
54
|
+
// as a frontmatter field. So a resolved md snippet came back WITH `body` on a whole-site
|
|
55
|
+
// listing and WITHOUT it on one scoped past its own collection: the same entry, two shapes,
|
|
56
|
+
// decided by unrelated scoping. Regression coverage lives with the reference-resolution
|
|
57
|
+
// tests in content-listing.test.ts.
|
|
58
|
+
const data = { ...(parsed.data ?? {}) };
|
|
49
59
|
if (parsed.content) {
|
|
50
60
|
data[bodyFieldName] = parsed.content;
|
|
51
61
|
}
|
|
@@ -58,87 +68,52 @@ export const readEntryData = async (filePath, format, bodyFieldName = 'body') =>
|
|
|
58
68
|
return {};
|
|
59
69
|
}
|
|
60
70
|
};
|
|
71
|
+
// `parseTypedFilename` now lives in utils/typed-filename.ts so dependency-light modules can
|
|
72
|
+
// use it without importing this one (which pulls in ContentStore). Re-exported here because
|
|
73
|
+
// this is where callers -- and `canopycms/server` -- have always imported it from.
|
|
74
|
+
export { parseTypedFilename } from './utils/typed-filename.js';
|
|
75
|
+
import { parseTypedFilename } from './utils/typed-filename.js';
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// Reference resolution for batch listings
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
61
79
|
/**
|
|
62
|
-
*
|
|
80
|
+
* Build the `ContentStore` + shared cache that a batch listing resolves references through.
|
|
63
81
|
*
|
|
64
|
-
*
|
|
82
|
+
* Unrelated to the `ReferenceResolver` class in reference-resolver.ts despite the adjacent
|
|
83
|
+
* name — that one resolves an id to a human-readable *display label* for the editor UI. This
|
|
84
|
+
* resolves a reference to the referenced entry's *data* for server-side listings.
|
|
65
85
|
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* `getting.started.guide`), so the type and ID anchor the split: the ID is
|
|
70
|
-
* always the second-to-last dot-separated segment, and the slug is
|
|
71
|
-
* everything between the type and the ID. The returned `slug` is
|
|
72
|
-
* lowercased.
|
|
73
|
-
* - `id` — a 12-character Base58 content ID (`generateId()`/`isValidId()`).
|
|
74
|
-
* Base58 excludes the ambiguous characters `0`, `O`, `I`, `l` so IDs are
|
|
75
|
-
* unambiguous when read aloud or hand-transcribed. A filename whose
|
|
76
|
-
* would-be ID segment doesn't pass `isValidId` is rejected — the whole
|
|
77
|
-
* parse returns `null`, even if the rest of the shape looks right.
|
|
78
|
-
* - `ext` — the format extension (`.md`, `.mdx`, `.json`, `.yaml`), stripped
|
|
79
|
-
* before parsing and not part of the returned result.
|
|
86
|
+
* Constructed lazily by each listing surface, and ONLY when the caller opted in — a store
|
|
87
|
+
* builds a ContentId index on first use, which is a full scan of the content tree, and the
|
|
88
|
+
* default (`resolveReferences` off) must stay a pure filesystem walk with no index at all.
|
|
80
89
|
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
* `path.basename(filePath)`) before calling this — every internal caller already does.
|
|
87
|
-
* @param entryTypes - When provided, the parsed `type` segment must match one
|
|
88
|
-
* of these entry types by name, or the parse is rejected (this is how
|
|
89
|
-
* `listCollectionEntries` filters out files that don't belong to the
|
|
90
|
-
* collection's configured entry types). Omit this argument to parse
|
|
91
|
-
* structurally without validating the type against a known list — useful
|
|
92
|
-
* for adopter code that needs to recover `{type, slug, id}` from a
|
|
93
|
-
* filename without having a schema/entry-types list on hand (e.g. a
|
|
94
|
-
* filesystem walk over content for tooling or diagnostics). Even without
|
|
95
|
-
* `entryTypes`, a leading-dot filename (dotfile, editor swap/backup file)
|
|
96
|
-
* is always rejected — an empty string is never a legal type, matching the
|
|
97
|
-
* `filename.startsWith('.')` guard `extractEntryTypeFromFilename` in
|
|
98
|
-
* `content-id-index.ts` already applies.
|
|
99
|
-
* @returns `{ type, slug, id }`, or `null` if `filename` doesn't match the
|
|
100
|
-
* `{type}.{slug}.{id}.{ext}` shape (too few segments, no extension, a
|
|
101
|
-
* leading dot, an invalid ID, or — when `entryTypes` is given — an
|
|
102
|
-
* unrecognized type). `id` is validated (`isValidId`) and safe to trust. **`slug` is
|
|
103
|
-
* not** — it is the raw dot-joined middle segment(s), lowercased, cast to the branded
|
|
104
|
-
* `Slug` type without running `parseSlug`'s validation. A filename with an
|
|
105
|
-
* unconventional slug segment (e.g. containing a space) still parses and still
|
|
106
|
-
* receives the `Slug` brand. Callers that need a validated slug must run the result
|
|
107
|
-
* through `parseSlug` themselves; this function's contract is "split the filename
|
|
108
|
-
* grammar apart," not "validate every part."
|
|
90
|
+
* One store and one cache per listing call, not per collection: the cache is the reason a
|
|
91
|
+
* shared block referenced from 40 pages costs one read instead of 40, so it has to span the
|
|
92
|
+
* whole batch. Per-call construction is the established shape here — content-reader.ts's
|
|
93
|
+
* `resolveStore` builds a store per read, and content-index-registry.ts holds stores through
|
|
94
|
+
* `WeakRef` + a `FinalizationRegistry` precisely so short-lived instances stay collectable.
|
|
109
95
|
*/
|
|
110
|
-
export const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const
|
|
124
|
-
if (
|
|
125
|
-
return
|
|
126
|
-
const potentialType = parts[0];
|
|
127
|
-
// When a known-types list is supplied, the first segment must match one of
|
|
128
|
-
// them. Without it, any non-empty first segment is accepted as the type.
|
|
129
|
-
if (entryTypes && !entryTypes.some((e) => e.name === potentialType)) {
|
|
130
|
-
return null;
|
|
131
|
-
}
|
|
132
|
-
const id = parts[parts.length - 1];
|
|
133
|
-
if (!isValidId(id))
|
|
134
|
-
return null;
|
|
135
|
-
const slug = parts.slice(1, -1).join('.').toLowerCase();
|
|
96
|
+
export const createReferenceResolver = (branchRoot, flatSchema, contentRootName) => ({
|
|
97
|
+
store: new ContentStore(branchRoot, flatSchema, { contentRootName }),
|
|
98
|
+
cache: createReferenceResolveCache(),
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* Resolve `reference` fields in a collection's listed entries, in place of their raw data.
|
|
102
|
+
*
|
|
103
|
+
* Shared by `listEntries` and `buildContentTree` so both opt into resolution through one
|
|
104
|
+
* implementation. Each entry resolves against its OWN entry type's field list, since that is
|
|
105
|
+
* what says which fields are references at all; an entry whose type has no resolvable schema
|
|
106
|
+
* is returned untouched rather than guessed at.
|
|
107
|
+
*/
|
|
108
|
+
export const resolveCollectionItemReferences = async (items, collection, resolver) => Promise.all(items.map(async (item) => {
|
|
109
|
+
const fields = collection.entries?.find((e) => e.name === item.entryType)?.schema;
|
|
110
|
+
if (!fields)
|
|
111
|
+
return item;
|
|
136
112
|
return {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
id: id,
|
|
113
|
+
...item,
|
|
114
|
+
data: await resolver.store.resolveReferences(item.data, fields, resolver.cache),
|
|
140
115
|
};
|
|
141
|
-
};
|
|
116
|
+
}));
|
|
142
117
|
/**
|
|
143
118
|
* List all content entries as a flat array.
|
|
144
119
|
*
|
|
@@ -165,7 +140,7 @@ export const parseTypedFilename = (filename, entryTypes) => {
|
|
|
165
140
|
* @param branchRoot - Absolute path to the branch workspace root
|
|
166
141
|
* @param flatSchema - Flattened schema items (from flattenSchema)
|
|
167
142
|
* @param contentRootName - The content root name (e.g. "content")
|
|
168
|
-
* @param options - Listing options (extract, filter, rootPath, sort)
|
|
143
|
+
* @param options - Listing options (extract, filter, rootPath, sort, resolveReferences)
|
|
169
144
|
* @param visibility - Internal path-ACL predicate; see `ContentVisibilityOptions`
|
|
170
145
|
*/
|
|
171
146
|
export async function listEntries(branchRoot, flatSchema, contentRootName, options, visibility) {
|
|
@@ -182,10 +157,21 @@ export async function listEntries(branchRoot, flatSchema, contentRootName, optio
|
|
|
182
157
|
// data never reaches `extract` (let alone the returned items).
|
|
183
158
|
const shouldInclude = visibility?.shouldInclude;
|
|
184
159
|
const skippedFiles = [];
|
|
160
|
+
// One store + cache for the whole call, or nothing at all when the caller did not opt in.
|
|
161
|
+
// See the `resolveReferences` option for the cost this buys back.
|
|
162
|
+
const resolver = options?.resolveReferences
|
|
163
|
+
? createReferenceResolver(branchRoot, flatSchema, contentRootName)
|
|
164
|
+
: null;
|
|
185
165
|
const collectionResults = await Promise.all(collections.map(async (collection) => {
|
|
186
166
|
const entries = await listCollectionEntries(branchRoot, collection, (file) => skippedFiles.push(file));
|
|
187
167
|
const visible = shouldInclude ? entries.filter((e) => shouldInclude(e.physicalPath)) : entries;
|
|
188
|
-
|
|
168
|
+
// Resolve AFTER the visibility filter (a denied entry is never resolved, so its
|
|
169
|
+
// references cost nothing and leak nothing) and BEFORE the mapping below, so
|
|
170
|
+
// `extract` and `filter` both see resolved data — which is the entire point.
|
|
171
|
+
const resolved = resolver
|
|
172
|
+
? await resolveCollectionItemReferences(visible, collection, resolver)
|
|
173
|
+
: visible;
|
|
174
|
+
return resolved.map((entry) => ({ entry, collection }));
|
|
189
175
|
}));
|
|
190
176
|
// Build-time only: fail loudly rather than silently shipping a build with a page missing. See
|
|
191
177
|
// the build-time-only-failure note in this function's own doc comment above. Only files that
|
|
@@ -214,9 +200,17 @@ export async function listEntries(branchRoot, flatSchema, contentRootName, optio
|
|
|
214
200
|
? entry.logicalPath.slice(contentPrefix.length)
|
|
215
201
|
: entry.logicalPath;
|
|
216
202
|
const pathSegments = pathWithoutRoot.split('/').filter(Boolean);
|
|
217
|
-
// Compute urlPath
|
|
218
|
-
|
|
219
|
-
|
|
203
|
+
// Compute urlPath (collapses an `index` entry to its parent collection path) through
|
|
204
|
+
// the SHARED rule rather than a local copy of it. A resolved reference now carries a
|
|
205
|
+
// `urlPath` too, and the whole point of that field is that it addresses the same entry
|
|
206
|
+
// this listing does, so the two must not be free to drift apart.
|
|
207
|
+
//
|
|
208
|
+
// One deliberate copy of this rule remains: `content-tree.ts`'s `defaultBuildPath`,
|
|
209
|
+
// which is exported for adopters to extend and also handles the collection case
|
|
210
|
+
// `computeEntryUrl` does not model. It agrees today; folding it in is tracked in
|
|
211
|
+
// `.claude/future-tasks/default-build-path-url-rule-copy.md`.
|
|
212
|
+
// `content-listing.test.ts` pins the listing-vs-resolved-reference agreement.
|
|
213
|
+
const urlPath = computeEntryUrl(entry.collectionPath, entry.slug, contentRootName);
|
|
220
214
|
const raw = entry.data;
|
|
221
215
|
const meta = {
|
|
222
216
|
entryPath: entry.logicalPath,
|
|
@@ -398,4 +392,3 @@ export const listCollectionEntries = async (root, collection, onSkip) => {
|
|
|
398
392
|
}));
|
|
399
393
|
return entries.filter((e) => e !== null);
|
|
400
394
|
};
|
|
401
|
-
//# sourceMappingURL=content-listing.js.map
|
package/dist/content-reader.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type ContentId, type LogicalPath, type PhysicalPath, type Slug } from './paths';
|
|
2
|
-
import type { CanopyServices } from './services';
|
|
3
|
-
import type { BranchContext } from './types';
|
|
4
|
-
import type { CanopyUser } from './user';
|
|
1
|
+
import { type ContentId, type LogicalPath, type PhysicalPath, type Slug } from './paths/index.js';
|
|
2
|
+
import type { CanopyServices } from './services.js';
|
|
3
|
+
import type { BranchContext } from './types.js';
|
|
4
|
+
import type { CanopyUser } from './user.js';
|
|
5
5
|
export interface ContentReaderOptions {
|
|
6
6
|
services: CanopyServices;
|
|
7
7
|
basePathOverride?: string;
|
|
@@ -73,4 +73,3 @@ export interface ContentReader {
|
|
|
73
73
|
* Falls back to creating the branch workspace (metadata + checkout) if missing.
|
|
74
74
|
*/
|
|
75
75
|
export declare const createContentReader: (options: ContentReaderOptions) => ContentReader;
|
|
76
|
-
//# sourceMappingURL=content-reader.d.ts.map
|