@elytracms/core 0.0.6
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/LICENSE +21 -0
- package/dist/clipboard/build.d.ts +77 -0
- package/dist/clipboard/build.js +128 -0
- package/dist/clipboard/build.js.map +1 -0
- package/dist/clipboard/clipboard.d.ts +33 -0
- package/dist/clipboard/clipboard.js +45 -0
- package/dist/clipboard/clipboard.js.map +1 -0
- package/dist/clipboard/fragment.d.ts +112 -0
- package/dist/clipboard/fragment.js +79 -0
- package/dist/clipboard/fragment.js.map +1 -0
- package/dist/clipboard/html.d.ts +26 -0
- package/dist/clipboard/html.js +82 -0
- package/dist/clipboard/html.js.map +1 -0
- package/dist/clipboard/index.d.ts +15 -0
- package/dist/clipboard/index.js +16 -0
- package/dist/clipboard/index.js.map +1 -0
- package/dist/clipboard/references.d.ts +50 -0
- package/dist/clipboard/references.js +0 -0
- package/dist/clipboard/references.js.map +1 -0
- package/dist/clipboard/serialize.d.ts +69 -0
- package/dist/clipboard/serialize.js +130 -0
- package/dist/clipboard/serialize.js.map +1 -0
- package/dist/cms-core/collections.d.ts +82 -0
- package/dist/cms-core/collections.js +187 -0
- package/dist/cms-core/collections.js.map +1 -0
- package/dist/cms-core/documents.d.ts +71 -0
- package/dist/cms-core/documents.js +67 -0
- package/dist/cms-core/documents.js.map +1 -0
- package/dist/cms-core/envelopes.d.ts +80 -0
- package/dist/cms-core/envelopes.js +124 -0
- package/dist/cms-core/envelopes.js.map +1 -0
- package/dist/cms-core/fields.d.ts +220 -0
- package/dist/cms-core/fields.js +250 -0
- package/dist/cms-core/fields.js.map +1 -0
- package/dist/cms-core/fixtures.d.ts +92 -0
- package/dist/cms-core/fixtures.js +357 -0
- package/dist/cms-core/fixtures.js.map +1 -0
- package/dist/cms-core/hierarchy.d.ts +113 -0
- package/dist/cms-core/hierarchy.js +223 -0
- package/dist/cms-core/hierarchy.js.map +1 -0
- package/dist/cms-core/index.d.ts +25 -0
- package/dist/cms-core/index.js +26 -0
- package/dist/cms-core/index.js.map +1 -0
- package/dist/cms-core/infer.d.ts +103 -0
- package/dist/cms-core/infer.js +57 -0
- package/dist/cms-core/infer.js.map +1 -0
- package/dist/cms-core/issues.d.ts +92 -0
- package/dist/cms-core/issues.js +74 -0
- package/dist/cms-core/issues.js.map +1 -0
- package/dist/cms-core/json-schema.d.ts +25 -0
- package/dist/cms-core/json-schema.js +110 -0
- package/dist/cms-core/json-schema.js.map +1 -0
- package/dist/cms-core/localization.d.ts +51 -0
- package/dist/cms-core/localization.js +89 -0
- package/dist/cms-core/localization.js.map +1 -0
- package/dist/cms-core/routes.d.ts +76 -0
- package/dist/cms-core/routes.js +220 -0
- package/dist/cms-core/routes.js.map +1 -0
- package/dist/cms-core/self-type.d.ts +41 -0
- package/dist/cms-core/self-type.js +191 -0
- package/dist/cms-core/self-type.js.map +1 -0
- package/dist/cms-core/url-for-document.d.ts +39 -0
- package/dist/cms-core/url-for-document.js +138 -0
- package/dist/cms-core/url-for-document.js.map +1 -0
- package/dist/cms-core/validate-document.d.ts +121 -0
- package/dist/cms-core/validate-document.js +871 -0
- package/dist/cms-core/validate-document.js.map +1 -0
- package/dist/cms-core/versions.d.ts +75 -0
- package/dist/cms-core/versions.js +97 -0
- package/dist/cms-core/versions.js.map +1 -0
- package/dist/collaboration/approval.d.ts +68 -0
- package/dist/collaboration/approval.js +104 -0
- package/dist/collaboration/approval.js.map +1 -0
- package/dist/collaboration/collaboration.d.ts +49 -0
- package/dist/collaboration/collaboration.js +56 -0
- package/dist/collaboration/collaboration.js.map +1 -0
- package/dist/collaboration/comments.d.ts +72 -0
- package/dist/collaboration/comments.js +118 -0
- package/dist/collaboration/comments.js.map +1 -0
- package/dist/collaboration/core.d.ts +25 -0
- package/dist/collaboration/core.js +26 -0
- package/dist/collaboration/core.js.map +1 -0
- package/dist/collaboration/index.d.ts +14 -0
- package/dist/collaboration/index.js +15 -0
- package/dist/collaboration/index.js.map +1 -0
- package/dist/collaboration/presence.d.ts +62 -0
- package/dist/collaboration/presence.js +85 -0
- package/dist/collaboration/presence.js.map +1 -0
- package/dist/collaboration/publishing.d.ts +60 -0
- package/dist/collaboration/publishing.js +93 -0
- package/dist/collaboration/publishing.js.map +1 -0
- package/dist/collaboration/versions.d.ts +52 -0
- package/dist/collaboration/versions.js +81 -0
- package/dist/collaboration/versions.js.map +1 -0
- package/dist/component-registry/index.d.ts +3 -0
- package/dist/component-registry/index.js +4 -0
- package/dist/component-registry/index.js.map +1 -0
- package/dist/component-registry/issues.d.ts +6 -0
- package/dist/component-registry/issues.js +2 -0
- package/dist/component-registry/issues.js.map +1 -0
- package/dist/component-registry/manifest.d.ts +164 -0
- package/dist/component-registry/manifest.js +129 -0
- package/dist/component-registry/manifest.js.map +1 -0
- package/dist/component-registry/registry.d.ts +33 -0
- package/dist/component-registry/registry.js +90 -0
- package/dist/component-registry/registry.js.map +1 -0
- package/dist/content/__fixtures__/filterable-collections.d.ts +14 -0
- package/dist/content/__fixtures__/filterable-collections.js +15 -0
- package/dist/content/__fixtures__/filterable-collections.js.map +1 -0
- package/dist/content/__fixtures__/sample-accessor-types.d.ts +56 -0
- package/dist/content/__fixtures__/sample-accessor-types.js +5 -0
- package/dist/content/__fixtures__/sample-accessor-types.js.map +1 -0
- package/dist/content/__fixtures__/sample-delivery-types.d.ts +122 -0
- package/dist/content/__fixtures__/sample-delivery-types.js +5 -0
- package/dist/content/__fixtures__/sample-delivery-types.js.map +1 -0
- package/dist/content/assets.d.ts +53 -0
- package/dist/content/assets.js +38 -0
- package/dist/content/assets.js.map +1 -0
- package/dist/content/binding-sources.d.ts +53 -0
- package/dist/content/binding-sources.js +73 -0
- package/dist/content/binding-sources.js.map +1 -0
- package/dist/content/client.d.ts +90 -0
- package/dist/content/client.js +383 -0
- package/dist/content/client.js.map +1 -0
- package/dist/content/codegen.d.ts +54 -0
- package/dist/content/codegen.js +305 -0
- package/dist/content/codegen.js.map +1 -0
- package/dist/content/context.d.ts +38 -0
- package/dist/content/context.js +21 -0
- package/dist/content/context.js.map +1 -0
- package/dist/content/cursor.d.ts +33 -0
- package/dist/content/cursor.js +104 -0
- package/dist/content/cursor.js.map +1 -0
- package/dist/content/index.d.ts +28 -0
- package/dist/content/index.js +29 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/locale.d.ts +30 -0
- package/dist/content/locale.js +26 -0
- package/dist/content/locale.js.map +1 -0
- package/dist/content/perspective.d.ts +29 -0
- package/dist/content/perspective.js +31 -0
- package/dist/content/perspective.js.map +1 -0
- package/dist/content/populate.d.ts +25 -0
- package/dist/content/populate.js +22 -0
- package/dist/content/populate.js.map +1 -0
- package/dist/content/query.d.ts +122 -0
- package/dist/content/query.js +257 -0
- package/dist/content/query.js.map +1 -0
- package/dist/content/raw.d.ts +13 -0
- package/dist/content/raw.js +14 -0
- package/dist/content/raw.js.map +1 -0
- package/dist/content/resolve.d.ts +97 -0
- package/dist/content/resolve.js +261 -0
- package/dist/content/resolve.js.map +1 -0
- package/dist/content/serialize.d.ts +30 -0
- package/dist/content/serialize.js +57 -0
- package/dist/content/serialize.js.map +1 -0
- package/dist/content/tags.d.ts +54 -0
- package/dist/content/tags.js +40 -0
- package/dist/content/tags.js.map +1 -0
- package/dist/data-binding/fixtures.d.ts +20 -0
- package/dist/data-binding/fixtures.js +47 -0
- package/dist/data-binding/fixtures.js.map +1 -0
- package/dist/data-binding/index.d.ts +14 -0
- package/dist/data-binding/index.js +15 -0
- package/dist/data-binding/index.js.map +1 -0
- package/dist/data-binding/issues.d.ts +45 -0
- package/dist/data-binding/issues.js +46 -0
- package/dist/data-binding/issues.js.map +1 -0
- package/dist/data-binding/resolve.d.ts +87 -0
- package/dist/data-binding/resolve.js +204 -0
- package/dist/data-binding/resolve.js.map +1 -0
- package/dist/data-binding/sample.d.ts +21 -0
- package/dist/data-binding/sample.js +23 -0
- package/dist/data-binding/sample.js.map +1 -0
- package/dist/data-binding/sources.d.ts +225 -0
- package/dist/data-binding/sources.js +154 -0
- package/dist/data-binding/sources.js.map +1 -0
- package/dist/data-binding/tokens.d.ts +62 -0
- package/dist/data-binding/tokens.js +150 -0
- package/dist/data-binding/tokens.js.map +1 -0
- package/dist/design-tokens/css.d.ts +34 -0
- package/dist/design-tokens/css.js +51 -0
- package/dist/design-tokens/css.js.map +1 -0
- package/dist/design-tokens/index.d.ts +10 -0
- package/dist/design-tokens/index.js +11 -0
- package/dist/design-tokens/index.js.map +1 -0
- package/dist/design-tokens/style-guide.d.ts +30 -0
- package/dist/design-tokens/style-guide.js +31 -0
- package/dist/design-tokens/style-guide.js.map +1 -0
- package/dist/design-tokens/tokens.d.ts +89 -0
- package/dist/design-tokens/tokens.js +112 -0
- package/dist/design-tokens/tokens.js.map +1 -0
- package/dist/export-sync/builder-source.d.ts +85 -0
- package/dist/export-sync/builder-source.js +124 -0
- package/dist/export-sync/builder-source.js.map +1 -0
- package/dist/export-sync/check.d.ts +61 -0
- package/dist/export-sync/check.js +126 -0
- package/dist/export-sync/check.js.map +1 -0
- package/dist/export-sync/cli.d.ts +89 -0
- package/dist/export-sync/cli.js +323 -0
- package/dist/export-sync/cli.js.map +1 -0
- package/dist/export-sync/core.d.ts +58 -0
- package/dist/export-sync/core.js +41 -0
- package/dist/export-sync/core.js.map +1 -0
- package/dist/export-sync/eject.d.ts +28 -0
- package/dist/export-sync/eject.js +21 -0
- package/dist/export-sync/eject.js.map +1 -0
- package/dist/export-sync/fixtures.d.ts +25 -0
- package/dist/export-sync/fixtures.js +87 -0
- package/dist/export-sync/fixtures.js.map +1 -0
- package/dist/export-sync/generate.d.ts +7 -0
- package/dist/export-sync/generate.js +505 -0
- package/dist/export-sync/generate.js.map +1 -0
- package/dist/export-sync/index.d.ts +37 -0
- package/dist/export-sync/index.js +39 -0
- package/dist/export-sync/index.js.map +1 -0
- package/dist/export-sync/init.d.ts +123 -0
- package/dist/export-sync/init.js +234 -0
- package/dist/export-sync/init.js.map +1 -0
- package/dist/export-sync/manifest-host.d.ts +48 -0
- package/dist/export-sync/manifest-host.js +73 -0
- package/dist/export-sync/manifest-host.js.map +1 -0
- package/dist/export-sync/node.d.ts +20 -0
- package/dist/export-sync/node.js +101 -0
- package/dist/export-sync/node.js.map +1 -0
- package/dist/export-sync/push.d.ts +76 -0
- package/dist/export-sync/push.js +197 -0
- package/dist/export-sync/push.js.map +1 -0
- package/dist/export-sync/registry-sync-client.d.ts +59 -0
- package/dist/export-sync/registry-sync-client.js +97 -0
- package/dist/export-sync/registry-sync-client.js.map +1 -0
- package/dist/export-sync/sync.d.ts +47 -0
- package/dist/export-sync/sync.js +47 -0
- package/dist/export-sync/sync.js.map +1 -0
- package/dist/export-sync/typegen.d.ts +40 -0
- package/dist/export-sync/typegen.js +45 -0
- package/dist/export-sync/typegen.js.map +1 -0
- package/dist/export-sync/validate.d.ts +19 -0
- package/dist/export-sync/validate.js +102 -0
- package/dist/export-sync/validate.js.map +1 -0
- package/dist/export-sync/watch.d.ts +66 -0
- package/dist/export-sync/watch.js +70 -0
- package/dist/export-sync/watch.js.map +1 -0
- package/dist/operations/assets.d.ts +198 -0
- package/dist/operations/assets.js +75 -0
- package/dist/operations/assets.js.map +1 -0
- package/dist/operations/authorization.d.ts +49 -0
- package/dist/operations/authorization.js +128 -0
- package/dist/operations/authorization.js.map +1 -0
- package/dist/operations/changesets.d.ts +160 -0
- package/dist/operations/changesets.js +442 -0
- package/dist/operations/changesets.js.map +1 -0
- package/dist/operations/client.d.ts +49 -0
- package/dist/operations/client.js +57 -0
- package/dist/operations/client.js.map +1 -0
- package/dist/operations/core.d.ts +238 -0
- package/dist/operations/core.js +269 -0
- package/dist/operations/core.js.map +1 -0
- package/dist/operations/documents.d.ts +432 -0
- package/dist/operations/documents.js +344 -0
- package/dist/operations/documents.js.map +1 -0
- package/dist/operations/graph.d.ts +138 -0
- package/dist/operations/graph.js +78 -0
- package/dist/operations/graph.js.map +1 -0
- package/dist/operations/index.d.ts +19 -0
- package/dist/operations/index.js +20 -0
- package/dist/operations/index.js.map +1 -0
- package/dist/operations/members.d.ts +87 -0
- package/dist/operations/members.js +56 -0
- package/dist/operations/members.js.map +1 -0
- package/dist/operations/publishing.d.ts +89 -0
- package/dist/operations/publishing.js +57 -0
- package/dist/operations/publishing.js.map +1 -0
- package/dist/operations/references.d.ts +222 -0
- package/dist/operations/references.js +177 -0
- package/dist/operations/references.js.map +1 -0
- package/dist/operations/schema.d.ts +413 -0
- package/dist/operations/schema.js +138 -0
- package/dist/operations/schema.js.map +1 -0
- package/dist/operations/tokens.d.ts +79 -0
- package/dist/operations/tokens.js +102 -0
- package/dist/operations/tokens.js.map +1 -0
- package/dist/persistence/adapter.d.ts +79 -0
- package/dist/persistence/adapter.js +55 -0
- package/dist/persistence/adapter.js.map +1 -0
- package/dist/persistence/assets.d.ts +120 -0
- package/dist/persistence/assets.js +141 -0
- package/dist/persistence/assets.js.map +1 -0
- package/dist/persistence/backend-validation.d.ts +43 -0
- package/dist/persistence/backend-validation.js +57 -0
- package/dist/persistence/backend-validation.js.map +1 -0
- package/dist/persistence/cli-tokens.d.ts +50 -0
- package/dist/persistence/cli-tokens.js +66 -0
- package/dist/persistence/cli-tokens.js.map +1 -0
- package/dist/persistence/cms.d.ts +148 -0
- package/dist/persistence/cms.js +232 -0
- package/dist/persistence/cms.js.map +1 -0
- package/dist/persistence/contract-scenarios.d.ts +73 -0
- package/dist/persistence/contract-scenarios.js +496 -0
- package/dist/persistence/contract-scenarios.js.map +1 -0
- package/dist/persistence/core.d.ts +96 -0
- package/dist/persistence/core.js +110 -0
- package/dist/persistence/core.js.map +1 -0
- package/dist/persistence/graph.d.ts +61 -0
- package/dist/persistence/graph.js +98 -0
- package/dist/persistence/graph.js.map +1 -0
- package/dist/persistence/index.d.ts +22 -0
- package/dist/persistence/index.js +23 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/members.d.ts +70 -0
- package/dist/persistence/members.js +0 -0
- package/dist/persistence/members.js.map +1 -0
- package/dist/persistence/publishing.d.ts +59 -0
- package/dist/persistence/publishing.js +95 -0
- package/dist/persistence/publishing.js.map +1 -0
- package/dist/persistence/reference-extraction.d.ts +44 -0
- package/dist/persistence/reference-extraction.js +204 -0
- package/dist/persistence/reference-extraction.js.map +1 -0
- package/dist/persistence/reference-indexing.d.ts +68 -0
- package/dist/persistence/reference-indexing.js +112 -0
- package/dist/persistence/reference-indexing.js.map +1 -0
- package/dist/persistence/references.d.ts +257 -0
- package/dist/persistence/references.js +0 -0
- package/dist/persistence/references.js.map +1 -0
- package/dist/persistence/seed.d.ts +55 -0
- package/dist/persistence/seed.js +102 -0
- package/dist/persistence/seed.js.map +1 -0
- package/dist/persistence/self-maintaining-adapter.d.ts +41 -0
- package/dist/persistence/self-maintaining-adapter.js +79 -0
- package/dist/persistence/self-maintaining-adapter.js.map +1 -0
- package/dist/plugins/asset-storage.d.ts +76 -0
- package/dist/plugins/asset-storage.js +104 -0
- package/dist/plugins/asset-storage.js.map +1 -0
- package/dist/plugins/component-package.d.ts +54 -0
- package/dist/plugins/component-package.js +92 -0
- package/dist/plugins/component-package.js.map +1 -0
- package/dist/plugins/data-sources.d.ts +78 -0
- package/dist/plugins/data-sources.js +99 -0
- package/dist/plugins/data-sources.js.map +1 -0
- package/dist/plugins/examples.d.ts +47 -0
- package/dist/plugins/examples.js +205 -0
- package/dist/plugins/examples.js.map +1 -0
- package/dist/plugins/export-targets.d.ts +47 -0
- package/dist/plugins/export-targets.js +78 -0
- package/dist/plugins/export-targets.js.map +1 -0
- package/dist/plugins/field-types.d.ts +86 -0
- package/dist/plugins/field-types.js +93 -0
- package/dist/plugins/field-types.js.map +1 -0
- package/dist/plugins/hooks.d.ts +60 -0
- package/dist/plugins/hooks.js +94 -0
- package/dist/plugins/hooks.js.map +1 -0
- package/dist/plugins/index.d.ts +27 -0
- package/dist/plugins/index.js +28 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/marketplace.d.ts +90 -0
- package/dist/plugins/marketplace.js +110 -0
- package/dist/plugins/marketplace.js.map +1 -0
- package/dist/plugins/plugin.d.ts +107 -0
- package/dist/plugins/plugin.js +122 -0
- package/dist/plugins/plugin.js.map +1 -0
- package/dist/plugins/templates.d.ts +66 -0
- package/dist/plugins/templates.js +74 -0
- package/dist/plugins/templates.js.map +1 -0
- package/dist/project-graph/binding.d.ts +68 -0
- package/dist/project-graph/binding.js +39 -0
- package/dist/project-graph/binding.js.map +1 -0
- package/dist/project-graph/container.d.ts +126 -0
- package/dist/project-graph/container.js +221 -0
- package/dist/project-graph/container.js.map +1 -0
- package/dist/project-graph/edit.d.ts +66 -0
- package/dist/project-graph/edit.js +201 -0
- package/dist/project-graph/edit.js.map +1 -0
- package/dist/project-graph/fixtures.d.ts +51 -0
- package/dist/project-graph/fixtures.js +224 -0
- package/dist/project-graph/fixtures.js.map +1 -0
- package/dist/project-graph/ids.d.ts +17 -0
- package/dist/project-graph/ids.js +19 -0
- package/dist/project-graph/ids.js.map +1 -0
- package/dist/project-graph/index.d.ts +12 -0
- package/dist/project-graph/index.js +13 -0
- package/dist/project-graph/index.js.map +1 -0
- package/dist/project-graph/issues.d.ts +61 -0
- package/dist/project-graph/issues.js +44 -0
- package/dist/project-graph/issues.js.map +1 -0
- package/dist/project-graph/json.d.ts +6 -0
- package/dist/project-graph/json.js +10 -0
- package/dist/project-graph/json.js.map +1 -0
- package/dist/project-graph/node.d.ts +48 -0
- package/dist/project-graph/node.js +42 -0
- package/dist/project-graph/node.js.map +1 -0
- package/dist/project-graph/normalize.d.ts +17 -0
- package/dist/project-graph/normalize.js +110 -0
- package/dist/project-graph/normalize.js.map +1 -0
- package/dist/project-graph/serialize.d.ts +36 -0
- package/dist/project-graph/serialize.js +51 -0
- package/dist/project-graph/serialize.js.map +1 -0
- package/dist/project-graph/structure.d.ts +40 -0
- package/dist/project-graph/structure.js +36 -0
- package/dist/project-graph/structure.js.map +1 -0
- package/dist/project-graph/validate.d.ts +84 -0
- package/dist/project-graph/validate.js +158 -0
- package/dist/project-graph/validate.js.map +1 -0
- package/dist/rich-text/adapter.d.ts +43 -0
- package/dist/rich-text/adapter.js +24 -0
- package/dist/rich-text/adapter.js.map +1 -0
- package/dist/rich-text/dom-editor.d.ts +101 -0
- package/dist/rich-text/dom-editor.js +482 -0
- package/dist/rich-text/dom-editor.js.map +1 -0
- package/dist/rich-text/embed.d.ts +70 -0
- package/dist/rich-text/embed.js +70 -0
- package/dist/rich-text/embed.js.map +1 -0
- package/dist/rich-text/fixtures.d.ts +25 -0
- package/dist/rich-text/fixtures.js +115 -0
- package/dist/rich-text/fixtures.js.map +1 -0
- package/dist/rich-text/html.d.ts +5 -0
- package/dist/rich-text/html.js +309 -0
- package/dist/rich-text/html.js.map +1 -0
- package/dist/rich-text/index.d.ts +19 -0
- package/dist/rich-text/index.js +20 -0
- package/dist/rich-text/index.js.map +1 -0
- package/dist/rich-text/markdown.d.ts +7 -0
- package/dist/rich-text/markdown.js +235 -0
- package/dist/rich-text/markdown.js.map +1 -0
- package/dist/rich-text/portable-text.d.ts +50 -0
- package/dist/rich-text/portable-text.js +223 -0
- package/dist/rich-text/portable-text.js.map +1 -0
- package/dist/rich-text/registry.d.ts +48 -0
- package/dist/rich-text/registry.js +16 -0
- package/dist/rich-text/registry.js.map +1 -0
- package/dist/rich-text/render.d.ts +69 -0
- package/dist/rich-text/render.js +205 -0
- package/dist/rich-text/render.js.map +1 -0
- package/dist/rich-text/schema.d.ts +86 -0
- package/dist/rich-text/schema.js +80 -0
- package/dist/rich-text/schema.js.map +1 -0
- package/dist/rich-text/test-support.d.ts +7 -0
- package/dist/rich-text/test-support.js +8 -0
- package/dist/rich-text/test-support.js.map +1 -0
- package/dist/runtime-renderer/client.d.ts +14 -0
- package/dist/runtime-renderer/client.js +15 -0
- package/dist/runtime-renderer/client.js.map +1 -0
- package/dist/runtime-renderer/condition.d.ts +8 -0
- package/dist/runtime-renderer/condition.js +48 -0
- package/dist/runtime-renderer/condition.js.map +1 -0
- package/dist/runtime-renderer/content-client.d.ts +62 -0
- package/dist/runtime-renderer/content-client.js +37 -0
- package/dist/runtime-renderer/content-client.js.map +1 -0
- package/dist/runtime-renderer/context.d.ts +185 -0
- package/dist/runtime-renderer/context.js +7 -0
- package/dist/runtime-renderer/context.js.map +1 -0
- package/dist/runtime-renderer/fallback.d.ts +39 -0
- package/dist/runtime-renderer/fallback.js +45 -0
- package/dist/runtime-renderer/fallback.js.map +1 -0
- package/dist/runtime-renderer/index.d.ts +13 -0
- package/dist/runtime-renderer/index.js +13 -0
- package/dist/runtime-renderer/index.js.map +1 -0
- package/dist/runtime-renderer/primitives.d.ts +85 -0
- package/dist/runtime-renderer/primitives.js +442 -0
- package/dist/runtime-renderer/primitives.js.map +1 -0
- package/dist/runtime-renderer/render.d.ts +138 -0
- package/dist/runtime-renderer/render.js +825 -0
- package/dist/runtime-renderer/render.js.map +1 -0
- package/dist/runtime-renderer/rich-text.d.ts +26 -0
- package/dist/runtime-renderer/rich-text.js +113 -0
- package/dist/runtime-renderer/rich-text.js.map +1 -0
- package/dist/starter-kits/index.d.ts +13 -0
- package/dist/starter-kits/index.js +14 -0
- package/dist/starter-kits/index.js.map +1 -0
- package/dist/starter-kits/instantiate.d.ts +29 -0
- package/dist/starter-kits/instantiate.js +24 -0
- package/dist/starter-kits/instantiate.js.map +1 -0
- package/dist/starter-kits/kit.d.ts +61 -0
- package/dist/starter-kits/kit.js +37 -0
- package/dist/starter-kits/kit.js.map +1 -0
- package/dist/starter-kits/kits.d.ts +7 -0
- package/dist/starter-kits/kits.js +201 -0
- package/dist/starter-kits/kits.js.map +1 -0
- package/dist/starter-kits/manifests.d.ts +7 -0
- package/dist/starter-kits/manifests.js +111 -0
- package/dist/starter-kits/manifests.js.map +1 -0
- package/dist/starter-kits/upgrade.d.ts +39 -0
- package/dist/starter-kits/upgrade.js +54 -0
- package/dist/starter-kits/upgrade.js.map +1 -0
- package/dist/starter-kits/validate.d.ts +16 -0
- package/dist/starter-kits/validate.js +77 -0
- package/dist/starter-kits/validate.js.map +1 -0
- package/dist/studio-core/context.d.ts +27 -0
- package/dist/studio-core/context.js +44 -0
- package/dist/studio-core/context.js.map +1 -0
- package/dist/studio-core/errors.d.ts +58 -0
- package/dist/studio-core/errors.js +74 -0
- package/dist/studio-core/errors.js.map +1 -0
- package/dist/studio-core/fixtures.d.ts +18 -0
- package/dist/studio-core/fixtures.js +83 -0
- package/dist/studio-core/fixtures.js.map +1 -0
- package/dist/studio-core/ids.d.ts +22 -0
- package/dist/studio-core/ids.js +33 -0
- package/dist/studio-core/ids.js.map +1 -0
- package/dist/studio-core/index.d.ts +11 -0
- package/dist/studio-core/index.js +12 -0
- package/dist/studio-core/index.js.map +1 -0
- package/dist/studio-core/issues.d.ts +50 -0
- package/dist/studio-core/issues.js +33 -0
- package/dist/studio-core/issues.js.map +1 -0
- package/dist/studio-core/metadata.d.ts +109 -0
- package/dist/studio-core/metadata.js +74 -0
- package/dist/studio-core/metadata.js.map +1 -0
- package/dist/studio-core/repository.d.ts +73 -0
- package/dist/studio-core/repository.js +202 -0
- package/dist/studio-core/repository.js.map +1 -0
- package/dist/studio-core/sections.d.ts +73 -0
- package/dist/studio-core/sections.js +68 -0
- package/dist/studio-core/sections.js.map +1 -0
- package/dist/studio-core/validate.d.ts +15 -0
- package/dist/studio-core/validate.js +119 -0
- package/dist/studio-core/validate.js.map +1 -0
- package/dist/studio-core/workspace-config.d.ts +587 -0
- package/dist/studio-core/workspace-config.js +434 -0
- package/dist/studio-core/workspace-config.js.map +1 -0
- package/package.json +104 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { collectionDefSchema, createCollectionRegistry, documentKey, documentSchema, isCmsValid, } from '@elytracms/core/cms-core';
|
|
3
|
+
import { PersistenceValidationError, RecordNotFoundError, cloneRecord, recordMetaSchema, createSequentialClock, } from './core';
|
|
4
|
+
/** The persisted CMS schema for a project: its collection definitions (brief §7.4, §10). */
|
|
5
|
+
export const cmsSchemaRecordSchema = recordMetaSchema.extend({
|
|
6
|
+
projectId: z.string().min(1),
|
|
7
|
+
collections: z.array(collectionDefSchema),
|
|
8
|
+
});
|
|
9
|
+
/**
|
|
10
|
+
* A persisted CMS document. The stored `document` is the continuous working
|
|
11
|
+
* **draft** (every edit updates it); `publishedVersion` pins which recorded
|
|
12
|
+
* version is currently live (the Sanity draft/published model, EC-224). Absent
|
|
13
|
+
* `publishedVersion` means the document has never been published / is unpublished.
|
|
14
|
+
* Localized variants ride along on the `CmsDocument` itself.
|
|
15
|
+
*/
|
|
16
|
+
export const cmsDocumentRecordSchema = recordMetaSchema.extend({
|
|
17
|
+
projectId: z.string().min(1),
|
|
18
|
+
document: documentSchema,
|
|
19
|
+
/** The recorded version currently published/live (EC-224); absent = unpublished. */
|
|
20
|
+
publishedVersion: z.number().int().positive().optional(),
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* An immutable snapshot of a document at one recorded version (EC-224). Append-only,
|
|
24
|
+
* mirroring {@link GraphRevisionRecord} but document-scoped: one row per version,
|
|
25
|
+
* keyed by (projectId, collection, docId, version). Created on publish (the promoted
|
|
26
|
+
* draft) and by an explicit pre-restore snapshot, never on a plain draft edit.
|
|
27
|
+
*/
|
|
28
|
+
export const documentVersionRecordSchema = z.object({
|
|
29
|
+
projectId: z.string().min(1),
|
|
30
|
+
collection: z.string().min(1),
|
|
31
|
+
docId: z.string().min(1),
|
|
32
|
+
/** 1-based, monotonically increasing per (projectId, collection, docId). */
|
|
33
|
+
version: z.number().int().positive(),
|
|
34
|
+
/** Full document snapshot at this version. */
|
|
35
|
+
snapshot: documentSchema,
|
|
36
|
+
createdAt: z.string().min(1),
|
|
37
|
+
/** Optional label, e.g. "published" or an author note. */
|
|
38
|
+
label: z.string().optional(),
|
|
39
|
+
});
|
|
40
|
+
export class InMemoryCmsRepository {
|
|
41
|
+
schemas = new Map();
|
|
42
|
+
/** projectId → (documentKey → record). */
|
|
43
|
+
documents = new Map();
|
|
44
|
+
/** projectId → (documentKey → versions in ascending version order). */
|
|
45
|
+
versions = new Map();
|
|
46
|
+
clock;
|
|
47
|
+
constructor(options = {}) {
|
|
48
|
+
this.clock = options.clock ?? createSequentialClock();
|
|
49
|
+
for (const schema of options.seedSchemas ?? []) {
|
|
50
|
+
const parsed = cmsSchemaRecordSchema.parse(schema);
|
|
51
|
+
this.schemas.set(parsed.projectId, parsed);
|
|
52
|
+
}
|
|
53
|
+
for (const doc of options.seedDocuments ?? []) {
|
|
54
|
+
const parsed = cmsDocumentRecordSchema.parse(doc);
|
|
55
|
+
this.docMap(parsed.projectId).set(documentKey(parsed.document), parsed);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
docMap(projectId) {
|
|
59
|
+
const existing = this.documents.get(projectId);
|
|
60
|
+
if (existing)
|
|
61
|
+
return existing;
|
|
62
|
+
const created = new Map();
|
|
63
|
+
this.documents.set(projectId, created);
|
|
64
|
+
return created;
|
|
65
|
+
}
|
|
66
|
+
versionMap(projectId) {
|
|
67
|
+
const existing = this.versions.get(projectId);
|
|
68
|
+
if (existing)
|
|
69
|
+
return existing;
|
|
70
|
+
const created = new Map();
|
|
71
|
+
this.versions.set(projectId, created);
|
|
72
|
+
return created;
|
|
73
|
+
}
|
|
74
|
+
async saveSchema(projectId, collections) {
|
|
75
|
+
// Reuse the canonical structural validation (duplicate ids, bad select options).
|
|
76
|
+
const registry = createCollectionRegistry(collections);
|
|
77
|
+
if (!isCmsValid(registry.issues)) {
|
|
78
|
+
throw new PersistenceValidationError('CMS schema is invalid and cannot be persisted.', registry.issues
|
|
79
|
+
.filter((i) => i.severity === 'error')
|
|
80
|
+
.map((i) => ({ code: i.code, message: i.message, path: i.path, domain: 'cms' })));
|
|
81
|
+
}
|
|
82
|
+
const now = this.clock();
|
|
83
|
+
const previous = this.schemas.get(projectId);
|
|
84
|
+
const record = {
|
|
85
|
+
projectId,
|
|
86
|
+
collections: registry.list(),
|
|
87
|
+
createdAt: previous?.createdAt ?? now,
|
|
88
|
+
updatedAt: now,
|
|
89
|
+
};
|
|
90
|
+
this.schemas.set(projectId, record);
|
|
91
|
+
return cloneRecord(record);
|
|
92
|
+
}
|
|
93
|
+
async getSchema(projectId) {
|
|
94
|
+
const record = this.schemas.get(projectId);
|
|
95
|
+
if (!record)
|
|
96
|
+
throw new RecordNotFoundError('cms-schema', projectId);
|
|
97
|
+
return cloneRecord(record);
|
|
98
|
+
}
|
|
99
|
+
async findSchema(projectId) {
|
|
100
|
+
const record = this.schemas.get(projectId);
|
|
101
|
+
return record ? cloneRecord(record) : undefined;
|
|
102
|
+
}
|
|
103
|
+
async upsertDocument(projectId, document) {
|
|
104
|
+
// The persistence layer is a pure document store (EC-183, AD-11): CMS
|
|
105
|
+
// collection schemas are config-owned and collection-membership validation
|
|
106
|
+
// lives in `@elytracms/core/cms-core` `validateDocument` (run by the studio
|
|
107
|
+
// pre-dispatch), not the write path. We still parse the canonical document
|
|
108
|
+
// shape so malformed blobs never reach storage.
|
|
109
|
+
const parsedDoc = documentSchema.parse(document);
|
|
110
|
+
const map = this.docMap(projectId);
|
|
111
|
+
const key = documentKey(parsedDoc);
|
|
112
|
+
const now = this.clock();
|
|
113
|
+
const previous = map.get(key);
|
|
114
|
+
const record = {
|
|
115
|
+
projectId,
|
|
116
|
+
document: parsedDoc,
|
|
117
|
+
// A draft edit must NOT clear the live pin (EC-224, the Sanity model:
|
|
118
|
+
// editing the working draft never unpublishes). Convex patches the row
|
|
119
|
+
// (absent keys untouched); the in-memory store must preserve it the same
|
|
120
|
+
// way — only publish/unpublish move the pointer.
|
|
121
|
+
...(previous?.publishedVersion !== undefined
|
|
122
|
+
? { publishedVersion: previous.publishedVersion }
|
|
123
|
+
: {}),
|
|
124
|
+
createdAt: previous?.createdAt ?? now,
|
|
125
|
+
updatedAt: now,
|
|
126
|
+
};
|
|
127
|
+
map.set(key, record);
|
|
128
|
+
return cloneRecord(record);
|
|
129
|
+
}
|
|
130
|
+
async getDocument(projectId, ref) {
|
|
131
|
+
const record = this.documents.get(projectId)?.get(documentKey(ref));
|
|
132
|
+
if (!record)
|
|
133
|
+
throw new RecordNotFoundError('cms-document', `${projectId}/${documentKey(ref)}`);
|
|
134
|
+
return cloneRecord(record);
|
|
135
|
+
}
|
|
136
|
+
async findDocument(projectId, ref) {
|
|
137
|
+
const record = this.documents.get(projectId)?.get(documentKey(ref));
|
|
138
|
+
return record ? cloneRecord(record) : undefined;
|
|
139
|
+
}
|
|
140
|
+
async listDocuments(projectId, collection) {
|
|
141
|
+
const all = [...(this.documents.get(projectId)?.values() ?? [])];
|
|
142
|
+
const filtered = collection ? all.filter((r) => r.document.collection === collection) : all;
|
|
143
|
+
return filtered
|
|
144
|
+
.sort((a, b) => (documentKey(a.document) < documentKey(b.document) ? -1 : 1))
|
|
145
|
+
.map(cloneRecord);
|
|
146
|
+
}
|
|
147
|
+
async deleteDocument(projectId, ref) {
|
|
148
|
+
const map = this.documents.get(projectId);
|
|
149
|
+
const key = documentKey(ref);
|
|
150
|
+
if (!map?.has(key))
|
|
151
|
+
throw new RecordNotFoundError('cms-document', `${projectId}/${key}`);
|
|
152
|
+
map.delete(key);
|
|
153
|
+
// Cascade the version history (EC-224) — no orphaned snapshots survive a delete.
|
|
154
|
+
this.versions.get(projectId)?.delete(key);
|
|
155
|
+
}
|
|
156
|
+
async saveDocumentVersion(projectId, snapshot, options = {}) {
|
|
157
|
+
const parsed = documentSchema.parse(snapshot);
|
|
158
|
+
const key = documentKey(parsed);
|
|
159
|
+
const list = this.versionMap(projectId).get(key) ?? [];
|
|
160
|
+
const version = (list.at(-1)?.version ?? 0) + 1;
|
|
161
|
+
const record = {
|
|
162
|
+
projectId,
|
|
163
|
+
collection: parsed.collection,
|
|
164
|
+
docId: parsed.id,
|
|
165
|
+
version,
|
|
166
|
+
snapshot: parsed,
|
|
167
|
+
createdAt: this.clock(),
|
|
168
|
+
...(options.label ? { label: options.label } : {}),
|
|
169
|
+
};
|
|
170
|
+
list.push(record);
|
|
171
|
+
this.versionMap(projectId).set(key, list);
|
|
172
|
+
return cloneRecord(record);
|
|
173
|
+
}
|
|
174
|
+
async listDocumentVersions(projectId, ref) {
|
|
175
|
+
const list = this.versions.get(projectId)?.get(documentKey(ref)) ?? [];
|
|
176
|
+
return [...list].reverse().map(cloneRecord);
|
|
177
|
+
}
|
|
178
|
+
async listAllDocumentVersions(projectId) {
|
|
179
|
+
const all = [];
|
|
180
|
+
for (const list of this.versions.get(projectId)?.values() ?? [])
|
|
181
|
+
all.push(...list);
|
|
182
|
+
return all
|
|
183
|
+
.sort((a, b) => {
|
|
184
|
+
const ka = documentKey({ collection: a.collection, id: a.docId });
|
|
185
|
+
const kb = documentKey({ collection: b.collection, id: b.docId });
|
|
186
|
+
if (ka !== kb)
|
|
187
|
+
return ka < kb ? -1 : 1;
|
|
188
|
+
return a.version - b.version;
|
|
189
|
+
})
|
|
190
|
+
.map(cloneRecord);
|
|
191
|
+
}
|
|
192
|
+
async getDocumentVersion(projectId, ref, version) {
|
|
193
|
+
const key = documentKey(ref);
|
|
194
|
+
const found = this.versions
|
|
195
|
+
.get(projectId)
|
|
196
|
+
?.get(key)
|
|
197
|
+
?.find((v) => v.version === version);
|
|
198
|
+
if (!found) {
|
|
199
|
+
throw new RecordNotFoundError('cms-document-version', `${projectId}/${key}#${version}`);
|
|
200
|
+
}
|
|
201
|
+
return cloneRecord(found);
|
|
202
|
+
}
|
|
203
|
+
async publishDocumentVersion(projectId, ref, version) {
|
|
204
|
+
const existing = await this.getDocument(projectId, ref);
|
|
205
|
+
// The pinned version must exist (throws RecordNotFoundError otherwise).
|
|
206
|
+
await this.getDocumentVersion(projectId, ref, version);
|
|
207
|
+
const updated = {
|
|
208
|
+
...existing,
|
|
209
|
+
publishedVersion: version,
|
|
210
|
+
updatedAt: this.clock(),
|
|
211
|
+
};
|
|
212
|
+
this.docMap(projectId).set(documentKey(ref), updated);
|
|
213
|
+
return cloneRecord(updated);
|
|
214
|
+
}
|
|
215
|
+
async unpublishDocument(projectId, ref) {
|
|
216
|
+
const existing = await this.getDocument(projectId, ref);
|
|
217
|
+
if (existing.publishedVersion === undefined) {
|
|
218
|
+
throw new PersistenceValidationError('Document is not currently published.', [
|
|
219
|
+
{
|
|
220
|
+
code: 'invalid-transition',
|
|
221
|
+
message: 'Cannot unpublish: the document has no published version.',
|
|
222
|
+
domain: 'cms',
|
|
223
|
+
},
|
|
224
|
+
]);
|
|
225
|
+
}
|
|
226
|
+
const { publishedVersion: _cleared, ...rest } = existing;
|
|
227
|
+
const updated = { ...rest, updatedAt: this.clock() };
|
|
228
|
+
this.docMap(projectId).set(documentKey(ref), updated);
|
|
229
|
+
return cloneRecord(updated);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=cms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cms.js","sourceRoot":"","sources":["../../src/persistence/cms.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { CollectionDef } from '@elytracms/core/cms-core';
|
|
2
|
+
import type { PersistenceAdapter } from './adapter';
|
|
3
|
+
/**
|
|
4
|
+
* EC-153 — the adapter-contract scenario suite, exported as plain reusable
|
|
5
|
+
* functions so **every** {@link PersistenceAdapter} implementation runs the
|
|
6
|
+
* *same* behavioural checks (EC-049 promoted from in-memory-only tests):
|
|
7
|
+
*
|
|
8
|
+
* - `packages/persistence` runs them against `InMemoryPersistenceAdapter`.
|
|
9
|
+
* - `apps/builder` runs them against `ConvexPersistenceAdapter` over the
|
|
10
|
+
* fake-ctx Convex backend (deployment-free, real Convex function handlers).
|
|
11
|
+
*
|
|
12
|
+
* The module is deliberately test-framework-agnostic (no vitest import — it is
|
|
13
|
+
* exported from the package index, which browser code consumes): scenarios
|
|
14
|
+
* throw `ContractAssertionError` on divergence and the host suite turns each
|
|
15
|
+
* scenario into one `it(...)`.
|
|
16
|
+
*/
|
|
17
|
+
/** Everything a scenario may assume about the world it runs in. */
|
|
18
|
+
export interface ContractContext {
|
|
19
|
+
adapter: PersistenceAdapter;
|
|
20
|
+
/**
|
|
21
|
+
* An existing project the session user administers. Scenarios write all
|
|
22
|
+
* project-scoped records here.
|
|
23
|
+
*/
|
|
24
|
+
projectId: string;
|
|
25
|
+
/**
|
|
26
|
+
* A second project the session user administers, guaranteed to hold **no**
|
|
27
|
+
* graph/schema/content — backs the missing-record scenarios (Convex role
|
|
28
|
+
* guards require membership even to learn that nothing exists).
|
|
29
|
+
*/
|
|
30
|
+
emptyProjectId: string;
|
|
31
|
+
/** The authenticated caller (Convex guards + caller-scoped queries use it). */
|
|
32
|
+
sessionUserId: string;
|
|
33
|
+
/**
|
|
34
|
+
* Seed the project's CMS collection schema for the scenario. Adapter-specific
|
|
35
|
+
* (EC-183, AD-11): the in-memory adapter persists it via `saveSchema`; the
|
|
36
|
+
* Convex adapter's schema is config-owned (injected at construction, no
|
|
37
|
+
* `cmsSchemas` table), so this is a no-op there. Scenarios that need a schema
|
|
38
|
+
* present call this instead of `adapter.cms.saveSchema` so both adapters work.
|
|
39
|
+
*/
|
|
40
|
+
seedSchema(collections: readonly CollectionDef[]): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
/** Builds a *fresh* context per scenario — scenarios never share state. */
|
|
43
|
+
export type ContractHarness = () => Promise<ContractContext>;
|
|
44
|
+
export interface ContractScenario {
|
|
45
|
+
domain: 'graphs' | 'cms' | 'assets' | 'publishing' | 'members' | 'cli-tokens' | 'references' | 'round-trip';
|
|
46
|
+
name: string;
|
|
47
|
+
/**
|
|
48
|
+
* Asserts isolation between two projects (uses `emptyProjectId`). Not
|
|
49
|
+
* meaningful for single-tenant backends where one deployment IS one project
|
|
50
|
+
* (EC-179) — those harnesses filter these out; multi-project adapters
|
|
51
|
+
* (in-memory) run them all.
|
|
52
|
+
*/
|
|
53
|
+
crossProject?: boolean;
|
|
54
|
+
run(ctx: ContractContext): Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
export declare class ContractAssertionError extends Error {
|
|
57
|
+
constructor(message: string);
|
|
58
|
+
}
|
|
59
|
+
export declare function ensure(condition: unknown, message: string): asserts condition;
|
|
60
|
+
export declare function ensureEqual(actual: unknown, expected: unknown, label: string): void;
|
|
61
|
+
/** Awaits `work` and demands it rejects with an instance of `errorClass`. */
|
|
62
|
+
export declare function ensureRejects(work: Promise<unknown>, errorClass: abstract new (...args: never[]) => Error, label: string): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* The acceptance-criterion round-trip (EC-153): edit the graph → a new revision
|
|
65
|
+
* record → publish that revision → the deployment pins it — against whatever
|
|
66
|
+
* adapter the harness provides.
|
|
67
|
+
*/
|
|
68
|
+
export declare const graphEditPublishRoundTrip: ContractScenario;
|
|
69
|
+
/**
|
|
70
|
+
* Every behavioural scenario both adapters must pass (EC-049 → EC-153).
|
|
71
|
+
* Hosts iterate this list and run each scenario against a fresh harness.
|
|
72
|
+
*/
|
|
73
|
+
export declare const PERSISTENCE_CONTRACT_SCENARIOS: readonly ContractScenario[];
|