@elytracms/core 0.0.8 → 0.0.9
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/dist/clipboard/build.js.map +1 -1
- package/dist/clipboard/clipboard.js.map +1 -1
- package/dist/clipboard/fragment.js.map +1 -1
- package/dist/clipboard/html.js.map +1 -1
- package/dist/clipboard/index.js.map +1 -1
- package/dist/clipboard/references.js.map +1 -1
- package/dist/clipboard/serialize.js.map +1 -1
- package/dist/cms-core/collection-shape.d.ts +43 -0
- package/dist/cms-core/collection-shape.js +129 -0
- package/dist/cms-core/collection-shape.js.map +1 -0
- package/dist/cms-core/collections.d.ts +5 -6
- package/dist/cms-core/collections.js +26 -13
- package/dist/cms-core/collections.js.map +1 -1
- package/dist/cms-core/documents.d.ts +1 -0
- package/dist/cms-core/documents.js +10 -0
- package/dist/cms-core/documents.js.map +1 -1
- package/dist/cms-core/envelopes.js.map +1 -1
- package/dist/cms-core/fields.js.map +1 -1
- package/dist/cms-core/fixtures.js.map +1 -1
- package/dist/cms-core/hierarchy.js.map +1 -1
- package/dist/cms-core/index.d.ts +1 -0
- package/dist/cms-core/index.js +1 -0
- package/dist/cms-core/index.js.map +1 -1
- package/dist/cms-core/infer.js.map +1 -1
- package/dist/cms-core/issues.d.ts +8 -0
- package/dist/cms-core/issues.js +10 -0
- package/dist/cms-core/issues.js.map +1 -1
- package/dist/cms-core/json-schema.js.map +1 -1
- package/dist/cms-core/localization.js.map +1 -1
- package/dist/cms-core/nesting-depth.js.map +1 -1
- package/dist/cms-core/routes.js.map +1 -1
- package/dist/cms-core/self-type.js.map +1 -1
- package/dist/cms-core/url-for-document.js.map +1 -1
- package/dist/cms-core/validate-document.js.map +1 -1
- package/dist/cms-core/versions.d.ts +1 -0
- package/dist/cms-core/versions.js.map +1 -1
- package/dist/collaboration/approval.js.map +1 -1
- package/dist/collaboration/collaboration.js.map +1 -1
- package/dist/collaboration/comments.js.map +1 -1
- package/dist/collaboration/core.js.map +1 -1
- package/dist/collaboration/index.js.map +1 -1
- package/dist/collaboration/presence.js.map +1 -1
- package/dist/collaboration/publishing.js.map +1 -1
- package/dist/collaboration/versions.js.map +1 -1
- package/dist/component-registry/index.js.map +1 -1
- package/dist/component-registry/issues.js.map +1 -1
- package/dist/component-registry/manifest.js.map +1 -1
- package/dist/component-registry/registry.js.map +1 -1
- package/dist/content/__fixtures__/filterable-collections.js.map +1 -1
- package/dist/content/__fixtures__/sample-accessor-types.js.map +1 -1
- package/dist/content/__fixtures__/sample-delivery-types.js.map +1 -1
- package/dist/content/assets.js.map +1 -1
- package/dist/content/binding-sources.js.map +1 -1
- package/dist/content/client.js.map +1 -1
- package/dist/content/codegen.js.map +1 -1
- package/dist/content/context.js.map +1 -1
- package/dist/content/cursor.js.map +1 -1
- package/dist/content/index.js.map +1 -1
- package/dist/content/locale.js.map +1 -1
- package/dist/content/perspective.js.map +1 -1
- package/dist/content/populate.js.map +1 -1
- package/dist/content/query.js.map +1 -1
- package/dist/content/raw.js.map +1 -1
- package/dist/content/resolve.js.map +1 -1
- package/dist/content/serialize.js.map +1 -1
- package/dist/content/tags.js.map +1 -1
- package/dist/data-binding/fixtures.js.map +1 -1
- package/dist/data-binding/index.js.map +1 -1
- package/dist/data-binding/issues.js.map +1 -1
- package/dist/data-binding/resolve.js.map +1 -1
- package/dist/data-binding/sample.js.map +1 -1
- package/dist/data-binding/sources.js.map +1 -1
- package/dist/data-binding/tokens.js.map +1 -1
- package/dist/design-tokens/css.js.map +1 -1
- package/dist/design-tokens/index.js.map +1 -1
- package/dist/design-tokens/style-guide.js.map +1 -1
- package/dist/design-tokens/tokens.js.map +1 -1
- package/dist/export-sync/builder-source.d.ts +1 -0
- package/dist/export-sync/builder-source.js.map +1 -1
- package/dist/export-sync/check.js.map +1 -1
- package/dist/export-sync/cli.js.map +1 -1
- package/dist/export-sync/core.js.map +1 -1
- package/dist/export-sync/eject.js.map +1 -1
- package/dist/export-sync/fixtures.js.map +1 -1
- package/dist/export-sync/generate.js.map +1 -1
- package/dist/export-sync/index.js.map +1 -1
- package/dist/export-sync/init.js.map +1 -1
- package/dist/export-sync/manifest-host.js.map +1 -1
- package/dist/export-sync/node.js.map +1 -1
- package/dist/export-sync/push.js.map +1 -1
- package/dist/export-sync/registry-sync-client.js.map +1 -1
- package/dist/export-sync/sync.js.map +1 -1
- package/dist/export-sync/typegen.js.map +1 -1
- package/dist/export-sync/validate.js.map +1 -1
- package/dist/export-sync/watch.js.map +1 -1
- package/dist/operations/assets.js.map +1 -1
- package/dist/operations/authorization.js.map +1 -1
- package/dist/operations/changesets.js.map +1 -1
- package/dist/operations/client.js.map +1 -1
- package/dist/operations/core.js.map +1 -1
- package/dist/operations/documents.d.ts +21 -0
- package/dist/operations/documents.js.map +1 -1
- package/dist/operations/graph.js.map +1 -1
- package/dist/operations/index.js.map +1 -1
- package/dist/operations/members.js.map +1 -1
- package/dist/operations/publishing.js.map +1 -1
- package/dist/operations/references.js.map +1 -1
- package/dist/operations/schema.d.ts +18 -0
- package/dist/operations/schema.js.map +1 -1
- package/dist/operations/tokens.js.map +1 -1
- package/dist/persistence/adapter.js.map +1 -1
- package/dist/persistence/assets.js.map +1 -1
- package/dist/persistence/backend-validation.js.map +1 -1
- package/dist/persistence/cli-tokens.js.map +1 -1
- package/dist/persistence/cms.d.ts +3 -0
- package/dist/persistence/cms.js.map +1 -1
- package/dist/persistence/contract-scenarios.js.map +1 -1
- package/dist/persistence/core.js.map +1 -1
- package/dist/persistence/graph.js.map +1 -1
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/members.js.map +1 -1
- package/dist/persistence/publishing.js.map +1 -1
- package/dist/persistence/reference-extraction.js.map +1 -1
- package/dist/persistence/reference-indexing.js.map +1 -1
- package/dist/persistence/references.js.map +1 -1
- package/dist/persistence/seed.js.map +1 -1
- package/dist/persistence/self-maintaining-adapter.js.map +1 -1
- package/dist/plugins/asset-storage.js.map +1 -1
- package/dist/plugins/component-package.js.map +1 -1
- package/dist/plugins/data-sources.js.map +1 -1
- package/dist/plugins/examples.js.map +1 -1
- package/dist/plugins/export-targets.js.map +1 -1
- package/dist/plugins/field-types.js.map +1 -1
- package/dist/plugins/hooks.js.map +1 -1
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/marketplace.js.map +1 -1
- package/dist/plugins/plugin.js.map +1 -1
- package/dist/plugins/templates.js.map +1 -1
- package/dist/project-graph/binding.js.map +1 -1
- package/dist/project-graph/container.js.map +1 -1
- package/dist/project-graph/edit.js.map +1 -1
- package/dist/project-graph/fixtures.js.map +1 -1
- package/dist/project-graph/ids.js.map +1 -1
- package/dist/project-graph/index.js.map +1 -1
- package/dist/project-graph/issues.js.map +1 -1
- package/dist/project-graph/json.js.map +1 -1
- package/dist/project-graph/node.js.map +1 -1
- package/dist/project-graph/normalize.js.map +1 -1
- package/dist/project-graph/serialize.js.map +1 -1
- package/dist/project-graph/structure.js.map +1 -1
- package/dist/project-graph/validate.js.map +1 -1
- package/dist/rich-text/adapter.js.map +1 -1
- package/dist/rich-text/dom-editor.js.map +1 -1
- package/dist/rich-text/embed.js.map +1 -1
- package/dist/rich-text/fixtures.js.map +1 -1
- package/dist/rich-text/html.js.map +1 -1
- package/dist/rich-text/index.js.map +1 -1
- package/dist/rich-text/markdown.js.map +1 -1
- package/dist/rich-text/portable-text.js.map +1 -1
- package/dist/rich-text/registry.js.map +1 -1
- package/dist/rich-text/render.js.map +1 -1
- package/dist/rich-text/schema.js.map +1 -1
- package/dist/rich-text/test-support.js.map +1 -1
- package/dist/runtime-renderer/client.js.map +1 -1
- package/dist/runtime-renderer/condition.js.map +1 -1
- package/dist/runtime-renderer/content-client.js.map +1 -1
- package/dist/runtime-renderer/context.js.map +1 -1
- package/dist/runtime-renderer/fallback.js.map +1 -1
- package/dist/runtime-renderer/index.js.map +1 -1
- package/dist/runtime-renderer/primitives.js.map +1 -1
- package/dist/runtime-renderer/render.js.map +1 -1
- package/dist/runtime-renderer/rich-text.js.map +1 -1
- package/dist/starter-kits/index.js.map +1 -1
- package/dist/starter-kits/instantiate.js.map +1 -1
- package/dist/starter-kits/kit.js.map +1 -1
- package/dist/starter-kits/kits.js.map +1 -1
- package/dist/starter-kits/manifests.js.map +1 -1
- package/dist/starter-kits/upgrade.js.map +1 -1
- package/dist/starter-kits/validate.js.map +1 -1
- package/dist/studio-core/context.js.map +1 -1
- package/dist/studio-core/errors.js.map +1 -1
- package/dist/studio-core/fixtures.js.map +1 -1
- package/dist/studio-core/ids.js.map +1 -1
- package/dist/studio-core/index.js.map +1 -1
- package/dist/studio-core/issues.js.map +1 -1
- package/dist/studio-core/metadata.js.map +1 -1
- package/dist/studio-core/repository.js.map +1 -1
- package/dist/studio-core/sections.d.ts +1 -1
- package/dist/studio-core/sections.js.map +1 -1
- package/dist/studio-core/validate.js.map +1 -1
- package/dist/studio-core/workspace-config.d.ts +4 -0
- package/dist/studio-core/workspace-config.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/runtime-renderer/render.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/runtime-renderer/render.tsx"],"names":[],"mappings":"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","sourcesContent":["import { createElement, Fragment } from 'react'\nimport type { ReactNode } from 'react'\nimport type { ComponentNode, ProjectGraph, PropValue } from '@elytracms/core/project-graph'\nimport { DEFAULT_SLOT, OUTLET_SLOT } from '@elytracms/core/project-graph'\nimport type {\n ComponentManifest,\n ComponentRegistry,\n CompositionSpec,\n IterateSpec,\n ListingSpec,\n} from '@elytracms/core/component-registry'\nimport { manifestSlots, propValueValidator } from '@elytracms/core/component-registry'\nimport { isAssetNode, readDocumentRef } from '@elytracms/core/cms-core'\nimport type { FieldDef } from '@elytracms/core/cms-core'\nimport type {\n ItemContext,\n ListingQuery,\n RelationTarget,\n RenderContext,\n ResolveRelation,\n} from './context'\nimport { getImplementation } from './context'\nimport type { RichTextEmbedRenderer } from '@elytracms/core/rich-text'\nimport { ContentClientProvider } from './content-client'\nimport { evaluateCondition } from './condition'\nimport {\n MissingComponentFallback,\n MissingSlotPlaceholder,\n RenderErrorBoundary,\n RenderErrorFallback,\n} from './fallback'\n\n/** Resolved props plus the node's slot children, ready to hand to an implementation. */\ninterface ResolvedRender {\n props: Record<string, unknown>\n slotProps: Record<string, ReactNode>\n children: ReactNode\n}\n\n/**\n * Render a single component node to React. Never throws on a node: missing components,\n * invalid props, missing required slots, and resolver errors all degrade to visible\n * fallbacks (brief §4.11).\n */\nexport function renderNode(node: ComponentNode, ctx: RenderContext): ReactNode {\n // Condition gate — render nothing when false.\n if (node.condition && !evaluateCondition(node.condition, ctx.resolveBinding, ctx.item)) {\n return null\n }\n\n const manifest = ctx.registry.getManifest(node.componentId)\n const implementation = getImplementation(ctx.implementations, node.componentId)\n\n // Missing component: no manifest OR no implementation.\n if (!manifest || !implementation) {\n return decorate(\n ctx,\n node,\n <MissingComponentFallback nodeId={node.id} componentId={node.componentId} />,\n )\n }\n\n let resolved: ResolvedRender\n try {\n resolved = resolveRender(node, manifest, ctx)\n } catch (error) {\n // A thrown resolver (binding/prop) error yields a fallback, not a crash.\n return decorate(ctx, node, <RenderErrorFallback nodeId={node.id} message={messageOf(error)} />)\n }\n\n const element = createElement(\n implementation,\n { ...resolved.props, ...resolved.slotProps, key: node.id },\n resolved.children,\n )\n\n // Wrap each node so a throw during the implementation's own render degrades on the client.\n return decorate(\n ctx,\n node,\n <RenderErrorBoundary key={node.id} nodeId={node.id}>\n {element}\n </RenderErrorBoundary>,\n )\n}\n\n/** Apply the host's optional per-node decorator (Builder selection markers). */\nfunction decorate(ctx: RenderContext, node: ComponentNode, rendered: ReactNode): ReactNode {\n return ctx.decorateNode ? ctx.decorateNode(node, rendered) : rendered\n}\n\n/**\n * Bind a `RichTextEmbedRenderer` (EC-189) to a `RenderContext`: each embedded\n * composition node renders through `renderComposition` with the SAME context, so an\n * embed reuses the EC-015 visible fallbacks, the injected binding resolver, the\n * content client, and any active item scope exactly as on a page.\n *\n * The bound renderer is a FUNCTION closed over `ctx`, so it is injected into the\n * consuming component as a **prop** (see `resolveRender`), never through a\n * `'use client'` React-context provider: a function cannot cross the RSC\n * server→client boundary into a client component, so the provider approach\n * 500s a server-rendered (host) page. A server→server prop is fine, and the\n * studio's client render injects the identical prop the same way.\n */\nexport function createEmbedRenderer(ctx: RenderContext): RichTextEmbedRenderer {\n return (node: ComponentNode) => renderComposition(node, ctx)\n}\n\n/** Whether a manifest declares a `richText` prop — i.e. it may render embeds (EC-189). */\nfunction manifestConsumesEmbeds(manifest: ComponentManifest): boolean {\n return Object.values(manifest.props).some((field) => field.type === 'richText')\n}\n\n/**\n * Bind a blocks renderer to a `RenderContext` (EC-254 transclusion): renders a\n * populated relation target's `blocks` field value as a composition through the\n * SAME `renderComposition` pipeline (EC-015 fallbacks, the injected resolvers, any\n * active item scope), so a referenced document's sub-blocks compose inline exactly\n * like a page's. Like {@link createEmbedRenderer}, it is a FUNCTION closed over\n * `ctx` injected as a PROP (`renderBlocks`), never a `'use client'` context\n * provider — a function cannot cross the RSC boundary into a client component.\n */\nexport function createBlocksRenderer(ctx: RenderContext): (value: unknown) => ReactNode {\n return (value: unknown) => renderComposition(value, ctx)\n}\n\n/** Whether a manifest declares a `relation` prop — i.e. it populates/transcludes (EC-254). */\nfunction manifestConsumesRelations(manifest: ComponentManifest): boolean {\n return Object.values(manifest.props).some((field) => field.type === 'relation')\n}\n\n/**\n * A `{ collection, id }` relation reference, or `null` when the value is not one.\n * EC-277: accepts the self-typed envelope (`{ type:'reference', collection, id }`)\n * and legacy bare `{ collection, id }` via the shared tolerant reader.\n */\nfunction relationRefOf(value: unknown): { collection: string; id: string } | null {\n return readDocumentRef(value) ?? null\n}\n\n/**\n * The asset id a prop value points at, or `undefined`. EC-277: a self-typed asset\n * envelope (`{ type:'asset', id }`) OR a legacy bare id string — but NOT a literal\n * URL string, which the renderer passes through as a direct src (URL-passthrough).\n */\nfunction assetIdOfProp(value: unknown): string | undefined {\n if (isAssetNode(value)) return value.id\n if (typeof value === 'string' && value !== '' && !isUrlLike(value)) return value\n return undefined\n}\n\n/** Stable cycle-guard key for a relation target. */\nfunction relationKey(ref: { collection: string; id: string }): string {\n return `${ref.collection}:${ref.id}`\n}\n\n/** The cycle-guard keys (`collection:id`) of a node's static relation props (EC-254). */\nfunction nodeRelationKeys(node: ComponentNode, manifest: ComponentManifest): string[] {\n const keys: string[] = []\n for (const [name, value] of Object.entries(node.props ?? {})) {\n if (value.kind !== 'static') continue\n const spec = manifest.props[name]\n if (spec?.type !== 'relation') continue\n const refs =\n spec.cardinality === 'many' ? (Array.isArray(value.value) ? value.value : []) : [value.value]\n for (const raw of refs) {\n const ref = relationRefOf(raw)\n if (ref) keys.push(relationKey(ref))\n }\n }\n return keys\n}\n\n/**\n * Populate a static `relation` prop's stored value to delivery shape (EC-254).\n * `one` → the single populated target, or `undefined` (omit the prop) when the\n * ref is malformed, unresolved (missing/invisible target), or cyclic. `many` →\n * the array of populated targets with such entries dropped. A ref already on the\n * transclude path is skipped — the cycle guard. Mirrors the asset branch's\n * \"resolved object or graceful omission\" contract; the caller only assigns a\n * defined result.\n */\nfunction resolveRelationProp(\n cardinality: 'one' | 'many',\n value: unknown,\n ctx: RenderContext,\n): unknown {\n const resolveOne = (raw: unknown): RelationTarget | null => {\n const ref = relationRefOf(raw)\n if (!ref) return null\n if (ctx.transcludePath?.includes(relationKey(ref))) return null // reference cycle\n return ctx.resolveRelation?.(ref) ?? null\n }\n\n if (cardinality === 'many') {\n const refs = Array.isArray(value) ? value : []\n const out: RelationTarget[] = []\n for (const raw of refs) {\n const target = resolveOne(raw)\n if (target) out.push(target)\n }\n return out\n }\n return resolveOne(value) ?? undefined\n}\n\n/**\n * Wrap a composite render in the `ContentClientProvider` when a content client is\n * injected (EC-191), so self-fetching components reach it via `useContentClient()`.\n * Nested wraps are harmless (inner provider wins with an equivalent value).\n *\n * Note (EC-189): the rich-text embed renderer is NOT wrapped here — it is a\n * function and a `'use client'` provider cannot receive it across the RSC\n * boundary (it threw \"Functions cannot be passed directly to Client Components\"\n * on every server-rendered page). It is injected as a prop in `resolveRender`.\n */\nfunction withContent(ctx: RenderContext, rendered: ReactNode): ReactNode {\n if (ctx.content)\n return <ContentClientProvider client={ctx.content}>{rendered}</ContentClientProvider>\n return rendered\n}\n\n/** Resolve a node's props and slot children. Throws only if a resolver throws (caught upstream). */\nfunction resolveRender(\n node: ComponentNode,\n manifest: ComponentManifest,\n ctx: RenderContext,\n): ResolvedRender {\n const props = resolveProps(node, manifest, ctx)\n\n // EC-189: a component with a `richText` prop (the RichText primitive) renders\n // `componentEmbed` nodes through the renderer. Inject the embed renderer as a\n // prop — server-safe (a server→server function prop), unlike a `'use client'`\n // context provider, which cannot receive a function across the RSC boundary.\n if (manifestConsumesEmbeds(manifest)) props.renderEmbed = createEmbedRenderer(ctx)\n\n // EC-254: a component with a `relation` prop may transclude a populated target's\n // `blocks` field (e.g. `project.Reusable` rendering the referenced `reusable`'s\n // `content`). Inject a composition renderer — server-safe like `renderEmbed` —\n // closed over a context whose cycle-guard path includes THIS node's relation\n // targets, so a transcluded sub-block that references an ancestor target degrades\n // instead of looping. Population above ran with `ctx` (the un-extended path), so\n // the node's OWN targets are populated, never pre-blocked.\n if (manifestConsumesRelations(manifest)) {\n props.renderBlocks = createBlocksRenderer({\n ...ctx,\n transcludePath: [...(ctx.transcludePath ?? []), ...nodeRelationKeys(node, manifest)],\n })\n }\n\n // EC-255: a component whose manifest declares a `listing` renders documents from\n // a LIVE query (a dynamic grid), not a static pick. Build the query from its\n // filter-source prop and inject the resolved documents as the declared prop — the\n // host runs the query (Next bakes it, the studio runs it live); the renderer never\n // executes one. No resolver wired, or no usable pick, yields an empty array, so the\n // block shows its own empty state rather than listing the whole collection.\n if (manifest.listing) {\n const query = listingQueryOf(node, manifest.listing)\n props[manifest.listing.prop] = (query && ctx.resolveListing?.(query)) || []\n }\n\n // Repeater nodes iterate their items prop over the item slot template.\n if (manifest.iterate) {\n return resolveRepeater(node, manifest, manifest.iterate, props, ctx)\n }\n\n // Composition hosts render a block-field value (a ComponentNode tree) as children.\n if (manifest.composition) {\n return resolveComposition(manifest.composition, props, ctx)\n }\n\n const { children, slotProps } = renderSlots(node, manifest, ctx)\n return { props, slotProps, children }\n}\n\n/**\n * Render a composition host: the resolved `valueProp` holds a stored composition\n * (a `ComponentNode` tree), which becomes the component's children via\n * `renderComposition` — so a `blocks` field value composes inside a page/template\n * exactly like authored nodes (EC-188, AD-12). Mirrors `resolveRepeater`: the raw\n * value stays in `props` (harmless; the implementation typically ignores it) and the\n * rendered tree is handed over as `children`.\n */\nfunction resolveComposition(\n spec: CompositionSpec,\n props: Record<string, unknown>,\n ctx: RenderContext,\n): ResolvedRender {\n return { props, slotProps: {}, children: renderComposition(props[spec.valueProp], ctx) }\n}\n\n/** Resolve every prop of a node into a concrete runtime value. */\nfunction resolveProps(\n node: ComponentNode,\n manifest: ComponentManifest,\n ctx: RenderContext,\n): Record<string, unknown> {\n const out: Record<string, unknown> = {}\n const entries = Object.entries(node.props ?? {})\n const isSpread = (value: PropValue): boolean =>\n value.kind === 'binding' && value.binding.mode === 'spread'\n // Apply spread bindings first, then explicit props — so a named static/value prop always wins\n // over a same-named spread key, predictably and independent of authoring order (EC-089).\n for (const [name, value] of entries)\n if (isSpread(value)) resolveProp(name, value, manifest, ctx, out)\n for (const [name, value] of entries)\n if (!isSpread(value)) resolveProp(name, value, manifest, ctx, out)\n return out\n}\n\n/**\n * A value an `asset` prop can carry verbatim instead of an asset id: an absolute\n * URL (`https://…`, protocol-relative `//…`), a root-relative path (`/…`), or an\n * inline `data:`/`blob:` source. Lets the Image primitive keep accepting plain\n * URLs (back-compat: `Image.src` was a free `text` prop before EC-195) and keeps\n * the renderer usable with no asset store wired.\n */\nfunction isUrlLike(value: string): boolean {\n return (\n /^(https?:)?\\/\\//.test(value) ||\n value.startsWith('/') ||\n value.startsWith('data:') ||\n value.startsWith('blob:')\n )\n}\n\n/**\n * Hooks for {@link walkComposition} — a collector declares only WHAT to gather at\n * each node; the walk owns HOW the composition is traversed (EC-281).\n */\ninterface CompositionWalkHooks {\n /** Called once per node that has a manifest — collect the node-local payload. */\n visitNode?: (node: ComponentNode, manifest: ComponentManifest) => void\n /** Called for every static `relation`-prop ref seen, resolved or not (cache-tag keys). */\n onRelationRef?: (key: string, ref: { collection: string; id: string }) => void\n /** Called for each relation ref that populated to a target (the relations map). */\n onRelationTarget?: (key: string, target: RelationTarget) => void\n /**\n * Populate a relation ref to depth-1. Its presence ENABLES transclusion: the\n * walk follows each static relation prop into its target and recurses the\n * target's composition-shaped fields (a `reusable`'s `content` rendered inline\n * via `renderBlocks`). Omitted → the walk stays page-local (no transclusion),\n * the graceful degradation a host without a relation populate already gets.\n */\n resolveRelation?: ResolveRelation\n}\n\n/**\n * The one composition walk every page-scoping collector shares (EC-281). It\n * traverses a node tree exactly as the renderer resolves it — each node, its\n * composition-host composed blocks (`props[valueProp]`), its slot children, AND a\n * populated relation target's composition-shaped fields (transclusion via\n * `renderBlocks`) — crossing the transclusion boundary in EXACTLY ONE place,\n * cycle-guarded by `seen` (`collection:id`).\n *\n * Before this, the asset / relation / listing collectors each re-implemented this\n * skeleton, and a resolution concern that forgot to follow transclusion silently\n * stopped at a reference — the recurring EC-262 / EC-256 / EC-270 bug class. Now a\n * collector supplies a {@link CompositionWalkHooks} and cannot reintroduce that\n * gap: if it walks at all, it transcludes. `resolveRelation` is injected (never\n * imported), so this stays free of the content/persistence packages.\n */\nfunction walkComposition(\n nodes: readonly ComponentNode[],\n registry: ComponentRegistry,\n hooks: CompositionWalkHooks,\n seen: Set<string>,\n): void {\n for (const node of nodes) {\n const manifest = registry.getManifest(node.componentId)\n if (manifest) {\n hooks.visitNode?.(node, manifest)\n // Transclusion: follow each static `relation` prop into its populated target\n // and recurse the target's composition-shaped fields. Only when a populate is\n // wired — else relation props pass through raw at render (no inlined content).\n if (hooks.resolveRelation) {\n for (const [name, value] of Object.entries(node.props ?? {})) {\n if (value.kind !== 'static') continue\n const spec = manifest.props[name]\n if (spec?.type !== 'relation') continue\n const refs =\n spec.cardinality === 'many' ? (Array.isArray(value.value) ? value.value : []) : [value.value]\n for (const raw of refs) {\n const ref = relationRefOf(raw)\n if (!ref) continue\n const key = relationKey(ref)\n hooks.onRelationRef?.(key, ref) // tag every pick, even an unresolved one\n if (seen.has(key)) continue // already walked → also terminates cycles\n seen.add(key)\n const target = hooks.resolveRelation(ref)\n if (!target) continue\n hooks.onRelationTarget?.(key, target)\n for (const fieldValue of Object.values(target)) {\n walkComposition(compositionRoots(fieldValue), registry, hooks, seen)\n }\n }\n }\n }\n // A composition host stores its composed blocks in `props[valueProp]` (a blocks\n // VALUE), not `node.slots`, so the slot recursion below misses them — walk them.\n if (manifest.composition) {\n const composed = node.props?.[manifest.composition.valueProp]\n if (composed?.kind === 'static') {\n walkComposition(compositionRoots(composed.value), registry, hooks, seen)\n }\n }\n }\n for (const children of Object.values(node.slots ?? {})) {\n walkComposition(children, registry, hooks, seen)\n }\n }\n}\n\n/**\n * Collect the asset ids a node tree resolves through `resolveAsset` (EC-205): the\n * STATIC `asset`-typed props holding a real asset id (not a passthrough URL/path).\n * Mirrors {@link resolveProp}'s asset branch exactly, so the set is COMPLETE (no\n * referenced asset is missed → no broken image) and MINIMAL (only ids the renderer\n * would resolve). Bound asset props resolve via bindings, and document asset FIELDS\n * resolve separately — neither uses the baked asset list, so neither is collected.\n * Lets a delivery host page-scope the baked assets to exactly what a page uses.\n *\n * Transclusion-aware (EC-270) via the shared {@link walkComposition} (EC-281): a\n * reusable's transcluded `content` images are page-scoped too. Exactly like its\n * relation sibling\n * {@link collectReferencedRelations}: when `resolveRelation` is supplied, a static\n * `relation` prop is followed into its populated target and the asset ids inside\n * that target's composition-shaped fields (a `reusable`'s `content` blocks, which a\n * component renders inline via `renderBlocks`) are collected too — otherwise a\n * transcluded reusable block's image, baked nowhere in the page tree, resolves to\n * null on the host and renders empty. Cycle-safe: a target already walked is never\n * re-walked, so a self-referencing reusable terminates. Without `resolveRelation`\n * (a host with no relation populate) the walk stays page-local, the same graceful\n * degradation the relation collector gives.\n */\nexport function collectReferencedAssetIds(\n node: ComponentNode,\n registry: ComponentRegistry,\n into: Set<string> = new Set(),\n resolveRelation?: ResolveRelation,\n seen: Set<string> = new Set(),\n): Set<string> {\n walkComposition(\n [node],\n registry,\n {\n resolveRelation,\n visitNode: (visited, manifest) => {\n for (const [name, value] of Object.entries(visited.props ?? {})) {\n if (value.kind !== 'static') continue\n const spec = manifest.props[name]\n if (spec?.type === 'asset') {\n const assetId = assetIdOfProp(value.value)\n if (assetId !== undefined) into.add(assetId)\n } else if (spec?.type === 'object') {\n // EC-253: a gallery/repeater prop nests asset ids — collect them too, so\n // the host bakes every referenced asset and no nested image is missed.\n collectObjectPropAssetIds(spec.fields, spec.cardinality, value.value, into)\n }\n }\n },\n },\n seen,\n )\n return into\n}\n\n/**\n * Walk a composition (a page's blocks + its layout root) and POPULATE every static\n * `relation` prop it references into a serializable `{ \"collection:id\": target }`\n * map (EC-254) — the relation analog of {@link collectReferencedAssetIds}. A\n * delivery host bakes this into its (serializable) render outcome and rebuilds\n * `RenderContext.resolveRelation` from the map inside the RSC, exactly as it does\n * with the page-scoped asset list — because a function (the content client) can\n * ride neither the data cache nor the RSC server→client boundary.\n *\n * Transclusion-aware + cycle-safe: a populated target's composition-shaped fields\n * (a `reusable`'s `content` blocks, which a component renders inline via\n * `renderBlocks`) are recursively walked so those blocks' own relations are\n * populated too; a target already in the map is never re-walked, so a reference\n * cycle terminates. `resolveRelation` is the injected populate (depth-1) — passed\n * in, never imported, so this stays free of the content/persistence packages.\n *\n * Optional `refKeys` records the `collection:id` of EVERY referenced pick — even\n * one that resolved to `null` (an unpublished/missing target) — so a delivery host\n * can cache-tag the page by it (EC-254/EC-146): editing or publishing a referenced\n * document then invalidates the embedding page, including a previously-unpublished\n * pick that should appear the moment it publishes.\n */\nexport function collectReferencedRelations(\n nodes: readonly ComponentNode[],\n registry: ComponentRegistry,\n resolveRelation: ResolveRelation,\n into: Record<string, RelationTarget> = {},\n refKeys?: Set<string>,\n): Record<string, RelationTarget> {\n // Seed the cycle guard with what `into` already holds, preserving the old\n // \"a key already in the map is never re-walked\" semantics for accumulating callers.\n walkComposition(\n nodes,\n registry,\n {\n resolveRelation,\n onRelationRef: (key) => refKeys?.add(key), // tag every pick, even an unresolved one\n onRelationTarget: (key, target) => {\n into[key] = target\n },\n visitNode: (node, manifest) => {\n // EC-256: a `relation` nested in an `object` prop (a link object's `page` ref)\n // is baked + tagged like a top-level pick, so renaming the target page\n // invalidates the embedding page. Depth-1, NO transclusion — a link target is\n // read for its path, not inlined (else link-following bakes the whole linked\n // relation graph). The walk handles top-level relation props (transcluded).\n for (const [name, value] of Object.entries(node.props ?? {})) {\n if (value.kind !== 'static') continue\n const spec = manifest.props[name]\n if (spec?.type === 'object' && value.value != null) {\n collectObjectPropRelations(\n spec.fields,\n spec.cardinality,\n value.value,\n resolveRelation,\n into,\n refKeys,\n )\n }\n }\n },\n },\n new Set(Object.keys(into)),\n )\n return into\n}\n\n/**\n * Build the {@link ListingQuery} a node's `listing` manifest declares (EC-255),\n * or `null` when its filter-source prop carries no usable pick — the block then\n * renders empty rather than listing the whole collection. Reads the `fromProp`\n * STATIC pick (a relation value `{ collection, id }` reduced to its id, or a bare\n * id string) and binds it to the listed collection's filter `field`. Pure (node\n * props + manifest only; no content import), so the Next bake and the studio live\n * resolver build the IDENTICAL query — and thus agree on the baked cache key.\n */\nexport function listingQueryOf(node: ComponentNode, spec: ListingSpec): ListingQuery | null {\n const pick = node.props?.[spec.filter.fromProp]\n if (!pick || pick.kind !== 'static') return null\n const ref = relationRefOf(pick.value)\n const id = ref ? ref.id : typeof pick.value === 'string' && pick.value !== '' ? pick.value : null\n if (id === null) return null\n const query: ListingQuery = { collection: spec.collection, where: { [spec.filter.field]: id } }\n if (spec.sort) query.sort = spec.sort\n if (spec.limit !== undefined) query.limit = spec.limit\n return query\n}\n\n/**\n * Deterministic cache key for a {@link ListingQuery} (EC-255): a stable JSON shape\n * (where-keys sorted, sort/limit normalized) so the Next host can key its baked\n * `query → docs` map and the rebuilt resolver looks the listing up by the SAME key\n * the renderer's {@link listingQueryOf} produces. Mirrors `@elytracms/core/content`'s\n * `serializeListQuery`, kept local so the renderer takes no content dependency.\n */\nexport function serializeListingQuery(query: ListingQuery): string {\n const where: Record<string, string | number | boolean> = {}\n for (const key of Object.keys(query.where).sort()) {\n const value = query.where[key]\n if (value !== undefined) where[key] = value\n }\n return JSON.stringify({\n collection: query.collection,\n where,\n sort: query.sort ? { field: query.sort.field, direction: query.sort.direction ?? 'asc' } : null,\n limit: query.limit ?? null,\n })\n}\n\n/**\n * Walk a composition (a page's blocks + its layout root) and resolve every\n * `listing` a node declares into a serializable `{ serializedQuery: docs[] }` map\n * (EC-255) — the listing analog of {@link collectReferencedRelations}. A delivery\n * host bakes this into its (serializable) render outcome and rebuilds\n * `RenderContext.resolveListing` from the map inside the RSC, exactly as it does\n * with relations and the page-scoped asset list, because the content client (which\n * runs the query) can ride neither the data cache nor the RSC server→client\n * boundary.\n *\n * `runListing` is the injected query executor (the host's `listDocuments`) — passed\n * in, never imported, so this stays free of the content/persistence packages. The\n * key is {@link serializeListingQuery}, so two nodes with the same query share a\n * single execution.\n *\n * Transclusion-aware + cycle-safe, exactly like {@link collectReferencedRelations}:\n * a composition host's composed blocks, child slots, AND a populated relation\n * target's composition-shaped fields (a `reusable`'s `content` a block transcludes\n * via `renderBlocks`) are all walked — so a listing nested inside a transcluded\n * reusable is baked too, matching what the render path resolves at depth. Without\n * this the Next host would render such a grid empty (the studio's live resolver\n * still works) AND drop its collection-membership cache tag. `resolveRelation` is\n * the injected populate (depth-1) used to reach those transcluded fields; a target\n * already visited is never re-walked, so a reference cycle terminates.\n */\nexport function collectReferencedListings(\n nodes: readonly ComponentNode[],\n registry: ComponentRegistry,\n runListing: (query: ListingQuery) => RelationTarget[],\n resolveRelation: ResolveRelation,\n into: Record<string, RelationTarget[]> = {},\n visitedRelations: Set<string> = new Set(),\n): Record<string, RelationTarget[]> {\n walkComposition(\n nodes,\n registry,\n {\n resolveRelation,\n visitNode: (node, manifest) => {\n if (!manifest.listing) return\n const query = listingQueryOf(node, manifest.listing)\n if (!query) return\n const key = serializeListingQuery(query)\n if (!(key in into)) into[key] = runListing(query)\n },\n },\n visitedRelations,\n )\n return into\n}\n\n/** Collect the asset ids nested inside an `object` prop value (mirrors {@link resolveObjectProps}). */\nfunction collectObjectPropAssetIds(\n fields: readonly FieldDef[],\n cardinality: 'one' | 'many',\n value: unknown,\n into: Set<string>,\n): void {\n const items = cardinality === 'many' ? (Array.isArray(value) ? value : []) : [value]\n for (const item of items) {\n if (!item || typeof item !== 'object' || Array.isArray(item)) continue\n const record = item as Record<string, unknown>\n for (const sub of fields) {\n const sv = record[sub.name]\n if (sub.type === 'asset') {\n const assetId = assetIdOfProp(sv)\n if (assetId !== undefined) into.add(assetId)\n } else if (sub.type === 'object' && sv != null)\n collectObjectPropAssetIds(sub.fields, sub.cardinality, sv, into)\n }\n }\n}\n\n/**\n * Populate (depth-1) the `relation` refs nested inside an `object` prop value into\n * the relations bake map + refKeys (EC-256) — the relation analog of\n * {@link collectObjectPropAssetIds}, so a `page` ref inside a link object\n * (`buttons[].link.page`) is baked and cache-tagged exactly like a top-level pick.\n * Recurses into nested `object` subfields. UNLIKE the top-level relation walk it\n * does NOT transclude the target's composition-shaped fields: a link's target page\n * is read for its path (depth-1), never inlined — following it would bake the whole\n * linked-site relation graph into every embedding page. `refKeys` tags every pick\n * (even an unresolved one) so publishing/renaming the target invalidates the page.\n */\nfunction collectObjectPropRelations(\n fields: readonly FieldDef[],\n cardinality: 'one' | 'many',\n value: unknown,\n resolveRelation: ResolveRelation,\n into: Record<string, RelationTarget>,\n refKeys: Set<string> | undefined,\n): void {\n const items = cardinality === 'many' ? (Array.isArray(value) ? value : []) : [value]\n for (const item of items) {\n if (!item || typeof item !== 'object' || Array.isArray(item)) continue\n const record = item as Record<string, unknown>\n for (const sub of fields) {\n const sv = record[sub.name]\n if (sub.type === 'relation' && sv != null) {\n const refs = sub.cardinality === 'many' ? (Array.isArray(sv) ? sv : []) : [sv]\n for (const raw of refs) {\n const ref = relationRefOf(raw)\n if (!ref) continue\n const key = relationKey(ref)\n refKeys?.add(key)\n if (key in into) continue\n const target = resolveRelation(ref)\n if (target) into[key] = target // depth-1 only — never transclude a link target\n }\n } else if (sub.type === 'object' && sv != null) {\n collectObjectPropRelations(sub.fields, sub.cardinality, sv, resolveRelation, into, refKeys)\n }\n }\n }\n}\n\n/**\n * Resolve the `asset` and `relation` subfields nested inside an `object` / repeater\n * prop value to delivery shape (EC-253 assets, EC-256 relations). The top-level\n * branches of {@link resolveProp} only resolve a TOP-LEVEL `asset`/`relation` prop,\n * so an asset nested in an `object` (a gallery's `images[].image`) or a relation\n * nested in one (a link object's `buttons[].link.page`) would otherwise reach the\n * implementation as a raw id/ref. This walks the prop's declared subfields:\n *\n * - `asset` → `ctx.resolveAsset` (url-like values pass through; an unresolved id\n * drops the subfield), exactly as the top level does.\n * - `relation` → `ctx.resolveRelation` depth-1 via {@link resolveRelationProp}, so\n * the implementation reads the target's fields (e.g. a link's `page.slug` → a live\n * path). No resolver → the raw ref passes through (graceful degradation); an\n * unresolved `one` drops the subfield. Depth-1 only — a nested relation is never\n * transcluded (a link target is read, not inlined).\n *\n * and recurses into nested `object` subfields. Pure; non-object items pass through.\n */\nfunction resolveObjectProps(\n fields: readonly FieldDef[],\n cardinality: 'one' | 'many',\n value: unknown,\n ctx: RenderContext,\n): unknown {\n const items = cardinality === 'many' ? (Array.isArray(value) ? value : []) : [value]\n const resolvedItems = items.map((item) => {\n if (!item || typeof item !== 'object' || Array.isArray(item)) return item\n const next: Record<string, unknown> = { ...(item as Record<string, unknown>) }\n for (const sub of fields) {\n const sv = next[sub.name]\n if (sub.type === 'asset') {\n const assetId = assetIdOfProp(sv)\n if (assetId === undefined) continue // URL string / empty / not an asset → leave as-is\n const resolved = ctx.resolveAsset?.(assetId)\n if (resolved) next[sub.name] = resolved\n else delete next[sub.name]\n } else if (sub.type === 'relation' && sv != null) {\n if (!ctx.resolveRelation) continue // no resolver → leave the raw ref (degrade)\n const resolved = resolveRelationProp(sub.cardinality, sv, ctx)\n if (resolved !== undefined) next[sub.name] = resolved\n else delete next[sub.name] // unresolved `one` → drop the subfield\n } else if (sub.type === 'object' && sv != null) {\n next[sub.name] = resolveObjectProps(sub.fields, sub.cardinality, sv, ctx)\n }\n }\n return next\n })\n return cardinality === 'many' ? resolvedItems : resolvedItems[0]\n}\n\n/** Resolve a single prop into `out`, applying invalid-static-prop fallbacks and spread. */\nfunction resolveProp(\n name: string,\n value: PropValue,\n manifest: ComponentManifest,\n ctx: RenderContext,\n out: Record<string, unknown>,\n): void {\n const spec = manifest.props[name]\n\n if (value.kind === 'static') {\n // Validate against the prop's field-def (EC-190); on failure use the field's\n // `default` or omit — the EC-015 invalid-static-prop visible fallback.\n const validate = propValueValidator(manifest, name)\n if (validate && !validate(value.value)) {\n if (spec?.default !== undefined) out[name] = spec.default\n // else: omit the prop entirely and continue.\n return\n }\n // EC-195: an `asset`-typed prop stores an asset id; resolve it to a usable\n // asset (url + intrinsic dimensions + alt) so an uploaded image renders\n // optimized. A raw URL/path value passes through (back-compat, and so the\n // renderer never *requires* an asset store). A missing asset omits the prop\n // — the implementation shows its own empty/fallback state, never a crash.\n if (spec?.type === 'asset') {\n // EC-277: an asset id arrives self-typed (`{ type:'asset', id }`) or as a legacy\n // bare id; a literal URL/path string passes through unchanged (back-compat).\n const assetId = assetIdOfProp(value.value)\n if (assetId === undefined) {\n if (typeof value.value === 'string') out[name] = value.value\n return\n }\n const resolved = ctx.resolveAsset?.(assetId)\n if (resolved) out[name] = resolved\n // else omit — unresolved asset id → visible fallback in the implementation.\n return\n }\n // EC-253/EC-256: an `object` / repeater prop may nest `asset` subfields (a\n // gallery's `images[].image`) or `relation` subfields (a link object's\n // `buttons[].link.page`); resolve those to delivery shape so the implementation\n // reads `item.image.url` / `link.page.slug`, mirroring the top-level branches at\n // every depth.\n if (spec?.type === 'object' && value.value != null) {\n out[name] = resolveObjectProps(spec.fields, spec.cardinality, value.value, ctx)\n return\n }\n // EC-254: a `relation` prop stores a `{ collection, id }` ref (or an array for\n // `many`) — the editor's document pick on a block. Populate it to the target's\n // depth-1 delivery shape so the implementation reads resolved fields, not a raw\n // ref. Mirrors the asset branch: unresolved → omit (`one`) / drop (`many`); no\n // resolver wired → the raw ref passes through (the same graceful degradation).\n if (spec?.type === 'relation') {\n if (!ctx.resolveRelation) {\n out[name] = value.value\n return\n }\n const resolved = resolveRelationProp(spec.cardinality, value.value, ctx)\n if (resolved !== undefined) out[name] = resolved\n return\n }\n out[name] = value.value\n return\n }\n\n // Bound prop — resolve through the injected resolver (may throw; caught by caller).\n // NB (EC-254): relation population is intentionally STATIC-only — a relation prop\n // is the editor's document pick (v1 props are static, AD-12; prop bindings are\n // parked). A bound value passes through as the resolver returns it, never through\n // `resolveRelationProp`, so a relation prop should not be bound until prop bindings\n // and their population are designed together.\n const resolved = ctx.resolveBinding(value.binding, ctx.item)\n if (value.binding.mode === 'spread') {\n if (resolved && typeof resolved === 'object' && !Array.isArray(resolved)) {\n Object.assign(out, resolved as Record<string, unknown>)\n }\n return\n }\n out[name] = resolved\n}\n\n/** Render the named slots of a node: `children` maps to React children, others to props. */\nfunction renderSlots(\n node: ComponentNode,\n manifest: ComponentManifest,\n ctx: RenderContext,\n): { children: ReactNode; slotProps: Record<string, ReactNode> } {\n const slots = node.slots ?? {}\n const slotProps: Record<string, ReactNode> = {}\n let children: ReactNode = renderSlotChildren(slots[DEFAULT_SLOT], ctx)\n\n // EC-190: `blocks` props are slots too (named child regions); `manifestSlots`\n // folds them in (a no-op for manifests without blocks props).\n const declaredSlots = manifestSlots(manifest)\n for (const slotSpec of declaredSlots) {\n if (slotSpec.name === DEFAULT_SLOT) continue\n const nodes = slots[slotSpec.name]\n if ((!nodes || nodes.length === 0) && slotSpec.required) {\n // Missing required named slot — visible placeholder in that slot position.\n slotProps[slotSpec.name] = <MissingSlotPlaceholder nodeId={node.id} slot={slotSpec.name} />\n continue\n }\n slotProps[slotSpec.name] = renderSlotChildren(nodes, ctx)\n }\n\n // Pass through any node slots not declared on the manifest (e.g. a Switch's dynamic\n // `case:*` slots), so dynamic-slot components receive their children as props.\n const declared = new Set(declaredSlots.map((s) => s.name))\n for (const [name, nodes] of Object.entries(slots)) {\n if (name === DEFAULT_SLOT || declared.has(name)) continue\n slotProps[name] = renderSlotChildren(nodes, ctx)\n }\n\n // Missing required default slot — placeholder as children.\n const defaultSpec = declaredSlots.find((s) => s.name === DEFAULT_SLOT)\n const defaultNodes = slots[DEFAULT_SLOT]\n if (defaultSpec?.required && (!defaultNodes || defaultNodes.length === 0)) {\n children = <MissingSlotPlaceholder nodeId={node.id} slot={DEFAULT_SLOT} />\n }\n\n return { children, slotProps }\n}\n\n/**\n * Render an ordered list of slot child nodes (array order preserved). Each\n * entry is wrapped in a Fragment keyed by the node id: `renderNode`'s return\n * value may be an unkeyed fallback element (missing component, render error)\n * or have its key stripped by a host `decorateNode`, and unkeyed entries in\n * this array would trigger React's `unique \"key\" prop` warning on every page.\n */\nfunction renderSlotChildren(nodes: ComponentNode[] | undefined, ctx: RenderContext): ReactNode {\n if (!nodes || nodes.length === 0) return null\n return (\n <Fragment>\n {nodes.map((child) => (\n <Fragment key={child.id}>{renderNode(child, ctx)}</Fragment>\n ))}\n </Fragment>\n )\n}\n\n/**\n * Render a repeater: resolve `itemsProp` to an array and render the `itemSlot` template\n * once per item, with `ItemContext` set so `repeaterItem`-mode bindings resolve against\n * the item. The repeater implementation receives the rendered items as `children`.\n */\nfunction resolveRepeater(\n node: ComponentNode,\n manifest: ComponentManifest,\n iterate: IterateSpec,\n props: Record<string, unknown>,\n ctx: RenderContext,\n): ResolvedRender {\n const itemsValue = props[iterate.itemsProp]\n const items = Array.isArray(itemsValue) ? itemsValue : []\n const template = node.slots?.[iterate.itemSlot]\n\n const slotSpec = manifest.slots.find((s) => s.name === iterate.itemSlot)\n if ((!template || template.length === 0) && slotSpec?.required) {\n // No item template but the slot is required — visible placeholder, no iteration.\n return {\n props,\n slotProps: {},\n children: <MissingSlotPlaceholder nodeId={node.id} slot={iterate.itemSlot} />,\n }\n }\n\n const rendered = items.map((item, index) => {\n const itemCtx: RenderContext = { ...ctx, item: { item, index } satisfies ItemContext }\n return (\n <Fragment key={index}>\n {(template ?? []).map((child) => (\n // Keyed per template node for the same reason as renderSlotChildren.\n <Fragment key={child.id}>{renderNode(child, itemCtx)}</Fragment>\n ))}\n </Fragment>\n )\n })\n\n return { props, slotProps: {}, children: <Fragment>{rendered}</Fragment> }\n}\n\n/**\n * Render a composition FIELD VALUE (EC-188, AD-12): one `ComponentNode` root or an\n * ordered list of them — a `blocks` field's stored value. Each root renders through\n * `renderNode` with the SAME `RenderContext`, so the EC-015 visible fallbacks, the\n * injected binding resolver, and any active item scope all apply exactly as on a\n * page. An empty/absent value renders nothing (the host component owns its own empty\n * state). Roots are keyed by id — `renderNode` may return an unkeyed fallback —\n * mirroring `renderSlotChildren`.\n *\n * This is the shared delivery primitive for every composition surface: the block\n * field (here), and later the page collection (EC-187) and rich-text embeds (EC-189).\n */\nexport function renderComposition(value: unknown, ctx: RenderContext): ReactNode {\n const roots = compositionRoots(value)\n if (roots.length === 0) return null\n return withContent(\n ctx,\n <Fragment>\n {roots.map((root) => (\n <Fragment key={root.id}>{renderNode(root, ctx)}</Fragment>\n ))}\n </Fragment>,\n )\n}\n\n/** Coerce a stored composition value (one node, many, or absent) to a root list. */\nfunction compositionRoots(value: unknown): ComponentNode[] {\n if (Array.isArray(value)) return value.filter(isComponentNode)\n if (isComponentNode(value)) return [value]\n return []\n}\n\n/** Structural ComponentNode guard — the stored value is opaque at the type level. */\nfunction isComponentNode(value: unknown): value is ComponentNode {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { id?: unknown }).id === 'string' &&\n typeof (value as { componentId?: unknown }).componentId === 'string'\n )\n}\n\n/**\n * Render a composition (`blocks`) field value composed INTO a graph layout\n * (EC-187): the page collection's delivery primitive. The composition renders\n * via `renderComposition` (the same per-node pipeline + EC-015 fallbacks), and\n * the result is injected into the layout root's `outlet` slot — so a\n * page-collection document's `body` composes inside its layout chrome.\n *\n * Degrades, never crashes: an `undefined`/unknown `layoutId`, or a graph with no\n * matching layout, renders the bare composition (no layout chrome) rather than\n * blanking the page. `withContent` wraps the output so a `ContentClient` on\n * `ctx` propagates to self-fetching blocks (EC-191).\n */\nexport function renderCompositionInLayout(\n graph: ProjectGraph,\n layoutId: string | undefined,\n value: unknown,\n ctx: RenderContext,\n): ReactNode {\n const layout = layoutId ? graph.layouts.find((l) => l.id === layoutId) : undefined\n // No layout selected, or the selected layout is absent from the graph: render\n // the bare composition rather than blanking the page.\n if (!layout) return withContent(ctx, renderComposition(value, ctx))\n\n // With a layout, inject the composition's roots into the layout root's outlet\n // slot, so the composition renders through the layout's chrome via the\n // identical per-node pipeline. `compositionRoots` coerces the stored value\n // (one node, many, or absent) to the outlet's `ComponentNode[]`.\n const root = injectNodesIntoOutlet(layout.root, compositionRoots(value))\n return withContent(ctx, renderNode(root, ctx))\n}\n\n/**\n * Produce a layout tree with `nodes` inserted into the layout root's `outlet`\n * slot. The original graph is never mutated.\n */\nfunction injectNodesIntoOutlet(root: ComponentNode, nodes: ComponentNode[]): ComponentNode {\n return {\n ...root,\n slots: {\n ...(root.slots ?? {}),\n [OUTLET_SLOT]: nodes,\n },\n }\n}\n\nfunction messageOf(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text.js","sourceRoot":"","sources":["../../src/runtime-renderer/rich-text.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rich-text.js","sourceRoot":"","sources":["../../src/runtime-renderer/rich-text.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { ReactNode } from 'react'\nimport { defineComponent } from '@elytracms/core/component-registry'\nimport {\n parseRichTextValue,\n renderRichTextValue,\n sampleRichTextRegistry,\n} from '@elytracms/core/rich-text'\nimport type { RichTextValue, RichTextEmbedRenderer } from '@elytracms/core/rich-text'\nimport type { JsonValue } from '@elytracms/core/project-graph'\n\n/**\n * RichText — the rich-text content primitive (EC-159). Its `content` prop is a\n * stored `@elytracms/core/rich-text` value (the versioned, ProseMirror-shaped storage\n * JSON); rendering goes through the package's server-safe renderer with the\n * project's custom block/inline registry, so custom blocks render identically\n * on the canvas, in fixtures, and in an exported app. Unknown node types\n * degrade to the renderer's visible fallback — never a crash, never silent.\n *\n * The prop is flagged `inlineEditable`: the builder canvas edits the rendered\n * element in place (EC-158 semantics extended to rich text), committing back\n * to the same storage format.\n */\n\n/**\n * The custom block/inline registry the primitive renders with. The sample\n * registry (callout block + mention inline) stands in for project-registered\n * blocks, mirroring how `project.*` components stand in for project code.\n */\nexport const richTextPrimitiveRegistry = sampleRichTextRegistry\n\n/**\n * Stored rich-text values are plain JSON by construction (Zod-validated, no\n * runtime handles), but `RichTextNode` is an interface without an index\n * signature, so the structural `JsonValue` assignment needs this one cast.\n */\nfunction asJson(value: RichTextValue): JsonValue {\n return value as unknown as JsonValue\n}\n\n/** Default content for a freshly inserted RichText node. */\nexport const RICH_TEXT_DEFAULT_VALUE: RichTextValue = {\n version: 1,\n doc: {\n type: 'doc',\n content: [\n {\n type: 'paragraph',\n content: [{ type: 'text', text: 'Rich text. Select to format, double-click to edit.' }],\n },\n ],\n },\n}\n\n/** A fixture document exercising marks, a link, a list, and the custom blocks. */\nconst RICH_TEXT_FIXTURE_VALUE: RichTextValue = {\n version: 1,\n doc: {\n type: 'doc',\n content: [\n { type: 'heading', attrs: { level: 3 }, content: [{ type: 'text', text: 'Rich text block' }] },\n {\n type: 'paragraph',\n content: [\n { type: 'text', text: 'Formatted ' },\n { type: 'text', text: 'bold', marks: [{ type: 'bold' }] },\n { type: 'text', text: ' and ' },\n { type: 'text', text: 'italic', marks: [{ type: 'italic' }] },\n { type: 'text', text: ' copy with a ' },\n { type: 'text', text: 'link', marks: [{ type: 'link', attrs: { href: 'https://example.com' } }] },\n { type: 'text', text: '.' },\n ],\n },\n {\n type: 'callout',\n attrs: { tone: 'info' },\n content: [{ type: 'text', text: 'A custom block, rendered by the project registry.' }],\n },\n ],\n },\n}\n\nexport function RichText(props: Record<string, unknown> & { children?: ReactNode }): ReactNode {\n // The embed renderer (EC-189), injected by the renderer as a prop (bound to\n // `renderComposition`). A prop — not a `'use client'` React context — keeps this\n // server-safe: the renderer runs in the host's RSC pass, and a function cannot\n // cross the server→client boundary into a context provider. When present,\n // `componentEmbed` nodes render through the same pipeline as a page/block field;\n // when absent (a bare render), embeds degrade to the visible fallback.\n const renderEmbed =\n typeof props.renderEmbed === 'function'\n ? (props.renderEmbed as RichTextEmbedRenderer)\n : undefined\n // Unset content renders the manifest default (the renderer omits unset\n // props rather than applying defaults — mirrors Heading/Text fallbacks).\n const parsed = parseRichTextValue(props.content ?? RICH_TEXT_DEFAULT_VALUE)\n if (!parsed.ok) {\n // Schema-invalid static values are normally replaced by the manifest\n // default before render; this guards bound values — visibly.\n return (\n <div data-ec-primitive=\"RichText\" className=\"rich-text-invalid\" role=\"note\">\n Invalid rich-text content.\n </div>\n )\n }\n return (\n <div data-ec-primitive=\"RichText\">\n {renderRichTextValue(parsed.value, { registry: richTextPrimitiveRegistry, renderEmbed })}\n </div>\n )\n}\n\nexport const RichTextManifest = defineComponent({\n id: 'base.primitives.RichText',\n namespace: 'base.primitives',\n title: 'Rich Text',\n category: 'content',\n description: 'Formatted long-form content stored in the rich-text format.',\n props: {\n content: {\n // The structured @elytracms/rich-text storage value (EC-159); validated by\n // the renderer's parse guard rather than a scalar string check.\n type: 'richText',\n context: 'prop',\n default: asJson(RICH_TEXT_DEFAULT_VALUE),\n // Rich-text content prop, editable in place on the canvas (EC-159).\n form: { label: 'Content', inlineEditable: true },\n },\n },\n slots: [],\n fixtures: [\n { name: 'Default' },\n { name: 'Formatted', props: { content: asJson(RICH_TEXT_FIXTURE_VALUE) } },\n ],\n})\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/starter-kits/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,8BAA8B,CAAA;AAErD,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/starter-kits/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,8BAA8B,CAAA;AAErD,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA","sourcesContent":["/**\n * @elytracms/starter-kits — versioned, importable project seeds (brief Phase 9A, EC-114–121). A kit\n * bundles a page graph, project settings, CMS schemas + seed content, the component registry it\n * uses, and a brand token palette, so \"start from a kit\" is one validated, deterministic step.\n * Seeds are the INPUT to a new project — distinct from export output (generated FROM a project).\n */\nexport const PACKAGE = '@elytracms/core/starter-kits'\n\nexport * from './kit'\nexport * from './manifests'\nexport * from './validate'\nexport * from './instantiate'\nexport * from './upgrade'\nexport * from './kits'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instantiate.js","sourceRoot":"","sources":["../../src/starter-kits/instantiate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AA2B7D,SAAS,KAAK,CAAI,KAAQ;IACxB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAe;IAC5C,MAAM,KAAK,GAAiB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC5C,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;IAEtD,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,EAAE;QACb,UAAU,EAAE,GAAG,CAAC,OAAO;QACvB,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC9D,KAAK;QACL,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QACnC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;KAC7C,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"instantiate.js","sourceRoot":"","sources":["../../src/starter-kits/instantiate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AA2B7D,SAAS,KAAK,CAAI,KAAQ;IACxB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAe;IAC5C,MAAM,KAAK,GAAiB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC5C,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;IAEtD,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,EAAE;QACb,UAAU,EAAE,GAAG,CAAC,OAAO;QACvB,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC9D,KAAK;QACL,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QACnC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;KAC7C,CAAA;AACH,CAAC","sourcesContent":["import { emitTokensCss } from '@elytracms/core/design-tokens'\nimport type { ComponentManifest } from '@elytracms/core/component-registry'\nimport type { CmsDocument, CollectionDef, LocaleConfig } from '@elytracms/core/cms-core'\nimport type { ProjectGraph } from '@elytracms/core/project-graph'\nimport type { CreateProjectInput } from '@elytracms/core/studio-core'\nimport type { StarterKit } from './kit'\n\n/**\n * A kit instantiated into the parts a new project consumes (EC-114). Deterministic: the same kit\n * always yields the same parts (deep-cloned so the source kit is never mutated). The host creates\n * the project with `createInput`, then seeds the Builder graph, CMS collections/documents, and\n * the registry from the rest.\n */\nexport interface InstantiatedKit {\n kitId: string\n kitVersion: string\n /** Input for the project repository's `create`. */\n createInput: CreateProjectInput\n graph: ProjectGraph\n collections: CollectionDef[]\n documents: CmsDocument[]\n manifests: ComponentManifest[]\n localeConfig: LocaleConfig\n /** Export-ready token CSS with the kit's brand palette applied (EC-117). */\n tokensCss: string\n}\n\nfunction clone<T>(value: T): T {\n return structuredClone(value)\n}\n\n/**\n * Instantiate a kit deterministically. Provenance (kit id + version) is returned on the result so\n * the project can record which kit/version it came from (used by the upgrade flow, EC-120).\n */\nexport function instantiateKit(kit: StarterKit): InstantiatedKit {\n const graph: ProjectGraph = clone(kit.graph)\n graph.metadata = { ...graph.metadata, name: kit.name }\n\n return {\n kitId: kit.id,\n kitVersion: kit.version,\n createInput: { name: kit.name, settings: clone(kit.settings) },\n graph,\n collections: clone(kit.collections),\n documents: clone(kit.documents),\n manifests: kit.manifests,\n localeConfig: kit.localeConfig,\n tokensCss: emitTokensCss(kit.tokenOverrides),\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kit.js","sourceRoot":"","sources":["../../src/starter-kits/kit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB;;;;;GAKG;AAEH,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;AAGnE,uGAAuG;AACvG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,gBAAgB;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,+EAA+E;IAC/E,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1H,CAAC,CAAA;AAoCF,oDAAoD;AACpD,MAAM,UAAU,YAAY,CAAC,GAAe;IAC1C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,QAAQ,EAAE;YACR,kEAAkE;YAClE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,MAAM;YAClE,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,CAAC,MAAM;YACjF,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM;YACnC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM;SAChC;KACF,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"kit.js","sourceRoot":"","sources":["../../src/starter-kits/kit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB;;;;;GAKG;AAEH,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;AAGnE,uGAAuG;AACvG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,gBAAgB;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,+EAA+E;IAC/E,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1H,CAAC,CAAA;AAoCF,oDAAoD;AACpD,MAAM,UAAU,YAAY,CAAC,GAAe;IAC1C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,QAAQ,EAAE;YACR,kEAAkE;YAClE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,MAAM;YAClE,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,CAAC,MAAM;YACjF,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM;YACnC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM;SAChC;KACF,CAAA;AACH,CAAC","sourcesContent":["import { z } from 'zod'\nimport type { ComponentManifest } from '@elytracms/core/component-registry'\nimport type { CmsDocument, CollectionDef, LocaleConfig } from '@elytracms/core/cms-core'\nimport type { TokenOverrides } from '@elytracms/core/design-tokens'\nimport type { ProjectGraph } from '@elytracms/core/project-graph'\nimport type { ProjectSettings } from '@elytracms/core/studio-core'\n\n/**\n * A starter kit (EC-114/119): a versioned, self-contained bundle that instantiates a working\n * project. It bundles everything a new project needs — the page graph, project settings, CMS\n * schemas + seed content, the component registry it uses, and a brand token palette — so import\n * is one validated, deterministic step (no per-part wiring).\n */\n\n/** Semantic version string (`major.minor.patch`). */\nexport const kitVersionSchema = z.string().regex(/^\\d+\\.\\d+\\.\\d+$/)\nexport type KitVersion = z.infer<typeof kitVersionSchema>\n\n/** The envelope metadata, validated structurally. The bundled parts are validated by `validateKit`. */\nexport const kitMetaSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n version: kitVersionSchema,\n description: z.string(),\n category: z.string(),\n /** Brand palette overrides applied on top of the canonical tokens (EC-117). */\n tokenOverrides: z.record(z.string(), z.object({ light: z.string().optional(), dark: z.string().optional() })).default({}),\n})\nexport type KitMeta = z.infer<typeof kitMetaSchema>\n\n/** A full starter kit. */\nexport interface StarterKit extends KitMeta {\n /** Project settings (locales, environments, export target, section availability). */\n settings: ProjectSettings\n localeConfig: LocaleConfig\n /** The layout graph the project opens with (EC-187: layouts-only; pages are\n * `page`-collection documents in `documents`). */\n graph: ProjectGraph\n /** CMS schemas (EC-118). */\n collections: CollectionDef[]\n /** Seed content (EC-115). */\n documents: CmsDocument[]\n /** Component manifests the graph references (base + project) (EC-116). */\n manifests: ComponentManifest[]\n tokenOverrides: TokenOverrides\n}\n\n/** A lightweight summary for a kit gallery (no heavy graph/content). */\nexport interface StarterKitSummary {\n id: string\n name: string\n version: KitVersion\n description: string\n category: string\n /** Counts of the bundled parts, for the gallery preview. */\n contents: {\n pages: number\n components: number\n collections: number\n documents: number\n }\n}\n\n/** Build a {@link StarterKitSummary} from a kit. */\nexport function summarizeKit(kit: StarterKit): StarterKitSummary {\n return {\n id: kit.id,\n name: kit.name,\n version: kit.version,\n description: kit.description,\n category: kit.category,\n contents: {\n // EC-187: pages are `page`-collection documents, not graph pages.\n pages: kit.documents.filter((d) => d.collection === 'page').length,\n components: kit.manifests.filter((m) => m.namespace !== 'base.primitives').length,\n collections: kit.collections.length,\n documents: kit.documents.length,\n },\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kits.js","sourceRoot":"","sources":["../../src/starter-kits/kits.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kits.js","sourceRoot":"","sources":["../../src/starter-kits/kits.ts"],"names":[],"mappings":"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","sourcesContent":["import { allSectionsAvailable } from '@elytracms/core/studio-core'\nimport type { ProjectSettings } from '@elytracms/core/studio-core'\nimport { PROJECT_GRAPH_SCHEMA_VERSION } from '@elytracms/core/project-graph'\nimport type { ComponentNode, ProjectGraph, PropValue } from '@elytracms/core/project-graph'\nimport { pageCollection } from '@elytracms/core/cms-core'\nimport type { CmsDocument, CollectionDef, LocaleConfig } from '@elytracms/core/cms-core'\nimport type { TokenOverrides } from '@elytracms/core/design-tokens'\nimport type { StarterKit } from './kit'\nimport { BASE_MANIFESTS, PROJECT_MANIFESTS } from './manifests'\n\n/**\n * The bundled starter kits (EC-114–118). Each is a complete, valid, deterministic project: a page\n * graph (base primitives + seeded project components), CMS schemas + seed content, project\n * settings, and a brand token palette. Used as the seed source for \"start from a kit\".\n */\n\n// --- Node helpers -----------------------------------------------------------\n\nconst s = (value: unknown): PropValue => ({ kind: 'static', value: value as never })\n\nfunction node(id: string, componentId: string, props?: Record<string, PropValue>, slots?: Record<string, ComponentNode[]>): ComponentNode {\n return { id, componentId, ...(props ? { props } : {}), ...(slots ? { slots } : {}) }\n}\n\n// EC-190: Stack/Grid `gap` is now a `select` over spacing-token *names* (strings like '4'),\n// so seed graphs carry the token name, not a legacy number. `columns`/`level` stay numeric.\nconst stack = (id: string, gap: number, children: ComponentNode[]) =>\n node(id, 'base.primitives.Stack', { gap: s(String(gap)) }, { children })\nconst grid = (id: string, columns: number, children: ComponentNode[]) =>\n node(id, 'base.primitives.Grid', { columns: s(columns), gap: s('4') }, { children })\nconst heading = (id: string, text: string, level = 2) =>\n node(id, 'base.primitives.Heading', { text: s(text), level: s(level) })\nconst text = (id: string, value: string) => node(id, 'base.primitives.Text', { value: s(value) })\n\nconst hero = (id: string, props: Record<string, string>) =>\n node(id, 'project.MarketingHero', Object.fromEntries(Object.entries(props).map(([k, v]) => [k, s(v)])))\nconst feature = (id: string, title: string, body: string, tone: 'default' | 'accent' = 'default') =>\n node(id, 'project.FeatureCard', { title: s(title), body: s(body), tone: s(tone) })\n\nconst layoutRoot = (id: string) => node(id, 'base.primitives.Container', undefined, { outlet: [] })\n\nfunction settings(locales: string[]): ProjectSettings {\n return {\n locales,\n defaultLocale: locales[0]!,\n environments: [\n { key: 'production', label: 'Production' },\n { key: 'preview', label: 'Preview' },\n ],\n exportTarget: 'next-app-router',\n sectionAvailability: allSectionsAvailable(),\n }\n}\n\n/** A layouts-only project graph (EC-187). The home page lives in a `page` document. */\nfunction graph(id: string, name: string): ProjectGraph {\n return {\n id,\n schemaVersion: PROJECT_GRAPH_SCHEMA_VERSION,\n metadata: { name },\n layouts: [{ id: 'layout.main', name: 'Main', root: layoutRoot('n-layout-root') }],\n }\n}\n\n/**\n * The kit's home page as a `page`-collection document (EC-187): its `body` is\n * the composition that used to be the graph page root; `layoutId` selects the\n * graph layout that wraps it at delivery.\n */\nfunction pageHome(homeRoot: ComponentNode): CmsDocument {\n return {\n collection: 'page',\n id: 'home',\n values: {\n name: 'Home',\n layoutId: 'layout.main',\n // The kit's home composition (the root's children become the page body).\n body: homeRoot.slots?.['children'] ?? [homeRoot],\n },\n defaultLocale: 'en',\n }\n}\n\n// --- Shared CMS schemas -----------------------------------------------------\n\n/** A self-contained blog `post` collection — no required relations, so seeds validate alone. */\nfunction postCollection(): CollectionDef {\n return {\n id: 'post',\n kind: 'document',\n localized: true,\n titleField: 'title',\n fields: [\n // `filterable` (EC-143) mirrors the canonical sample-model convention:\n // scalar query fields are declared, `title`/rich text stay undeclared.\n { type: 'text', name: 'title', localized: true, validation: { required: true, min: 1, max: 120 } },\n { type: 'text', name: 'slug', filterable: true, validation: { required: true, unique: true, pattern: '^[a-z0-9-]+$' } },\n { type: 'richText', name: 'body', localized: true },\n { type: 'text', name: 'excerpt', localized: true },\n { type: 'date', name: 'publishedAt', filterable: true },\n { type: 'select', name: 'status', filterable: true, options: [{ value: 'draft' }, { value: 'published' }] },\n ],\n form: { label: 'Posts', labelSingular: 'Post' },\n }\n}\n\nfunction post(id: string, slug: string, en: { title: string; excerpt: string }, de: { title: string; excerpt: string }): CmsDocument {\n return {\n collection: 'post',\n id,\n values: { slug, publishedAt: '2026-01-02T00:00:00.000Z', status: 'published' },\n localized: {\n en: { title: en.title, excerpt: en.excerpt, body: `<p>${en.excerpt}</p>` },\n de: { title: de.title, excerpt: de.excerpt, body: `<p>${de.excerpt}</p>` },\n },\n defaultLocale: 'en',\n }\n}\n\nconst en: LocaleConfig = { default: 'en', locales: ['en', 'de'] }\n\n// --- Kit 1: Aurora Marketing ------------------------------------------------\n\nconst marketingHome = stack('n-home', 8, [\n hero('n-hero', {\n eyebrow: 'New',\n heading: 'Build code-first websites',\n subheading: 'One canonical graph powers editing, content, AI and export.',\n ctaLabel: 'Get started',\n align: 'center',\n }),\n grid('n-features', 3, [\n feature('n-f1', 'Code-first', 'Every change is real, diffable code.'),\n feature('n-f2', 'AI-assisted', 'Inspectable, reversible generation.', 'accent'),\n feature('n-f3', 'Native export', 'Ships a real Next.js App Router app.'),\n ]),\n node('n-pricing', 'project.PricingCallout', {\n plan: s('Pro'),\n price: s('$29'),\n period: s('mo'),\n featured: s(true),\n }),\n])\n\nexport const auroraMarketingKit: StarterKit = {\n id: 'kit.aurora-marketing',\n name: 'Aurora Marketing',\n version: '1.0.0',\n description: 'A marketing landing page with a hero, feature grid, pricing, and a blog.',\n category: 'marketing',\n settings: settings(['en', 'de']),\n localeConfig: en,\n graph: graph('proj-aurora-marketing', 'Aurora Marketing'),\n collections: [pageCollection, postCollection()],\n documents: [\n pageHome(marketingHome),\n post('post-hello', 'hello-world', { title: 'Hello World', excerpt: 'Why we built a code-first builder.' }, { title: 'Hallo Welt', excerpt: 'Warum wir einen Code-first-Builder gebaut haben.' }),\n post('post-graph', 'one-canonical-graph', { title: 'One Canonical Graph', excerpt: 'How one model powers everything.' }, { title: 'Ein kanonischer Graph', excerpt: 'Wie ein Modell alles antreibt.' }),\n ],\n manifests: [...BASE_MANIFESTS, ...PROJECT_MANIFESTS],\n tokenOverrides: {},\n}\n\n// --- Kit 2: Northwind Docs (a different palette) ----------------------------\n\nconst docsHome = stack('n-home', 8, [\n heading('n-title', 'Northwind Documentation', 1),\n text('n-intro', 'Guides, references, and tutorials for the Northwind platform.'),\n grid('n-cards', 2, [\n feature('n-d1', 'Getting started', 'Install, configure, and ship in minutes.'),\n feature('n-d2', 'API reference', 'Every endpoint, typed and documented.', 'accent'),\n ]),\n])\n\n/** A teal brand palette override for the docs starter (EC-117). */\nconst tealOverrides: TokenOverrides = {\n primary: { light: 'oklch(0.6 0.12 195)', dark: 'oklch(0.72 0.12 195)' },\n ring: { light: 'oklch(0.6 0.12 195)', dark: 'oklch(0.72 0.12 195)' },\n}\n\nfunction docCollection(): CollectionDef {\n return {\n id: 'doc',\n kind: 'document',\n localized: true,\n titleField: 'title',\n fields: [\n { type: 'text', name: 'title', localized: true, validation: { required: true, min: 1 } },\n { type: 'text', name: 'slug', validation: { required: true, unique: true, pattern: '^[a-z0-9-]+$' } },\n { type: 'richText', name: 'body', localized: true },\n { type: 'select', name: 'category', options: [{ value: 'guide' }, { value: 'reference' }] },\n ],\n form: { label: 'Docs', labelSingular: 'Doc' },\n }\n}\n\nexport const northwindDocsKit: StarterKit = {\n id: 'kit.northwind-docs',\n name: 'Northwind Docs',\n version: '1.0.0',\n description: 'A documentation site with guide and reference collections and a teal palette.',\n category: 'docs',\n settings: settings(['en', 'de']),\n localeConfig: en,\n graph: graph('proj-northwind-docs', 'Northwind Docs'),\n collections: [pageCollection, docCollection()],\n documents: [\n pageHome(docsHome),\n {\n collection: 'doc',\n id: 'doc-start',\n values: { slug: 'getting-started', category: 'guide' },\n localized: { en: { title: 'Getting Started', body: '<p>Install and configure.</p>' }, de: { title: 'Erste Schritte', body: '<p>Installieren und konfigurieren.</p>' } },\n defaultLocale: 'en',\n },\n {\n collection: 'doc',\n id: 'doc-api',\n values: { slug: 'api-reference', category: 'reference' },\n localized: { en: { title: 'API Reference', body: '<p>Every endpoint.</p>' }, de: { title: 'API-Referenz', body: '<p>Jeder Endpunkt.</p>' } },\n defaultLocale: 'en',\n },\n ],\n manifests: [...BASE_MANIFESTS, ...PROJECT_MANIFESTS],\n tokenOverrides: tealOverrides,\n}\n\n/** Every bundled starter kit, in gallery order. */\nexport const STARTER_KITS: StarterKit[] = [auroraMarketingKit, northwindDocsKit]\n\n/** Look up a kit by id. */\nexport function getStarterKit(id: string): StarterKit | undefined {\n return STARTER_KITS.find((k) => k.id === id)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifests.js","sourceRoot":"","sources":["../../src/starter-kits/manifests.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manifests.js","sourceRoot":"","sources":["../../src/starter-kits/manifests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAGpE;;;;;;;;;GASG;AAEH,+EAA+E;AAE/E,yBAAyB;AACzB,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,YAAqB,EAAa,EAAE,CAAC,CAAC;IACjE,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,MAAM;IACf,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,IAAI,EAAE,EAAE,KAAK,EAAE;CAChB,CAAC,CAAA;AAEF,2CAA2C;AAC3C,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,YAAqB,EAAa,EAAE,CAAC,CAAC;IACpE,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,MAAM;IACf,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;IACtC,IAAI,EAAE,EAAE,KAAK,EAAE;CAChB,CAAC,CAAA;AAEF,8BAA8B;AAC9B,MAAM,MAAM,GAAG,CACb,KAAa,EACb,YAAoB,EACpB,UAA2C,EAChC,EAAE,CAAC,CAAC;IACf,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,YAAY;IACrB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,IAAI,EAAE,EAAE,KAAK,EAAE;CAChB,CAAC,CAAA;AAEF,sBAAsB;AACtB,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,YAAqB,EAAa,EAAE,CAAC,CAAC;IACpE,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,EAAE,KAAK,EAAE;CAChB,CAAC,CAAA;AAEF,wDAAwD;AACxD,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,MAAyB,EAAE,YAAoB,EAAa,EAAE,CAAC,CAAC;IAC7F,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,IAAI,EAAE,EAAE,KAAK,EAAE;CAChB,CAAC,CAAA;AAEF,0FAA0F;AAC1F,MAAM,GAAG,GAAG,CAAC,YAAoB,EAAa,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAA;AAEjG,8FAA8F;AAC9F,MAAM,CAAC,MAAM,cAAc,GAAwB;IACjD,eAAe,CAAC,EAAE,EAAE,EAAE,2BAA2B,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACpK,eAAe,CAAC,EAAE,EAAE,EAAE,uBAAuB,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IACvJ,eAAe,CAAC,EAAE,EAAE,EAAE,sBAAsB,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IACtO,eAAe,CAAC,EAAE,EAAE,EAAE,yBAAyB,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC/L,eAAe,CAAC,EAAE,EAAE,EAAE,sBAAsB,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC3I,eAAe,CAAC,EAAE,EAAE,EAAE,wBAAwB,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC/K,eAAe,CAAC,EAAE,EAAE,EAAE,uBAAuB,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnK,8FAA8F;IAC9F,kGAAkG;IAClG,eAAe,CAAC,EAAE,EAAE,EAAE,0BAA0B,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;CAC9M,CAAA;AAED,0FAA0F;AAC1F,MAAM,CAAC,MAAM,iBAAiB,GAAwB;IACpD,eAAe,CAAC;QACd,EAAE,EAAE,uBAAuB;QAC3B,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE;YACL,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;YAC/B,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,2BAA2B,CAAC;YACxD,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC;YACtD,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;YAC1C,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;SACvD;QACD,KAAK,EAAE,EAAE;KACV,CAAC;IACF,eAAe,CAAC;QACd,EAAE,EAAE,qBAAqB;QACzB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE;YACL,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC;YAC3C,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,6BAA6B,CAAC;YACjD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;SACvD;QACD,KAAK,EAAE,EAAE;KACV,CAAC;IACF,eAAe,CAAC;QACd,EAAE,EAAE,wBAAwB;QAC5B,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE;YACL,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC5B,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SACrC;QACD,KAAK,EAAE,EAAE;KACV,CAAC;CACH,CAAA;AAED,yCAAyC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAwB,CAAC,GAAG,cAAc,EAAE,GAAG,iBAAiB,CAAC,CAAA","sourcesContent":["import { SPACING_TOKEN_NAMES, GRID_MIN_COLUMNS, GRID_MAX_COLUMNS } from '@elytracms/core/project-graph'\nimport { defineComponent } from '@elytracms/core/component-registry'\nimport type { ComponentManifest, PropField } from '@elytracms/core/component-registry'\n\n/**\n * Component manifests a starter kit validates against (EC-116). Base primitives plus the seeded\n * `project.*` components — declared to match the Studio registry's implementations (same ids and\n * prop names), so a kit's graph both validates here and renders in the Builder. Kept React-free:\n * these are manifests (shape), not implementations.\n *\n * EC-190 \"props as fields\": a prop is a `@elytracms/core/cms-core` field-def minus its `name` (the record\n * key is the name). Every prop carries `context: 'prop'`; label/default live on `form`/`default`.\n * These mirror the canonical `@elytracms/core/runtime-renderer` primitive manifests.\n */\n\n// --- Field-def prop helpers -------------------------------------------------\n\n/** A plain-text prop. */\nconst text = (label: string, defaultValue?: string): PropField => ({\n type: 'text',\n context: 'prop',\n ...(defaultValue !== undefined ? { default: defaultValue } : {}),\n form: { label },\n})\n\n/** A required (min length 1) text prop. */\nconst textReq = (label: string, defaultValue?: string): PropField => ({\n type: 'text',\n context: 'prop',\n ...(defaultValue !== undefined ? { default: defaultValue } : {}),\n validation: { required: true, min: 1 },\n form: { label },\n})\n\n/** A bounded numeric prop. */\nconst number = (\n label: string,\n defaultValue: number,\n validation?: { min?: number; max?: number },\n): PropField => ({\n type: 'number',\n context: 'prop',\n default: defaultValue,\n ...(validation ? { validation } : {}),\n form: { label },\n})\n\n/** A boolean prop. */\nconst boolean = (label: string, defaultValue: boolean): PropField => ({\n type: 'boolean',\n context: 'prop',\n default: defaultValue,\n form: { label },\n})\n\n/** A select prop over a fixed set of string options. */\nconst select = (label: string, values: readonly string[], defaultValue: string): PropField => ({\n type: 'select',\n context: 'prop',\n default: defaultValue,\n options: values.map((value) => ({ value, label: value })),\n form: { label },\n})\n\n/** A gap prop: a `select` over the canonical design-token spacing step names (EC-161). */\nconst gap = (defaultValue: string): PropField => select('Gap', SPACING_TOKEN_NAMES, defaultValue)\n\n/** Base primitives the kit graphs use (mirrors `@elytracms/core/runtime-renderer` shapes). */\nexport const BASE_MANIFESTS: ComponentManifest[] = [\n defineComponent({ id: 'base.primitives.Container', namespace: 'base.primitives', title: 'Container', props: {}, slots: [{ name: 'children' }, { name: 'outlet' }] }),\n defineComponent({ id: 'base.primitives.Stack', namespace: 'base.primitives', title: 'Stack', props: { gap: gap('4') }, slots: [{ name: 'children' }] }),\n defineComponent({ id: 'base.primitives.Grid', namespace: 'base.primitives', title: 'Grid', props: { columns: number('Columns', 3, { min: GRID_MIN_COLUMNS, max: GRID_MAX_COLUMNS }), gap: gap('4') }, slots: [{ name: 'children' }] }),\n defineComponent({ id: 'base.primitives.Heading', namespace: 'base.primitives', title: 'Heading', props: { text: text('Text', ''), level: number('Level', 2, { min: 1, max: 6 }) }, slots: [] }),\n defineComponent({ id: 'base.primitives.Text', namespace: 'base.primitives', title: 'Text', props: { value: text('Text', '') }, slots: [] }),\n defineComponent({ id: 'base.primitives.Button', namespace: 'base.primitives', title: 'Button', props: { label: text('Label', 'Button'), href: text('Href', '#') }, slots: [] }),\n defineComponent({ id: 'base.primitives.Image', namespace: 'base.primitives', title: 'Image', props: { src: text('Source', ''), alt: text('Alt', '') }, slots: [] }),\n // EC-190 DD7: a Repeater's `items` is a binding/iteration construct (an array) with no static\n // field-def type; it rides node.props undeclared. No editable static prop — keep iterate + slots.\n defineComponent({ id: 'base.primitives.Repeater', namespace: 'base.primitives', title: 'Repeater', props: {}, slots: [{ name: 'item', required: true }], iterate: { itemsProp: 'items', itemSlot: 'item' } }),\n]\n\n/** Seeded project components (EC-116) — same ids/props the Studio registry implements. */\nexport const PROJECT_MANIFESTS: ComponentManifest[] = [\n defineComponent({\n id: 'project.MarketingHero',\n namespace: 'project',\n title: 'Marketing Hero',\n category: 'marketing',\n props: {\n eyebrow: text('Eyebrow', 'New'),\n heading: textReq('Heading', 'Build code-first websites'),\n subheading: text('Subheading', 'One canonical graph.'),\n ctaLabel: text('CTA label', 'Get started'),\n align: select('Alignment', ['left', 'center'], 'left'),\n },\n slots: [],\n }),\n defineComponent({\n id: 'project.FeatureCard',\n namespace: 'project',\n title: 'Feature Card',\n category: 'content',\n props: {\n title: textReq('Title', 'Validation first'),\n body: text('Body', 'Broken states are explicit.'),\n tone: select('Tone', ['default', 'accent'], 'default'),\n },\n slots: [],\n }),\n defineComponent({\n id: 'project.PricingCallout',\n namespace: 'project',\n title: 'Pricing Callout',\n category: 'commerce',\n props: {\n plan: textReq('Plan', 'Pro'),\n price: text('Price', '$29'),\n period: text('Period', 'mo'),\n featured: boolean('Featured', false),\n },\n slots: [],\n }),\n]\n\n/** All manifests a kit may reference. */\nexport const KIT_MANIFESTS: ComponentManifest[] = [...BASE_MANIFESTS, ...PROJECT_MANIFESTS]\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/starter-kits/upgrade.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/starter-kits/upgrade.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StarterKit } from './kit'\n\n/**\n * Template upgrade strategy (EC-120). Kits are semver-versioned. A project records the kit id +\n * version it was instantiated from; when a newer kit version ships, an ordered list of\n * {@link KitMigration}s describes how to move a project forward, one version at a time. Migrations\n * are pure and inspectable — they transform a payload and report what changed — so an upgrade is\n * reviewable and reversible, never a silent overwrite of the user's content.\n */\n\n/** A reference to the kit + version a project was instantiated from. */\nexport interface KitProvenance {\n kitId: string\n version: string\n}\n\n/** A single forward migration between two adjacent kit versions. */\nexport interface KitMigration<T = unknown> {\n from: string\n to: string\n description: string\n /** Pure transform of the project payload; also returns a human changelog of what it did. */\n apply: (payload: T) => { payload: T; changes: string[] }\n}\n\nexport type CompareResult = 'behind' | 'current' | 'ahead' | 'unknown'\n\nfunction parse(version: string): [number, number, number] | null {\n const m = /^(\\d+)\\.(\\d+)\\.(\\d+)$/.exec(version)\n return m ? [Number(m[1]), Number(m[2]), Number(m[3])] : null\n}\n\n/** Compare a project's kit version to the latest available kit version. */\nexport function compareVersion(projectVersion: string, latestVersion: string): CompareResult {\n const a = parse(projectVersion)\n const b = parse(latestVersion)\n if (!a || !b) return 'unknown'\n for (let i = 0; i < 3; i++) {\n if (a[i]! < b[i]!) return 'behind'\n if (a[i]! > b[i]!) return 'ahead'\n }\n return 'current'\n}\n\n/** Whether a project instantiated from `provenance` can upgrade to `latest`. */\nexport function canUpgrade(provenance: KitProvenance, latest: StarterKit): boolean {\n return provenance.kitId === latest.id && compareVersion(provenance.version, latest.version) === 'behind'\n}\n\n/**\n * Build the ordered chain of migrations from `fromVersion` to `toVersion`. Migrations must form a\n * contiguous from→to chain; a gap returns `undefined` so the host can surface \"no upgrade path\".\n */\nexport function migrationPath<T>(\n migrations: readonly KitMigration<T>[],\n fromVersion: string,\n toVersion: string,\n): KitMigration<T>[] | undefined {\n const byFrom = new Map(migrations.map((m) => [m.from, m]))\n const path: KitMigration<T>[] = []\n let current = fromVersion\n const guard = migrations.length + 1\n for (let i = 0; i <= guard; i++) {\n if (current === toVersion) return path\n const next = byFrom.get(current)\n if (!next) return undefined\n path.push(next)\n current = next.to\n }\n return undefined\n}\n\n/** Run a migration chain over a payload, accumulating the changelog. Pure. */\nexport function runMigrations<T>(\n path: readonly KitMigration<T>[],\n payload: T,\n): { payload: T; changes: string[] } {\n let current = payload\n const changes: string[] = []\n for (const migration of path) {\n const result = migration.apply(current)\n current = result.payload\n changes.push(`${migration.from} → ${migration.to}: ${result.changes.join('; ') || migration.description}`)\n }\n return { payload: current, changes }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/starter-kits/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/starter-kits/validate.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentRegistry } from '@elytracms/core/component-registry'\nimport { createCollectionRegistry, createDocumentStore, validateDocuments } from '@elytracms/core/cms-core'\nimport { colorTokens } from '@elytracms/core/design-tokens'\nimport { validateProjectGraph } from '@elytracms/core/project-graph'\nimport { kitMetaSchema } from './kit'\nimport type { StarterKit } from './kit'\n\n/**\n * Validate a starter kit before import (EC-119, EC-116, EC-118). Reuses the canonical validators:\n * the envelope (meta), the component manifests (registry), the page graph (against those\n * manifests), the CMS schemas (collection registry), and the seed documents (against the\n * schemas). Returns structured issues; never throws. A kit with any `error` must not be imported.\n */\n\nexport interface KitIssue {\n code: 'meta' | 'manifest' | 'graph' | 'schema' | 'content' | 'token'\n severity: 'error' | 'warning'\n message: string\n ref?: string\n}\n\nconst TOKEN_NAMES = new Set(colorTokens.map((t) => t.name))\n\nexport function validateKit(kit: StarterKit): KitIssue[] {\n const issues: KitIssue[] = []\n\n // 1. Envelope.\n const meta = kitMetaSchema.safeParse(kit)\n if (!meta.success) {\n for (const issue of meta.error.issues) {\n issues.push({ code: 'meta', severity: 'error', message: `${issue.path.join('.')}: ${issue.message}` })\n }\n }\n\n // 2. Component manifests (duplicate / non-namespaced ids).\n const registry = new ComponentRegistry(kit.manifests)\n for (const issue of registry.issues) {\n issues.push({ code: 'manifest', severity: 'error', message: issue.message, ...(issue.componentId ? { ref: issue.componentId } : {}) })\n }\n\n // 3. Page graph (missing components, invalid props, missing slots).\n for (const issue of validateProjectGraph(kit.graph, { components: registry.lookup })) {\n issues.push({ code: 'graph', severity: issue.severity, message: issue.message, ...(issue.nodeId ? { ref: issue.nodeId } : {}) })\n }\n\n // 4. CMS schemas.\n const collections = createCollectionRegistry(kit.collections)\n for (const issue of collections.issues) {\n issues.push({ code: 'schema', severity: issue.severity === 'error' ? 'error' : 'warning', message: issue.message })\n }\n\n // 5. Seed content against the schemas (EC-118 \"seed content fits the schemas\"). A store over the\n // kit's own documents lets relation/asset references between seeds resolve.\n const store = createDocumentStore(kit.documents)\n for (const issue of validateDocuments(collections, kit.documents, { store, localeConfig: kit.localeConfig })) {\n issues.push({\n code: 'content',\n severity: issue.severity === 'error' ? 'error' : 'warning',\n message: issue.message,\n ...(typeof issue.meta?.documentId === 'string' ? { ref: issue.meta.documentId } : {}),\n })\n }\n\n // 6. Cross-document field uniqueness (the per-document validator can't see siblings). A field\n // declared `unique` must not repeat a (non-localized) value across the collection's seeds.\n for (const collection of kit.collections) {\n const uniqueFields = collection.fields.filter((f) => f.validation?.unique)\n const docs = kit.documents.filter((d) => d.collection === collection.id)\n for (const field of uniqueFields) {\n const seen = new Map<string, number>()\n for (const doc of docs) {\n const value = doc.values[field.name]\n if (value === undefined || value === null) continue\n const key = JSON.stringify(value)\n seen.set(key, (seen.get(key) ?? 0) + 1)\n }\n for (const [key, count] of seen) {\n if (count > 1) {\n issues.push({ code: 'content', severity: 'error', message: `Field \"${collection.id}.${field.name}\" must be unique, but ${count} seed documents share the value ${key}.` })\n }\n }\n }\n }\n\n // 7. Brand token overrides (EC-117) — keys must be real token names; flag typos + half-overrides.\n for (const [name, override] of Object.entries(kit.tokenOverrides)) {\n if (!TOKEN_NAMES.has(name)) {\n issues.push({ code: 'token', severity: 'warning', message: `Token override \"${name}\" is not a known design token and has no effect.`, ref: name })\n } else if (!override.light || !override.dark) {\n issues.push({ code: 'token', severity: 'warning', message: `Token override \"${name}\" sets only ${override.light ? 'light' : 'dark'}; the other mode keeps the canonical value.`, ref: name })\n }\n }\n\n return issues\n}\n\n/** True when a kit has no error-severity issues and is safe to import. */\nexport function isKitValid(issues: KitIssue[]): boolean {\n return !issues.some((i) => i.severity === 'error')\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/studio-core/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAGvC,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE;IAC3C,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;CAC3C,CAAC,CAAA;AAGF,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAA;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA6B,EAC7B,SAAoB;IAEpB,MAAM,gBAAgB,GAAG;QACvB,SAAS;QACT,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC;KAC7D,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAC/B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA6B,EAC7B,SAAoB;IAEpB,OAAO;QACL,eAAe,EAAE,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe;QACvF,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC;KAC5E,CAAA;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,sBAAsB,CACpC,OAA6B,EAC7B,QAAgC;IAEhC,OAAO,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC;QACrE,CAAC,CAAC,OAAO,CAAC,eAAe;QACzB,CAAC,CAAC,IAAI,CAAA;AACV,CAAC"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/studio-core/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAGvC,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE;IAC3C,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;CAC3C,CAAC,CAAA;AAGF,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAA;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA6B,EAC7B,SAAoB;IAEpB,MAAM,gBAAgB,GAAG;QACvB,SAAS;QACT,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC;KAC7D,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAC/B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA6B,EAC7B,SAAoB;IAEpB,OAAO;QACL,eAAe,EAAE,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe;QACvF,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC;KAC5E,CAAA;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,sBAAsB,CACpC,OAA6B,EAC7B,QAAgC;IAEhC,OAAO,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC;QACrE,CAAC,CAAC,OAAO,CAAC,eAAe;QACzB,CAAC,CAAC,IAAI,CAAA;AACV,CAAC","sourcesContent":["import { z } from 'zod'\nimport { projectIdSchema } from './ids'\nimport type { ProjectId } from './ids'\n\n/** Maximum number of recent projects retained (most-recent-first). */\nexport const MAX_RECENT_PROJECTS = 8\n\n/**\n * The active-project context the Studio shell preserves across section\n * navigation (brief §4.3, §8.1). Pure data — reducers below derive new values\n * without mutating.\n */\nexport const activeProjectContextSchema = z.object({\n activeProjectId: projectIdSchema.nullable(),\n recentProjectIds: z.array(projectIdSchema),\n})\nexport type ActiveProjectContext = z.infer<typeof activeProjectContextSchema>\n\nexport function emptyContext(): ActiveProjectContext {\n return { activeProjectId: null, recentProjectIds: [] }\n}\n\n/**\n * Mark a project active and move it to the front of the recents list (MRU),\n * de-duplicating and capping length. Pure.\n */\nexport function activateProject(\n context: ActiveProjectContext,\n projectId: ProjectId,\n): ActiveProjectContext {\n const recentProjectIds = [\n projectId,\n ...context.recentProjectIds.filter((id) => id !== projectId),\n ].slice(0, MAX_RECENT_PROJECTS)\n return { activeProjectId: projectId, recentProjectIds }\n}\n\n/**\n * Forget a project entirely (e.g. after delete): drop it from recents and clear\n * the active pointer if it was active. Pure.\n */\nexport function forgetProject(\n context: ActiveProjectContext,\n projectId: ProjectId,\n): ActiveProjectContext {\n return {\n activeProjectId: context.activeProjectId === projectId ? null : context.activeProjectId,\n recentProjectIds: context.recentProjectIds.filter((id) => id !== projectId),\n }\n}\n\n/** The active id if it still resolves against the known set, else null. */\nexport function resolveActiveProjectId(\n context: ActiveProjectContext,\n knownIds: ReadonlySet<ProjectId>,\n): ProjectId | null {\n return context.activeProjectId && knownIds.has(context.activeProjectId)\n ? context.activeProjectId\n : null\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/studio-core/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9C,YAAY;IACZ,WAAW;IACX,UAAU;IACV,qBAAqB;IACrB,SAAS;CACV,CAAC,CAAA;AAGF,oDAAoD;AACpD,MAAM,OAAgB,sBAAuB,SAAQ,KAAK;IAExD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAA;IAC7B,CAAC;CACF;AAED,0EAA0E;AAC1E,MAAM,OAAO,sBAAuB,SAAQ,sBAAsB;IAIrD;IAHF,IAAI,GAAG,YAAqB,CAAA;IACrC,YACE,OAAe,EACN,MAA8B;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAA;QAFL,WAAM,GAAN,MAAM,CAAwB;IAGzC,CAAC;CACF;AAED,0CAA0C;AAC1C,MAAM,OAAO,oBAAqB,SAAQ,sBAAsB;IAEzC;IADZ,IAAI,GAAG,WAAoB,CAAA;IACpC,YAAqB,SAAiB;QACpC,KAAK,CAAC,6BAA6B,SAAS,IAAI,CAAC,CAAA;QAD9B,cAAS,GAAT,SAAS,CAAQ;IAEtC,CAAC;CACF;AAED,4DAA4D;AAC5D,MAAM,OAAO,oBAAqB,SAAQ,sBAAsB;IAInD;IAHF,IAAI,GAAG,UAAmB,CAAA;IACnC,YACE,OAAe,EACN,eAAuB;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAA;QAFL,oBAAe,GAAf,eAAe,CAAQ;IAGlC,CAAC;CACF;AAED,8EAA8E;AAC9E,MAAM,OAAO,uBAAwB,SAAQ,sBAAsB;IACxD,IAAI,GAAG,qBAA8B,CAAA;IAC9C,YAAY,OAAO,GAAG,+CAA+C,EAAE,OAA6B;QAClG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzB,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,OAAO,sBAAuB,SAAQ,sBAAsB;IACvD,IAAI,GAAG,SAAkB,CAAA;IAClC,YAAY,OAAO,GAAG,uCAAuC,EAAE,OAA6B;QAC1F,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzB,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,KAAK,YAAY,sBAAsB,CAAA;AAChD,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,wBAAwB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACjD,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9F,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAClD,CAAC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/studio-core/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9C,YAAY;IACZ,WAAW;IACX,UAAU;IACV,qBAAqB;IACrB,SAAS;CACV,CAAC,CAAA;AAGF,oDAAoD;AACpD,MAAM,OAAgB,sBAAuB,SAAQ,KAAK;IAExD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAA;IAC7B,CAAC;CACF;AAED,0EAA0E;AAC1E,MAAM,OAAO,sBAAuB,SAAQ,sBAAsB;IAIrD;IAHF,IAAI,GAAG,YAAqB,CAAA;IACrC,YACE,OAAe,EACN,MAA8B;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAA;QAFL,WAAM,GAAN,MAAM,CAAwB;IAGzC,CAAC;CACF;AAED,0CAA0C;AAC1C,MAAM,OAAO,oBAAqB,SAAQ,sBAAsB;IAEzC;IADZ,IAAI,GAAG,WAAoB,CAAA;IACpC,YAAqB,SAAiB;QACpC,KAAK,CAAC,6BAA6B,SAAS,IAAI,CAAC,CAAA;QAD9B,cAAS,GAAT,SAAS,CAAQ;IAEtC,CAAC;CACF;AAED,4DAA4D;AAC5D,MAAM,OAAO,oBAAqB,SAAQ,sBAAsB;IAInD;IAHF,IAAI,GAAG,UAAmB,CAAA;IACnC,YACE,OAAe,EACN,eAAuB;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAA;QAFL,oBAAe,GAAf,eAAe,CAAQ;IAGlC,CAAC;CACF;AAED,8EAA8E;AAC9E,MAAM,OAAO,uBAAwB,SAAQ,sBAAsB;IACxD,IAAI,GAAG,qBAA8B,CAAA;IAC9C,YAAY,OAAO,GAAG,+CAA+C,EAAE,OAA6B;QAClG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzB,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,OAAO,sBAAuB,SAAQ,sBAAsB;IACvD,IAAI,GAAG,SAAkB,CAAA;IAClC,YAAY,OAAO,GAAG,uCAAuC,EAAE,OAA6B;QAC1F,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzB,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,KAAK,YAAY,sBAAsB,CAAA;AAChD,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,wBAAwB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACjD,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9F,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAClD,CAAC","sourcesContent":["import { z } from 'zod'\nimport type { StudioIssue } from './issues'\n\n/**\n * Distinct, testable repository error categories (brief §7.7). Every failure\n * mode is a distinct class with a stable `code`, so callers can branch on the\n * category without string-matching messages. Provider-neutral: the Convex\n * adapter (Phase 3) maps its failures onto these same types.\n */\nexport const repositoryErrorCodeSchema = z.enum([\n 'validation',\n 'not-found',\n 'conflict',\n 'backend-unavailable',\n 'unknown',\n])\nexport type RepositoryErrorCode = z.infer<typeof repositoryErrorCodeSchema>\n\n/** Base class for all project-repository errors. */\nexport abstract class ProjectRepositoryError extends Error {\n abstract readonly code: RepositoryErrorCode\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options)\n this.name = new.target.name\n }\n}\n\n/** Settings/identity validation failed; carries the structured issues. */\nexport class ProjectValidationError extends ProjectRepositoryError {\n readonly code = 'validation' as const\n constructor(\n message: string,\n readonly issues: readonly StudioIssue[],\n ) {\n super(message)\n }\n}\n\n/** No project exists for the given id. */\nexport class ProjectNotFoundError extends ProjectRepositoryError {\n readonly code = 'not-found' as const\n constructor(readonly projectId: string) {\n super(`No project found with id “${projectId}”.`)\n }\n}\n\n/** A slug or identity collides with an existing project. */\nexport class ProjectConflictError extends ProjectRepositoryError {\n readonly code = 'conflict' as const\n constructor(\n message: string,\n readonly conflictingSlug: string,\n ) {\n super(message)\n }\n}\n\n/** The backing store is unreachable or returned a transport-level failure. */\nexport class BackendUnavailableError extends ProjectRepositoryError {\n readonly code = 'backend-unavailable' as const\n constructor(message = 'The project backend is currently unavailable.', options?: { cause?: unknown }) {\n super(message, options)\n }\n}\n\n/** Any failure that does not map onto a more specific category. */\nexport class UnknownRepositoryError extends ProjectRepositoryError {\n readonly code = 'unknown' as const\n constructor(message = 'An unknown repository error occurred.', options?: { cause?: unknown }) {\n super(message, options)\n }\n}\n\nexport function isProjectRepositoryError(value: unknown): value is ProjectRepositoryError {\n return value instanceof ProjectRepositoryError\n}\n\n/** Map any thrown value onto the repository error taxonomy. */\nexport function asRepositoryError(value: unknown): ProjectRepositoryError {\n if (isProjectRepositoryError(value)) return value\n if (value instanceof Error) return new UnknownRepositoryError(value.message, { cause: value })\n return new UnknownRepositoryError(String(value))\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/studio-core/fixtures.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/studio-core/fixtures.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,cAAc,CAAA;AAErB;;;;;GAKG;AAEH,SAAS,YAAY,CAAC,SAA0C;IAC9D,OAAO,EAAE,GAAG,oBAAoB,EAAE,EAAE,GAAG,SAAS,EAAE,CAAA;AACpD,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAY;IACtC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,kBAAkB;IACxB,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,0BAA0B;IACrC,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QAC3B,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE;YACZ,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAC1C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YACpC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;SACrC;QACD,YAAY,EAAE,iBAAiB;QAC/B,mBAAmB,EAAE,oBAAoB,EAAE;KAC5C;CACF,CAAA;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,0BAA0B;IACrC,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC,IAAI,CAAC;QACf,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE;YACZ,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAC1C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;SACrC;QACD,YAAY,EAAE,iBAAiB;QAC/B,mBAAmB,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;KACzD;CACF,CAAA;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,UAAU,GAAY;IACjC,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,0BAA0B;IACrC,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;QAC3B,aAAa,EAAE,OAAO;QACtB,YAAY,EAAE;YACZ,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAC1C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;SACrC;QACD,YAAY,EAAE,iBAAiB;QAC/B,mBAAmB,EAAE,YAAY,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;KAC7D;CACF,CAAA;AAED,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAuB,CAAC,eAAe,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA;AAE9F,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAsC,MAAM,CAAC,WAAW,CACrF,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CACrC,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,yBAAyB,CAAC;QACnC,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,qBAAqB,CAAC,0BAA0B,CAAC;QACxD,SAAS,EAAE,yBAAyB,CAAC,SAAS,CAAC;KAChD,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import type { Project } from './metadata'\nimport type { SectionAvailabilityMap } from './sections'\nimport { allSectionsAvailable } from './sections'\nimport {\n InMemoryProjectRepository,\n createSequentialClock,\n createSequentialIdFactory,\n} from './repository'\n\n/**\n * Deterministic sample projects (brief §10, §11). Ids and timestamps are\n * hard-coded so every run, test, and browser inspection sees byte-identical\n * state. They deliberately span varied locales and section availability so the\n * Studio shell can demonstrate each.\n */\n\nfunction availability(overrides: Partial<SectionAvailabilityMap>): SectionAvailabilityMap {\n return { ...allSectionsAvailable(), ...overrides }\n}\n\n/** Fully-provisioned, multi-locale marketing site — the \"happy path\" project. */\nexport const auroraMarketing: Project = {\n id: 'prj_aurora',\n name: 'Aurora Marketing',\n slug: 'aurora-marketing',\n createdAt: '2026-01-04T09:00:00.000Z',\n updatedAt: '2026-05-20T16:30:00.000Z',\n settings: {\n locales: ['en', 'de', 'fr'],\n defaultLocale: 'en',\n environments: [\n { key: 'production', label: 'Production' },\n { key: 'staging', label: 'Staging' },\n { key: 'preview', label: 'Preview' },\n ],\n exportTarget: 'next-app-router',\n sectionAvailability: allSectionsAvailable(),\n },\n}\n\n/** Single-locale docs site where the assets surface is still planned. */\nexport const northwindDocs: Project = {\n id: 'prj_northwind',\n name: 'Northwind Docs',\n slug: 'northwind-docs',\n createdAt: '2026-02-11T11:15:00.000Z',\n updatedAt: '2026-05-28T08:05:00.000Z',\n settings: {\n locales: ['en'],\n defaultLocale: 'en',\n environments: [\n { key: 'production', label: 'Production' },\n { key: 'preview', label: 'Preview' },\n ],\n exportTarget: 'next-app-router',\n sectionAvailability: availability({ assets: 'planned' }),\n },\n}\n\n/** Regional storefront with two locales and a components surface still planned. */\nexport const lumenStore: Project = {\n id: 'prj_lumen',\n name: 'Lumen Store',\n slug: 'lumen-store',\n createdAt: '2026-03-02T14:45:00.000Z',\n updatedAt: '2026-06-01T10:00:00.000Z',\n settings: {\n locales: ['en-US', 'es-MX'],\n defaultLocale: 'en-US',\n environments: [\n { key: 'production', label: 'Production' },\n { key: 'preview', label: 'Preview' },\n ],\n exportTarget: 'next-app-router',\n sectionAvailability: availability({ components: 'planned' }),\n },\n}\n\n/** All sample projects in a stable order. */\nexport const sampleProjects: readonly Project[] = [auroraMarketing, northwindDocs, lumenStore]\n\n/** Lookup by id for tests and shell bootstrapping. */\nexport const sampleProjectsById: Readonly<Record<string, Project>> = Object.fromEntries(\n sampleProjects.map((p) => [p.id, p]),\n)\n\n/**\n * Build an in-memory repository seeded with the sample projects. The clock and\n * id factory continue deterministically *after* the seeded ids/timestamps, so\n * subsequent create/update operations are reproducible across runs.\n */\nexport function createFixtureRepository(): InMemoryProjectRepository {\n return new InMemoryProjectRepository({\n seed: sampleProjects,\n clock: createSequentialClock('2026-06-07T00:00:00.000Z'),\n idFactory: createSequentialIdFactory('prj_new'),\n })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/studio-core/ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,sEAAsE;AACtE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAGhD;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,4BAA4B,CAAA;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;AAGvE,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,oCAAoC,CAAA;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;AAG5D,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AAC9C,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK;SACT,SAAS,CAAC,MAAM,CAAC;SACjB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/studio-core/ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,sEAAsE;AACtE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAGhD;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,4BAA4B,CAAA;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;AAGvE,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,oCAAoC,CAAA;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;AAG5D,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AAC9C,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK;SACT,SAAS,CAAC,MAAM,CAAC;SACjB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AACxB,CAAC","sourcesContent":["import { z } from 'zod'\n\n/** Stable, non-empty project identifier (opaque; not user-facing). */\nexport const projectIdSchema = z.string().min(1)\nexport type ProjectId = z.infer<typeof projectIdSchema>\n\n/**\n * URL-safe project slug: lowercase alphanumeric segments joined by single hyphens.\n * The slug is user-facing and editable; the id is the stable key.\n */\nexport const SLUG_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/\nexport const slugSchema = z.string().min(1).max(63).regex(SLUG_PATTERN)\nexport type Slug = z.infer<typeof slugSchema>\n\nexport function isValidSlug(value: string): boolean {\n return slugSchema.safeParse(value).success\n}\n\n/**\n * Permissive BCP-47-ish locale tag: a primary subtag plus optional script/region\n * subtags, e.g. `en`, `en-US`, `pt-BR`, `zh-Hans`, `zh-Hant-HK`.\n */\nexport const LOCALE_PATTERN = /^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/\nexport const localeSchema = z.string().regex(LOCALE_PATTERN)\nexport type Locale = z.infer<typeof localeSchema>\n\nexport function isValidLocale(value: string): boolean {\n return localeSchema.safeParse(value).success\n}\n\n/** Derive a slug candidate from a free-form name. Never throws; may yield ''. */\nexport function slugify(input: string): string {\n return input\n .normalize('NFKD')\n .replace(/[̀-ͯ]/g, '')\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 63)\n .replace(/-+$/g, '')\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/studio-core/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,6BAA6B,CAAA;AAEpD,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/studio-core/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,6BAA6B,CAAA;AAEpD,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA","sourcesContent":["export const PACKAGE = '@elytracms/core/studio-core'\n\nexport * from './ids'\nexport * from './sections'\nexport * from './metadata'\nexport * from './issues'\nexport * from './validate'\nexport * from './workspace-config'\nexport * from './errors'\nexport * from './context'\nexport * from './repository'\nexport * from './fixtures'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/studio-core/issues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC1C,cAAc;IACd,cAAc;IACd,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,+BAA+B;IAC/B,iBAAiB;IACjB,uBAAuB;IACvB,qBAAqB;IACrB,uBAAuB;IACvB,iCAAiC;CAClC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;AAGrE,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,yBAAyB;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,qFAAqF;IACrF,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CACjD,CAAC,CAAA;AAGF,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,MAA8B;IAC5D,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAA;AAC5D,CAAC"}
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/studio-core/issues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC1C,cAAc;IACd,cAAc;IACd,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,+BAA+B;IAC/B,iBAAiB;IACjB,uBAAuB;IACvB,qBAAqB;IACrB,uBAAuB;IACvB,iCAAiC;CAClC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;AAGrE,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,yBAAyB;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,qFAAqF;IACrF,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CACjD,CAAC,CAAA;AAGF,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,MAA8B;IAC5D,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAA;AAC5D,CAAC","sourcesContent":["import { z } from 'zod'\n\n/**\n * Stable codes for project-settings validation issues (brief §4.11, §7.7).\n * Settings validation is first-class and non-throwing: the editing UI holds a\n * draft and renders these issues rather than crashing.\n */\nexport const studioIssueCodeSchema = z.enum([\n 'invalid-name',\n 'invalid-slug',\n 'empty-locales',\n 'duplicate-locale',\n 'invalid-locale',\n 'default-locale-not-in-locales',\n 'no-environments',\n 'duplicate-environment',\n 'invalid-environment',\n 'missing-export-target',\n 'incomplete-section-availability',\n])\nexport type StudioIssueCode = z.infer<typeof studioIssueCodeSchema>\n\nexport const studioIssueSeveritySchema = z.enum(['error', 'warning'])\nexport type StudioIssueSeverity = z.infer<typeof studioIssueSeveritySchema>\n\n/** A structured project-settings issue carrying a field path. */\nexport const studioIssueSchema = z.object({\n code: studioIssueCodeSchema,\n severity: studioIssueSeveritySchema,\n message: z.string(),\n /** Field path into the settings object, e.g. ['defaultLocale'] or ['locales', 1]. */\n path: z.array(z.union([z.string(), z.number()])),\n})\nexport type StudioIssue = z.infer<typeof studioIssueSchema>\n\n/** True when no error-severity issues are present (warnings are tolerated). */\nexport function isSettingsValid(issues: readonly StudioIssue[]): boolean {\n return !issues.some((issue) => issue.severity === 'error')\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/studio-core/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAEzD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACzB,CAAC,CAAA;AAGF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAG7D;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAGhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;IAC9B,aAAa,EAAE,YAAY;IAC3B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACxC,YAAY,EAAE,kBAAkB;IAChC,mBAAmB,EAAE,4BAA4B;CAClD,CAAC,CAAA;AAGF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAA;AAGF,qDAAqD;AACrD,MAAM,CAAC,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC;IACxD,QAAQ,EAAE,qBAAqB;CAChC,CAAC,CAAA;AAGF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,IAAI,CAAC;IAC7D,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;CAChB,CAAC,CAAA;AAGF,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAA;AACH,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;QAC1C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;KACrC,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/studio-core/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAEzD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACzB,CAAC,CAAA;AAGF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAG7D;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAGhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;IAC9B,aAAa,EAAE,YAAY;IAC3B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACxC,YAAY,EAAE,kBAAkB;IAChC,mBAAmB,EAAE,4BAA4B;CAClD,CAAC,CAAA;AAGF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAA;AAGF,qDAAqD;AACrD,MAAM,CAAC,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC;IACxD,QAAQ,EAAE,qBAAqB;CAChC,CAAC,CAAA;AAGF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,IAAI,CAAC;IAC7D,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;CAChB,CAAC,CAAA;AAGF,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAA;AACH,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;QAC1C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;KACrC,CAAA;AACH,CAAC","sourcesContent":["import { z } from 'zod'\nimport { localeSchema, projectIdSchema, slugSchema } from './ids'\nimport { sectionAvailabilityMapSchema } from './sections'\n\n/** A named deployment environment, e.g. production / preview (brief §7.7). */\nexport const environmentSchema = z.object({\n key: slugSchema,\n label: z.string().min(1),\n})\nexport type Environment = z.infer<typeof environmentSchema>\n\n/**\n * Export target for generated code. Next.js App Router is the initial (and\n * currently only) target (brief §6, §7.7).\n */\nexport const exportTargetSchema = z.enum(['next-app-router'])\nexport type ExportTarget = z.infer<typeof exportTargetSchema>\n\n/**\n * ISO-8601 timestamp string. Kept as a plain string (the repository owns the\n * clock) so fixtures stay byte-for-byte deterministic across runs.\n */\nexport const timestampSchema = z.string().min(1)\nexport type Timestamp = z.infer<typeof timestampSchema>\n\n/**\n * Project settings — configuration that is separate from the canonical project\n * graph (brief §7.7, §8.7). Field shapes are validated here; cross-field rules\n * (e.g. default-locale ∈ locales) live in `validate.ts` so the editing UI can\n * hold a temporarily-invalid draft and surface issues instead of throwing.\n */\nexport const projectSettingsSchema = z.object({\n locales: z.array(localeSchema),\n defaultLocale: localeSchema,\n environments: z.array(environmentSchema),\n exportTarget: exportTargetSchema,\n sectionAvailability: sectionAvailabilityMapSchema,\n})\nexport type ProjectSettings = z.infer<typeof projectSettingsSchema>\n\n/**\n * Project metadata — identity, distinct from settings and from the project graph\n * (brief §7.7). `createdAt`/`updatedAt` are optional: backend-stored projects\n * carry them, but config-derived projects (identity owned by `elytra.config.ts`)\n * have no backend timestamps.\n */\nexport const projectMetadataSchema = z.object({\n id: projectIdSchema,\n name: z.string().min(1).max(120),\n slug: slugSchema,\n createdAt: timestampSchema.optional(),\n updatedAt: timestampSchema.optional(),\n})\nexport type ProjectMetadata = z.infer<typeof projectMetadataSchema>\n\n/** A full project record: metadata plus settings. */\nexport const projectSchema = projectMetadataSchema.extend({\n settings: projectSettingsSchema,\n})\nexport type Project = z.infer<typeof projectSchema>\n\n/**\n * Lightweight projection for list views and the switcher (brief §8.1). Avoids\n * shipping full settings where only identity is needed.\n */\nexport const projectSummarySchema = projectMetadataSchema.pick({\n id: true,\n name: true,\n slug: true,\n updatedAt: true,\n})\nexport type ProjectSummary = z.infer<typeof projectSummarySchema>\n\nexport function toSummary(project: Project): ProjectSummary {\n return {\n id: project.id,\n name: project.name,\n slug: project.slug,\n updatedAt: project.updatedAt,\n }\n}\n\n/** Default environments for a freshly-created project. */\nexport function defaultEnvironments(): Environment[] {\n return [\n { key: 'production', label: 'Production' },\n { key: 'preview', label: 'Preview' },\n ]\n}\n"]}
|