@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,89 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const tokenValueSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
3
|
+
value: z.ZodString;
|
|
4
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
5
|
+
ref: z.ZodString;
|
|
6
|
+
}, z.core.$strip>]>;
|
|
7
|
+
export type TokenValue = z.infer<typeof tokenValueSchema>;
|
|
8
|
+
/** A semantic colour role with its light and dark resolutions. */
|
|
9
|
+
export declare const colorTokenSchema: z.ZodObject<{
|
|
10
|
+
name: z.ZodString;
|
|
11
|
+
role: z.ZodString;
|
|
12
|
+
light: z.ZodUnion<readonly [z.ZodObject<{
|
|
13
|
+
value: z.ZodString;
|
|
14
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
15
|
+
ref: z.ZodString;
|
|
16
|
+
}, z.core.$strip>]>;
|
|
17
|
+
dark: z.ZodUnion<readonly [z.ZodObject<{
|
|
18
|
+
value: z.ZodString;
|
|
19
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
20
|
+
ref: z.ZodString;
|
|
21
|
+
}, z.core.$strip>]>;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
export type ColorToken = z.infer<typeof colorTokenSchema>;
|
|
24
|
+
/**
|
|
25
|
+
* The semantic colour roles. Order is meaningful: it drives the emitted CSS-variable order and
|
|
26
|
+
* the style-guide swatch order. Cool-slate neutrals + a confident cobalt primary; monospace and
|
|
27
|
+
* status colours (success/warning/destructive/info) are first-class.
|
|
28
|
+
*/
|
|
29
|
+
export declare const colorTokens: readonly ColorToken[];
|
|
30
|
+
/** A scale step (radius, font size, spacing) — a name mapped to a CSS length. */
|
|
31
|
+
export declare const scaleStepSchema: z.ZodObject<{
|
|
32
|
+
name: z.ZodString;
|
|
33
|
+
value: z.ZodString;
|
|
34
|
+
note: z.ZodOptional<z.ZodString>;
|
|
35
|
+
}, z.core.$strip>;
|
|
36
|
+
export type ScaleStep = z.infer<typeof scaleStepSchema>;
|
|
37
|
+
/** Base radius; the Tailwind theme derives sm/md/lg/xl from it. */
|
|
38
|
+
export declare const radiusBase = "0.5rem";
|
|
39
|
+
/** The type scale (Tailwind's default rem steps), documented for the style guide. */
|
|
40
|
+
export declare const typeScale: readonly ScaleStep[];
|
|
41
|
+
/** The spacing scale used by the named layout primitives (Stack/Row/Grid `gap`). */
|
|
42
|
+
export declare const spacingScale: readonly ScaleStep[];
|
|
43
|
+
/** The radius scale derived from {@link radiusBase}. */
|
|
44
|
+
export declare const radiusScale: readonly ScaleStep[];
|
|
45
|
+
/** The fonts the system standardises on. */
|
|
46
|
+
export declare const fonts: {
|
|
47
|
+
readonly sans: "'Hanken Grotesk Variable', ui-sans-serif, system-ui, sans-serif";
|
|
48
|
+
readonly mono: "'JetBrains Mono Variable', ui-monospace, 'SF Mono', monospace";
|
|
49
|
+
};
|
|
50
|
+
/** The full token set — the single source of truth. */
|
|
51
|
+
export declare const designTokens: {
|
|
52
|
+
readonly colors: readonly {
|
|
53
|
+
name: string;
|
|
54
|
+
role: string;
|
|
55
|
+
light: {
|
|
56
|
+
ref: string;
|
|
57
|
+
} | {
|
|
58
|
+
value: string;
|
|
59
|
+
};
|
|
60
|
+
dark: {
|
|
61
|
+
ref: string;
|
|
62
|
+
} | {
|
|
63
|
+
value: string;
|
|
64
|
+
};
|
|
65
|
+
}[];
|
|
66
|
+
readonly radiusBase: "0.5rem";
|
|
67
|
+
readonly typeScale: readonly {
|
|
68
|
+
name: string;
|
|
69
|
+
value: string;
|
|
70
|
+
note?: string | undefined;
|
|
71
|
+
}[];
|
|
72
|
+
readonly spacingScale: readonly {
|
|
73
|
+
name: string;
|
|
74
|
+
value: string;
|
|
75
|
+
note?: string | undefined;
|
|
76
|
+
}[];
|
|
77
|
+
readonly radiusScale: readonly {
|
|
78
|
+
name: string;
|
|
79
|
+
value: string;
|
|
80
|
+
note?: string | undefined;
|
|
81
|
+
}[];
|
|
82
|
+
readonly fonts: {
|
|
83
|
+
readonly sans: "'Hanken Grotesk Variable', ui-sans-serif, system-ui, sans-serif";
|
|
84
|
+
readonly mono: "'JetBrains Mono Variable', ui-monospace, 'SF Mono', monospace";
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
export type DesignTokens = typeof designTokens;
|
|
88
|
+
/** A colour mode. */
|
|
89
|
+
export type ColorMode = 'light' | 'dark';
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Canonical design tokens (brief §8, EC-091/092). One typed source of truth for the visual
|
|
4
|
+
* system: semantic color roles with light/dark values, plus radius, type scale and spacing
|
|
5
|
+
* scale. The Studio's Tailwind theme, the generated CSS-variable export (EC-093) and the visual
|
|
6
|
+
* style guide (EC-094) all derive from these — so there is no drift between them.
|
|
7
|
+
*
|
|
8
|
+
* Colours are OKLCH (perceptually uniform; predictable light/dark pairs). A token value is
|
|
9
|
+
* either a literal colour or a reference to another token (so `*-foreground` roles can track
|
|
10
|
+
* `foreground` without duplicating its value).
|
|
11
|
+
*/
|
|
12
|
+
const colorRefSchema = z.object({ ref: z.string().min(1) });
|
|
13
|
+
const colorLiteralSchema = z.object({ value: z.string().min(1) });
|
|
14
|
+
export const tokenValueSchema = z.union([colorLiteralSchema, colorRefSchema]);
|
|
15
|
+
/** A semantic colour role with its light and dark resolutions. */
|
|
16
|
+
export const colorTokenSchema = z.object({
|
|
17
|
+
name: z.string().min(1),
|
|
18
|
+
/** Human description of the role — surfaced in the style guide. */
|
|
19
|
+
role: z.string(),
|
|
20
|
+
light: tokenValueSchema,
|
|
21
|
+
dark: tokenValueSchema,
|
|
22
|
+
});
|
|
23
|
+
const lit = (value) => ({ value });
|
|
24
|
+
const ref = (name) => ({ ref: name });
|
|
25
|
+
/**
|
|
26
|
+
* The semantic colour roles. Order is meaningful: it drives the emitted CSS-variable order and
|
|
27
|
+
* the style-guide swatch order. Cool-slate neutrals + a confident cobalt primary; monospace and
|
|
28
|
+
* status colours (success/warning/destructive/info) are first-class.
|
|
29
|
+
*/
|
|
30
|
+
export const colorTokens = [
|
|
31
|
+
{ name: 'background', role: 'App canvas background', light: lit('oklch(0.985 0.002 250)'), dark: lit('oklch(0.176 0.012 264)') },
|
|
32
|
+
{ name: 'foreground', role: 'Primary text', light: lit('oklch(0.21 0.02 264)'), dark: lit('oklch(0.95 0.005 250)') },
|
|
33
|
+
{ name: 'card', role: 'Card surface', light: lit('oklch(1 0 0)'), dark: lit('oklch(0.205 0.013 264)') },
|
|
34
|
+
{ name: 'card-foreground', role: 'Text on cards', light: ref('foreground'), dark: ref('foreground') },
|
|
35
|
+
{ name: 'panel', role: 'Inspector / rail surface', light: lit('oklch(0.974 0.003 255)'), dark: lit('oklch(0.196 0.013 264)') },
|
|
36
|
+
{ name: 'panel-foreground', role: 'Text on panels', light: ref('foreground'), dark: ref('foreground') },
|
|
37
|
+
{ name: 'popover', role: 'Floating surface', light: lit('oklch(1 0 0)'), dark: lit('oklch(0.214 0.013 264)') },
|
|
38
|
+
{ name: 'popover-foreground', role: 'Text on popovers', light: ref('foreground'), dark: ref('foreground') },
|
|
39
|
+
{ name: 'muted', role: 'Subtle fill', light: lit('oklch(0.955 0.004 255)'), dark: lit('oklch(0.256 0.013 264)') },
|
|
40
|
+
{ name: 'muted-foreground', role: 'Secondary text', light: lit('oklch(0.5 0.018 260)'), dark: lit('oklch(0.66 0.02 258)') },
|
|
41
|
+
{ name: 'border', role: 'Hairline borders', light: lit('oklch(0.908 0.005 260)'), dark: lit('oklch(0.278 0.013 264)') },
|
|
42
|
+
{ name: 'input', role: 'Form control borders', light: lit('oklch(0.908 0.005 260)'), dark: lit('oklch(0.3 0.013 264)') },
|
|
43
|
+
{ name: 'ring', role: 'Focus ring', light: lit('oklch(0.55 0.17 256)'), dark: lit('oklch(0.66 0.16 256)') },
|
|
44
|
+
{ name: 'primary', role: 'Primary action (cobalt)', light: lit('oklch(0.55 0.17 256)'), dark: lit('oklch(0.66 0.16 256)') },
|
|
45
|
+
{ name: 'primary-foreground', role: 'Text on primary', light: lit('oklch(0.99 0.005 250)'), dark: lit('oklch(0.16 0.02 264)') },
|
|
46
|
+
{ name: 'secondary', role: 'Secondary action', light: lit('oklch(0.955 0.004 255)'), dark: lit('oklch(0.256 0.013 264)') },
|
|
47
|
+
{ name: 'secondary-foreground', role: 'Text on secondary', light: lit('oklch(0.3 0.02 264)'), dark: lit('oklch(0.92 0.005 250)') },
|
|
48
|
+
{ name: 'accent', role: 'Selected / emphasis fill', light: lit('oklch(0.95 0.022 256)'), dark: lit('oklch(0.288 0.03 256)') },
|
|
49
|
+
{ name: 'accent-foreground', role: 'Text on accent', light: lit('oklch(0.36 0.07 256)'), dark: lit('oklch(0.88 0.03 256)') },
|
|
50
|
+
{ name: 'success', role: 'Success / valid', light: lit('oklch(0.58 0.13 150)'), dark: lit('oklch(0.7 0.14 150)') },
|
|
51
|
+
{ name: 'success-foreground', role: 'Text on success', light: lit('oklch(0.99 0.01 150)'), dark: lit('oklch(0.16 0.03 150)') },
|
|
52
|
+
{ name: 'warning', role: 'Warning', light: lit('oklch(0.68 0.14 70)'), dark: lit('oklch(0.79 0.14 75)') },
|
|
53
|
+
{ name: 'warning-foreground', role: 'Text on warning', light: lit('oklch(0.24 0.04 70)'), dark: lit('oklch(0.2 0.04 75)') },
|
|
54
|
+
{ name: 'destructive', role: 'Error / destructive', light: lit('oklch(0.57 0.2 27)'), dark: lit('oklch(0.67 0.18 25)') },
|
|
55
|
+
{ name: 'destructive-foreground', role: 'Text on destructive', light: lit('oklch(0.99 0.01 27)'), dark: lit('oklch(0.16 0.03 25)') },
|
|
56
|
+
{ name: 'info', role: 'Informational / bound', light: lit('oklch(0.56 0.12 248)'), dark: lit('oklch(0.7 0.13 245)') },
|
|
57
|
+
{ name: 'info-foreground', role: 'Text on info', light: lit('oklch(0.99 0.01 248)'), dark: lit('oklch(0.16 0.03 245)') },
|
|
58
|
+
{ name: 'grid-line', role: 'Canvas grid lines', light: lit('oklch(0.8 0.01 260 / 0.5)'), dark: lit('oklch(0.5 0.012 264 / 0.32)') },
|
|
59
|
+
];
|
|
60
|
+
/** A scale step (radius, font size, spacing) — a name mapped to a CSS length. */
|
|
61
|
+
export const scaleStepSchema = z.object({
|
|
62
|
+
name: z.string(),
|
|
63
|
+
value: z.string(),
|
|
64
|
+
/** Optional note shown in the style guide. */
|
|
65
|
+
note: z.string().optional(),
|
|
66
|
+
});
|
|
67
|
+
/** Base radius; the Tailwind theme derives sm/md/lg/xl from it. */
|
|
68
|
+
export const radiusBase = '0.5rem';
|
|
69
|
+
/** The type scale (Tailwind's default rem steps), documented for the style guide. */
|
|
70
|
+
export const typeScale = [
|
|
71
|
+
{ name: 'xs', value: '0.75rem', note: 'Captions, code chips' },
|
|
72
|
+
{ name: 'sm', value: '0.875rem', note: 'Body small, labels' },
|
|
73
|
+
{ name: 'base', value: '1rem', note: 'Body' },
|
|
74
|
+
{ name: 'lg', value: '1.125rem', note: 'Lead' },
|
|
75
|
+
{ name: 'xl', value: '1.25rem', note: 'H4' },
|
|
76
|
+
{ name: '2xl', value: '1.5rem', note: 'H3' },
|
|
77
|
+
{ name: '3xl', value: '1.875rem', note: 'H2' },
|
|
78
|
+
{ name: '4xl', value: '2.25rem', note: 'H1' },
|
|
79
|
+
{ name: '5xl', value: '3rem', note: 'Display' },
|
|
80
|
+
];
|
|
81
|
+
/** The spacing scale used by the named layout primitives (Stack/Row/Grid `gap`). */
|
|
82
|
+
export const spacingScale = [
|
|
83
|
+
{ name: 'px', value: '1px' },
|
|
84
|
+
{ name: '1', value: '0.25rem' },
|
|
85
|
+
{ name: '2', value: '0.5rem' },
|
|
86
|
+
{ name: '3', value: '0.75rem' },
|
|
87
|
+
{ name: '4', value: '1rem' },
|
|
88
|
+
{ name: '6', value: '1.5rem' },
|
|
89
|
+
{ name: '8', value: '2rem' },
|
|
90
|
+
];
|
|
91
|
+
/** The radius scale derived from {@link radiusBase}. */
|
|
92
|
+
export const radiusScale = [
|
|
93
|
+
{ name: 'sm', value: 'calc(0.5rem - 4px)' },
|
|
94
|
+
{ name: 'md', value: 'calc(0.5rem - 2px)' },
|
|
95
|
+
{ name: 'lg', value: '0.5rem' },
|
|
96
|
+
{ name: 'xl', value: 'calc(0.5rem + 4px)' },
|
|
97
|
+
];
|
|
98
|
+
/** The fonts the system standardises on. */
|
|
99
|
+
export const fonts = {
|
|
100
|
+
sans: "'Hanken Grotesk Variable', ui-sans-serif, system-ui, sans-serif",
|
|
101
|
+
mono: "'JetBrains Mono Variable', ui-monospace, 'SF Mono', monospace",
|
|
102
|
+
};
|
|
103
|
+
/** The full token set — the single source of truth. */
|
|
104
|
+
export const designTokens = {
|
|
105
|
+
colors: colorTokens,
|
|
106
|
+
radiusBase,
|
|
107
|
+
typeScale,
|
|
108
|
+
spacingScale,
|
|
109
|
+
radiusScale,
|
|
110
|
+
fonts,
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/design-tokens/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ComponentManifest } from '@elytracms/core/component-registry';
|
|
3
|
+
import type { RedirectRecord, RouteRecord } from '@elytracms/core/cms-core';
|
|
4
|
+
import type { DataSource } from '@elytracms/core/data-binding';
|
|
5
|
+
import type { ExportMode } from './core';
|
|
6
|
+
import type { ExportSource } from './sync';
|
|
7
|
+
/**
|
|
8
|
+
* Wire shape of `GET …/registry-sync/snapshot` (served by the builder's Convex
|
|
9
|
+
* deployment). EC-207: routes/redirects are config-sourced (authored in
|
|
10
|
+
* `elytra.config.ts`), so the snapshot no longer carries them — the schema omits
|
|
11
|
+
* them entirely and the source reads routes/redirects from the resolved config.
|
|
12
|
+
*/
|
|
13
|
+
export declare const builderSnapshotSchema: z.ZodObject<{
|
|
14
|
+
projectId: z.ZodString;
|
|
15
|
+
mode: z.ZodEnum<{
|
|
16
|
+
draft: "draft";
|
|
17
|
+
published: "published";
|
|
18
|
+
}>;
|
|
19
|
+
environment: z.ZodString;
|
|
20
|
+
project: z.ZodNullable<z.ZodObject<{
|
|
21
|
+
name: z.ZodString;
|
|
22
|
+
slug: z.ZodString;
|
|
23
|
+
}, z.core.$strip>>;
|
|
24
|
+
localeConfig: z.ZodObject<{
|
|
25
|
+
default: z.ZodString;
|
|
26
|
+
locales: z.ZodArray<z.ZodString>;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
collections: z.ZodArray<z.ZodObject<{
|
|
29
|
+
id: z.ZodString;
|
|
30
|
+
kind: z.ZodDefault<z.ZodEnum<{
|
|
31
|
+
asset: "asset";
|
|
32
|
+
document: "document";
|
|
33
|
+
}>>;
|
|
34
|
+
fields: z.ZodDefault<z.ZodArray<z.ZodType<import("@elytracms/core/cms-core").FieldDef, unknown, z.core.$ZodTypeInternals<import("@elytracms/core/cms-core").FieldDef, unknown>>>>;
|
|
35
|
+
form: z.ZodOptional<z.ZodObject<{
|
|
36
|
+
label: z.ZodOptional<z.ZodString>;
|
|
37
|
+
labelSingular: z.ZodOptional<z.ZodString>;
|
|
38
|
+
description: z.ZodOptional<z.ZodString>;
|
|
39
|
+
groups: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
40
|
+
tabs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
41
|
+
}, z.core.$strip>>;
|
|
42
|
+
localized: z.ZodOptional<z.ZodBoolean>;
|
|
43
|
+
titleField: z.ZodOptional<z.ZodString>;
|
|
44
|
+
singleton: z.ZodOptional<z.ZodBoolean>;
|
|
45
|
+
}, z.core.$strip>>;
|
|
46
|
+
graph: z.ZodNullable<z.ZodObject<{
|
|
47
|
+
revision: z.ZodNumber;
|
|
48
|
+
serializedGraph: z.ZodString;
|
|
49
|
+
}, z.core.$strip>>;
|
|
50
|
+
}, z.core.$strip>;
|
|
51
|
+
export type BuilderSnapshot = z.infer<typeof builderSnapshotSchema>;
|
|
52
|
+
export interface HttpBuilderSourceConfig {
|
|
53
|
+
/** Builder deployment origin serving the HTTP actions, e.g. `https://<name>.convex.site`. */
|
|
54
|
+
baseUrl: string;
|
|
55
|
+
projectId: string;
|
|
56
|
+
/** Bearer CLI token (EC-150) — same token the registry sync client uses. */
|
|
57
|
+
token?: string;
|
|
58
|
+
/** Publishing environment whose pinned revision serves `published` mode (default: `production`). */
|
|
59
|
+
environment?: string;
|
|
60
|
+
/** Code-owned component manifests (primitives + project manifests) with their real schemas. */
|
|
61
|
+
manifests?: readonly ComponentManifest[];
|
|
62
|
+
/** Host-declared data sources (not persisted builder-side in v1). */
|
|
63
|
+
sources?: readonly DataSource[];
|
|
64
|
+
/**
|
|
65
|
+
* Config-sourced route table (EC-207): the resolved `elytra.config.ts`
|
|
66
|
+
* `routes` array. Authoritative when non-empty; when omitted/empty the source
|
|
67
|
+
* synthesizes the `/` → `page/home` fallback per locale.
|
|
68
|
+
*/
|
|
69
|
+
routes?: readonly RouteRecord[];
|
|
70
|
+
/** Config-sourced redirects (EC-207): the resolved config's `redirects` array. */
|
|
71
|
+
redirects?: readonly RedirectRecord[];
|
|
72
|
+
/** Import specifier for the host repo's components module (eject wiring). */
|
|
73
|
+
componentsImport?: string;
|
|
74
|
+
/** Injected for tests; defaults to global `fetch`. */
|
|
75
|
+
fetchImpl?: typeof fetch;
|
|
76
|
+
}
|
|
77
|
+
/** Fetch + validate one snapshot. Exposed for hosts that want the raw payload. */
|
|
78
|
+
export declare function fetchBuilderSnapshot(config: Pick<HttpBuilderSourceConfig, 'baseUrl' | 'projectId' | 'token' | 'environment' | 'fetchImpl'>, mode: ExportMode): Promise<BuilderSnapshot>;
|
|
79
|
+
/**
|
|
80
|
+
* Create the HTTP-backed {@link ExportSource}. `loadInput` throws a
|
|
81
|
+
* {@link RegistrySyncTransportError} with a structured message on transport/auth
|
|
82
|
+
* failures, a malformed snapshot, or a mode with no graph revision to serve —
|
|
83
|
+
* everything else is data the canonical validators report on.
|
|
84
|
+
*/
|
|
85
|
+
export declare function createHttpBuilderSource(config: HttpBuilderSourceConfig): ExportSource;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { collectionDefSchema, localeConfigSchema } from '@elytracms/core/cms-core';
|
|
3
|
+
import { emitTokensCss } from '@elytracms/core/design-tokens';
|
|
4
|
+
import { parseProjectGraph } from '@elytracms/core/project-graph';
|
|
5
|
+
import { registrySyncEndpoints, registrySyncRequest, RegistrySyncTransportError, } from './registry-sync-client';
|
|
6
|
+
/**
|
|
7
|
+
* The live builder {@link ExportSource} (EC-157): `builder typegen` and `builder check`
|
|
8
|
+
* read the canonical model from the builder deployment's snapshot endpoint
|
|
9
|
+
* (`GET …/registry-sync/snapshot`, Bearer CLI token) instead of a fixture. The
|
|
10
|
+
* snapshot carries only what the builder persists as data: the graph revision for the
|
|
11
|
+
* requested mode (published = the publishing-state-pinned revision per environment,
|
|
12
|
+
* draft = latest), plus locale config as a placeholder.
|
|
13
|
+
*
|
|
14
|
+
* Several inputs are config-sourced / host-supplied, NOT carried by the snapshot
|
|
15
|
+
* (mirroring `@elytracms/next`'s live content wiring — the backend does not persist
|
|
16
|
+
* them):
|
|
17
|
+
*
|
|
18
|
+
* - `routes` / `redirects` — authored in `elytra.config.ts` and resolved by
|
|
19
|
+
* studio-core (EC-207). They are config, never backend data: the bin feeds the
|
|
20
|
+
* resolved config's `routes`/`redirects` arrays here. The snapshot no longer
|
|
21
|
+
* carries a route table (its `routes`/`redirects` fields are optional/ignored).
|
|
22
|
+
* - `sources` — data-source declarations bindings resolve against. Without them
|
|
23
|
+
* every graph binding reports `unresolved-binding`, so a host whose graph binds
|
|
24
|
+
* data MUST declare its sources.
|
|
25
|
+
* - `manifests` — the component manifests are code-owned (defined in TS next to the
|
|
26
|
+
* components), not persisted builder-side, so the host supplies the full set
|
|
27
|
+
* (`basePrimitives().manifests` plus the project's own manifests) with their REAL
|
|
28
|
+
* prop schemas. The builder snapshot no longer carries manifest records.
|
|
29
|
+
*
|
|
30
|
+
* Route fallback: when no config routes are supplied the source maps `/` to the
|
|
31
|
+
* conventional home page document (`page/home`) for every configured locale — the
|
|
32
|
+
* same convention as the example host's live content source (EC-187: pages are
|
|
33
|
+
* documents). Config routes, when present, are authoritative and replace the fallback.
|
|
34
|
+
*/
|
|
35
|
+
const graphRevisionPayloadSchema = z.object({
|
|
36
|
+
revision: z.number(),
|
|
37
|
+
serializedGraph: z.string(),
|
|
38
|
+
});
|
|
39
|
+
/**
|
|
40
|
+
* Wire shape of `GET …/registry-sync/snapshot` (served by the builder's Convex
|
|
41
|
+
* deployment). EC-207: routes/redirects are config-sourced (authored in
|
|
42
|
+
* `elytra.config.ts`), so the snapshot no longer carries them — the schema omits
|
|
43
|
+
* them entirely and the source reads routes/redirects from the resolved config.
|
|
44
|
+
*/
|
|
45
|
+
export const builderSnapshotSchema = z.object({
|
|
46
|
+
projectId: z.string().min(1),
|
|
47
|
+
mode: z.enum(['published', 'draft']),
|
|
48
|
+
environment: z.string().min(1),
|
|
49
|
+
project: z.object({ name: z.string(), slug: z.string() }).nullable(),
|
|
50
|
+
localeConfig: localeConfigSchema,
|
|
51
|
+
collections: z.array(collectionDefSchema),
|
|
52
|
+
/** `null` when the requested mode/environment has no graph revision to serve. */
|
|
53
|
+
graph: graphRevisionPayloadSchema.nullable(),
|
|
54
|
+
});
|
|
55
|
+
/** Default-route fallback when the config supplies no route records (see module doc). */
|
|
56
|
+
function fallbackRoutes(snapshot) {
|
|
57
|
+
return snapshot.localeConfig.locales.map((locale) => ({
|
|
58
|
+
id: `route-home-${locale}`,
|
|
59
|
+
pattern: '/',
|
|
60
|
+
locale,
|
|
61
|
+
document: { collection: 'page', id: 'home' },
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
/** Fetch + validate one snapshot. Exposed for hosts that want the raw payload. */
|
|
65
|
+
export async function fetchBuilderSnapshot(config, mode) {
|
|
66
|
+
const endpoints = registrySyncEndpoints(config.baseUrl, config.projectId);
|
|
67
|
+
const environment = config.environment ?? 'production';
|
|
68
|
+
const url = `${endpoints.snapshot}?mode=${mode}&environment=${encodeURIComponent(environment)}`;
|
|
69
|
+
const payload = await registrySyncRequest(config.fetchImpl ?? fetch, url, 'GET', config.token);
|
|
70
|
+
const parsed = builderSnapshotSchema.safeParse(payload);
|
|
71
|
+
if (!parsed.success) {
|
|
72
|
+
throw new RegistrySyncTransportError(`Builder snapshot from ${url} is malformed: ${parsed.error.issues[0]?.message ?? 'unknown error'}.`);
|
|
73
|
+
}
|
|
74
|
+
return parsed.data;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Create the HTTP-backed {@link ExportSource}. `loadInput` throws a
|
|
78
|
+
* {@link RegistrySyncTransportError} with a structured message on transport/auth
|
|
79
|
+
* failures, a malformed snapshot, or a mode with no graph revision to serve —
|
|
80
|
+
* everything else is data the canonical validators report on.
|
|
81
|
+
*/
|
|
82
|
+
export function createHttpBuilderSource(config) {
|
|
83
|
+
return {
|
|
84
|
+
async loadInput(mode) {
|
|
85
|
+
const snapshot = await fetchBuilderSnapshot(config, mode);
|
|
86
|
+
if (snapshot.graph === null) {
|
|
87
|
+
throw new RegistrySyncTransportError(mode === 'published'
|
|
88
|
+
? `Project "${snapshot.projectId}" has no published revision pinned for environment "${snapshot.environment}" — publish first, or run with --mode draft.`
|
|
89
|
+
: `Project "${snapshot.projectId}" has no graph revisions yet.`);
|
|
90
|
+
}
|
|
91
|
+
const parsedGraph = parseProjectGraph(snapshot.graph.serializedGraph);
|
|
92
|
+
if (!parsedGraph.ok) {
|
|
93
|
+
throw new RegistrySyncTransportError(`Builder graph revision ${snapshot.graph.revision} failed to parse: ${parsedGraph.error.issues[0]?.message ?? 'unknown error'}.`);
|
|
94
|
+
}
|
|
95
|
+
// Component manifests are code-owned and host-supplied (primitives + project).
|
|
96
|
+
const manifestsById = new Map();
|
|
97
|
+
for (const manifest of config.manifests ?? []) {
|
|
98
|
+
manifestsById.set(manifest.id, manifest);
|
|
99
|
+
}
|
|
100
|
+
const graph = parsedGraph.graph;
|
|
101
|
+
// EC-207: routes/redirects come from the resolved config, not the snapshot.
|
|
102
|
+
// Config routes are authoritative; the `/` → page/home fallback fills only
|
|
103
|
+
// when the config supplies none.
|
|
104
|
+
const configRoutes = config.routes ?? [];
|
|
105
|
+
const routes = configRoutes.length > 0 ? [...configRoutes] : fallbackRoutes(snapshot);
|
|
106
|
+
return {
|
|
107
|
+
projectName: snapshot.project?.name ?? snapshot.projectId,
|
|
108
|
+
slug: snapshot.project?.slug ?? snapshot.projectId,
|
|
109
|
+
graph,
|
|
110
|
+
routes,
|
|
111
|
+
redirects: [...(config.redirects ?? [])],
|
|
112
|
+
collections: snapshot.collections,
|
|
113
|
+
manifests: [...manifestsById.values()],
|
|
114
|
+
sources: [...(config.sources ?? [])],
|
|
115
|
+
localeConfig: snapshot.localeConfig,
|
|
116
|
+
tokensCss: emitTokensCss(),
|
|
117
|
+
...(config.componentsImport !== undefined
|
|
118
|
+
? { componentsImport: config.componentsImport }
|
|
119
|
+
: {}),
|
|
120
|
+
};
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=builder-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder-source.js","sourceRoot":"","sources":["../../src/export-sync/builder-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { ProjectGraph } from '@elytracms/core/project-graph';
|
|
2
|
+
import type { ExportMode } from './core';
|
|
3
|
+
import type { ManifestHost } from './manifest-host';
|
|
4
|
+
import type { PushIssueCode } from './push';
|
|
5
|
+
import type { ExportSource, FileIO } from './sync';
|
|
6
|
+
import type { ExportIssueCode } from './validate';
|
|
7
|
+
/**
|
|
8
|
+
* `builder check` (EC-148): the CI gate that verifies code and builder state agree
|
|
9
|
+
* before anything ships. Four checks, each individually reportable:
|
|
10
|
+
*
|
|
11
|
+
* 1. `manifest-discovery` — local manifest validation (the EC-147 discovery pass):
|
|
12
|
+
* fs/load problems, structural problems, and EC-011 invalid/duplicate ids.
|
|
13
|
+
* 2. `graph-components` — components the published graph references that have no
|
|
14
|
+
* manifest in code (`graph-component-missing`): the page would render the
|
|
15
|
+
* missing-component fallback in the embedded runtime. Component manifests are
|
|
16
|
+
* code-owned, so this is a direct code↔graph check (no DB registry to diff).
|
|
17
|
+
* 3. `types` — the committed `builder typegen` output is stale vs. the current
|
|
18
|
+
* collection schemas (`type-drift`): regenerated in memory and byte-compared.
|
|
19
|
+
* 4. `validation` — the EC-047/EC-111 canonical validators surfaced through the CLI:
|
|
20
|
+
* route conflicts, redirect loops, broken bindings, invalid props, missing slots.
|
|
21
|
+
*
|
|
22
|
+
* Failure semantics mirror push: every problem is a structured {@link CheckIssue},
|
|
23
|
+
* never a throw; output is machine-parseable issue lines (the push line format) plus
|
|
24
|
+
* a readable per-check summary; any error-severity issue fails the run (exit 1).
|
|
25
|
+
* Check is inherently non-interactive — there is no separate CI mode.
|
|
26
|
+
*/
|
|
27
|
+
/** Which of the four checks an issue belongs to. */
|
|
28
|
+
export type CheckSection = 'manifest-discovery' | 'graph-components' | 'types' | 'validation';
|
|
29
|
+
export type CheckIssueCode = PushIssueCode | 'graph-component-missing' | 'type-drift' | ExportIssueCode;
|
|
30
|
+
export interface CheckIssue {
|
|
31
|
+
section: CheckSection;
|
|
32
|
+
code: CheckIssueCode;
|
|
33
|
+
severity: 'error' | 'warning';
|
|
34
|
+
message: string;
|
|
35
|
+
/** Locator: manifest module path, component id, route id, output path, … */
|
|
36
|
+
ref?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface CheckOptions {
|
|
39
|
+
/** Host-repo scan root for `*.manifest.ts(x)` modules. */
|
|
40
|
+
root: string;
|
|
41
|
+
/** Content state to check (default flows from the CLI: published). */
|
|
42
|
+
mode: ExportMode;
|
|
43
|
+
/** The committed typegen output path to drift-check (default: {@link DEFAULT_TYPEGEN_PATH}). */
|
|
44
|
+
out?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface CheckResult {
|
|
47
|
+
mode: ExportMode;
|
|
48
|
+
issues: CheckIssue[];
|
|
49
|
+
/** True when no error-severity issue exists (warnings never fail the gate). */
|
|
50
|
+
ok: boolean;
|
|
51
|
+
}
|
|
52
|
+
/** The machine-parseable issue line (same shape as the EC-147 push issue lines). */
|
|
53
|
+
export declare function formatCheckIssue(issue: CheckIssue): string;
|
|
54
|
+
/**
|
|
55
|
+
* All component ids referenced in the graph's layouts, deduped (EC-187: the
|
|
56
|
+
* graph is layouts-only; page composition component usage lives in `page`
|
|
57
|
+
* collection documents, walked separately by the reference index).
|
|
58
|
+
*/
|
|
59
|
+
export declare function collectGraphComponentIds(graph: ProjectGraph): Set<string>;
|
|
60
|
+
/** Run a check. Returns a structured result and never throws; issues are data. */
|
|
61
|
+
export declare function runCheck(source: ExportSource, host: ManifestHost, io: FileIO, options: CheckOptions): Promise<CheckResult>;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { isPrimitive } from '@elytracms/core/component-registry';
|
|
2
|
+
import { discoverManifests } from './push';
|
|
3
|
+
import { DEFAULT_TYPEGEN_PATH, generateTypesFile } from './typegen';
|
|
4
|
+
import { validateExport } from './validate';
|
|
5
|
+
/** The machine-parseable issue line (same shape as the EC-147 push issue lines). */
|
|
6
|
+
export function formatCheckIssue(issue) {
|
|
7
|
+
return ` ${issue.severity} [${issue.code}]${issue.ref ? ` ${issue.ref}` : ''} — ${issue.message}`;
|
|
8
|
+
}
|
|
9
|
+
function walkComponentIds(node, out) {
|
|
10
|
+
out.add(node.componentId);
|
|
11
|
+
for (const children of Object.values(node.slots ?? {})) {
|
|
12
|
+
for (const child of children)
|
|
13
|
+
walkComponentIds(child, out);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* All component ids referenced in the graph's layouts, deduped (EC-187: the
|
|
18
|
+
* graph is layouts-only; page composition component usage lives in `page`
|
|
19
|
+
* collection documents, walked separately by the reference index).
|
|
20
|
+
*/
|
|
21
|
+
export function collectGraphComponentIds(graph) {
|
|
22
|
+
const ids = new Set();
|
|
23
|
+
for (const layout of graph.layouts)
|
|
24
|
+
walkComponentIds(layout.root, ids);
|
|
25
|
+
return ids;
|
|
26
|
+
}
|
|
27
|
+
const SECTIONS = [
|
|
28
|
+
'manifest-discovery',
|
|
29
|
+
'graph-components',
|
|
30
|
+
'types',
|
|
31
|
+
'validation',
|
|
32
|
+
];
|
|
33
|
+
/** Run a check. Returns a structured result and never throws; issues are data. */
|
|
34
|
+
export async function runCheck(source, host, io, options) {
|
|
35
|
+
const out = options.out ?? DEFAULT_TYPEGEN_PATH;
|
|
36
|
+
const issues = [];
|
|
37
|
+
const notes = {};
|
|
38
|
+
// --- 1. manifest-discovery: local manifest validation ------------------------
|
|
39
|
+
const local = await discoverManifests(host, options.root);
|
|
40
|
+
for (const issue of local.issues) {
|
|
41
|
+
issues.push({
|
|
42
|
+
section: 'manifest-discovery',
|
|
43
|
+
code: issue.code,
|
|
44
|
+
severity: issue.severity,
|
|
45
|
+
message: issue.message,
|
|
46
|
+
...((issue.file ?? issue.componentId)
|
|
47
|
+
? { ref: [issue.file, issue.componentId].filter(Boolean).join(' ') }
|
|
48
|
+
: {}),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/** Complete local view — graph↔code conclusions are only safe when nothing failed to load. */
|
|
52
|
+
const localComplete = local.issues.length === 0;
|
|
53
|
+
// --- 2.–4. share one canonical-model load ------------------------------------
|
|
54
|
+
const input = await source.loadInput(options.mode);
|
|
55
|
+
// 2. graph-components: graph references with no manifest in code. Component
|
|
56
|
+
// manifests are code-owned, so this is a direct code↔graph check. Primitives
|
|
57
|
+
// are platform-owned (they ship with the runtime), so only project components count.
|
|
58
|
+
if (localComplete) {
|
|
59
|
+
for (const id of [...collectGraphComponentIds(input.graph)].sort()) {
|
|
60
|
+
if (!isPrimitive(id) && !local.manifests.has(id)) {
|
|
61
|
+
issues.push({
|
|
62
|
+
section: 'graph-components',
|
|
63
|
+
code: 'graph-component-missing',
|
|
64
|
+
severity: 'error',
|
|
65
|
+
ref: id,
|
|
66
|
+
message: `The graph references component "${id}" but no manifest for it exists in code under ${options.root} — the page renders the missing-component fallback.`,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
notes['graph-components'] =
|
|
73
|
+
' note: local manifests failed to load — graph↔code coverage was not evaluated.';
|
|
74
|
+
}
|
|
75
|
+
// 3. types: regenerate in memory and byte-compare against the committed file.
|
|
76
|
+
const expected = generateTypesFile(input.collections, out);
|
|
77
|
+
const actual = io.read(out);
|
|
78
|
+
if (actual === undefined) {
|
|
79
|
+
issues.push({
|
|
80
|
+
section: 'types',
|
|
81
|
+
code: 'type-drift',
|
|
82
|
+
severity: 'error',
|
|
83
|
+
ref: out,
|
|
84
|
+
message: `Generated types file ${out} is missing — run \`builder typegen\` and commit it.`,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
else if (actual !== expected) {
|
|
88
|
+
issues.push({
|
|
89
|
+
section: 'types',
|
|
90
|
+
code: 'type-drift',
|
|
91
|
+
severity: 'error',
|
|
92
|
+
ref: out,
|
|
93
|
+
message: `Generated types file ${out} is stale relative to the collection schemas — re-run \`builder typegen\` and commit the result.`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// 4. validation: the EC-047/EC-111 canonical validators, surfaced through the CLI.
|
|
97
|
+
for (const issue of validateExport(input)) {
|
|
98
|
+
issues.push({
|
|
99
|
+
section: 'validation',
|
|
100
|
+
code: issue.code,
|
|
101
|
+
severity: issue.severity,
|
|
102
|
+
message: issue.message,
|
|
103
|
+
...(issue.ref ? { ref: issue.ref } : {}),
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
// --- Report: per-check summary + machine-parseable lines ----------------------
|
|
107
|
+
io.log(`Check (${options.mode}): ${options.root} against the builder state.`);
|
|
108
|
+
for (const section of SECTIONS) {
|
|
109
|
+
const sectionIssues = issues.filter((i) => i.section === section);
|
|
110
|
+
const errors = sectionIssues.filter((i) => i.severity === 'error').length;
|
|
111
|
+
const warnings = sectionIssues.length - errors;
|
|
112
|
+
io.log(`check ${section}: ${sectionIssues.length === 0 ? 'ok' : `${errors} error(s), ${warnings} warning(s)`}`);
|
|
113
|
+
for (const issue of sectionIssues)
|
|
114
|
+
io.log(formatCheckIssue(issue));
|
|
115
|
+
const note = notes[section];
|
|
116
|
+
if (note)
|
|
117
|
+
io.log(note);
|
|
118
|
+
}
|
|
119
|
+
const errorCount = issues.filter((i) => i.severity === 'error').length;
|
|
120
|
+
const ok = errorCount === 0;
|
|
121
|
+
io.log(ok
|
|
122
|
+
? `Check passed (${SECTIONS.length} checks).`
|
|
123
|
+
: `Check failed: ${errorCount} error(s) across ${SECTIONS.length} checks.`);
|
|
124
|
+
return { mode: options.mode, issues, ok };
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/export-sync/check.ts"],"names":[],"mappings":"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"}
|