@elytracms/core 0.0.7 → 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 +2 -0
- package/dist/cms-core/index.js +2 -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 +10 -0
- package/dist/cms-core/issues.js +13 -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.d.ts +44 -0
- package/dist/cms-core/nesting-depth.js +50 -0
- package/dist/cms-core/nesting-depth.js.map +1 -0
- 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.d.ts +8 -0
- package/dist/cms-core/validate-document.js +35 -0
- 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.d.ts +14 -1
- package/dist/runtime-renderer/render.js +126 -126
- 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":"presence.js","sourceRoot":"","sources":["../../src/collaboration/presence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../../src/collaboration/presence.ts"],"names":[],"mappings":"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","sourcesContent":["import { createSequentialClock } from './core'\nimport type { Actor, Clock, StoreOptions } from './core'\n\n/**\n * Multi-user editing primitives (EC-126): presence (who is here + what they're focused on), soft\n * node locks (advisory — claim a node so concurrent edits don't silently clobber), and optimistic\n * concurrency conflict detection (an edit committed against a stale base version is reported as a\n * conflict, never lost). These are the primitives; a Convex backend supplies live transport.\n */\n\nexport interface Participant {\n actor: Actor\n /** The node the participant currently has selected, if any. */\n focusNodeId?: string\n since: string\n}\n\nexport interface NodeLock {\n nodeId: string\n actorId: string\n at: string\n}\n\n/** The outcome of attempting to acquire a lock. */\nexport interface LockResult {\n ok: boolean\n /** The current owner (the requester on success, or the conflicting holder on failure). */\n ownerId: string\n}\n\n/** The outcome of committing an optimistic edit. */\nexport interface CommitResult {\n ok: boolean\n conflict: boolean\n /** When `conflict`, the head version the edit must be rebased onto. */\n headVersion: number\n}\n\nexport class PresenceStore {\n private readonly participants = new Map<string, Map<string, Participant>>()\n private readonly locks = new Map<string, Map<string, NodeLock>>()\n private readonly clock: Clock\n\n constructor(options: StoreOptions = {}) {\n this.clock = options.clock ?? createSequentialClock()\n }\n\n private people(projectId: string): Map<string, Participant> {\n const existing = this.participants.get(projectId)\n if (existing) return existing\n const created = new Map<string, Participant>()\n this.participants.set(projectId, created)\n return created\n }\n\n private lockMap(projectId: string): Map<string, NodeLock> {\n const existing = this.locks.get(projectId)\n if (existing) return existing\n const created = new Map<string, NodeLock>()\n this.locks.set(projectId, created)\n return created\n }\n\n /** Mark an actor present (idempotent; preserves an existing focus). */\n join(projectId: string, actor: Actor): Participant {\n const people = this.people(projectId)\n const existing = people.get(actor.id)\n const participant: Participant = existing ?? { actor, since: this.clock() }\n people.set(actor.id, participant)\n return participant\n }\n\n /** Remove an actor and release every lock it held (no edits are lost — locks are advisory). */\n leave(projectId: string, actorId: string): void {\n this.people(projectId).delete(actorId)\n const locks = this.lockMap(projectId)\n for (const [nodeId, lock] of locks) if (lock.actorId === actorId) locks.delete(nodeId)\n }\n\n /** Update an actor's focused node (presence cursor). */\n focus(projectId: string, actorId: string, focusNodeId: string | undefined): void {\n const participant = this.people(projectId).get(actorId)\n if (participant) {\n this.people(projectId).set(actorId, { ...participant, ...(focusNodeId !== undefined ? { focusNodeId } : { focusNodeId: undefined }) })\n }\n }\n\n /** Everyone present, in join order. */\n list(projectId: string): Participant[] {\n return [...this.people(projectId).values()]\n }\n\n /**\n * Acquire a soft lock on a node. Succeeds if it is free or already held by the requester;\n * fails (reporting the holder) if another actor holds it.\n */\n lockNode(projectId: string, nodeId: string, actorId: string): LockResult {\n const locks = this.lockMap(projectId)\n const held = locks.get(nodeId)\n if (held && held.actorId !== actorId) return { ok: false, ownerId: held.actorId }\n locks.set(nodeId, { nodeId, actorId, at: this.clock() })\n return { ok: true, ownerId: actorId }\n }\n\n /** Release a lock the actor holds (no-op if free or held by someone else). */\n unlockNode(projectId: string, nodeId: string, actorId: string): void {\n const locks = this.lockMap(projectId)\n if (locks.get(nodeId)?.actorId === actorId) locks.delete(nodeId)\n }\n\n /** The actor holding a node's lock, if any. */\n lockOwner(projectId: string, nodeId: string): string | undefined {\n return this.lockMap(projectId).get(nodeId)?.actorId\n }\n\n /**\n * Commit an optimistic edit made against `baseVersion`. If the head has advanced past the base\n * (a concurrent commit landed), the edit is reported as a conflict to be rebased — never\n * silently lost. Otherwise it succeeds against the new head.\n */\n commitEdit(baseVersion: number, headVersion: number): CommitResult {\n if (baseVersion < headVersion) return { ok: false, conflict: true, headVersion }\n return { ok: true, conflict: false, headVersion: headVersion + 1 }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publishing.js","sourceRoot":"","sources":["../../src/collaboration/publishing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"publishing.js","sourceRoot":"","sources":["../../src/collaboration/publishing.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod'\nimport { createSequentialClock, createSequentialIds } from './core'\nimport type { Clock, IdGen, StoreOptions } from './core'\n\n/**\n * Publishing (EC-129), publish history (EC-124), and draft-vs-published preview resolution\n * (EC-123). A deployment IS one environment (EC-179, vision AD-8), so publishing is a single\n * draft/published axis — NOT a per-environment matrix. The deployment pins the one version that\n * is live; publishing, reverting and rolling back all append to an append-only event log. Moving\n * a release between environments (staging → production) is a deployment/code-pipeline concern, not\n * an in-deployment promote — see `env-is-deployment-boundary`.\n */\n\nexport type PublishAction = 'publish' | 'unpublish' | 'rollback'\nexport type PreviewMode = 'draft' | 'published'\n\n/** Live publish state of the deployment. */\nexport const publishStateSchema = z.object({\n /** The version live in this deployment, or undefined when nothing is published. */\n publishedVersionId: z.string().optional(),\n publishedAt: z.string().optional(),\n})\nexport type PublishState = z.infer<typeof publishStateSchema>\n\n/** A single publish-history event. */\nexport const publishEventSchema = z.object({\n id: z.string(),\n projectId: z.string().min(1),\n action: z.enum(['publish', 'unpublish', 'rollback']),\n versionId: z.string().optional(),\n author: z.string().optional(),\n note: z.string().optional(),\n at: z.string(),\n})\nexport type PublishEvent = z.infer<typeof publishEventSchema>\n\nexport class PublishingStore {\n /** projectId → live state. */\n private readonly states = new Map<string, PublishState>()\n /** projectId → events (append-only). */\n private readonly events = new Map<string, PublishEvent[]>()\n private readonly clock: Clock\n private readonly ids: IdGen\n\n constructor(options: StoreOptions = {}) {\n this.clock = options.clock ?? createSequentialClock()\n this.ids = options.ids ?? createSequentialIds()\n }\n\n private eventList(projectId: string): PublishEvent[] {\n const existing = this.events.get(projectId)\n if (existing) return existing\n const created: PublishEvent[] = []\n this.events.set(projectId, created)\n return created\n }\n\n private record(projectId: string, action: PublishAction, versionId: string | undefined, author?: string, note?: string): PublishEvent {\n const event: PublishEvent = publishEventSchema.parse({\n id: this.ids('pub'),\n projectId,\n action,\n ...(versionId !== undefined ? { versionId } : {}),\n ...(author !== undefined ? { author } : {}),\n ...(note !== undefined ? { note } : {}),\n at: this.clock(),\n })\n this.eventList(projectId).push(event)\n return event\n }\n\n /** The live state of the deployment (defaults to unpublished). */\n state(projectId: string): PublishState {\n return this.states.get(projectId) ?? {}\n }\n\n /** Publish a version (EC-129). Appends a history event (EC-124). */\n publish(projectId: string, versionId: string, author?: string): PublishState {\n const at = this.clock()\n const state: PublishState = { publishedVersionId: versionId, publishedAt: at }\n this.states.set(projectId, state)\n this.record(projectId, 'publish', versionId, author)\n return state\n }\n\n /** Revert to draft (no live version). */\n unpublish(projectId: string, author?: string): PublishState {\n const state: PublishState = {}\n this.states.set(projectId, state)\n this.record(projectId, 'unpublish', undefined, author)\n return state\n }\n\n /** Record a rollback publish (the version is a rollback version). */\n rollback(projectId: string, versionId: string, author?: string): PublishState {\n const at = this.clock()\n const state: PublishState = { publishedVersionId: versionId, publishedAt: at }\n this.states.set(projectId, state)\n this.record(projectId, 'rollback', versionId, author, 'Rolled back to a prior version.')\n return state\n }\n\n /** Full publish history, newest → oldest. */\n history(projectId: string): PublishEvent[] {\n return [...this.eventList(projectId)].reverse()\n }\n\n /**\n * Resolve which version to render for a preview mode (EC-123). `published` → the live version;\n * `draft` → the working draft version the caller supplies. Lets a preview render draft content\n * distinctly from what is published.\n */\n resolveVersion(projectId: string, mode: PreviewMode, draftVersionId?: string): string | undefined {\n if (mode === 'draft') return draftVersionId\n return this.state(projectId).publishedVersionId\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/collaboration/versions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/collaboration/versions.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod'\nimport { createSequentialClock, createSequentialIds } from './core'\nimport type { Clock, IdGen, StoreOptions } from './core'\n\n/**\n * Project versioning (EC-122) + rollback (EC-125). A version is an immutable snapshot of project\n * state (the serialized graph) with metadata. Versions are append-only and numbered per project;\n * a rollback creates a NEW version whose snapshot equals a prior one's — history is never\n * rewritten, so the rollback itself is auditable.\n */\n\nexport type VersionOrigin = 'edit' | 'import' | 'rollback'\n\nexport const versionRecordSchema = z.object({\n id: z.string(),\n projectId: z.string().min(1),\n /** 1-based, monotonically increasing per project. */\n number: z.number().int().positive(),\n /** Serialized project state (e.g. a `ProjectGraph` JSON string). */\n snapshot: z.string(),\n label: z.string().optional(),\n message: z.string().optional(),\n author: z.string().optional(),\n origin: z.enum(['edit', 'import', 'rollback']),\n /** The version this one was derived from (the previous version, or the rollback source). */\n parentId: z.string().optional(),\n createdAt: z.string(),\n})\nexport type VersionRecord = z.infer<typeof versionRecordSchema>\n\nexport interface CreateVersionInput {\n snapshot: string\n label?: string\n message?: string\n author?: string\n origin?: VersionOrigin\n}\n\n/** In-memory, append-only version store. */\nexport class VersionStore {\n private readonly byProject = new Map<string, VersionRecord[]>()\n private readonly clock: Clock\n private readonly ids: IdGen\n\n constructor(options: StoreOptions = {}) {\n this.clock = options.clock ?? createSequentialClock()\n this.ids = options.ids ?? createSequentialIds()\n }\n\n private list_(projectId: string): VersionRecord[] {\n const existing = this.byProject.get(projectId)\n if (existing) return existing\n const created: VersionRecord[] = []\n this.byProject.set(projectId, created)\n return created\n }\n\n /** Append a new version. Returns the created record. */\n create(projectId: string, input: CreateVersionInput): VersionRecord {\n const list = this.list_(projectId)\n const previous = list.at(-1)\n const record: VersionRecord = versionRecordSchema.parse({\n id: this.ids('ver'),\n projectId,\n number: list.length + 1,\n snapshot: input.snapshot,\n ...(input.label !== undefined ? { label: input.label } : {}),\n ...(input.message !== undefined ? { message: input.message } : {}),\n ...(input.author !== undefined ? { author: input.author } : {}),\n origin: input.origin ?? 'edit',\n ...(previous ? { parentId: previous.id } : {}),\n createdAt: this.clock(),\n })\n list.push(record)\n return record\n }\n\n /** All versions for a project, oldest → newest. */\n list(projectId: string): VersionRecord[] {\n return [...this.list_(projectId)]\n }\n\n get(projectId: string, versionId: string): VersionRecord | undefined {\n return this.list_(projectId).find((v) => v.id === versionId)\n }\n\n latest(projectId: string): VersionRecord | undefined {\n return this.list_(projectId).at(-1)\n }\n\n /**\n * Roll back to a prior version (EC-125): appends a NEW version carrying the target's snapshot.\n * Returns `undefined` if the target version doesn't exist (the caller surfaces it as an issue).\n */\n rollback(projectId: string, toVersionId: string, author?: string): VersionRecord | undefined {\n const target = this.get(projectId, toVersionId)\n if (!target) return undefined\n return this.create(projectId, {\n snapshot: target.snapshot,\n label: `Rollback to v${target.number}`,\n message: `Restored the state of version ${target.number}.`,\n ...(author !== undefined ? { author } : {}),\n origin: 'rollback',\n })\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/component-registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/component-registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA","sourcesContent":["export * from './manifest'\nexport * from './issues'\nexport * from './registry'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/component-registry/issues.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/component-registry/issues.ts"],"names":[],"mappings":"","sourcesContent":["/** Structured issues surfaced by the registry itself (distinct from graph issues). */\nexport interface ComponentIssue {\n code: 'duplicate-id' | 'invalid-namespace' | 'invalid-id'\n componentId: string\n message: string\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/component-registry/manifest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/component-registry/manifest.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldDef } from '@elytracms/core/cms-core'\nimport { fieldValueValidator } from '@elytracms/core/cms-core'\nimport type { JsonValue, ManifestView } from '@elytracms/core/project-graph'\n\n/** Distributive `Omit` that preserves a discriminated union (one variant per member). */\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never\n\n/**\n * A component prop is a **field-def** (EC-190 \"props as fields\", AD-12): the SAME\n * vocabulary the CMS uses for document fields (`@elytracms/core/cms-core` `FieldDef`) —\n * text/number/boolean/select/date/relation/asset/richText/blocks — minus the\n * `name` (the record key on `ComponentManifest.props` IS the prop name). One\n * schema vocabulary, one inspector/form engine, recursively: a prop of type\n * `blocks` carries a nested composition. Authoring metadata (label, default,\n * inline-editing, control hint) lives on the field-def's `form` and `default`.\n * Use `context: 'prop'` (or `'both'`); document-only attributes (`filterable`,\n * `unique`) are flagged by cms-core's `assertPropFieldDef`, never silently honoured.\n */\nexport type PropField = DistributiveOmit<FieldDef, 'name'>\n\n/** A named child insertion point. */\nexport interface SlotSpec {\n name: string\n label?: string\n required?: boolean\n /** Restrict which component ids may be inserted (omit to allow any). */\n allow?: string[]\n}\n\n/** A deterministic preview fixture for a component state. */\nexport interface ComponentFixture {\n name: string\n props?: Record<string, JsonValue>\n /** Named slots rendered with literal child component ids for preview. */\n slotChildren?: Record<string, string[]>\n}\n\n/** Declares that a component iterates a list prop over an item slot (e.g. Repeater). */\nexport interface IterateSpec {\n itemsProp: string\n itemSlot: string\n}\n\n/**\n * Declares that a component renders a composition FIELD VALUE (EC-188, AD-12): the\n * `valueProp` carries a stored composition (one `ComponentNode` root or an ordered\n * list — a `blocks` field's value), which the renderer renders as the component's\n * children via `renderComposition`, with the live `RenderContext`. The mirror of\n * `IterateSpec`: a manifest opts a host component into rendering a composition tree\n * wherever it is placed (e.g. a post template's body), so the same renderer/export\n * pipeline that renders pages renders block fields too.\n */\nexport interface CompositionSpec {\n valueProp: string\n}\n\n/**\n * Declares that a component renders a LISTING — a live, query-resolved set of\n * documents (EC-255, un-parks AD-9 \"this section repeats over a collection,\n * filtered, sorted\"). The `prop` receives the matching documents (delivery-shaped),\n * injected by the host exactly like a composition's children — NOT a static\n * relation pick the editor maintains by hand. The filter binds the listed\n * collection's `field` to the ref a SIBLING authored prop (`fromProp`) carries:\n * a ProductGrid picks one `category`, and the listing lists `product` where its\n * `categories` (a `many` relation) contains that pick. `sort`/`limit` are the\n * closed AD-3 query envelope. The mirror of {@link CompositionSpec} for a\n * query-resolved prop — so the same renderer/export pipeline that renders pages\n * renders dynamic grids, and adding/removing a member re-renders them.\n */\nexport interface ListingSpec {\n /** Prop the resolved documents are injected as (read by the implementation). */\n prop: string\n /** Collection to list (e.g. `product`). */\n collection: string\n /**\n * The membership filter: the listed collection's `field` must contain the ref\n * the sibling authored prop `fromProp` holds (a relation pick, reduced to its\n * target id). Closed to a single equality/contains term — the AD-3 vocabulary.\n */\n filter: { field: string; fromProp: string }\n /** Optional single-field sort (ties break by id, like every list — EC-143). */\n sort?: { field: string; direction?: 'asc' | 'desc' }\n /** Optional page-size cap. */\n limit?: number\n}\n\n/** The typed manifest each editable component declares (brief §7.2). */\nexport interface ComponentManifest {\n /** Namespaced id, e.g. `base.primitives.Stack` or `project.MarketingHero`. */\n id: string\n /** Source namespace: `base.primitives` for platform primitives, `project` for project code. */\n namespace: string\n title?: string\n description?: string\n category?: string\n /** Editable props as field-defs (EC-190), keyed by prop name. */\n props: Record<string, PropField>\n slots: SlotSpec[]\n /** Design-token usage hints (e.g. `['color.surface', 'space.gap']`). */\n designTokens?: string[]\n fixtures?: ComponentFixture[]\n iterate?: IterateSpec\n /** Marks the component as a composition host: `valueProp` holds a block-field tree (EC-188). */\n composition?: CompositionSpec\n /** Marks the component as a listing host: `prop` receives a live query's documents (EC-255). */\n listing?: ListingSpec\n /**\n * Canvas-eligibility (EC-191). Editors place components on a **client-rendered**\n * canvas, so a placeable component must be client-renderable (isomorphic React).\n * Defaults to eligible; set `clientRenderable: false` for a server-only / RSC\n * component — it stays usable in dev frames (`page.tsx` / `layout.tsx`) but the\n * blocks panel won't offer it and a composition that contains it is invalid.\n */\n clientRenderable?: boolean\n}\n\n/** Identity helper that infers nothing but documents intent at call sites. */\nexport function defineComponent(manifest: ComponentManifest): ComponentManifest {\n return manifest\n}\n\n/** Names of props flagged `form.inlineEditable`, in manifest declaration order. */\nexport function inlineEditablePropNames(manifest: ComponentManifest): string[] {\n return Object.entries(manifest.props)\n .filter(([, field]) => field.form?.inlineEditable === true)\n .map(([name]) => name)\n}\n\n/**\n * Return a copy of `manifest` with the named props flagged inline-editable\n * (EC-158, now `form.inlineEditable`). Names that don't exist on the manifest are\n * ignored. Used by hosts that assemble a registry from manifests they don't author\n * (e.g. the studio opting in platform-primitive content props).\n */\nexport function withInlineEditableProps(\n manifest: ComponentManifest,\n propNames: readonly string[],\n): ComponentManifest {\n const props: Record<string, PropField> = {}\n for (const [name, field] of Object.entries(manifest.props)) {\n props[name] = propNames.includes(name)\n ? ({ ...field, form: { ...field.form, inlineEditable: true } } as PropField)\n : field\n }\n return { ...manifest, props }\n}\n\n/**\n * Present a manifest's props as a `FieldDef[]` (EC-190) — the prop name injected\n * from the record key — so the shared inspector/form engine renders component\n * props with the exact control set, validation, and layout it renders document\n * fields. Declaration order is preserved.\n */\nexport function manifestPropFields(manifest: ComponentManifest): FieldDef[] {\n return Object.entries(manifest.props).map(([name, field]) => ({ ...field, name }) as FieldDef)\n}\n\n/** One manifest prop as a full `FieldDef` (name injected from the key), or undefined. */\nexport function manifestPropField(manifest: ComponentManifest, name: string): FieldDef | undefined {\n const field = manifest.props[name]\n return field ? ({ ...field, name }) as FieldDef : undefined\n}\n\n/**\n * The effective named child-region slots of a component (EC-190 \"slots are blocks\n * props\"). A `blocks`-type prop IS a slot: a named child region with an `allow`\n * leash, edited as a composition. So the manifest's declared `slots` are merged\n * with every `blocks` prop (carrying its `allow`/`required`/`label`) — EXCEPT a\n * `composition.valueProp`, which is a blocks VALUE passed to the host as a prop\n * (a delivery field value, stored in `node.props`), not a canvas child region\n * (stored in `node.slots`). Per DD3 the child trees stay in `node.slots`; the\n * field-def vocabulary just expresses the declaration + leash. For a manifest with\n * no `blocks` props this returns `manifest.slots` unchanged.\n */\nexport function manifestSlots(manifest: ComponentManifest): SlotSpec[] {\n const compositionValueProp = manifest.composition?.valueProp\n const fromBlocksProps: SlotSpec[] = []\n for (const [name, field] of Object.entries(manifest.props)) {\n if (field.type !== 'blocks') continue\n if (name === compositionValueProp) continue\n fromBlocksProps.push({\n name,\n ...(field.form?.label ? { label: field.form.label } : {}),\n ...(field.validation?.required ? { required: true } : {}),\n ...(field.allow ? { allow: field.allow } : {}),\n })\n }\n return fromBlocksProps.length === 0 ? manifest.slots : [...manifest.slots, ...fromBlocksProps]\n}\n\n/**\n * The value-validator for one manifest prop (EC-190): the SAME field-def value\n * check the CMS applies to a document field. The renderer uses it for the\n * invalid-static-prop → default fallback (EC-015) without importing cms-core.\n * Returns undefined when the prop is not declared (an unknown prop passes through).\n */\nexport function propValueValidator(\n manifest: ComponentManifest,\n name: string,\n): ((value: unknown) => boolean) | undefined {\n const field = manifestPropField(manifest, name)\n return field ? fieldValueValidator(field) : undefined\n}\n\n/** Namespace of a component id (the segment before the first dot-group). */\nexport function namespaceOf(id: string): string {\n if (id.startsWith('base.primitives.')) return 'base.primitives'\n const first = id.split('.')[0]\n return first ?? ''\n}\n\nexport function isPrimitive(id: string): boolean {\n return id.startsWith('base.primitives.')\n}\n\n/**\n * Canvas-eligibility (EC-191): true when an editor may place this component on the\n * client-rendered canvas. Eligible by default; `clientRenderable: false` (a\n * server-only / RSC component) opts out — the blocks panel hides it and a\n * composition that contains it fails `validateCompositionValue`.\n */\nexport function isCanvasEligible(manifest: ComponentManifest): boolean {\n return manifest.clientRenderable !== false\n}\n\n/** Bridge a manifest to the structural `ManifestView` the graph validator consumes. */\nexport function toManifestView(manifest: ComponentManifest): ManifestView {\n const props: NonNullable<ManifestView['props']> = {}\n for (const [name, field] of Object.entries(manifest.props)) {\n props[name] = {\n // EC-190: props are static; the binding path retires in slice 5. Until then\n // every prop reports bindable so the graph validator's binding branch stays\n // inert (no false `binding-not-allowed`). `validate` is the field-def value\n // validator — the SAME check the CMS uses for a document field value.\n bindable: true,\n validate: fieldValueValidator({ ...field, name } as FieldDef),\n }\n }\n return {\n id: manifest.id,\n props,\n // EC-191: carry canvas-eligibility so `validateCompositionValue` can reject a\n // server-only component placed in a composition.\n ...(manifest.clientRenderable === false ? { clientRenderable: false } : {}),\n // EC-186: carry the slot's placement vocabulary (`allow`) through to the\n // graph validator so it can enforce `forbidden-component` — previously\n // dropped here, leaving slot `allow` declared-but-unenforced. EC-190:\n // `manifestSlots` folds in `blocks`-type props as slots, so a blocks prop's\n // `allow` leash is enforced through the same path.\n slots: manifestSlots(manifest).map((s) => ({\n name: s.name,\n required: s.required,\n ...(s.allow ? { allow: s.allow } : {}),\n })),\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/component-registry/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/component-registry/registry.ts"],"names":[],"mappings":"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","sourcesContent":["import { isValidComponentId } from '@elytracms/core/project-graph'\nimport type { ComponentLookup, ManifestView } from '@elytracms/core/project-graph'\nimport type { ComponentIssue } from './issues'\nimport type { ComponentManifest } from './manifest'\nimport { isPrimitive, namespaceOf, toManifestView } from './manifest'\n\nexport interface ListFilter {\n namespace?: string\n category?: string\n /** Case-insensitive substring match over id / title / category. */\n query?: string\n}\n\n/**\n * The component registry serves the Builder, renderer, AI tools, export pipeline, and\n * CLI. It distinguishes platform primitives from project components, supports lookup,\n * filtering, required lookups, and reports duplicate ids as structured issues.\n */\nexport class ComponentRegistry {\n private readonly byId = new Map<string, ComponentManifest>()\n private readonly viewCache = new Map<string, ManifestView>()\n readonly issues: ComponentIssue[] = []\n\n constructor(manifests: Iterable<ComponentManifest> = []) {\n for (const manifest of manifests) this.register(manifest)\n }\n\n register(manifest: ComponentManifest): void {\n if (!isValidComponentId(manifest.id)) {\n this.issues.push({\n code: 'invalid-id',\n componentId: manifest.id,\n message: `Component id \"${manifest.id}\" is not namespaced under base.primitives.* or project.*.`,\n })\n }\n if (this.byId.has(manifest.id)) {\n this.issues.push({\n code: 'duplicate-id',\n componentId: manifest.id,\n message: `Duplicate component id \"${manifest.id}\" — keeping the first registration.`,\n })\n return\n }\n this.byId.set(manifest.id, manifest)\n }\n\n has(id: string): boolean {\n return this.byId.has(id)\n }\n\n getManifest(id: string): ComponentManifest | undefined {\n return this.byId.get(id)\n }\n\n /** Required lookup — throws when the component is not registered. */\n require(id: string): ComponentManifest {\n const manifest = this.byId.get(id)\n if (!manifest) throw new Error(`Unknown component \"${id}\".`)\n return manifest\n }\n\n list(filter: ListFilter = {}): ComponentManifest[] {\n const q = filter.query?.toLowerCase()\n return [...this.byId.values()].filter((m) => {\n if (filter.namespace && namespaceOf(m.id) !== filter.namespace) return false\n if (filter.category && m.category !== filter.category) return false\n if (q) {\n const hay = `${m.id} ${m.title ?? ''} ${m.category ?? ''}`.toLowerCase()\n if (!hay.includes(q)) return false\n }\n return true\n })\n }\n\n /** Platform primitives (`base.primitives.*`). */\n primitives(): ComponentManifest[] {\n return this.list().filter((m) => isPrimitive(m.id))\n }\n\n /** Project-level components (everything not under `base.primitives.*`). */\n projectComponents(): ComponentManifest[] {\n return this.list().filter((m) => !isPrimitive(m.id))\n }\n\n get size(): number {\n return this.byId.size\n }\n\n /** A `ComponentLookup` view for the project-graph validator. */\n get lookup(): ComponentLookup {\n return {\n has: (id) => this.byId.has(id),\n get: (id) => {\n if (!this.byId.has(id)) return undefined\n let view = this.viewCache.get(id)\n if (!view) {\n view = toManifestView(this.byId.get(id)!)\n this.viewCache.set(id, view)\n }\n return view\n },\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterable-collections.js","sourceRoot":"","sources":["../../../src/content/__fixtures__/filterable-collections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAGtE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAoB,2BAA2B,CAAA"}
|
|
1
|
+
{"version":3,"file":"filterable-collections.js","sourceRoot":"","sources":["../../../src/content/__fixtures__/filterable-collections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAGtE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAoB,2BAA2B,CAAA","sourcesContent":["import { sampleFilterableCollections } from '@elytracms/core/cms-core'\nimport type { CollectionDef } from '@elytracms/core/cms-core'\n\n/**\n * The cms-core sample collections with the EC-143 `filterable` declarations —\n * the deterministic input for the accessor-type codegen snapshot\n * (`sample-accessor-types.ts`) and for the accessor runtime tests.\n *\n * Since the EC-169 fix-pack the declaration set itself is canonical in\n * `@elytracms/core/cms-core` (`sampleFilterableCollections`) and shared with the\n * persistence seed; this module is a re-export kept for the existing test\n * imports. Deliberately *not* filterable there: `title` (so tests can prove\n * that filtering a real-but-undeclared field fails at both type level and\n * runtime) and the whole `asset` collection (no filterable fields).\n */\nexport const filterableCollections: CollectionDef[] = sampleFilterableCollections\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sample-accessor-types.js","sourceRoot":"","sources":["../../../src/content/__fixtures__/sample-accessor-types.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,gEAAgE;AAChE,sEAAsE"}
|
|
1
|
+
{"version":3,"file":"sample-accessor-types.js","sourceRoot":"","sources":["../../../src/content/__fixtures__/sample-accessor-types.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,gEAAgE;AAChE,sEAAsE","sourcesContent":["// Generated by @elytracms/content accessor-type codegen (EC-143).\n// Do not edit by hand — regenerate from the collection schemas.\n// Deterministic: identical schema input yields byte-identical output.\n\n/**\n * The closed filter vocabulary (vision AD-3): equality, `in`, comparisons,\n * AND-only — multiple fields and multiple operators all AND together.\n * A bare scalar is shorthand for `{ eq: value }`.\n */\nexport interface WhereCondition<T> {\n eq?: T\n gt?: T\n gte?: T\n in?: readonly T[]\n lt?: T\n lte?: T\n}\n\n/** The list-query envelope every generated per-collection query reuses. */\nexport interface GeneratedListQuery<TWhere, TSortField extends string> {\n where?: TWhere\n sort?: { field: TSortField; direction?: 'asc' | 'desc' }\n limit?: number\n cursor?: string\n}\n\n/** Filter input for \"asset\" — only fields declared `filterable`. */\nexport type AssetWhere = Record<string, never>\n\n/** Sortable fields of \"asset\" (the filterable set). */\nexport type AssetSortField = never\n\n/** `listDocuments` query for \"asset\". */\nexport type AssetListQuery = GeneratedListQuery<AssetWhere, AssetSortField>\n\n/** Filter input for \"author\" — only fields declared `filterable`. */\nexport type AuthorWhere = {\n name?: string | WhereCondition<string>\n}\n\n/** Sortable fields of \"author\" (the filterable set). */\nexport type AuthorSortField = 'name'\n\n/** `listDocuments` query for \"author\". */\nexport type AuthorListQuery = GeneratedListQuery<AuthorWhere, AuthorSortField>\n\n/** Filter input for \"page\" — only fields declared `filterable`. */\nexport type PageWhere = Record<string, never>\n\n/** Sortable fields of \"page\" (the filterable set). */\nexport type PageSortField = never\n\n/** `listDocuments` query for \"page\". */\nexport type PageListQuery = GeneratedListQuery<PageWhere, PageSortField>\n\n/** Filter input for \"post\" — only fields declared `filterable`. */\nexport type PostWhere = {\n slug?: string | WhereCondition<string>\n views?: number | WhereCondition<number>\n featured?: boolean | WhereCondition<boolean>\n publishedAt?: string | number | WhereCondition<string | number>\n status?: 'news' | 'guide' | WhereCondition<'news' | 'guide'>\n author?: string | WhereCondition<string>\n}\n\n/** Sortable fields of \"post\" (the filterable set). */\nexport type PostSortField = 'slug' | 'views' | 'featured' | 'publishedAt' | 'status' | 'author'\n\n/** `listDocuments` query for \"post\". */\nexport type PostListQuery = GeneratedListQuery<PostWhere, PostSortField>\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sample-delivery-types.js","sourceRoot":"","sources":["../../../src/content/__fixtures__/sample-delivery-types.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,gEAAgE;AAChE,sEAAsE"}
|
|
1
|
+
{"version":3,"file":"sample-delivery-types.js","sourceRoot":"","sources":["../../../src/content/__fixtures__/sample-delivery-types.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,gEAAgE;AAChE,sEAAsE","sourcesContent":["// Generated by @elytracms/content delivery-type codegen (EC-142).\n// Do not edit by hand — regenerate from the collection schemas.\n// Deterministic: identical schema input yields byte-identical output.\n\n/**\n * Reference stub for an unpopulated relation: `populate: false` opt-outs,\n * unknown/missing targets, and relations nested inside a populated document\n * (population never recurses past depth-1). Never a bare id string.\n */\nexport interface DocumentStub<TCollection extends string = string> {\n id: string\n collection: TCollection\n}\n\n/** Delivery shape of a resolved asset; absent metadata is `null`. */\nexport interface ResolvedAsset {\n id: string\n url: string\n width: number | null\n height: number | null\n alt: string | null\n mimeType: string\n focalPoint: { x: number; y: number } | null\n}\n\n/**\n * One node of a composition (`blocks`) field tree (EC-188), delivered verbatim.\n * Opaque and recursive — render it with `renderComposition` rather than reading\n * into it; `props`/`slots` are intentionally loose.\n */\nexport interface CompositionBlock {\n id: string\n componentId: string\n props?: Record<string, unknown>\n slots?: Record<string, CompositionBlock[]>\n condition?: unknown\n}\n\n/** Delivery shape for documents in the \"asset\" collection. */\nexport interface Asset {\n id: string\n collection: 'asset'\n filename: string\n alt?: string\n url: string\n}\n\n/** Depth-1 populated reference to the \"asset\" collection. */\nexport interface AssetRef {\n id: string\n collection: 'asset'\n filename: string\n alt?: string\n url: string\n}\n\n/** Delivery shape for documents in the \"author\" collection. */\nexport interface Author {\n id: string\n collection: 'author'\n name: string\n bio?: string\n}\n\n/** Depth-1 populated reference to the \"author\" collection. */\nexport interface AuthorRef {\n id: string\n collection: 'author'\n name: string\n bio?: string\n}\n\n/** Delivery shape for documents in the \"page\" collection. */\nexport interface Page {\n id: string\n collection: 'page'\n name: string\n body?: CompositionBlock[]\n layoutId?: string\n seoTitle?: string\n seoDescription?: string\n seoCanonical?: string\n seoOgTitle?: string\n seoOgImage?: string\n seoNoindex?: boolean\n}\n\n/** Depth-1 populated reference to the \"page\" collection. */\nexport interface PageRef {\n id: string\n collection: 'page'\n name: string\n body?: CompositionBlock[]\n layoutId?: string\n seoTitle?: string\n seoDescription?: string\n seoCanonical?: string\n seoOgTitle?: string\n seoOgImage?: string\n seoNoindex?: boolean\n}\n\n/** Delivery shape for documents in the \"post\" collection. */\nexport interface Post {\n id: string\n collection: 'post'\n title: string\n slug: string\n body?: string\n views?: number\n featured?: boolean\n publishedAt?: string | number\n status?: 'news' | 'guide'\n author: AuthorRef\n related?: PostRef[]\n cover?: ResolvedAsset | null\n}\n\n/** Depth-1 populated reference to the \"post\" collection. */\nexport interface PostRef {\n id: string\n collection: 'post'\n title: string\n slug: string\n body?: string\n views?: number\n featured?: boolean\n publishedAt?: string | number\n status?: 'news' | 'guide'\n author: DocumentStub<'author'>\n related?: DocumentStub<'post'>[]\n cover?: ResolvedAsset | null\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/content/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAoCnD,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAAC,MAAmB,EAAE,GAAW;IAC5D,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,GAAG;QACH,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;QAC7B,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI;QACvB,QAAQ,EAAE,MAAM,CAAC,WAAW;QAC5B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;KACtC,CAAA;AACH,CAAC;AAcD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,OAAe,EACf,QAAiC;IAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE;gBACN,QAAQ,CAAC;oBACP,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,UAAU,OAAO,0BAA0B;oBACpD,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnE,IAAI,EAAE,EAAE,OAAO,EAAE;iBAClB,CAAC;aACH;SACF,CAAA;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;AAC9E,CAAC"}
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/content/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAoCnD,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAAC,MAAmB,EAAE,GAAW;IAC5D,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,GAAG;QACH,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;QAC7B,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI;QACvB,QAAQ,EAAE,MAAM,CAAC,WAAW;QAC5B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;KACtC,CAAA;AACH,CAAC;AAcD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,OAAe,EACf,QAAiC;IAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE;gBACN,QAAQ,CAAC;oBACP,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,UAAU,OAAO,0BAA0B;oBACpD,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnE,IAAI,EAAE,EAAE,OAAO,EAAE;iBAClB,CAAC;aACH;SACF,CAAA;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;AAC9E,CAAC","sourcesContent":["import { cmsIssue } from '@elytracms/core/cms-core'\nimport type { CmsPath, CmsValidationIssue } from '@elytracms/core/cms-core'\nimport type { AssetRecord } from '@elytracms/core/persistence'\n\n/**\n * The delivery shape of an asset (vision AD-4): a directly usable object, not\n * an id. Optional metadata that the stored record lacks is `null` (never\n * `undefined`) so resolved documents stay JSON-stable.\n */\nexport interface ResolvedAsset {\n /** The asset id the field stored (kept for cache keys and re-lookup). */\n id: string\n /** Resolvable URL for the asset bytes (EC-044 blob storage locator). */\n url: string\n width: number | null\n height: number | null\n alt: string | null\n mimeType: string\n /**\n * Normalized image focal point `{ x, y }` in 0–1 (EC-230), or `null`. Threaded\n * to the image primitive's CSS `object-position` so a migrated hotspot keeps\n * the subject in frame when a layout crops the image (`object-fit: cover`).\n */\n focalPoint: { x: number; y: number } | null\n}\n\n/**\n * Pure lookup boundary for asset metadata (EC-044). The caller pre-fetches;\n * resolution only reads. `assetUrl` turns a metadata record into a resolvable\n * URL (e.g. via the blob storage adapter's `url(storageKey)`).\n */\nexport interface AssetLookup {\n asset(id: string): AssetRecord | undefined\n assetUrl(asset: AssetRecord): string\n}\n\n/** Map a persisted asset record (+ resolved URL) to its delivery shape. */\nexport function resolvedAsset(record: AssetRecord, url: string): ResolvedAsset {\n return {\n id: record.id,\n url,\n width: record.width ?? null,\n height: record.height ?? null,\n alt: record.alt ?? null,\n mimeType: record.contentType,\n focalPoint: record.focalPoint ?? null,\n }\n}\n\nexport interface AssetResolution {\n /** The delivery-shaped asset, or `null` when the asset is missing. */\n asset: ResolvedAsset | null\n issues: CmsValidationIssue[]\n}\n\nexport interface AssetResolutionLocation {\n path: CmsPath\n collectionId?: string\n documentId?: string\n}\n\n/**\n * Resolve one stored asset id to its delivery shape. A missing asset is a\n * structured `unknown-asset` issue plus a `null` value — never a crash\n * (EC-142 acceptance).\n */\nexport function resolveAssetValue(\n lookup: AssetLookup,\n assetId: string,\n location: AssetResolutionLocation,\n): AssetResolution {\n const record = lookup.asset(assetId)\n if (!record) {\n return {\n asset: null,\n issues: [\n cmsIssue({\n code: 'unknown-asset',\n message: `Asset \"${assetId}\" could not be resolved.`,\n path: location.path,\n ...(location.collectionId ? { collectionId: location.collectionId } : {}),\n ...(location.documentId ? { documentId: location.documentId } : {}),\n meta: { assetId },\n }),\n ],\n }\n }\n return { asset: resolvedAsset(record, lookup.assetUrl(record)), issues: [] }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-sources.js","sourceRoot":"","sources":["../../src/content/binding-sources.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAA;AAEnD,kEAAkE;AAClE,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,GAAG,qBAAqB,GAAG,MAAM,EAAE,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;AACnD,CAAC;AAkBD,MAAM,aAAa,GAAG,CAAC,KAAc,EAAoC,EAAE,CACzE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAEtE;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;IACvC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAEnF,MAAM,MAAM,GAAyB,EAAE,YAAY,EAAE,CAAA;IACrD,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QAAE,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;IAC9E,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAoB,CAAA;IAC3E,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;IAE/D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAChC,MAAM,CAAC,IAAI,GAAG;YACZ,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,CAAC,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtE,CAAA;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA4B;IAC/D,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;YACtE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;YAC1B,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"binding-sources.js","sourceRoot":"","sources":["../../src/content/binding-sources.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAA;AAEnD,kEAAkE;AAClE,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,GAAG,qBAAqB,GAAG,MAAM,EAAE,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;AACnD,CAAC;AAkBD,MAAM,aAAa,GAAG,CAAC,KAAc,EAAoC,EAAE,CACzE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAEtE;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;IACvC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAEnF,MAAM,MAAM,GAAyB,EAAE,YAAY,EAAE,CAAA;IACrD,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QAAE,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;IAC9E,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAoB,CAAA;IAC3E,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;IAE/D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAChC,MAAM,CAAC,IAAI,GAAG;YACZ,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,CAAC,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtE,CAAA;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA4B;IAC/D,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;YACtE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;YAC1B,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAA;AACH,CAAC","sourcesContent":["import type { ListDocumentsQuery, SortInput, WhereInput } from './query'\n\n/**\n * Binding-source identities & stored-query replay (EC-166 delivery half).\n *\n * The builder models collection-driven layouts as per-scope CMS sources. A\n * repeating section is a per-section list source `cms.section.<nodeId>` whose\n * config carries the closed AD-3 query (where/sort/limit).\n *\n * This prefix is a delivery contract: when a published graph renders in the\n * embedded runtime, the host materializes each section source by replaying the\n * stored query through `listDocuments` (published perspective, ambient locale).\n * The constant lives here — the delivery side — so the builder and every host\n * speak the same identity scheme.\n *\n * EC-187: the `cms.template.<pageId>` \"current document\" source is RETIRED.\n * Pages are `page`-collection documents (no template page), and a collection\n * detail route binds its document directly via the route's `document` ref —\n * the dev route component reads it, no per-page source indirection.\n */\n\nexport const SECTION_SOURCE_PREFIX = 'cms.section.'\n\n/** The per-section list source id of a repeating section node. */\nexport function sectionSourceId(nodeId: string): string {\n return `${SECTION_SOURCE_PREFIX}${nodeId}`\n}\n\nexport function isSectionSourceId(sourceId: string): boolean {\n return sourceId.startsWith(SECTION_SOURCE_PREFIX)\n}\n\n/**\n * The stored config of a CMS query source, as the builder persists it\n * (`@elytracms/core/data-binding`'s cms config): the AD-3 `where` shape stored\n * verbatim in `filter`, plus optional `sort` and `limit`. Structural — this\n * package does not depend on the builder-side source schemas.\n */\nexport interface CmsSourceQueryConfig {\n collectionId: string\n /** Set on single-document sources (template pages); list sources omit it. */\n documentId?: string\n /** AD-3 `where` input (eq/in/lt/lte/gt/gte, AND-only), stored verbatim. */\n filter?: WhereInput\n sort?: SortInput\n limit?: number\n}\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\n/**\n * Read a stored source config back into its structural shape. Total and\n * lenient by design: only the envelope is checked here — `where`/`sort`/\n * `limit` *contents* are validated by `listDocuments` itself, which answers\n * invalid queries as structured errors (never a throw). A malformed envelope\n * yields `undefined`, so the caller degrades to an unresolved binding (the\n * renderer's visible fallback), never a crash.\n */\nexport function parseCmsSourceQueryConfig(value: unknown): CmsSourceQueryConfig | undefined {\n if (!isPlainObject(value)) return undefined\n const collectionId = value.collectionId\n if (typeof collectionId !== 'string' || collectionId.length === 0) return undefined\n\n const config: CmsSourceQueryConfig = { collectionId }\n if (typeof value.documentId === 'string') config.documentId = value.documentId\n if (isPlainObject(value.filter)) config.filter = value.filter as WhereInput\n if (typeof value.limit === 'number') config.limit = value.limit\n\n const sort = value.sort\n if (isPlainObject(sort) && typeof sort.field === 'string') {\n const direction = sort.direction\n config.sort = {\n field: sort.field,\n ...(direction === 'asc' || direction === 'desc' ? { direction } : {}),\n }\n }\n\n return config\n}\n\n/**\n * The `listDocuments` query a stored section config replays at delivery —\n * exactly the where/sort/limit the editor picked in the builder (the canonical\n * validators run inside `listDocuments`; nothing is widened here).\n */\nexport function listQueryOfCmsConfig(config: CmsSourceQueryConfig): ListDocumentsQuery {\n return {\n ...(config.filter !== undefined && Object.keys(config.filter).length > 0\n ? { where: config.filter }\n : {}),\n ...(config.sort !== undefined ? { sort: config.sort } : {}),\n ...(config.limit !== undefined ? { limit: config.limit } : {}),\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/content/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/content/client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n cmsIssue,\n createRouter,\n hierarchyMount,\n isHierarchical,\n isHierarchyTemplate,\n resolveByPath,\n resolveField,\n splitPath,\n} from '@elytracms/core/cms-core'\nimport type {\n CmsDocument,\n CmsValidationIssue,\n CollectionDef,\n DocumentRef,\n HierarchyMount,\n Locale,\n RedirectRecord,\n ResolveStatus,\n RouteRecord,\n} from '@elytracms/core/cms-core'\nimport type { ContentContext } from './context'\nimport { decodeListCursor, encodeListCursor } from './cursor'\nimport { selectPerspective } from './perspective'\nimport type { ContentDocumentSource } from './perspective'\nimport {\n compareListEntries,\n filterScalarOf,\n matchesFieldValue,\n normalizeWhere,\n queryError,\n validateLimit,\n validateSort,\n validateWhere,\n} from './query'\nimport type {\n ContentQueryError,\n FilterScalar,\n ListDocumentsQuery,\n SortDirection,\n WhereInput,\n} from './query'\nimport { populateRelationRef, resolveDocument } from './resolve'\nimport type { ContentLookup, DeliveryDocument, ResolutionInfo, ResolvedDocument } from './resolve'\nimport { resolveLocaleValues } from './locale'\nimport { cacheTags, documentCacheKeys } from './tags'\nimport type { CacheTags } from './tags'\n\n/**\n * The closed-form v1 query surface (EC-143, vision AD-3): `resolvePage`,\n * `getDocument`, `listDocuments` — no query language. Every result is\n * delivery-shaped (EC-142) and carries deterministic `CacheTags` for EC-146.\n *\n * Pure and synchronous like the rest of the package: the client reads through\n * a `ContentLookup`; EC-144/EC-145 bind it to Convex/Next later. The ambient\n * `{ locale, perspective }` context is taken once at creation — never per-call\n * ceremony (per-call `locale` overrides exist for route-level needs only).\n */\n\n// ---------------------------------------------------------------------------\n// Result shapes\n// ---------------------------------------------------------------------------\n\nexport interface ResolvePageResult {\n /** Route resolution status (EC-019 parity): ok | redirect | notFound. */\n status: ResolveStatus\n /** The matched route record, when status is `ok`. */\n route: RouteRecord | null\n /** Extracted dynamic params, e.g. `{ slug: 'hello-world' }`. */\n dynamicParams: Record<string, string>\n /** True when route matching fell back to the default locale (EC-018). */\n localeFallback: boolean\n /** Terminal redirect target + permanence, when status is `redirect`. */\n redirect: { target: string; permanent: boolean } | null\n /**\n * The document this URL resolves to, delivery-shaped (EC-142, EC-187). A\n * `page`-collection document (its `body` composition renders into a layout)\n * or a content-collection document (rendered by a dev route component). SEO\n * for a page is read from this document's flat `seo*` fields — there is no\n * separate page-graph `seo` block anymore.\n */\n document: ResolvedDocument | null\n issues: CmsValidationIssue[]\n tags: CacheTags\n}\n\nexport interface GetDocumentResult<TDoc extends DeliveryDocument = ResolvedDocument> {\n /**\n * The delivery-shaped document, or `null` when not found / not visible in\n * the context perspective (correct behavior, not an error — see EC-142).\n */\n document: TDoc | null\n info: ResolutionInfo | null\n issues: CmsValidationIssue[]\n tags: CacheTags\n}\n\nexport type ListDocumentsResult<TDoc extends DeliveryDocument = ResolvedDocument> =\n | {\n ok: true\n documents: TDoc[]\n /** Cursor for the next page, `null` when this page exhausts the list. */\n nextCursor: string | null\n issues: CmsValidationIssue[]\n tags: CacheTags\n }\n | {\n /** The query itself was invalid (never thrown — structured errors). */\n ok: false\n errors: ContentQueryError[]\n tags: CacheTags\n }\n\nexport interface ContentClient {\n readonly context: ContentContext\n /** Structural route issues from construction (conflicts, redirect loops). */\n readonly routerIssues: readonly CmsValidationIssue[]\n resolvePage(url: string, locale?: Locale): ResolvePageResult\n getDocument<TDoc extends DeliveryDocument = ResolvedDocument>(\n collection: string,\n idOrSlug: string,\n locale?: Locale,\n ): GetDocumentResult<TDoc>\n listDocuments<\n TDoc extends DeliveryDocument = ResolvedDocument,\n TWhere extends WhereInput = WhereInput,\n >(\n collection: string,\n query?: ListDocumentsQuery<TWhere>,\n ): ListDocumentsResult<TDoc>\n /**\n * Populate a relation reference to depth-1 delivery shape (EC-254), or `null`\n * when the target is missing or not visible in the active perspective. A\n * renderer host wires this as `RenderContext.resolveRelation` to populate the\n * COMPOSITION-NODE relation props of the nodes inside a page's `blocks` field\n * (e.g. a ProductGrid block's picked `product`s) — which `resolvePage` leaves\n * raw, since document resolution does not descend into a composition value.\n */\n resolveRelation(ref: DocumentRef): ResolvedDocument | null\n}\n\nexport interface ContentClientInit {\n lookup: ContentLookup\n context: ContentContext\n /** Route records for `resolvePage` (EC-019). */\n routes?: readonly RouteRecord[]\n /** Redirect records for `resolvePage` (EC-019/020). */\n redirects?: readonly RedirectRecord[]\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nfunction withLocale(context: ContentContext, locale: Locale | undefined): ContentContext {\n return locale === undefined || locale === context.locale ? context : { ...context, locale }\n}\n\nfunction normalizePath(url: string): string {\n return '/' + splitPath(url).join('/')\n}\n\n/** Internal row used for list ordering before delivery resolution. */\ninterface ListEntry {\n source: ContentDocumentSource\n id: string\n sortValue: FilterScalar | null\n}\n\n/**\n * Template routes (EC-166): a route-bound document ref may be parameterized —\n * `document: { collection: 'post', id: ':slug' }` — so one route record serves\n * *every* document of a collection through its dynamic pattern. The `:name`\n * placeholder names a dynamic param of the pattern; resolution substitutes the\n * matched URL value, which may be a document id or a slug (the bound-document\n * lookup accepts either).\n */\nfunction materializeRouteDocumentRef(\n ref: { collection: string; id: string },\n params: Record<string, string>,\n): { ok: true; ref: { collection: string; id: string } } | { ok: false; missingParam: string } {\n if (!ref.id.startsWith(':')) return { ok: true, ref }\n const param = ref.id.slice(1)\n const value = params[param]\n if (value === undefined || value.length === 0) return { ok: false, missingParam: param }\n return { ok: true, ref: { collection: ref.collection, id: value } }\n}\n\n/** The catch-all param name of a hierarchy mount template (`/docs/:path*` → `path`). */\nfunction mountParamName(route: RouteRecord): string {\n const last = splitPath(route.pattern).at(-1) ?? ''\n return last.replace(/^:/, '').replace(/\\*$/, '')\n}\n\n/** Create the typed accessor client (vision AD-3 ladder, rungs 1–3). */\nexport function createContentClient(init: ContentClientInit): ContentClient {\n const { lookup, context } = init\n const allRoutes = init.routes ?? []\n // EC-218: a hierarchy mount (`{ pattern: '/:path*', document: { collection } }`)\n // serves a collection's documents by their COMPOSED nested path. Mounts are\n // pulled out of the router and resolved per-request (below) so the URL→document\n // mapping stays perspective-aware (draft vs published) and the path stays\n // derived from the parent chain, never stored. Ordinary routes are unaffected.\n const mounts = allRoutes\n .map((route) => {\n const mount = hierarchyMount(route)\n return mount ? { mount, route } : undefined\n })\n .filter((m): m is { mount: HierarchyMount; route: RouteRecord } => m !== undefined)\n const router = createRouter(\n allRoutes.filter((route) => !isHierarchyTemplate(route)),\n init.redirects ?? [],\n { defaultLocale: context.locales.default },\n )\n\n const resolveBoundDocument = (\n ctx: ContentContext,\n ref: { collection: string; id: string },\n issues: CmsValidationIssue[],\n docKeys: string[],\n collections: string[],\n ): ResolvedDocument | null => {\n collections.push(ref.collection)\n const collection = lookup.collection(ref.collection)\n // Template routes substitute a URL param into the ref id; the value may be\n // a slug rather than an id, so fall back to the deterministic slug lookup.\n const source =\n lookup.document(ref) ?? (collection ? findBySlug(ctx, collection, ref.id) : undefined)\n if (!source) {\n issues.push(\n cmsIssue({\n code: 'unknown-route-target',\n message: `Route-bound document \"${ref.collection}:${ref.id}\" was not found.`,\n path: ['document'],\n collectionId: ref.collection,\n documentId: ref.id,\n }),\n )\n return null\n }\n const result = resolveDocument(ctx, lookup, source)\n issues.push(...result.issues)\n if (result.document && collection) {\n docKeys.push(...documentCacheKeys(collection, result.document))\n }\n return result.document\n }\n\n const resolvePage = (url: string, locale?: Locale): ResolvePageResult => {\n const ctx = withLocale(context, locale)\n const path = normalizePath(url)\n const resolution = router.resolveUrl(path, ctx.locale)\n\n const issues: CmsValidationIssue[] = []\n const docKeys: string[] = []\n const collections: string[] = []\n const routePaths: string[] = [path]\n\n if (resolution.status === 'redirect') {\n // Tag every hop: editing any redirect in the chain changes this result.\n const chain = router.followRedirects(path)\n routePaths.push(...chain.chain)\n return {\n status: 'redirect',\n route: null,\n dynamicParams: {},\n localeFallback: false,\n redirect: {\n target: resolution.redirectTarget ?? chain.target,\n permanent: resolution.permanent ?? chain.permanent,\n },\n document: null,\n issues,\n tags: cacheTags({ routes: routePaths, locale: ctx.locale }),\n }\n }\n\n if (resolution.status === 'notFound') {\n // EC-218: a router miss falls through to the hierarchy mounts — resolve the\n // URL against a collection's composed page tree. Explicit/static routes and\n // templates already had precedence (they would not have missed). The first\n // mount whose prefix matches and that resolves a page wins.\n const urlSegments = splitPath(path)\n for (const { mount, route } of mounts) {\n if (mount.locale !== undefined && mount.locale !== ctx.locale) continue\n if (urlSegments.length <= mount.prefix.length) continue\n if (!mount.prefix.every((seg, i) => urlSegments[i] === seg)) continue\n const collection = lookup.collection(mount.collection)\n if (!collection || !isHierarchical(collection)) continue\n const rest = urlSegments.slice(mount.prefix.length)\n const source = findByComposedPath(ctx, mount.collection, rest)\n if (!source) continue\n collections.push(mount.collection)\n const result = resolveDocument(ctx, lookup, source)\n issues.push(...result.issues)\n if (!result.document) continue\n docKeys.push(...documentCacheKeys(collection, result.document))\n return {\n status: 'ok',\n route,\n dynamicParams: { [mountParamName(route)]: rest.join('/') },\n localeFallback: false,\n redirect: null,\n document: result.document,\n issues,\n tags: cacheTags({ docs: docKeys, collections, routes: routePaths, locale: ctx.locale }),\n }\n }\n return {\n status: 'notFound',\n route: null,\n dynamicParams: {},\n localeFallback: resolution.fallback,\n redirect: null,\n document: null,\n issues,\n tags: cacheTags({ routes: routePaths, locale: ctx.locale }),\n }\n }\n\n const route = resolution.route ?? null\n\n let document: ResolvedDocument | null = null\n let documentMissing = false\n if (resolution.documentRef) {\n const materialized = materializeRouteDocumentRef(\n resolution.documentRef,\n resolution.dynamicParams,\n )\n if (materialized.ok) {\n document = resolveBoundDocument(ctx, materialized.ref, issues, docKeys, collections)\n documentMissing = document === null\n } else {\n documentMissing = true\n // Parameterized document ref whose param the pattern never captures —\n // a structured issue, never a silent null (EC-166).\n collections.push(resolution.documentRef.collection)\n issues.push(\n cmsIssue({\n code: 'unknown-route-target',\n message: `Route \"${route?.id ?? path}\" binds its document to URL parameter \":${materialized.missingParam}\", which pattern \"${route?.pattern ?? path}\" does not capture.`,\n path: ['routes', route?.id ?? path, 'document'],\n collectionId: resolution.documentRef.collection,\n meta: { param: materialized.missingParam, pattern: route?.pattern },\n }),\n )\n }\n }\n\n // A document-bound route whose document does not resolve in this\n // perspective is NOT a page (EC-177 gap 6): the URL of an unpublished\n // document must be a notFound result — the host's 404 — never a bare\n // contentless template served as 200. The draft perspective still\n // resolves the draft row, so preview keeps seeing the page. The\n // structured issues and the doc/collection cache tags are carried so the\n // cached 404 revalidates the moment the document (re)publishes.\n if (documentMissing) {\n return {\n status: 'notFound',\n route: null,\n dynamicParams: resolution.dynamicParams,\n localeFallback: resolution.fallback,\n redirect: null,\n document: null,\n issues,\n tags: cacheTags({ docs: docKeys, collections, routes: routePaths, locale: ctx.locale }),\n }\n }\n\n return {\n status: 'ok',\n route,\n dynamicParams: resolution.dynamicParams,\n localeFallback: resolution.fallback,\n redirect: null,\n document,\n issues,\n tags: cacheTags({ docs: docKeys, collections, routes: routePaths, locale: ctx.locale }),\n }\n }\n\n /** Deterministic slug fallback: visible rows whose `slug` resolves to the value, lowest id wins. */\n const findBySlug = (\n ctx: ContentContext,\n collection: CollectionDef,\n slug: string,\n ): ContentDocumentSource | undefined => {\n if (!lookup.documents) return undefined\n if (!collection.fields.some((f) => f.name === 'slug')) return undefined\n const matches: { id: string; source: ContentDocumentSource }[] = []\n for (const source of lookup.documents(collection.id)) {\n const row = selectPerspective(ctx, source)\n if (!row) continue\n const value = resolveField(collection, row, 'slug', ctx.locale, ctx.locales).value\n if (value === slug) matches.push({ id: row.id, source })\n }\n matches.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0))\n return matches[0]?.source\n }\n\n /**\n * EC-218: resolve a composed nested path (prefix already stripped) to the page\n * document whose parent chain of slugs matches it. Matches against the rows\n * visible in the active perspective, so an unpublished page simply does not\n * resolve on the published site (correct, not an issue) while preview still\n * sees the draft. Returns the source so the normal `resolveDocument` path runs.\n */\n const findByComposedPath = (\n ctx: ContentContext,\n collectionId: string,\n segments: string[],\n ): ContentDocumentSource | undefined => {\n if (!lookup.documents) return undefined\n const rows: CmsDocument[] = []\n const sourceById = new Map<string, ContentDocumentSource>()\n for (const source of lookup.documents(collectionId)) {\n const row = selectPerspective(ctx, source)\n if (!row) continue\n rows.push(row)\n sourceById.set(row.id, source)\n }\n const matched = resolveByPath(segments, rows)\n return matched ? sourceById.get(matched.id) : undefined\n }\n\n const getDocument = <TDoc extends DeliveryDocument = ResolvedDocument>(\n collectionId: string,\n idOrSlug: string,\n locale?: Locale,\n ): GetDocumentResult<TDoc> => {\n const ctx = withLocale(context, locale)\n const baseTags = { collections: [collectionId], locale: ctx.locale }\n\n const collection = lookup.collection(collectionId)\n if (!collection) {\n return {\n document: null,\n info: null,\n issues: [\n cmsIssue({\n code: 'unknown-collection',\n message: `Collection \"${collectionId}\" is not defined.`,\n path: ['collection'],\n collectionId,\n }),\n ],\n tags: cacheTags(baseTags),\n }\n }\n\n const source =\n lookup.document({ collection: collectionId, id: idOrSlug }) ??\n findBySlug(ctx, collection, idOrSlug)\n if (!source) {\n return { document: null, info: null, issues: [], tags: cacheTags(baseTags) }\n }\n\n const result = resolveDocument(ctx, lookup, source)\n const docKeys = result.document ? documentCacheKeys(collection, result.document) : []\n return {\n // The generated per-collection delivery type (EC-142 codegen) is the\n // static face of what resolveDocument produces for this collection.\n document: result.document as TDoc | null,\n info: result.info,\n issues: result.issues,\n tags: cacheTags({ ...baseTags, docs: docKeys }),\n }\n }\n\n const listDocuments = <\n TDoc extends DeliveryDocument = ResolvedDocument,\n TWhere extends WhereInput = WhereInput,\n >(\n collectionId: string,\n query: ListDocumentsQuery<TWhere> = {},\n ): ListDocumentsResult<TDoc> => {\n const ctx = context\n const errorTags = cacheTags({ collections: [collectionId], locale: ctx.locale })\n const errors: ContentQueryError[] = []\n\n const collection = lookup.collection(collectionId)\n if (!collection) {\n errors.push(\n queryError('unknown-collection', `Collection \"${collectionId}\" is not defined.`, [\n 'collection',\n ]),\n )\n return { ok: false, errors, tags: errorTags }\n }\n if (!lookup.documents) {\n errors.push(\n queryError(\n 'list-not-supported',\n 'This content lookup does not provide a `documents` capability.',\n [],\n ),\n )\n return { ok: false, errors, tags: errorTags }\n }\n\n if (query.where) errors.push(...validateWhere(collection, query.where))\n if (query.sort) errors.push(...validateSort(collection, query.sort))\n if (query.limit !== undefined) errors.push(...validateLimit(query.limit))\n\n const sortField = query.sort?.field ?? null\n const direction: SortDirection = query.sort?.direction ?? 'asc'\n\n let after: { sortValue: FilterScalar | null; id: string } | null = null\n if (query.cursor !== undefined) {\n const decoded = decodeListCursor(query.cursor)\n if (!decoded || decoded.sortField !== sortField || decoded.direction !== direction) {\n errors.push(\n queryError(\n 'invalid-cursor',\n decoded\n ? 'Cursor was minted under a different sort and cannot be reused.'\n : 'Cursor is malformed.',\n ['cursor'],\n ),\n )\n } else {\n after = { sortValue: decoded.sortValue, id: decoded.id }\n }\n }\n\n if (errors.length > 0) return { ok: false, errors, tags: errorTags }\n\n const where = normalizeWhere(query.where ?? {})\n\n // Filter + order over locale-resolved raw values (EC-018 fallback applies\n // to filtering too); delivery resolution runs only on the returned page.\n const entries: ListEntry[] = []\n for (const source of lookup.documents(collectionId)) {\n const row = selectPerspective(ctx, source)\n if (!row || row.collection !== collectionId) continue\n const values = resolveLocaleValues(ctx, collection, row).values\n const matches = where.every((entry) =>\n matchesFieldValue(values[entry.field], entry.condition),\n )\n if (!matches) continue\n entries.push({\n source,\n id: row.id,\n sortValue: sortField === null ? row.id : filterScalarOf(values[sortField]),\n })\n }\n entries.sort((a, b) =>\n compareListEntries(\n { id: a.id, sortValue: a.sortValue },\n { id: b.id, sortValue: b.sortValue },\n direction,\n ),\n )\n\n const afterPosition = after\n const fromIndex = afterPosition\n ? entries.findIndex(\n (entry) =>\n compareListEntries(\n { id: entry.id, sortValue: entry.sortValue },\n afterPosition,\n direction,\n ) > 0,\n )\n : 0\n const start = fromIndex === -1 ? entries.length : fromIndex\n const end = query.limit !== undefined ? start + query.limit : entries.length\n const pageEntries = entries.slice(start, end)\n const hasMore = end < entries.length\n\n const documents: ResolvedDocument[] = []\n const issues: CmsValidationIssue[] = []\n const docKeys: string[] = []\n for (const entry of pageEntries) {\n const result = resolveDocument(ctx, lookup, entry.source)\n issues.push(...result.issues)\n if (result.document) {\n documents.push(result.document)\n docKeys.push(...documentCacheKeys(collection, result.document))\n }\n }\n\n const last = pageEntries[pageEntries.length - 1]\n const nextCursor =\n hasMore && last\n ? encodeListCursor({ sortField, direction, sortValue: last.sortValue, id: last.id })\n : null\n\n return {\n ok: true,\n // The generated per-collection delivery type (EC-142 codegen) is the\n // static face of what resolveDocument produces for this collection.\n documents: documents as TDoc[],\n nextCursor,\n issues,\n tags: cacheTags({\n docs: docKeys,\n collections: [collectionId],\n locale: ctx.locale,\n }),\n }\n }\n\n const resolveRelation = (ref: DocumentRef): ResolvedDocument | null =>\n populateRelationRef(context, lookup, ref).document\n\n return {\n context,\n routerIssues: router.issues,\n resolvePage,\n getDocument,\n listDocuments,\n resolveRelation,\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/content/codegen.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/content/codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CollectionDef, FieldDef } from '@elytracms/core/cms-core'\n\n/**\n * Per-collection delivery-type codegen (EC-142, vision AD-4). Emits TypeScript\n * source describing the *delivery shape* of each collection — the shape\n * `resolveDocument` produces — so `article.author.name` just typechecks.\n *\n * Deterministic by construction: collections are emitted sorted by id, fields\n * in declared order, with no timestamps or environment data — the same schema\n * input yields byte-identical output. Consumed by EC-143/EC-145/EC-148.\n *\n * Typing stance: the generated types describe the *valid* delivery shape.\n * Degraded states are always accompanied by structured issues at runtime —\n * a missing relation target yields a `{ id, collection }` stub plus an\n * `unknown-relation-target` issue; a missing asset yields `null` plus an\n * `unknown-asset` issue (which is why asset fields carry `| null`).\n */\n\n/** The generated TypeScript type name for a collection's delivery shape. */\nexport function deliveryTypeName(collectionId: string): string {\n const name = collectionId\n .split(/[^A-Za-z0-9]+/u)\n .filter((part) => part.length > 0)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join('')\n const safe = name.length > 0 ? name : 'Collection'\n return /^[0-9]/u.test(safe) ? `_${safe}` : safe\n}\n\n/** The generated type name for a collection's depth-1 populated reference. */\nexport function deliveryRefTypeName(collectionId: string): string {\n return `${deliveryTypeName(collectionId)}Ref`\n}\n\n/** The generated `where` type name for a collection's list accessor (EC-143). */\nexport function whereTypeName(collectionId: string): string {\n return `${deliveryTypeName(collectionId)}Where`\n}\n\n/** The generated sort-field union type name for a collection (EC-143). */\nexport function sortFieldTypeName(collectionId: string): string {\n return `${deliveryTypeName(collectionId)}SortField`\n}\n\n/** The generated list-query type name for a collection (EC-143). */\nexport function listQueryTypeName(collectionId: string): string {\n return `${deliveryTypeName(collectionId)}ListQuery`\n}\n\nconst IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/u\n\nfunction propertyKey(name: string): string {\n return IDENTIFIER.test(name) ? name : singleQuoted(name)\n}\n\nfunction singleQuoted(value: string): string {\n return `'${value.replace(/\\\\/gu, '\\\\\\\\').replace(/'/gu, \"\\\\'\")}'`\n}\n\nfunction selectUnion(field: Extract<FieldDef, { type: 'select' }>): string {\n const union = field.options.map((option) => singleQuoted(option.value)).join(' | ')\n return field.multiple ? `(${union})[]` : union\n}\n\nfunction relationType(\n field: Extract<FieldDef, { type: 'relation' }>,\n nested: boolean,\n knownCollections: ReadonlySet<string>,\n): string {\n const known = knownCollections.has(field.target)\n const stub = known ? `DocumentStub<${singleQuoted(field.target)}>` : 'DocumentStub'\n const populated = !nested && field.populate !== false && known\n const one = populated ? deliveryRefTypeName(field.target) : stub\n return field.cardinality === 'many' ? `${one}[]` : one\n}\n\n/**\n * The delivery-shape TS type expression for one field. `nested` marks fields\n * inside a depth-1 populated reference, where relations stay stubs (population\n * never recurses) while assets still resolve to objects.\n */\nfunction deliveryFieldType(\n field: FieldDef,\n nested: boolean,\n knownCollections: ReadonlySet<string>,\n): string {\n switch (field.type) {\n case 'text':\n case 'richText':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'date':\n return 'string | number'\n case 'select':\n return selectUnion(field)\n case 'relation':\n return relationType(field, nested, knownCollections)\n case 'asset':\n return field.cardinality === 'many' ? 'ResolvedAsset[]' : 'ResolvedAsset | null'\n case 'blocks':\n // EC-188: a composition (block) field's value is a ComponentNode tree,\n // delivered verbatim. Typed as the self-contained `CompositionBlock`.\n return field.cardinality === 'one' ? 'CompositionBlock' : 'CompositionBlock[]'\n case 'object': {\n // EC-253: a nested object of the subfields' delivery types, `Array<...>` for\n // a repeater. Subfields follow the same `nested` rule — a relation inside a\n // top-level object populates to depth-1; inside a populated ref it stays a\n // stub. Recurses for nested objects.\n const shape = field.fields\n .map((sub) => {\n const optional = sub.validation?.required === true ? '' : '?'\n return `${propertyKey(sub.name)}${optional}: ${deliveryFieldType(sub, nested, knownCollections)}`\n })\n .join('; ')\n const objectType = field.fields.length > 0 ? `{ ${shape} }` : 'Record<string, unknown>'\n return field.cardinality === 'many' ? `Array<${objectType}>` : objectType\n }\n default: {\n // Exhaustiveness: a new field type must add a case above (EC-253).\n const _exhaustive: never = field\n void _exhaustive\n return 'unknown'\n }\n }\n}\n\nfunction interfaceLines(\n name: string,\n doc: string,\n collection: CollectionDef,\n nested: boolean,\n knownCollections: ReadonlySet<string>,\n): string[] {\n const lines: string[] = []\n lines.push(`/** ${doc} */`)\n lines.push(`export interface ${name} {`)\n lines.push(' id: string')\n lines.push(` collection: ${singleQuoted(collection.id)}`)\n for (const field of collection.fields) {\n const optional = field.validation?.required === true ? '' : '?'\n const type = deliveryFieldType(field, nested, knownCollections)\n lines.push(` ${propertyKey(field.name)}${optional}: ${type}`)\n }\n lines.push('}')\n return lines\n}\n\nconst HEADER = [\n '// Generated by @elytracms/content delivery-type codegen (EC-142).',\n '// Do not edit by hand — regenerate from the collection schemas.',\n '// Deterministic: identical schema input yields byte-identical output.',\n]\n\nconst PRELUDE = [\n '/**',\n ' * Reference stub for an unpopulated relation: `populate: false` opt-outs,',\n ' * unknown/missing targets, and relations nested inside a populated document',\n ' * (population never recurses past depth-1). Never a bare id string.',\n ' */',\n 'export interface DocumentStub<TCollection extends string = string> {',\n ' id: string',\n ' collection: TCollection',\n '}',\n '',\n '/** Delivery shape of a resolved asset; absent metadata is `null`. */',\n 'export interface ResolvedAsset {',\n ' id: string',\n ' url: string',\n ' width: number | null',\n ' height: number | null',\n ' alt: string | null',\n ' mimeType: string',\n ' focalPoint: { x: number; y: number } | null',\n '}',\n]\n\n/**\n * EC-188: emitted only when a schema declares a `blocks` (composition) field. A\n * self-contained, recursive ComponentNode shape — render it with\n * `renderComposition`, don't read into it. Conditional so schemas without\n * composition fields keep byte-identical output.\n */\nconst COMPOSITION_PRELUDE = [\n '/**',\n ' * One node of a composition (`blocks`) field tree (EC-188), delivered verbatim.',\n ' * Opaque and recursive — render it with `renderComposition` rather than reading',\n ' * into it; `props`/`slots` are intentionally loose.',\n ' */',\n 'export interface CompositionBlock {',\n ' id: string',\n ' componentId: string',\n ' props?: Record<string, unknown>',\n ' slots?: Record<string, CompositionBlock[]>',\n ' condition?: unknown',\n '}',\n]\n\n/**\n * Generate the per-collection delivery types as a TypeScript module source\n * string. For each collection two interfaces are emitted:\n *\n * - `Name` — the top-level delivery shape (relations populated to depth-1\n * unless declared `populate: false`),\n * - `NameRef` — the depth-1 populated reference shape used by relation fields\n * on *other* collections (its own relations are stubs).\n *\n * Output is deterministic: collections sorted by id, fields in declared\n * order, fixed banner, no timestamps.\n */\nexport function generateDeliveryTypes(collections: readonly CollectionDef[]): string {\n const sorted = [...collections].sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0))\n const knownCollections: ReadonlySet<string> = new Set(sorted.map((c) => c.id))\n\n const sections: string[] = [HEADER.join('\\n'), PRELUDE.join('\\n')]\n // Composition types ride along only when a `blocks` field exists (EC-188), so\n // schemas without one keep byte-identical output.\n const hasComposition = sorted.some((c) => c.fields.some((f) => f.type === 'blocks'))\n if (hasComposition) sections.push(COMPOSITION_PRELUDE.join('\\n'))\n for (const collection of sorted) {\n sections.push(\n interfaceLines(\n deliveryTypeName(collection.id),\n `Delivery shape for documents in the \"${collection.id}\" collection.`,\n collection,\n false,\n knownCollections,\n ).join('\\n'),\n )\n sections.push(\n interfaceLines(\n deliveryRefTypeName(collection.id),\n `Depth-1 populated reference to the \"${collection.id}\" collection.`,\n collection,\n true,\n knownCollections,\n ).join('\\n'),\n )\n }\n return `${sections.join('\\n\\n')}\\n`\n}\n\n// ---------------------------------------------------------------------------\n// Accessor-type codegen (EC-143)\n// ---------------------------------------------------------------------------\n\n/**\n * The TS type a filter compares against for one field — the scalar side of\n * the value (relations and assets filter by target/asset id).\n */\nfunction filterValueType(field: FieldDef): string {\n switch (field.type) {\n case 'text':\n case 'richText':\n return 'string'\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'date':\n return 'string | number'\n case 'select':\n return field.options.map((option) => singleQuoted(option.value)).join(' | ')\n case 'relation':\n case 'asset':\n return 'string'\n case 'blocks':\n case 'object':\n // Composition (EC-188) and object / repeater (EC-253) are not filter\n // primitives — they can never be declared `filterable`, so no `where` clause\n // is ever generated for them.\n return 'never'\n default: {\n // Exhaustiveness: a new field type must add a case above (EC-253).\n const _exhaustive: never = field\n void _exhaustive\n return 'never'\n }\n }\n}\n\nconst ACCESSOR_HEADER = [\n '// Generated by @elytracms/content accessor-type codegen (EC-143).',\n '// Do not edit by hand — regenerate from the collection schemas.',\n '// Deterministic: identical schema input yields byte-identical output.',\n]\n\nconst ACCESSOR_PRELUDE = [\n '/**',\n ' * The closed filter vocabulary (vision AD-3): equality, `in`, comparisons,',\n ' * AND-only — multiple fields and multiple operators all AND together.',\n ' * A bare scalar is shorthand for `{ eq: value }`.',\n ' */',\n 'export interface WhereCondition<T> {',\n ' eq?: T',\n ' gt?: T',\n ' gte?: T',\n ' in?: readonly T[]',\n ' lt?: T',\n ' lte?: T',\n '}',\n '',\n '/** The list-query envelope every generated per-collection query reuses. */',\n 'export interface GeneratedListQuery<TWhere, TSortField extends string> {',\n ' where?: TWhere',\n \" sort?: { field: TSortField; direction?: 'asc' | 'desc' }\",\n ' limit?: number',\n ' cursor?: string',\n '}',\n]\n\n/**\n * Generate the per-collection accessor types as a TypeScript module source\n * string (EC-143). For each collection three aliases are emitted:\n *\n * - `NameWhere` — `where` keys narrowed to the fields declared `filterable`\n * in the schema; filtering on anything else is a compile error,\n * - `NameSortField` — the sortable field union (the same filterable set),\n * - `NameListQuery` — the full `listDocuments` query for the collection.\n *\n * Collections with no filterable fields get `Record<string, never>` / `never`,\n * so no filter or sort can be expressed at all. Output is deterministic:\n * collections sorted by id, fields in declared order, fixed banner, no\n * timestamps — same schema input, byte-identical output.\n */\nexport function generateAccessorTypes(collections: readonly CollectionDef[]): string {\n const sorted = [...collections].sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0))\n const sections: string[] = [ACCESSOR_HEADER.join('\\n'), ACCESSOR_PRELUDE.join('\\n')]\n\n for (const collection of sorted) {\n const filterable = collection.fields.filter((field) => field.filterable === true)\n const lines: string[] = []\n\n lines.push(`/** Filter input for \"${collection.id}\" — only fields declared \\`filterable\\`. */`)\n if (filterable.length === 0) {\n lines.push(`export type ${whereTypeName(collection.id)} = Record<string, never>`)\n } else {\n lines.push(`export type ${whereTypeName(collection.id)} = {`)\n for (const field of filterable) {\n const value = filterValueType(field)\n lines.push(` ${propertyKey(field.name)}?: ${value} | WhereCondition<${value}>`)\n }\n lines.push('}')\n }\n lines.push('')\n lines.push(`/** Sortable fields of \"${collection.id}\" (the filterable set). */`)\n lines.push(\n `export type ${sortFieldTypeName(collection.id)} = ${\n filterable.length === 0\n ? 'never'\n : filterable.map((field) => singleQuoted(field.name)).join(' | ')\n }`,\n )\n lines.push('')\n lines.push(`/** \\`listDocuments\\` query for \"${collection.id}\". */`)\n lines.push(\n `export type ${listQueryTypeName(collection.id)} = GeneratedListQuery<${whereTypeName(\n collection.id,\n )}, ${sortFieldTypeName(collection.id)}>`,\n )\n sections.push(lines.join('\\n'))\n }\n return `${sections.join('\\n\\n')}\\n`\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/content/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;AAwB/D;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC3D,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/content/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;AAwB/D;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC3D,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAA;AACH,CAAC","sourcesContent":["import { z } from 'zod'\nimport type { Locale, LocaleConfig } from '@elytracms/core/cms-core'\n\n/**\n * Which side of the draft/published split a delivery request reads from\n * (EC-021, vision AD-4). `published` never exposes draft content; `draft` is\n * the editor/preview view.\n */\nexport const perspectiveSchema = z.enum(['draft', 'published'])\nexport type Perspective = z.infer<typeof perspectiveSchema>\n\n/**\n * Ambient request context (vision AD-4): locale and perspective are set once\n * per request and threaded through every resolution function — never per-call\n * ceremony. The locale config travels along so EC-018 fallback needs no extra\n * arguments either.\n */\nexport interface ContentContext {\n /** The locale requested for this delivery (EC-018 fallback applies). */\n readonly locale: Locale\n /** Draft or published perspective (EC-021). */\n readonly perspective: Perspective\n /** The project's locale configuration (default + supported set). */\n readonly locales: LocaleConfig\n}\n\nexport interface ContentContextInit {\n locale: Locale\n perspective: Perspective\n locales: LocaleConfig\n}\n\n/**\n * Create the ambient `{ locale, perspective }` context for a delivery request.\n * Construction never throws — an unknown locale is surfaced as a structured\n * `unknown-locale` issue by `resolveDocument`, while resolution still proceeds\n * with default-locale fallback.\n */\nexport function createContentContext(init: ContentContextInit): ContentContext {\n return {\n locale: init.locale,\n perspective: init.perspective,\n locales: init.locales,\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/content/cursor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/content/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;;;;GAaG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAExC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACf,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACrB,CAAC,CAAA;AAYF,MAAM,SAAS,GAAG,kEAAkE,CAAA;AAEpF,+EAA+E;AAC/E,SAAS,WAAW,CAAC,KAAiB;IACpC,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACvB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACtB,GAAG,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACxB,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrD,IAAI,CAAC,KAAK,SAAS;YAAE,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC5E,IAAI,CAAC,KAAK,SAAS;YAAE,GAAG,IAAI,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAA;IACrD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACxC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC7E,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;YAAE,MAAK;QAC7C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/D,IAAI,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,2EAA2E;IAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,MAAM,CAAC,SAAS;QACnB,CAAC,EAAE,MAAM,CAAC,SAAS;QACnB,CAAC,EAAE,MAAM,CAAC,SAAS;QACnB,CAAC,EAAE,MAAM,CAAC,EAAE;KACb,CAAC,CAAA;IACF,OAAO,kBAAkB,GAAG,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;QAAE,OAAO,IAAI,CAAA;IACrD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAA;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACrD,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACjC,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACnB,CAAA;AACH,CAAC","sourcesContent":["import { z } from 'zod'\nimport type { FilterScalar, SortDirection } from './query'\n\n/**\n * Deterministic cursor pagination for `listDocuments` (EC-143).\n *\n * Format: `ec1.<base64url(JSON payload)>` where the payload is\n * `{\"v\":1,\"f\":<sort field|null>,\"d\":\"asc\"|\"desc\",\"s\":<sort value|null>,\"i\":<doc id>}`\n * — the sort position (`f`/`d`/`s`) plus the id (`i`) of the last document\n * returned, with keys always written in that order. The next page is every\n * entry strictly after that position in the canonical list order\n * (`compareListEntries`). Encoding the sort spec into the cursor lets decode\n * reject a cursor reused with a different sort as `invalid-cursor` instead of\n * silently misordering.\n *\n * Encoding is byte-stable: same position in, same cursor string out.\n */\n\nexport const LIST_CURSOR_PREFIX = 'ec1.'\n\nconst cursorPayloadSchema = z.object({\n v: z.literal(1),\n f: z.string().nullable(),\n d: z.enum(['asc', 'desc']),\n s: z.union([z.string(), z.number(), z.boolean(), z.null()]),\n i: z.string().min(1),\n})\n\nexport interface ListCursor {\n /** Sort field the cursor was minted under (`null` = id order). */\n sortField: string | null\n direction: SortDirection\n /** Sort value of the last returned document (`null` when missing). */\n sortValue: FilterScalar | null\n /** Id of the last returned document (the unconditional tiebreak). */\n id: string\n}\n\nconst BASE64URL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'\n\n/** Unpadded base64url over raw bytes — environment-independent (no Buffer). */\nfunction toBase64Url(bytes: Uint8Array): string {\n let out = ''\n for (let i = 0; i < bytes.length; i += 3) {\n const a = bytes[i] ?? 0\n const b = bytes[i + 1]\n const c = bytes[i + 2]\n out += BASE64URL[a >> 2]\n out += BASE64URL[((a & 0b11) << 4) | ((b ?? 0) >> 4)]\n if (b !== undefined) out += BASE64URL[((b & 0b1111) << 2) | ((c ?? 0) >> 6)]\n if (c !== undefined) out += BASE64URL[c & 0b111111]\n }\n return out\n}\n\nfunction fromBase64Url(text: string): Uint8Array | null {\n const values: number[] = []\n for (const char of text) {\n const value = BASE64URL.indexOf(char)\n if (value === -1) return null\n values.push(value)\n }\n if (values.length % 4 === 1) return null\n const bytes: number[] = []\n for (let i = 0; i < values.length; i += 4) {\n const [a, b, c, d] = [values[i], values[i + 1], values[i + 2], values[i + 3]]\n if (a === undefined || b === undefined) break\n bytes.push((a << 2) | (b >> 4))\n if (c !== undefined) bytes.push(((b & 0b1111) << 4) | (c >> 2))\n if (d !== undefined) bytes.push((((c ?? 0) & 0b11) << 6) | d)\n }\n return new Uint8Array(bytes)\n}\n\n/** Encode a list position into an opaque, URL-safe cursor string. */\nexport function encodeListCursor(cursor: ListCursor): string {\n // Key order is fixed by construction (v, f, d, s, i) — byte-stable output.\n const payload = JSON.stringify({\n v: 1,\n f: cursor.sortField,\n d: cursor.direction,\n s: cursor.sortValue,\n i: cursor.id,\n })\n return LIST_CURSOR_PREFIX + toBase64Url(new TextEncoder().encode(payload))\n}\n\n/**\n * Decode a cursor string. Returns `null` for anything malformed — wrong\n * prefix, bad base64, bad JSON, wrong shape. Never throws; the caller maps\n * `null` to a structured `invalid-cursor` error.\n */\nexport function decodeListCursor(text: string): ListCursor | null {\n if (!text.startsWith(LIST_CURSOR_PREFIX)) return null\n const bytes = fromBase64Url(text.slice(LIST_CURSOR_PREFIX.length))\n if (!bytes) return null\n let parsed: unknown\n try {\n parsed = JSON.parse(new TextDecoder().decode(bytes))\n } catch {\n return null\n }\n const payload = cursorPayloadSchema.safeParse(parsed)\n if (!payload.success) return null\n return {\n sortField: payload.data.f,\n direction: payload.data.d,\n sortValue: payload.data.s,\n id: payload.data.i,\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,yBAAyB,CAAA;AAEhD,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,yBAAyB,CAAA;AAEhD,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA","sourcesContent":["/**\n * @elytracms/content — delivery-shape resolution, the closed-form typed accessor\n * surface, & per-collection type codegen (EC-142/EC-143, vision AD-3/AD-4).\n *\n * The unit of delivery is the resolved document, not the stored row: locale\n * fallback applied (EC-018), draft/published perspective applied (EC-021),\n * relations populated to depth-1 as declared in schema, assets resolved to\n * usable objects. The entire v1 query surface is the accessor ladder —\n * `resolvePage`, `getDocument`, `listDocuments` — no query language; every\n * result carries deterministic cache-tag metadata (EC-146). Everything here is\n * pure functions over `@elytracms/core/cms-core` models — no fetching, no Convex, no\n * React — and invalid states surface as structured issues, never crashes.\n */\nexport const PACKAGE = '@elytracms/core/content'\n\nexport * from './context'\nexport * from './perspective'\nexport * from './locale'\nexport * from './populate'\nexport * from './assets'\nexport * from './resolve'\nexport * from './raw'\nexport * from './codegen'\nexport * from './query'\nexport * from './serialize'\nexport * from './cursor'\nexport * from './tags'\nexport * from './client'\nexport * from './binding-sources'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/content/locale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AA4BvD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAuB,EACvB,UAAyB,EACzB,GAAgB,EAChB,WAAoB,EAAE;IAEtB,MAAM,MAAM,GAAgB,EAAE,CAAA;IAC9B,MAAM,SAAS,GAA0B,EAAE,CAAA;IAE3C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QAC3F,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;YAAE,SAAQ;QAC1C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAA;QACnC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;gBAC/B,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,eAAe,EAAE,OAAO,CAAC,MAAM;gBAC/B,YAAY,EAAE,QAAQ,CAAC,YAAY;aACpC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/content/locale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AA4BvD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAuB,EACvB,UAAyB,EACzB,GAAgB,EAChB,WAAoB,EAAE;IAEtB,MAAM,MAAM,GAAgB,EAAE,CAAA;IAC9B,MAAM,SAAS,GAA0B,EAAE,CAAA;IAE3C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QAC3F,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;YAAE,SAAQ;QAC1C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAA;QACnC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;gBAC/B,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,eAAe,EAAE,OAAO,CAAC,MAAM;gBAC/B,YAAY,EAAE,QAAQ,CAAC,YAAY;aACpC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAC9B,CAAC","sourcesContent":["import { resolveField } from '@elytracms/core/cms-core'\nimport type { CmsDocument, CmsPath, CollectionDef, FieldValues, Locale } from '@elytracms/core/cms-core'\nimport type { ContentContext } from './context'\n\n/**\n * A report entry for one field whose value was served from a different locale\n * than the one requested (EC-018 default-locale fallback). Paths are rooted at\n * the resolved document, e.g. `['title']` or `['author', 'bio']` for a field\n * inside a populated relation.\n */\nexport interface FieldLocaleFallback {\n path: CmsPath\n /** The field name (last path segment, repeated for convenience). */\n field: string\n /** The locale the request asked for. */\n requestedLocale: Locale\n /** The locale the value was actually read from. */\n sourceLocale: Locale\n}\n\nexport interface LocaleResolution {\n /** Flat field values for the requested locale, fallback applied. Fields with\n * no value anywhere are omitted (never `undefined` entries). */\n values: FieldValues\n /** Which fields used fallback, and from where (EC-018 reporting). */\n fallbacks: FieldLocaleFallback[]\n}\n\n/**\n * Resolve a stored row's field values for the context locale with EC-018\n * default-locale fallback, reporting every field that actually fell back.\n * Pure: reads only the given document; never throws.\n */\nexport function resolveLocaleValues(\n context: ContentContext,\n collection: CollectionDef,\n doc: CmsDocument,\n basePath: CmsPath = [],\n): LocaleResolution {\n const values: FieldValues = {}\n const fallbacks: FieldLocaleFallback[] = []\n\n for (const field of collection.fields) {\n const resolved = resolveField(collection, doc, field.name, context.locale, context.locales)\n if (resolved.value === undefined) continue\n values[field.name] = resolved.value\n if (resolved.fellBack) {\n fallbacks.push({\n path: [...basePath, field.name],\n field: field.name,\n requestedLocale: context.locale,\n sourceLocale: resolved.sourceLocale,\n })\n }\n }\n\n return { values, fallbacks }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perspective.js","sourceRoot":"","sources":["../../src/content/perspective.ts"],"names":[],"mappings":"AAYA,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,MAA6B;IAC7D,OAAO,OAAO,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,CAAA;AAClD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAuB,EACvB,MAA6B;IAE7B,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO;YAAE,OAAO,MAAM,CAAC,KAAK,CAAA;QACxD,OAAO,MAAM,CAAC,SAAS,IAAI,IAAI,CAAA;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO;QAAE,OAAO,MAAM,CAAA;IAClD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"perspective.js","sourceRoot":"","sources":["../../src/content/perspective.ts"],"names":[],"mappings":"AAYA,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,MAA6B;IAC7D,OAAO,OAAO,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,CAAA;AAClD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAuB,EACvB,MAA6B;IAE7B,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO;YAAE,OAAO,MAAM,CAAC,KAAK,CAAA;QACxD,OAAO,MAAM,CAAC,SAAS,IAAI,IAAI,CAAA;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO;QAAE,OAAO,MAAM,CAAA;IAClD,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["import type { CmsDocument, DocumentHistory } from '@elytracms/core/cms-core'\nimport type { ContentContext } from './context'\n\n/**\n * What delivery resolution accepts as a document source: either a bare stored\n * row (`CmsDocument`, always a working draft — EC-224 retired the `state` flag)\n * or the full draft/published history (`DocumentHistory`, EC-021) whose\n * `published` field carries the pinned snapshot. Lookups hand these in;\n * resolution stays pure — no fetching at this layer.\n */\nexport type ContentDocumentSource = CmsDocument | DocumentHistory\n\n/** Narrow a source to a `DocumentHistory` (draft/published split, EC-021). */\nexport function isDocumentHistory(source: ContentDocumentSource): source is DocumentHistory {\n return 'draft' in source && 'versions' in source\n}\n\n/**\n * Select the stored row visible under the context's perspective (EC-021):\n *\n * - For a `DocumentHistory`: `draft` returns the working draft, `published`\n * returns the last published snapshot — or `null` if the document has never\n * been published. Draft content is never leaked into `published`.\n * - For a bare `CmsDocument`: `draft` sees the row as-is; `published` returns\n * `null`. A bare row carries no publish signal (EC-224 retired `state`), so\n * it is treated as never-published here — fail-closed. Published content\n * reaches this layer ONLY as a `DocumentHistory` whose `published` field the\n * feeder set (the live host wraps each published snapshot; the adapter path\n * wraps a pinned record), never as a bare row.\n *\n * Returning `null` means \"not visible in this perspective\" — that is correct\n * delivery behavior for unpublished content, not a validation issue.\n */\nexport function selectPerspective(\n context: ContentContext,\n source: ContentDocumentSource,\n): CmsDocument | null {\n if (isDocumentHistory(source)) {\n if (context.perspective === 'draft') return source.draft\n return source.published ?? null\n }\n if (context.perspective === 'draft') return source\n return null\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"populate.js","sourceRoot":"","sources":["../../src/content/populate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAc1D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,OAAO,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAA;AACjC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAC,GAAgB;IAC3C,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAA;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;AAC/B,CAAC"}
|
|
1
|
+
{"version":3,"file":"populate.js","sourceRoot":"","sources":["../../src/content/populate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAc1D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,OAAO,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAA;AACjC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAC,GAAgB;IAC3C,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAA;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;AAC/B,CAAC","sourcesContent":["import { readDocumentRef } from '@elytracms/core/cms-core'\nimport type { DocumentRef, RelationFieldDef } from '@elytracms/core/cms-core'\n\n/**\n * The unpopulated form of a relation in delivery shape (vision AD-4): always a\n * `{ id, collection }` object, never a bare id string. Returned when a field\n * declares `populate: false`, and for relations *inside* a populated document\n * (population never recurses past depth-1).\n */\nexport interface DocumentStub {\n id: string\n collection: string\n}\n\n/**\n * Whether delivery resolution populates this relation to depth-1 (EC-142).\n * Population is the default; `populate: false` is the schema-level opt-out.\n */\nexport function isPopulatedRelation(field: RelationFieldDef): boolean {\n return field.populate !== false\n}\n\n/** Build the reference stub for a relation target. */\nexport function relationStub(ref: DocumentRef): DocumentStub {\n return { id: ref.id, collection: ref.collection }\n}\n\n/**\n * Parse a stored relation value into a `DocumentRef`, tolerating malformed data:\n * anything not relation-shaped yields `undefined` so the caller can surface a\n * structured issue instead of crashing. Accepts the EC-277 self-typed envelope\n * (`{ type:'reference', collection, id }`) and legacy bare `{ collection, id }`.\n */\nexport function parseRelationRef(value: unknown): DocumentRef | undefined {\n return readDocumentRef(value)\n}\n"]}
|