@frontlit/text-editor 0.1.0-alpha.2 → 0.1.0-alpha.4

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/docs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/docs/diagnostics.ts","../src/docs/urls.ts","../src/docs/extensions.ts","../src/docs/headings.ts","../src/docs/validate.ts","../src/docs/routes.ts","../src/docs/frontmatter.ts","../src/docs/markdown.ts","../src/docs/hash.ts"],"names":["image","content","children"],"mappings":"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","file":"docs.js","sourcesContent":["/** DM-VALIDATE: shared, deterministic reports for authoring and import. */\nexport interface DocsDiagnostic {\n code: string;\n severity: \"error\" | \"warning\";\n blocksSave: boolean;\n blocksPublish: boolean;\n message: string;\n fieldPath?: string;\n file?: string;\n line?: number;\n column?: number;\n route?: string;\n documentId?: string;\n relatedFiles?: string[];\n}\n\nexport function diagnostic(\n code: string,\n message: string,\n location: Partial<DocsDiagnostic> = {},\n): DocsDiagnostic {\n return {\n code,\n message,\n severity: \"error\",\n blocksSave: true,\n blocksPublish: true,\n ...location,\n };\n}\n\nexport function sortDiagnostics(items: DocsDiagnostic[]): DocsDiagnostic[] {\n return items.sort(\n (a, b) =>\n (a.file ?? a.documentId ?? \"\").localeCompare(b.file ?? b.documentId ?? \"\") ||\n (a.line ?? 0) - (b.line ?? 0) ||\n (a.column ?? 0) - (b.column ?? 0) ||\n (a.fieldPath ?? \"\").localeCompare(b.fieldPath ?? \"\") ||\n a.code.localeCompare(b.code),\n );\n}\n\nexport class DocsContentError extends Error {\n readonly diagnostics: DocsDiagnostic[];\n constructor(diagnostics: DocsDiagnostic[]) {\n super(\"Documentation content is invalid.\");\n this.name = \"DocsContentError\";\n this.diagnostics = sortDiagnostics(diagnostics);\n }\n}\n","/** DM-VALIDATE/DM-MEDIA: syntax safety; ownership/provider checks belong to the API. */\nexport function isSafeDocsUrl(value: unknown, image = false): value is string {\n if (typeof value !== \"string\" || !value || value !== value.trim()) return false;\n // Browsers ignore control characters in protocols. Reject their encoded forms too.\n if (\n // biome-ignore lint/suspicious/noControlCharactersInRegex: Browsers ignore controls in dangerous protocols.\n /[\\u0000-\\u0020\\u007f\\\\]/.test(value) ||\n /%(?:0[0-9a-f]|1[0-9a-f]|7f|5c)/i.test(value)\n )\n return false;\n if (value.startsWith(\"//\")) return false;\n const privatePath =\n /\\/(?:attachments|private|ticket-attachments|conversation-attachments)(?:\\/|$)/i;\n const signedKey =\n /^(?:x-amz-.+|x-goog-.+|signature|sig|token|access_token|expires)$/i;\n if (/^(?:https?:|mailto:)/i.test(value)) {\n try {\n const url = new URL(value);\n if (image && url.protocol !== \"https:\") return false;\n if (url.username || url.password) return false;\n if (url.protocol === \"mailto:\") return !image && Boolean(url.pathname);\n // Known private attachment paths and expiring signed links are never docs assets.\n if (privatePath.test(decodeURIComponent(url.pathname))) return false;\n for (const key of url.searchParams.keys()) {\n if (signedKey.test(key)) return false;\n }\n return Boolean(url.hostname);\n } catch {\n return false;\n }\n }\n if (image) return false;\n // Relative Markdown paths, site paths, fragments, and query links are safe data.\n if (/^[^/?#]*:/.test(value) || /%(?:2f|3a)/i.test(value)) return false;\n try {\n const url = new URL(value, \"https://docs.invalid/\");\n return (\n !privatePath.test(decodeURIComponent(url.pathname)) &&\n ![...url.searchParams.keys()].some((key) => signedKey.test(key))\n );\n } catch {\n return false;\n }\n}\n","import { getSchema, Node, type Extensions } from \"@tiptap/core\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Image from \"@tiptap/extension-image\";\nimport Link from \"@tiptap/extension-link\";\nimport { Table, TableCell, TableHeader, TableRow } from \"@tiptap/extension-table\";\nimport { isSafeDocsUrl } from \"./urls\";\nimport type { Schema } from \"@tiptap/pm/model\";\n\n/** DM-VALIDATE: schema-only extensions; no React, upload controls, or node views. */\nexport function createDocsExtensions(): Extensions {\n return [\n StarterKit.configure({\n document: false,\n underline: false,\n link: false,\n dropcursor: false,\n gapcursor: false,\n trailingNode: false,\n }),\n Node.create({ name: \"doc\", topNode: true, content: \"block*\" }),\n Link.extend({\n addAttributes() {\n return { ...this.parent?.(), title: { default: null } };\n },\n }).configure({ openOnClick: false, isAllowedUri: (url) => isSafeDocsUrl(url) }),\n Image.configure({ allowBase64: false, resize: false }),\n Table.configure({ resizable: false }),\n TableRow,\n TableCell.extend({ content: \"paragraph\" }),\n TableHeader.extend({ content: \"paragraph\" }),\n ];\n}\n\nexport const docsSchema: Schema = getSchema(createDocsExtensions());\nexport const DOCS_SCHEMA_VERSION = 1;\n","export const DOCS_HEADING_POLICY_VERSION = 1;\n\nexport interface HeadingNode {\n type?: string;\n text?: string;\n attrs?: Record<string, unknown>;\n content?: HeadingNode[];\n}\n\nexport function docsNodeText(node: HeadingNode): string {\n if (typeof node.text === \"string\") return node.text;\n if (node.type === \"hardBreak\") return \"\\n\";\n return (node.content ?? []).map(docsNodeText).join(\"\");\n}\n\n/** DM-CONVERT: deterministic Unicode anchors, including duplicate-base collisions. */\nexport function createHeadingIdGenerator(): (text: string) => string {\n const used = new Set<string>();\n return (text) => {\n const base =\n text\n .normalize(\"NFKC\")\n .toLowerCase()\n .trim()\n .replace(/[^\\p{L}\\p{N}\\s_-]/gu, \"\")\n .replace(/\\s+/g, \"-\") || \"section\";\n let id = base;\n let suffix = 2;\n while (used.has(id)) id = `${base}-${suffix++}`;\n used.add(id);\n return id;\n };\n}\n\nexport function extractDocsHeadings(json: HeadingNode | null | undefined) {\n const nextId = createHeadingIdGenerator();\n const headings: { level: number; text: string; id: string }[] = [];\n function walk(node: HeadingNode) {\n if (node.type === \"heading\") {\n const text = docsNodeText(node);\n headings.push({ level: Number(node.attrs?.level ?? 1), text, id: nextId(text) });\n }\n for (const child of node.content ?? []) walk(child);\n }\n if (json) walk(json);\n return headings;\n}\n","import type { JSONContent } from \"@tiptap/core\";\nimport { docsSchema } from \"./extensions\";\nimport {\n diagnostic,\n DocsContentError,\n sortDiagnostics,\n type DocsDiagnostic,\n} from \"./diagnostics\";\nimport { isSafeDocsUrl } from \"./urls\";\n\nexport const DOCS_LIMITS = {\n bytes: 1024 * 1024,\n nodes: 20000,\n depth: 64,\n metadataBytes: 32768,\n} as const;\nconst record = (value: unknown): value is Record<string, unknown> =>\n Boolean(value) &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n [Object.prototype, null].includes(Object.getPrototypeOf(value));\nconst nullableString = (v: unknown) => v === null || typeof v === \"string\";\nconst attributes: Record<string, Record<string, (v: unknown) => boolean>> = {\n heading: { level: (v) => Number.isInteger(v) && Number(v) >= 1 && Number(v) <= 6 },\n orderedList: {\n start: (v) => Number.isSafeInteger(v) && Number(v) >= 1,\n type: (v) => v === null,\n },\n codeBlock: {\n language: (v) => v === null || (typeof v === \"string\" && /^[\\w+-]+$/.test(v)),\n },\n image: {\n src: (v) => typeof v === \"string\",\n alt: nullableString,\n title: nullableString,\n width: (v) => v === null,\n height: (v) => v === null,\n },\n tableCell: {\n colspan: (v) => v === 1,\n rowspan: (v) => v === 1,\n colwidth: (v) => v === null,\n align: (v) => v === null,\n },\n tableHeader: {\n colspan: (v) => v === 1,\n rowspan: (v) => v === 1,\n colwidth: (v) => v === null,\n align: (v) => v === null,\n },\n link: {\n href: (v) => typeof v === \"string\",\n title: nullableString,\n target: (v) => v === null || v === \"_blank\",\n rel: (v) => v === null || v === \"noopener noreferrer nofollow\",\n class: (v) => v === null,\n },\n};\n\n/** Checks before ProseMirror can discard unknown keys. Never repairs supplied invalid trees. */\nexport function validateDocsContent(input: unknown): {\n content?: JSONContent;\n diagnostics: DocsDiagnostic[];\n} {\n const errors: DocsDiagnostic[] = [];\n const add = (code: string, message: string, fieldPath: string) =>\n errors.push(diagnostic(code, message, { fieldPath }));\n let nodes = 0;\n let textBytes = 0;\n function attrs(value: unknown, type: string, path: string) {\n if (value === undefined) return;\n if (!record(value)) {\n add(\"INVALID_DOCUMENT\", \"Attributes must be an object.\", path);\n return;\n }\n for (const [key, v] of Object.entries(value)) {\n const allowed = attributes[type];\n const check = allowed && Object.hasOwn(allowed, key) ? allowed[key] : undefined;\n if (!check)\n add(\n \"UNSUPPORTED_ATTRIBUTE\",\n `Unsupported ${type} attribute: ${key}.`,\n `${path}.${key}`,\n );\n else if (!check(v))\n add(\"INVALID_DOCUMENT\", `Invalid ${type} attribute: ${key}.`, `${path}.${key}`);\n }\n }\n function walk(node: unknown, path: string, depth: number) {\n if (++nodes > DOCS_LIMITS.nodes || depth > DOCS_LIMITS.depth) {\n if (nodes === DOCS_LIMITS.nodes + 1 || depth > DOCS_LIMITS.depth)\n add(\"INVALID_DOCUMENT\", \"Document exceeds structural limits.\", path);\n return;\n }\n if (!record(node) || typeof node.type !== \"string\") {\n add(\"INVALID_DOCUMENT\", \"Expected a document node with a type.\", path);\n return;\n }\n if (!Object.hasOwn(docsSchema.nodes, node.type)) {\n add(\"UNSUPPORTED_NODE\", `Unsupported node: ${node.type}.`, `${path}.type`);\n return;\n }\n for (const key of Object.keys(node)) {\n if (![\"type\", \"attrs\", \"content\", \"marks\", \"text\"].includes(key))\n add(\n \"UNSUPPORTED_ATTRIBUTE\",\n `Unsupported node field: ${key}.`,\n `${path}.${key}`,\n );\n }\n attrs(node.attrs, node.type, `${path}.attrs`);\n if (node.type === \"text\") {\n if (typeof node.text !== \"string\" || !node.text.length)\n add(\"INVALID_DOCUMENT\", \"Text nodes require nonempty text.\", `${path}.text`);\n else textBytes += new TextEncoder().encode(node.text).length;\n if (node.content !== undefined || node.attrs !== undefined)\n add(\"INVALID_DOCUMENT\", \"Text cannot contain children or attributes.\", path);\n } else if (node.text !== undefined)\n add(\"INVALID_DOCUMENT\", \"Only text nodes can contain text.\", `${path}.text`);\n if (node.marks !== undefined) {\n if (!Array.isArray(node.marks))\n add(\"INVALID_DOCUMENT\", \"Marks must be an array.\", `${path}.marks`);\n else {\n const seen = new Set<string>();\n node.marks.forEach((mark, i) => {\n const mp = `${path}.marks[${i}]`;\n if (!record(mark) || typeof mark.type !== \"string\") {\n add(\"INVALID_DOCUMENT\", \"Invalid mark.\", mp);\n return;\n }\n if (!Object.hasOwn(docsSchema.marks, mark.type)) {\n add(\"UNSUPPORTED_MARK\", `Unsupported mark: ${mark.type}.`, `${mp}.type`);\n return;\n }\n if (node.type !== \"text\" || seen.has(mark.type))\n add(\"INVALID_DOCUMENT\", \"Marks must be unique and applied to text.\", mp);\n seen.add(mark.type);\n for (const key of Object.keys(mark))\n if (![\"type\", \"attrs\"].includes(key))\n add(\n \"UNSUPPORTED_ATTRIBUTE\",\n `Unsupported mark field: ${key}.`,\n `${mp}.${key}`,\n );\n attrs(mark.attrs, mark.type, `${mp}.attrs`);\n if (\n mark.type === \"link\" &&\n (!record(mark.attrs) || !isSafeDocsUrl(mark.attrs.href))\n )\n add(\"UNSAFE_URL\", \"Link URL is unsafe.\", `${mp}.attrs.href`);\n });\n if (seen.has(\"code\") && seen.size > 1)\n add(\n \"INVALID_DOCUMENT\",\n \"Inline code cannot carry other marks.\",\n `${path}.marks`,\n );\n }\n }\n if (\n node.type === \"image\" &&\n (!record(node.attrs) || !isSafeDocsUrl(node.attrs.src, true))\n )\n add(\"UNSAFE_URL\", \"Images require a stable HTTPS URL.\", `${path}.attrs.src`);\n if (\n node.type === \"heading\" &&\n (!record(node.attrs) || !Number.isInteger(node.attrs.level))\n )\n add(\"INVALID_DOCUMENT\", \"Heading level is required.\", `${path}.attrs.level`);\n if (node.content !== undefined) {\n if (!Array.isArray(node.content)) {\n add(\"INVALID_DOCUMENT\", \"Content must be an array.\", `${path}.content`);\n return;\n }\n node.content.forEach((child, i) => {\n walk(child, `${path}.content[${i}]`, depth + 1);\n });\n }\n // Check each subtree independently to give the exact failing JSON path.\n if (!errors.some((error) => error.fieldPath?.startsWith(path))) {\n try {\n docsSchema.nodeFromJSON(node).check();\n } catch {\n add(\"INVALID_DOCUMENT\", \"Invalid child ordering, cardinality, or marks.\", path);\n }\n }\n if (node.type === \"table\" && Array.isArray(node.content)) {\n let width: number | undefined;\n node.content.forEach((row, i) => {\n if (!record(row) || !Array.isArray(row.content)) return;\n width ??= row.content.length;\n if (\n row.content.length !== width ||\n row.content.some(\n (cell) =>\n !record(cell) || cell.type !== (i === 0 ? \"tableHeader\" : \"tableCell\"),\n )\n )\n add(\n \"INVALID_DOCUMENT\",\n \"Simple tables require a rectangular header row followed by body rows.\",\n `${path}.content[${i}]`,\n );\n });\n }\n }\n if (!record(input) || input.type !== \"doc\")\n add(\"INVALID_DOCUMENT\", \"Root must be a doc node.\", \"content.type\");\n else walk(input, \"content\", 0);\n if (textBytes > DOCS_LIMITS.bytes)\n add(\"INVALID_DOCUMENT\", \"Document exceeds the text size limit.\", \"content\");\n if (errors.length) return { diagnostics: sortDiagnostics(errors) };\n const normalize = (node: JSONContent): JSONContent => ({\n ...node,\n ...(node.type === \"image\"\n ? { attrs: { ...node.attrs, alt: node.attrs?.alt ?? \"\" } }\n : {}),\n ...(node.content ? { content: node.content.map(normalize) } : {}),\n });\n // Missing and empty alt text both lack a description; retain this as an\n // empty string so Markdown can represent the image without blocking a draft.\n const content = normalize(docsSchema.nodeFromJSON(input).toJSON() as JSONContent);\n return { content: { ...content, content: content.content ?? [] }, diagnostics: [] };\n}\n\nexport function requireDocsContent(input: unknown): JSONContent {\n const result = validateDocsContent(input);\n if (!result.content) throw new DocsContentError(result.diagnostics);\n return result.content;\n}\n","import { DocsContentError, diagnostic } from \"./diagnostics\";\n\n/** DM-ROUTE: fixed /docs prefix, Latin segments, case-folded collision identity. */\nexport function normalizeDocsSlug(value: unknown): string {\n return normalizePath(value, true);\n}\n\nfunction normalizePath(value: unknown, reserveRoutes: boolean): string {\n if (typeof value !== \"string\")\n throw new DocsContentError([\n diagnostic(\"INVALID_SLUG\", \"Slug must be a relative documentation path.\", {\n fieldPath: \"slug\",\n }),\n ]);\n const slug = value.toLowerCase().replace(/\\/$/, \"\");\n if (!slug || slug.length > 512 || !/^[a-z0-9-]+(?:\\/[a-z0-9-]+)*$/.test(slug))\n throw new DocsContentError([\n diagnostic(\n \"INVALID_SLUG\",\n \"Use lowercase ASCII letters, digits, and hyphens in slash-separated segments.\",\n { fieldPath: \"slug\" },\n ),\n ]);\n if (reserveRoutes && [\"collections\", \"search\"].includes(slug.split(\"/\")[0]))\n throw new DocsContentError([\n diagnostic(\n \"RESERVED_ROUTE\",\n \"This path is reserved for documentation navigation.\",\n { route: `/docs/${slug}`, fieldPath: \"slug\" },\n ),\n ]);\n return slug;\n}\n\nexport function normalizeDocsSourceDirectory(value: string): string {\n const directory = value.replace(/\\/$/, \"\");\n if (\n !directory ||\n directory.startsWith(\"/\") ||\n // biome-ignore lint/suspicious/noControlCharactersInRegex: Reject control characters in repository paths.\n /[\\\\\\u0000-\\u001f]/.test(directory) ||\n directory\n .split(\"/\")\n .some((segment) => !segment || segment === \".\" || segment === \"..\")\n )\n throw new DocsContentError([\n diagnostic(\"INVALID_REFERENCE\", \"Select a directory within the repository.\", {\n fieldPath: \"directory\",\n }),\n ]);\n return directory;\n}\n\n/** Input path is repository-relative; callers must also reject symlink entries in Git trees. */\nexport function resolveDocsSourcePath(\n path: string,\n directory: string,\n explicitSlug?: string,\n) {\n const root = normalizeDocsSourceDirectory(directory);\n if (!path.startsWith(`${root}/`))\n throw new DocsContentError([\n diagnostic(\n \"INVALID_REFERENCE\",\n \"File is outside the configured docs directory.\",\n { file: path },\n ),\n ]);\n const relativePath = path.slice(root.length + 1);\n const segments = relativePath.split(\"/\");\n if (\n !relativePath.endsWith(\".md\") ||\n // biome-ignore lint/suspicious/noControlCharactersInRegex: Reject control characters in repository paths.\n /[\\\\\\u0000-\\u001f]/.test(relativePath) ||\n segments.some((segment) => !segment || segment === \".\" || segment === \"..\")\n )\n throw new DocsContentError([\n diagnostic(\"INVALID_REFERENCE\", \"Invalid Markdown source path.\", { file: path }),\n ]);\n const defaultSlug = relativePath.slice(0, -3).replace(/\\/index$/, \"\");\n const slug = normalizeDocsSlug(explicitSlug ?? defaultSlug);\n return {\n relativePath,\n slug,\n route: `/docs/${slug}`,\n sectionSlug: segments.length > 1 ? normalizePath(segments[0], false) : null,\n };\n}\n","import { parseDocument, stringify } from \"yaml\";\nimport { DOCS_LIMITS } from \"./validate\";\nimport { diagnostic, DocsContentError } from \"./diagnostics\";\nimport { isSafeDocsUrl } from \"./urls\";\nimport { normalizeDocsSlug } from \"./routes\";\n\nexport type PlainData =\n | null\n | string\n | number\n | boolean\n | PlainData[]\n | { [key: string]: PlainData };\nexport type DocsFrontmatter = Record<string, PlainData>;\n\n/** DM-SOURCE: unknown metadata is retained as bounded, inert plain data. */\nexport function requireDocsFrontmatter(value: unknown, file?: string): DocsFrontmatter {\n const fail = (message: string, fieldPath = \"frontmatter\"): never => {\n throw new DocsContentError([\n diagnostic(\"INVALID_FRONTMATTER\", message, { fieldPath, file }),\n ]);\n };\n let count = 0;\n function check(v: unknown, depth: number, path: string): void {\n if (++count > 2000 || depth > 16) fail(\"Metadata exceeds structural limits.\", path);\n if (\n v === null ||\n typeof v === \"string\" ||\n typeof v === \"boolean\" ||\n (typeof v === \"number\" && Number.isFinite(v))\n )\n return;\n if (Array.isArray(v)) {\n v.forEach((item, i) => {\n check(item, depth + 1, `${path}[${i}]`);\n });\n return;\n }\n if (\n typeof v !== \"object\" ||\n ![Object.prototype, null].includes(Object.getPrototypeOf(v))\n )\n fail(\"Metadata must contain only plain data.\", path);\n for (const [key, item] of Object.entries(v)) {\n if ([\"__proto__\", \"prototype\", \"constructor\"].includes(key))\n fail(\"Reserved metadata key.\", `${path}.${key}`);\n check(item, depth + 1, `${path}.${key}`);\n }\n }\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n fail(\"Frontmatter must be an object.\");\n check(value, 0, \"frontmatter\");\n const meta = value as DocsFrontmatter;\n if (new TextEncoder().encode(JSON.stringify(meta)).length > DOCS_LIMITS.metadataBytes)\n fail(\"Metadata exceeds size limit.\");\n if (typeof meta.title !== \"string\" || !meta.title.trim())\n fail(\"Title is required.\", \"frontmatter.title\");\n for (const key of [\"description\", \"slug\", \"nav_title\"])\n if (meta[key] !== undefined && typeof meta[key] !== \"string\")\n fail(`${key} must be a string.`, `frontmatter.${key}`);\n if (meta.slug !== undefined) {\n try {\n normalizeDocsSlug(meta.slug);\n } catch (error) {\n if (error instanceof DocsContentError)\n throw new DocsContentError(\n error.diagnostics.map((item) => ({\n ...item,\n fieldPath: \"frontmatter.slug\",\n file,\n })),\n );\n throw error;\n }\n }\n if (meta.nav_order !== undefined && !Number.isSafeInteger(meta.nav_order))\n fail(\"nav_order must be an integer.\", \"frontmatter.nav_order\");\n for (const key of [\"published\", \"indexable\"])\n if (meta[key] !== undefined && typeof meta[key] !== \"boolean\")\n fail(`${key} must be a boolean.`, `frontmatter.${key}`);\n if (meta.featured_image !== undefined) {\n const image = meta.featured_image;\n if (\n !image ||\n typeof image !== \"object\" ||\n Array.isArray(image) ||\n Object.keys(image).some((key) => ![\"url\", \"alt\"].includes(key)) ||\n !isSafeDocsUrl(image.url, true) ||\n typeof image.alt !== \"string\"\n )\n fail(\n \"featured_image must contain a stable HTTPS url and alt string.\",\n \"frontmatter.featured_image\",\n );\n }\n return meta;\n}\n\nexport function splitDocsFrontmatter(source: string, file?: string) {\n const normalized = source.replace(/^\\uFEFF/, \"\").replace(/\\r\\n?/g, \"\\n\");\n if (!normalized.startsWith(\"---\\n\"))\n throw new DocsContentError([\n diagnostic(\"INVALID_FRONTMATTER\", \"Markdown requires frontmatter with a title.\", {\n file,\n line: 1,\n column: 1,\n }),\n ]);\n const end = /^---[ \\t]*$/gm;\n end.lastIndex = 4;\n const delimiter = end.exec(normalized);\n if (!delimiter)\n throw new DocsContentError([\n diagnostic(\"INVALID_FRONTMATTER\", \"Frontmatter is not closed.\", {\n file,\n line: 1,\n column: 1,\n }),\n ]);\n const raw = normalized.slice(4, delimiter.index);\n if (new TextEncoder().encode(raw).length > DOCS_LIMITS.metadataBytes)\n throw new DocsContentError([\n diagnostic(\"INVALID_FRONTMATTER\", \"Frontmatter exceeds size limit.\", { file }),\n ]);\n const doc = parseDocument(raw, {\n schema: \"core\",\n uniqueKeys: true,\n strict: true,\n merge: false,\n });\n if (doc.errors.length || doc.warnings.length) {\n throw new DocsContentError(\n [...doc.errors, ...doc.warnings].map((error) => {\n const offset = error.pos[0];\n const prefix = raw.slice(0, offset);\n return diagnostic(\"INVALID_FRONTMATTER\", \"Invalid YAML frontmatter.\", {\n file,\n line: prefix.split(\"\\n\").length + 1,\n column: prefix.length - prefix.lastIndexOf(\"\\n\"),\n });\n }),\n );\n }\n let value: unknown;\n try {\n value = doc.toJS({ maxAliasCount: 0 });\n } catch {\n throw new DocsContentError([\n diagnostic(\"INVALID_FRONTMATTER\", \"YAML aliases are not supported.\", {\n file,\n line: 2,\n column: 1,\n }),\n ]);\n }\n let frontmatter: DocsFrontmatter;\n try {\n frontmatter = requireDocsFrontmatter(value, file);\n } catch (error) {\n if (!(error instanceof DocsContentError)) throw error;\n throw new DocsContentError(\n error.diagnostics.map((item) => {\n const key = item.fieldPath?.split(\".\")[1];\n const field = key ? doc.get(key, true) : undefined;\n const offset =\n field && typeof field === \"object\" && \"range\" in field\n ? (field.range?.[0] ?? 0)\n : 0;\n const prefix = raw.slice(0, offset);\n return {\n ...item,\n file,\n line: prefix.split(\"\\n\").length + 1,\n column: prefix.length - prefix.lastIndexOf(\"\\n\"),\n };\n }),\n );\n }\n const start =\n delimiter.index +\n delimiter[0].length +\n (normalized[delimiter.index + delimiter[0].length] === \"\\n\" ? 1 : 0);\n return {\n frontmatter,\n body: normalized.slice(start),\n lineOffset: normalized.slice(0, start).split(\"\\n\").length - 1,\n };\n}\n\nexport function serializeDocsFrontmatter(meta: DocsFrontmatter): string {\n return `---\\n${stringify(requireDocsFrontmatter(meta), { sortMapEntries: true, aliasDuplicateObjects: false, lineWidth: 0 })}---\\n\\n`;\n}\n","import type { JSONContent } from \"@tiptap/core\";\nimport type { Root, RootContent, PhrasingContent, Definition, Nodes } from \"mdast\";\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkStringify from \"remark-stringify\";\nimport { DocsContentError, diagnostic } from \"./diagnostics\";\nimport { requireDocsContent, DOCS_LIMITS } from \"./validate\";\nimport {\n splitDocsFrontmatter,\n serializeDocsFrontmatter,\n type DocsFrontmatter,\n} from \"./frontmatter\";\nimport { isSafeDocsUrl } from \"./urls\";\n\nexport const DOCS_PARSER_VERSION = 1;\nconst parser = unified().use(remarkParse).use(remarkGfm);\nconst writer = unified().use(remarkGfm).use(remarkStringify, {\n bullet: \"-\",\n emphasis: \"*\",\n strong: \"*\",\n fences: true,\n incrementListMarker: true,\n});\ntype Mark = NonNullable<JSONContent[\"marks\"]>[number];\n\n/** DM-CONVERT: CommonMark/GFM is parsed as data. Unsupported constructs fail closed. */\nexport function parseDocsMarkdown(\n markdown: string,\n options: { file?: string; frontmatter?: boolean } = {},\n) {\n if (\n typeof markdown !== \"string\" ||\n new TextEncoder().encode(markdown).length > DOCS_LIMITS.bytes\n )\n throw new DocsContentError([\n diagnostic(\"INVALID_DOCUMENT\", \"Markdown exceeds size limit.\", {\n file: options.file,\n }),\n ]);\n const source =\n options.frontmatter === false\n ? {\n body: markdown.replace(/\\r\\n?/g, \"\\n\"),\n lineOffset: 0,\n frontmatter: undefined,\n }\n : splitDocsFrontmatter(markdown, options.file);\n const tree = parser.parse(source.body);\n const definitions = new Map<string, Definition>();\n function error(node: Nodes, message: string, code = \"UNSUPPORTED_NODE\"): never {\n throw new DocsContentError([\n diagnostic(code, message, {\n file: options.file,\n line: node.position ? node.position.start.line + source.lineOffset : undefined,\n column: node.position?.start.column,\n }),\n ]);\n }\n let nodes = 0;\n function inspect(node: Nodes, depth: number) {\n if (++nodes > DOCS_LIMITS.nodes || depth > DOCS_LIMITS.depth)\n error(node, \"Markdown exceeds structural limits.\", \"INVALID_DOCUMENT\");\n if (node.type === \"definition\") definitions.set(node.identifier, node);\n if (\"children\" in node)\n for (const child of node.children) inspect(child, depth + 1);\n }\n inspect(tree, 0);\n function url(node: Nodes, value: string, image = false) {\n if (image && !/^[a-z]+:/i.test(value))\n error(\n node,\n \"Local image binaries must be uploaded to MediaLit.\",\n \"UNMANAGED_BINARY\",\n );\n if (!isSafeDocsUrl(value, image))\n error(node, \"URL is unsafe or expiring.\", \"UNSAFE_URL\");\n return value;\n }\n function inline(items: PhrasingContent[], marks: Mark[] = []): JSONContent[] {\n return items.flatMap((node): JSONContent[] => {\n switch (node.type) {\n case \"text\": {\n const raw = source.body.slice(\n node.position?.start.offset ?? 0,\n node.position?.end.offset ?? 0,\n );\n if (\n /(?<!\\\\)<\\/?[A-Za-z][^>]*>/.test(raw) ||\n /^(?:import|export)\\s/m.test(raw)\n )\n error(node, \"MDX/JSX and module syntax are unsupported.\");\n return node.value\n ? [{ type: \"text\", text: node.value, ...(marks.length ? { marks } : {}) }]\n : [];\n }\n case \"strong\":\n return inline(node.children, [...marks, { type: \"bold\" }]);\n case \"emphasis\":\n return inline(node.children, [...marks, { type: \"italic\" }]);\n case \"delete\":\n return inline(node.children, [...marks, { type: \"strike\" }]);\n case \"inlineCode\":\n if (marks.length) error(node, \"Inline code cannot carry other marks.\");\n return [{ type: \"text\", text: node.value, marks: [{ type: \"code\" }] }];\n case \"break\":\n if (marks.length) error(node, \"Marked line breaks are unsupported.\");\n return [{ type: \"hardBreak\" }];\n case \"link\":\n return inline(node.children, [\n ...marks,\n {\n type: \"link\",\n attrs: { href: url(node, node.url), title: node.title ?? null },\n },\n ]);\n case \"linkReference\": {\n const def = definitions.get(node.identifier);\n if (!def) error(node, \"Missing link definition.\", \"BROKEN_LINK\");\n return inline(node.children, [\n ...marks,\n {\n type: \"link\",\n attrs: { href: url(node, def.url), title: def.title ?? null },\n },\n ]);\n }\n default:\n return error(node, `Unsupported inline construct: ${node.type}.`);\n }\n });\n }\n function image(\n node: Extract<PhrasingContent, { type: \"image\" | \"imageReference\" }>,\n ): JSONContent {\n const def =\n node.type === \"imageReference\" ? definitions.get(node.identifier) : node;\n if (!def) error(node, \"Missing image definition.\", \"BROKEN_LINK\");\n return {\n type: \"image\",\n attrs: {\n src: url(node, def.url, true),\n alt: node.alt ?? \"\",\n title: def.title ?? null,\n },\n };\n }\n function block(node: RootContent): JSONContent[] {\n switch (node.type) {\n case \"definition\":\n return [];\n case \"paragraph\": {\n if (\n node.children.length === 1 &&\n [\"image\", \"imageReference\"].includes(node.children[0].type)\n )\n return [\n image(\n node.children[0] as Extract<\n PhrasingContent,\n { type: \"image\" | \"imageReference\" }\n >,\n ),\n ];\n return [{ type: \"paragraph\", content: inline(node.children) }];\n }\n case \"heading\":\n return [\n {\n type: \"heading\",\n attrs: { level: node.depth },\n content: inline(node.children),\n },\n ];\n case \"blockquote\":\n return [{ type: \"blockquote\", content: node.children.flatMap(block) }];\n case \"thematicBreak\":\n return [{ type: \"horizontalRule\" }];\n case \"code\":\n if (node.meta)\n error(node, \"Code fence metadata is unsupported.\", \"UNSUPPORTED_ATTRIBUTE\");\n return [\n {\n type: \"codeBlock\",\n attrs: { language: node.lang ?? null },\n content: node.value ? [{ type: \"text\", text: node.value }] : [],\n },\n ];\n case \"list\":\n return [\n {\n type: node.ordered ? \"orderedList\" : \"bulletList\",\n ...(node.ordered ? { attrs: { start: node.start ?? 1 } } : {}),\n content: node.children.map((item) => {\n if (item.checked !== null && item.checked !== undefined)\n error(item, \"Task lists are unsupported.\");\n const content = item.children.flatMap(block);\n return {\n type: \"listItem\",\n content: content.length ? content : [{ type: \"paragraph\" }],\n };\n }),\n },\n ];\n case \"table\":\n if (node.align?.some((alignment) => alignment !== null))\n error(node, \"Table alignment is unsupported.\", \"UNSUPPORTED_ATTRIBUTE\");\n return [\n {\n type: \"table\",\n content: node.children.map((row, i) => ({\n type: \"tableRow\",\n content: row.children.map((cell) => ({\n type: i === 0 ? \"tableHeader\" : \"tableCell\",\n content: [{ type: \"paragraph\", content: inline(cell.children) }],\n })),\n })),\n },\n ];\n default:\n return error(node, `Unsupported block construct: ${node.type}.`);\n }\n }\n const content = requireDocsContent({\n type: \"doc\",\n content: tree.children.flatMap(block),\n });\n return { content, frontmatter: source.frontmatter };\n}\n\n/** Build mark runs rather than wrapping each text separately (adjacent delimiters are ambiguous). */\nfunction toInline(children: JSONContent[]): PhrasingContent[] {\n const rank = [\"link\", \"bold\", \"italic\", \"strike\", \"code\"];\n const nodes = children.map((node) => ({\n ...node,\n marks: [...(node.marks ?? [])].sort(\n (a, b) => rank.indexOf(a.type) - rank.indexOf(b.type),\n ),\n }));\n function group(items: JSONContent[], depth: number): PhrasingContent[] {\n const output: PhrasingContent[] = [];\n for (let i = 0; i < items.length; ) {\n const node = items[i];\n const mark = node.marks?.[depth];\n if (!mark) {\n if (node.type === \"hardBreak\") output.push({ type: \"break\" });\n else output.push({ type: \"text\", value: node.text! });\n i++;\n continue;\n }\n let end = i + 1;\n while (\n end < items.length &&\n JSON.stringify(items[end].marks?.[depth]) === JSON.stringify(mark)\n )\n end++;\n const children = group(items.slice(i, end), depth + 1);\n switch (mark.type) {\n case \"link\":\n output.push({\n type: \"link\",\n url: mark.attrs!.href,\n title: mark.attrs?.title ?? null,\n children,\n });\n break;\n case \"bold\":\n output.push({ type: \"strong\", children });\n break;\n case \"italic\":\n output.push({ type: \"emphasis\", children });\n break;\n case \"strike\":\n output.push({ type: \"delete\", children });\n break;\n case \"code\":\n output.push({\n type: \"inlineCode\",\n value: items\n .slice(i, end)\n .map((item) => item.text)\n .join(\"\"),\n });\n break;\n }\n i = end;\n }\n return output;\n }\n return group(nodes, 0);\n}\n\nexport function serializeDocsMarkdown(\n input: unknown,\n frontmatter?: DocsFrontmatter,\n): string {\n const content = requireDocsContent(input);\n function block(node: JSONContent): RootContent {\n const children = node.content ?? [];\n switch (node.type) {\n case \"paragraph\":\n return { type: \"paragraph\", children: toInline(children) };\n case \"heading\":\n return {\n type: \"heading\",\n depth: node.attrs!.level,\n children: toInline(children),\n };\n case \"horizontalRule\":\n return { type: \"thematicBreak\" };\n case \"image\":\n return {\n type: \"paragraph\",\n children: [\n {\n type: \"image\",\n url: node.attrs!.src,\n alt: node.attrs?.alt ?? \"\",\n title: node.attrs?.title ?? null,\n },\n ],\n };\n case \"codeBlock\":\n return {\n type: \"code\",\n lang: node.attrs?.language ?? null,\n value: children.map((child) => child.text ?? \"\").join(\"\"),\n };\n case \"blockquote\":\n return {\n type: \"blockquote\",\n children: children.map(block) as Extract<\n RootContent,\n { type: \"blockquote\" }\n >[\"children\"],\n };\n case \"bulletList\":\n case \"orderedList\":\n return {\n type: \"list\",\n ordered: node.type === \"orderedList\",\n start: node.type === \"orderedList\" ? (node.attrs?.start ?? 1) : null,\n spread: true,\n children: children.map((item) => ({\n type: \"listItem\",\n spread: true,\n children: (item.content ?? []).map(block) as Extract<\n RootContent,\n { type: \"listItem\" }\n >[\"children\"],\n })),\n };\n case \"table\":\n return {\n type: \"table\",\n children: children.map((row) => ({\n type: \"tableRow\",\n children: (row.content ?? []).map((cell) => ({\n type: \"tableCell\",\n children: toInline(cell.content![0].content ?? []),\n })),\n })),\n };\n default:\n throw new DocsContentError([\n diagnostic(\"UNSUPPORTED_NODE\", `Cannot serialize ${node.type}.`),\n ]);\n }\n }\n const tree: Root = { type: \"root\", children: (content.content ?? []).map(block) };\n const markdown = writer.stringify(tree);\n // A serializer must never silently change semantic structure (e.g. empty blocks).\n const roundtrip = parseDocsMarkdown(markdown, { frontmatter: false }).content;\n // Markdown does not encode blank paragraph spacing. Ignore empty top-level\n // paragraphs in semantic comparisons; retain them in canonical editor JSON.\n const semantic = (doc: JSONContent) => ({\n ...doc,\n content:\n doc.content?.filter(\n (node) => node.type !== \"paragraph\" || node.content?.length,\n ) ?? [],\n });\n if (JSON.stringify(semantic(roundtrip)) !== JSON.stringify(semantic(content)))\n throw new DocsContentError([\n diagnostic(\n \"INVALID_DOCUMENT\",\n \"Content has no lossless Markdown representation.\",\n ),\n ]);\n return (frontmatter ? serializeDocsFrontmatter(frontmatter) : \"\") + markdown;\n}\n","import { DOCS_SCHEMA_VERSION } from \"./extensions\";\nimport { DOCS_PARSER_VERSION } from \"./markdown\";\nimport { DOCS_HEADING_POLICY_VERSION } from \"./headings\";\nimport { requireDocsContent } from \"./validate\";\nimport type { DocsFrontmatter, PlainData } from \"./frontmatter\";\n\nfunction stable(value: PlainData): PlainData {\n if (Array.isArray(value)) return value.map(stable);\n if (value && typeof value === \"object\")\n return Object.fromEntries(\n Object.keys(value)\n .sort()\n .map((key) => [key, stable(value[key])]),\n );\n return value;\n}\n\n/** DM-CONVERT: include conversion and retrieval versions in immutable content identities. */\nexport async function hashDocsContent(input: {\n content: unknown;\n metadata: DocsFrontmatter;\n embeddingConfigurationVersion: string;\n}): Promise<string> {\n const canonical = stable({\n content: requireDocsContent(input.content) as PlainData,\n metadata: input.metadata,\n versions: {\n schema: DOCS_SCHEMA_VERSION,\n parser: DOCS_PARSER_VERSION,\n headings: DOCS_HEADING_POLICY_VERSION,\n embeddingConfiguration: input.embeddingConfigurationVersion,\n },\n });\n const bytes = new TextEncoder().encode(JSON.stringify(canonical));\n const digest = await globalThis.crypto.subtle.digest(\"SHA-256\", bytes);\n return [...new Uint8Array(digest)]\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n"]}
1
+ {"version":3,"sources":["../src/docs/diagnostics.ts","../src/docs/urls.ts","../src/docs/blocks.ts","../src/docs/extensions.ts","../src/docs/headings.ts","../src/docs/validate.ts","../src/docs/routes.ts","../src/docs/frontmatter.ts","../src/docs/markdown.ts","../src/docs/hash.ts"],"names":["attributes","Node","image","label","content","block","children"],"mappings":"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","file":"docs.js","sourcesContent":["/** DM-VALIDATE: shared, deterministic reports for authoring and import. */\nexport interface DocsDiagnostic {\n code: string;\n severity: \"error\" | \"warning\";\n blocksSave: boolean;\n blocksPublish: boolean;\n message: string;\n fieldPath?: string;\n file?: string;\n line?: number;\n column?: number;\n route?: string;\n documentId?: string;\n relatedFiles?: string[];\n}\n\nexport function diagnostic(\n code: string,\n message: string,\n location: Partial<DocsDiagnostic> = {},\n): DocsDiagnostic {\n return {\n code,\n message,\n severity: \"error\",\n blocksSave: true,\n blocksPublish: true,\n ...location,\n };\n}\n\nexport function sortDiagnostics(items: DocsDiagnostic[]): DocsDiagnostic[] {\n return items.sort(\n (a, b) =>\n (a.file ?? a.documentId ?? \"\").localeCompare(b.file ?? b.documentId ?? \"\") ||\n (a.line ?? 0) - (b.line ?? 0) ||\n (a.column ?? 0) - (b.column ?? 0) ||\n (a.fieldPath ?? \"\").localeCompare(b.fieldPath ?? \"\") ||\n a.code.localeCompare(b.code),\n );\n}\n\nexport class DocsContentError extends Error {\n readonly diagnostics: DocsDiagnostic[];\n constructor(diagnostics: DocsDiagnostic[]) {\n super(\"Documentation content is invalid.\");\n this.name = \"DocsContentError\";\n this.diagnostics = sortDiagnostics(diagnostics);\n }\n}\n","/** DM-VALIDATE/DM-MEDIA: syntax safety; ownership/provider checks belong to the API. */\nexport function isSafeDocsUrl(value: unknown, image = false): value is string {\n if (typeof value !== \"string\" || !value || value !== value.trim()) return false;\n // Browsers ignore control characters in protocols. Reject their encoded forms too.\n if (\n // biome-ignore lint/suspicious/noControlCharactersInRegex: Browsers ignore controls in dangerous protocols.\n /[\\u0000-\\u0020\\u007f\\\\]/.test(value) ||\n /%(?:0[0-9a-f]|1[0-9a-f]|7f|5c)/i.test(value)\n )\n return false;\n if (value.startsWith(\"//\")) return false;\n const privatePath =\n /\\/(?:attachments|private|ticket-attachments|conversation-attachments)(?:\\/|$)/i;\n const signedKey =\n /^(?:x-amz-.+|x-goog-.+|signature|sig|token|access_token|expires)$/i;\n if (/^(?:https?:|mailto:)/i.test(value)) {\n try {\n const url = new URL(value);\n if (image && url.protocol !== \"https:\") return false;\n if (url.username || url.password) return false;\n if (url.protocol === \"mailto:\") return !image && Boolean(url.pathname);\n // Known private attachment paths and expiring signed links are never docs assets.\n if (privatePath.test(decodeURIComponent(url.pathname))) return false;\n for (const key of url.searchParams.keys()) {\n if (signedKey.test(key)) return false;\n }\n return Boolean(url.hostname);\n } catch {\n return false;\n }\n }\n if (image) return false;\n // Relative Markdown paths, site paths, fragments, and query links are safe data.\n if (/^[^/?#]*:/.test(value) || /%(?:2f|3a)/i.test(value)) return false;\n try {\n const url = new URL(value, \"https://docs.invalid/\");\n return (\n !privatePath.test(decodeURIComponent(url.pathname)) &&\n ![...url.searchParams.keys()].some((key) => signedKey.test(key))\n );\n } catch {\n return false;\n }\n}\n","import { Extension, Node, type Extensions } from \"@tiptap/core\";\nimport Code from \"@tiptap/extension-code\";\n\n/**\n * Rich documentation blocks (Callout, Tabs, Steps, Cards, Accordion, Code\n * group, Type table). Schema-only: no React, so the server-side docs profile\n * and the browser editor share them. Markdown form is MDX-style JSX with\n * literal props; see `markdown.ts`.\n */\nexport const CALLOUT_TYPES = [\"note\", \"tip\", \"info\", \"warning\", \"danger\"] as const;\nexport type CalloutType = (typeof CALLOUT_TYPES)[number];\n\nexport interface TypeTableRow {\n name: string;\n type: string;\n default: string | null;\n description: string | null;\n required: boolean;\n}\n\nfunction attr(name: string, fallback: unknown = null) {\n return {\n [name]: {\n default: fallback,\n parseHTML: (element: HTMLElement) => {\n const value = element.getAttribute(`data-${name}`);\n if (value === null) return fallback;\n try {\n return JSON.parse(value);\n } catch {\n return fallback;\n }\n },\n renderHTML: (attributes: Record<string, unknown>) =>\n attributes[name] === null || attributes[name] === undefined\n ? {}\n : { [`data-${name}`]: JSON.stringify(attributes[name]) },\n },\n };\n}\n\nfunction block(\n name: string,\n spec: {\n content?: string;\n group?: string;\n attrs?: Record<string, unknown>;\n atom?: boolean;\n },\n) {\n const tag = `div[data-docs-block=\"${name}\"]`;\n return Node.create({\n name,\n group: spec.group,\n content: spec.content,\n atom: spec.atom,\n defining: true,\n isolating: true,\n addAttributes() {\n return Object.assign(\n {},\n ...Object.entries(spec.attrs ?? {}).map(([key, value]) => attr(key, value)),\n );\n },\n parseHTML() {\n return [{ tag }];\n },\n renderHTML({ HTMLAttributes }) {\n return spec.atom\n ? [\"div\", { ...HTMLAttributes, \"data-docs-block\": name }]\n : [\"div\", { ...HTMLAttributes, \"data-docs-block\": name }, 0];\n },\n });\n}\n\n/** Inline code may sit inside links, bold, italic and strike (e.g. a linked `useUpload`). */\nexport const DocsCode = Code.extend({ excludes: \"\" });\n\nexport function createDocsBlockExtensions(): Extensions {\n return [\n DocsCode,\n block(\"callout\", {\n group: \"block\",\n content: \"block+\",\n attrs: { type: null, title: null },\n }),\n block(\"tabs\", { group: \"block\", content: \"tab+\" }),\n block(\"tab\", { content: \"block+\", attrs: { label: \"\" } }),\n block(\"steps\", { group: \"block\", content: \"step+\" }),\n block(\"step\", { content: \"block+\" }),\n block(\"cards\", { group: \"block\", content: \"card+\" }),\n block(\"card\", {\n content: \"block*\",\n attrs: { title: \"\", href: null, icon: null },\n }),\n block(\"accordions\", {\n group: \"block\",\n content: \"accordion+\",\n attrs: { type: null },\n }),\n block(\"accordion\", { content: \"block+\", attrs: { title: \"\" } }),\n block(\"codeGroup\", { group: \"block\", content: \"codeBlock+\" }),\n block(\"typeTable\", { group: \"block\", atom: true, attrs: { rows: [] } }),\n ];\n}\n\n/** Node names owned by this module, in Markdown component order. */\nexport const DOCS_BLOCK_COMPONENTS = {\n Callout: \"callout\",\n Tabs: \"tabs\",\n Tab: \"tab\",\n Steps: \"steps\",\n Step: \"step\",\n Cards: \"cards\",\n Card: \"card\",\n Accordions: \"accordions\",\n Accordion: \"accordion\",\n CodeGroup: \"codeGroup\",\n TypeTable: \"typeTable\",\n} as const;\n\n/** Code fence `title=\"…\"` metadata, shown as the block's file name or tab label. */\nexport const CodeBlockTitle = Extension.create({\n name: \"codeBlockTitle\",\n addGlobalAttributes() {\n return [\n {\n types: [\"codeBlock\"],\n attributes: {\n title: {\n default: null,\n parseHTML: (element) => element.getAttribute(\"data-title\"),\n renderHTML: (attributes) =>\n attributes.title ? { \"data-title\": attributes.title } : {},\n },\n },\n },\n ];\n },\n});\n","import { getSchema, Node, type Extensions } from \"@tiptap/core\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport CodeBlock from \"@tiptap/extension-code-block\";\nimport Image from \"@tiptap/extension-image\";\nimport Link from \"@tiptap/extension-link\";\nimport { Table, TableCell, TableHeader, TableRow } from \"@tiptap/extension-table\";\nimport { isSafeDocsUrl } from \"./urls\";\nimport { CodeBlockTitle, createDocsBlockExtensions } from \"./blocks\";\nimport type { Schema } from \"@tiptap/pm/model\";\n\n/** DM-VALIDATE: schema-only extensions; no React, upload controls, or node views. */\nexport function createDocsExtensions(): Extensions {\n return [\n StarterKit.configure({\n code: false,\n codeBlock: false,\n document: false,\n underline: false,\n link: false,\n dropcursor: false,\n gapcursor: false,\n trailingNode: false,\n }),\n Node.create({ name: \"doc\", topNode: true, content: \"block*\" }),\n Link.extend({\n addAttributes() {\n return { ...this.parent?.(), title: { default: null } };\n },\n }).configure({ openOnClick: false, isAllowedUri: (url) => isSafeDocsUrl(url) }),\n Image.configure({ allowBase64: false, resize: false }),\n Table.configure({ resizable: false }),\n TableRow,\n TableCell.extend({ content: \"paragraph\" }),\n TableHeader.extend({ content: \"paragraph\" }),\n CodeBlock,\n CodeBlockTitle,\n ...createDocsBlockExtensions(),\n ];\n}\n\nexport const docsSchema: Schema = getSchema(createDocsExtensions());\nexport const DOCS_SCHEMA_VERSION = 1;\n","export const DOCS_HEADING_POLICY_VERSION = 1;\n\nexport interface HeadingNode {\n type?: string;\n text?: string;\n attrs?: Record<string, unknown>;\n content?: HeadingNode[];\n}\n\nexport function docsNodeText(node: HeadingNode): string {\n if (typeof node.text === \"string\") return node.text;\n if (node.type === \"hardBreak\") return \"\\n\";\n return (node.content ?? []).map(docsNodeText).join(\"\");\n}\n\n/** DM-CONVERT: deterministic Unicode anchors, including duplicate-base collisions. */\nexport function createHeadingIdGenerator(): (text: string) => string {\n const used = new Set<string>();\n return (text) => {\n const base =\n text\n .normalize(\"NFKC\")\n .toLowerCase()\n .trim()\n .replace(/[^\\p{L}\\p{N}\\s_-]/gu, \"\")\n .replace(/\\s+/g, \"-\") || \"section\";\n let id = base;\n let suffix = 2;\n while (used.has(id)) id = `${base}-${suffix++}`;\n used.add(id);\n return id;\n };\n}\n\nexport function extractDocsHeadings(json: HeadingNode | null | undefined) {\n const nextId = createHeadingIdGenerator();\n const headings: { level: number; text: string; id: string }[] = [];\n function walk(node: HeadingNode) {\n if (node.type === \"heading\") {\n const text = docsNodeText(node);\n headings.push({ level: Number(node.attrs?.level ?? 1), text, id: nextId(text) });\n }\n for (const child of node.content ?? []) walk(child);\n }\n if (json) walk(json);\n return headings;\n}\n","import type { JSONContent } from \"@tiptap/core\";\nimport { docsSchema } from \"./extensions\";\nimport {\n diagnostic,\n DocsContentError,\n sortDiagnostics,\n type DocsDiagnostic,\n} from \"./diagnostics\";\nimport { isSafeDocsUrl } from \"./urls\";\nimport { CALLOUT_TYPES, type TypeTableRow } from \"./blocks\";\n\nexport const DOCS_LIMITS = {\n bytes: 1024 * 1024,\n nodes: 20000,\n depth: 64,\n metadataBytes: 32768,\n} as const;\nconst record = (value: unknown): value is Record<string, unknown> =>\n Boolean(value) &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n [Object.prototype, null].includes(Object.getPrototypeOf(value));\nconst nullableString = (v: unknown) => v === null || typeof v === \"string\";\n// Titles and labels may be empty while an author is typing; autosave must not fail.\nconst label = (v: unknown) => typeof v === \"string\";\nconst nullableLabel = nullableString;\nconst typeTableRow = (v: unknown) =>\n record(v) &&\n Object.keys(v).every((key) =>\n [\"name\", \"type\", \"default\", \"description\", \"required\"].includes(key),\n ) &&\n label(v.name) &&\n typeof v.type === \"string\" &&\n nullableString(v.default) &&\n nullableString(v.description) &&\n typeof v.required === \"boolean\";\nconst attributes: Record<string, Record<string, (v: unknown) => boolean>> = {\n heading: { level: (v) => Number.isInteger(v) && Number(v) >= 1 && Number(v) <= 6 },\n orderedList: {\n start: (v) => Number.isSafeInteger(v) && Number(v) >= 1,\n type: (v) => v === null,\n },\n codeBlock: {\n language: (v) => v === null || (typeof v === \"string\" && /^[\\w+-]+$/.test(v)),\n title: nullableLabel,\n },\n callout: {\n type: (v) => v === null || CALLOUT_TYPES.includes(v as never),\n title: nullableLabel,\n },\n tab: { label },\n card: {\n title: label,\n href: nullableString,\n icon: (v) => v === null || (typeof v === \"string\" && /^[A-Za-z][\\w-]*$/.test(v)),\n },\n accordions: { type: (v) => v === null || v === \"single\" || v === \"multiple\" },\n accordion: { title: label },\n typeTable: {\n rows: (v) =>\n Array.isArray(v) &&\n v.every(typeTableRow) &&\n new Set(v.map((row) => row.name)).size === v.length,\n },\n image: {\n src: (v) => typeof v === \"string\",\n alt: nullableString,\n title: nullableString,\n width: (v) => v === null,\n height: (v) => v === null,\n },\n tableCell: {\n colspan: (v) => v === 1,\n rowspan: (v) => v === 1,\n colwidth: (v) => v === null,\n align: (v) => v === null,\n },\n tableHeader: {\n colspan: (v) => v === 1,\n rowspan: (v) => v === 1,\n colwidth: (v) => v === null,\n align: (v) => v === null,\n },\n link: {\n href: (v) => typeof v === \"string\",\n title: nullableString,\n target: (v) => v === null || v === \"_blank\",\n rel: (v) => v === null || v === \"noopener noreferrer nofollow\",\n class: (v) => v === null,\n },\n};\n\n/** Checks before ProseMirror can discard unknown keys. Never repairs supplied invalid trees. */\nexport function validateDocsContent(input: unknown): {\n content?: JSONContent;\n diagnostics: DocsDiagnostic[];\n} {\n const errors: DocsDiagnostic[] = [];\n const add = (code: string, message: string, fieldPath: string) =>\n errors.push(diagnostic(code, message, { fieldPath }));\n let nodes = 0;\n let textBytes = 0;\n function attrs(value: unknown, type: string, path: string) {\n if (value === undefined) return;\n if (!record(value)) {\n add(\"INVALID_DOCUMENT\", \"Attributes must be an object.\", path);\n return;\n }\n for (const [key, v] of Object.entries(value)) {\n const allowed = attributes[type];\n const check = allowed && Object.hasOwn(allowed, key) ? allowed[key] : undefined;\n if (!check)\n add(\n \"UNSUPPORTED_ATTRIBUTE\",\n `Unsupported ${type} attribute: ${key}.`,\n `${path}.${key}`,\n );\n else if (!check(v))\n add(\"INVALID_DOCUMENT\", `Invalid ${type} attribute: ${key}.`, `${path}.${key}`);\n }\n }\n function walk(node: unknown, path: string, depth: number) {\n if (++nodes > DOCS_LIMITS.nodes || depth > DOCS_LIMITS.depth) {\n if (nodes === DOCS_LIMITS.nodes + 1 || depth > DOCS_LIMITS.depth)\n add(\"INVALID_DOCUMENT\", \"Document exceeds structural limits.\", path);\n return;\n }\n if (!record(node) || typeof node.type !== \"string\") {\n add(\"INVALID_DOCUMENT\", \"Expected a document node with a type.\", path);\n return;\n }\n if (!Object.hasOwn(docsSchema.nodes, node.type)) {\n add(\"UNSUPPORTED_NODE\", `Unsupported node: ${node.type}.`, `${path}.type`);\n return;\n }\n for (const key of Object.keys(node)) {\n if (![\"type\", \"attrs\", \"content\", \"marks\", \"text\"].includes(key))\n add(\n \"UNSUPPORTED_ATTRIBUTE\",\n `Unsupported node field: ${key}.`,\n `${path}.${key}`,\n );\n }\n attrs(node.attrs, node.type, `${path}.attrs`);\n if (node.type === \"text\") {\n if (typeof node.text !== \"string\" || !node.text.length)\n add(\"INVALID_DOCUMENT\", \"Text nodes require nonempty text.\", `${path}.text`);\n else textBytes += new TextEncoder().encode(node.text).length;\n if (node.content !== undefined || node.attrs !== undefined)\n add(\"INVALID_DOCUMENT\", \"Text cannot contain children or attributes.\", path);\n } else if (node.text !== undefined)\n add(\"INVALID_DOCUMENT\", \"Only text nodes can contain text.\", `${path}.text`);\n if (node.marks !== undefined) {\n if (!Array.isArray(node.marks))\n add(\"INVALID_DOCUMENT\", \"Marks must be an array.\", `${path}.marks`);\n else {\n const seen = new Set<string>();\n node.marks.forEach((mark, i) => {\n const mp = `${path}.marks[${i}]`;\n if (!record(mark) || typeof mark.type !== \"string\") {\n add(\"INVALID_DOCUMENT\", \"Invalid mark.\", mp);\n return;\n }\n if (!Object.hasOwn(docsSchema.marks, mark.type)) {\n add(\"UNSUPPORTED_MARK\", `Unsupported mark: ${mark.type}.`, `${mp}.type`);\n return;\n }\n if (node.type !== \"text\" || seen.has(mark.type))\n add(\"INVALID_DOCUMENT\", \"Marks must be unique and applied to text.\", mp);\n seen.add(mark.type);\n for (const key of Object.keys(mark))\n if (![\"type\", \"attrs\"].includes(key))\n add(\n \"UNSUPPORTED_ATTRIBUTE\",\n `Unsupported mark field: ${key}.`,\n `${mp}.${key}`,\n );\n attrs(mark.attrs, mark.type, `${mp}.attrs`);\n if (\n mark.type === \"link\" &&\n (!record(mark.attrs) || !isSafeDocsUrl(mark.attrs.href))\n )\n add(\"UNSAFE_URL\", \"Link URL is unsafe.\", `${mp}.attrs.href`);\n });\n }\n }\n if (\n node.type === \"image\" &&\n (!record(node.attrs) || !isSafeDocsUrl(node.attrs.src, true))\n )\n add(\"UNSAFE_URL\", \"Images require a stable HTTPS URL.\", `${path}.attrs.src`);\n if (\n node.type === \"card\" &&\n record(node.attrs) &&\n typeof node.attrs.href === \"string\" &&\n !isSafeDocsUrl(node.attrs.href)\n )\n add(\"UNSAFE_URL\", \"Card link URL is unsafe.\", `${path}.attrs.href`);\n if (\n node.type === \"heading\" &&\n (!record(node.attrs) || !Number.isInteger(node.attrs.level))\n )\n add(\"INVALID_DOCUMENT\", \"Heading level is required.\", `${path}.attrs.level`);\n if (node.content !== undefined) {\n if (!Array.isArray(node.content)) {\n add(\"INVALID_DOCUMENT\", \"Content must be an array.\", `${path}.content`);\n return;\n }\n node.content.forEach((child, i) => {\n walk(child, `${path}.content[${i}]`, depth + 1);\n });\n }\n // Check each subtree independently to give the exact failing JSON path.\n if (!errors.some((error) => error.fieldPath?.startsWith(path))) {\n try {\n docsSchema.nodeFromJSON(node).check();\n } catch {\n add(\"INVALID_DOCUMENT\", \"Invalid child ordering, cardinality, or marks.\", path);\n }\n }\n if (node.type === \"table\" && Array.isArray(node.content)) {\n let width: number | undefined;\n node.content.forEach((row, i) => {\n if (!record(row) || !Array.isArray(row.content)) return;\n width ??= row.content.length;\n if (\n row.content.length !== width ||\n row.content.some(\n (cell) =>\n !record(cell) || cell.type !== (i === 0 ? \"tableHeader\" : \"tableCell\"),\n )\n )\n add(\n \"INVALID_DOCUMENT\",\n \"Simple tables require a rectangular header row followed by body rows.\",\n `${path}.content[${i}]`,\n );\n });\n }\n }\n if (!record(input) || input.type !== \"doc\")\n add(\"INVALID_DOCUMENT\", \"Root must be a doc node.\", \"content.type\");\n else walk(input, \"content\", 0);\n if (textBytes > DOCS_LIMITS.bytes)\n add(\"INVALID_DOCUMENT\", \"Document exceeds the text size limit.\", \"content\");\n if (errors.length) return { diagnostics: sortDiagnostics(errors) };\n const normalize = (node: JSONContent): JSONContent => ({\n ...node,\n ...(node.type === \"image\"\n ? { attrs: { ...node.attrs, alt: node.attrs?.alt ?? \"\" } }\n : {}),\n // Type table rows are one attribute value; give them a fixed key order.\n ...(node.type === \"typeTable\"\n ? {\n attrs: {\n rows: (node.attrs?.rows ?? []).map((row: TypeTableRow) => ({\n name: row.name,\n type: row.type,\n default: row.default,\n description: row.description,\n required: row.required,\n })),\n },\n }\n : {}),\n ...(node.content ? { content: node.content.map(normalize) } : {}),\n });\n // Missing and empty alt text both lack a description; retain this as an\n // empty string so Markdown can represent the image without blocking a draft.\n const content = normalize(docsSchema.nodeFromJSON(input).toJSON() as JSONContent);\n return { content: { ...content, content: content.content ?? [] }, diagnostics: [] };\n}\n\nexport function requireDocsContent(input: unknown): JSONContent {\n const result = validateDocsContent(input);\n if (!result.content) throw new DocsContentError(result.diagnostics);\n return result.content;\n}\n","import { DocsContentError, diagnostic } from \"./diagnostics\";\n\n/** DM-ROUTE: fixed /docs prefix, Latin segments, case-folded collision identity. */\nexport function normalizeDocsSlug(value: unknown): string {\n return normalizePath(value, true);\n}\n\nfunction normalizePath(value: unknown, reserveRoutes: boolean): string {\n if (typeof value !== \"string\")\n throw new DocsContentError([\n diagnostic(\"INVALID_SLUG\", \"Slug must be a relative documentation path.\", {\n fieldPath: \"slug\",\n }),\n ]);\n const slug = value.toLowerCase().replace(/\\/$/, \"\");\n if (!slug || slug.length > 512 || !/^[a-z0-9-]+(?:\\/[a-z0-9-]+)*$/.test(slug))\n throw new DocsContentError([\n diagnostic(\n \"INVALID_SLUG\",\n \"Use lowercase ASCII letters, digits, and hyphens in slash-separated segments.\",\n { fieldPath: \"slug\" },\n ),\n ]);\n if (reserveRoutes && [\"collections\", \"search\"].includes(slug.split(\"/\")[0]))\n throw new DocsContentError([\n diagnostic(\n \"RESERVED_ROUTE\",\n \"This path is reserved for documentation navigation.\",\n { route: `/docs/${slug}`, fieldPath: \"slug\" },\n ),\n ]);\n return slug;\n}\n\nexport function normalizeDocsSourceDirectory(value: string): string {\n const directory = value.replace(/\\/$/, \"\");\n if (\n !directory ||\n directory.startsWith(\"/\") ||\n // biome-ignore lint/suspicious/noControlCharactersInRegex: Reject control characters in repository paths.\n /[\\\\\\u0000-\\u001f]/.test(directory) ||\n directory\n .split(\"/\")\n .some((segment) => !segment || segment === \".\" || segment === \"..\")\n )\n throw new DocsContentError([\n diagnostic(\"INVALID_REFERENCE\", \"Select a directory within the repository.\", {\n fieldPath: \"directory\",\n }),\n ]);\n return directory;\n}\n\n/** Input path is repository-relative; callers must also reject symlink entries in Git trees. */\nexport function resolveDocsSourcePath(\n path: string,\n directory: string,\n explicitSlug?: string,\n) {\n const root = normalizeDocsSourceDirectory(directory);\n if (!path.startsWith(`${root}/`))\n throw new DocsContentError([\n diagnostic(\n \"INVALID_REFERENCE\",\n \"File is outside the configured docs directory.\",\n { file: path },\n ),\n ]);\n const relativePath = path.slice(root.length + 1);\n const segments = relativePath.split(\"/\");\n if (\n !relativePath.endsWith(\".md\") ||\n // biome-ignore lint/suspicious/noControlCharactersInRegex: Reject control characters in repository paths.\n /[\\\\\\u0000-\\u001f]/.test(relativePath) ||\n segments.some((segment) => !segment || segment === \".\" || segment === \"..\")\n )\n throw new DocsContentError([\n diagnostic(\"INVALID_REFERENCE\", \"Invalid Markdown source path.\", { file: path }),\n ]);\n const defaultSlug = relativePath.slice(0, -3).replace(/\\/index$/, \"\");\n const slug = normalizeDocsSlug(explicitSlug ?? defaultSlug);\n return {\n relativePath,\n slug,\n route: `/docs/${slug}`,\n sectionSlug: segments.length > 1 ? normalizePath(segments[0], false) : null,\n };\n}\n","import { parseDocument, stringify } from \"yaml\";\nimport { DOCS_LIMITS } from \"./validate\";\nimport { diagnostic, DocsContentError } from \"./diagnostics\";\nimport { isSafeDocsUrl } from \"./urls\";\nimport { normalizeDocsSlug } from \"./routes\";\n\nexport type PlainData =\n | null\n | string\n | number\n | boolean\n | PlainData[]\n | { [key: string]: PlainData };\nexport type DocsFrontmatter = Record<string, PlainData>;\n\n/** DM-SOURCE: unknown metadata is retained as bounded, inert plain data. */\nexport function requireDocsFrontmatter(value: unknown, file?: string): DocsFrontmatter {\n const fail = (message: string, fieldPath = \"frontmatter\"): never => {\n throw new DocsContentError([\n diagnostic(\"INVALID_FRONTMATTER\", message, { fieldPath, file }),\n ]);\n };\n let count = 0;\n function check(v: unknown, depth: number, path: string): void {\n if (++count > 2000 || depth > 16) fail(\"Metadata exceeds structural limits.\", path);\n if (\n v === null ||\n typeof v === \"string\" ||\n typeof v === \"boolean\" ||\n (typeof v === \"number\" && Number.isFinite(v))\n )\n return;\n if (Array.isArray(v)) {\n v.forEach((item, i) => {\n check(item, depth + 1, `${path}[${i}]`);\n });\n return;\n }\n if (\n typeof v !== \"object\" ||\n ![Object.prototype, null].includes(Object.getPrototypeOf(v))\n )\n fail(\"Metadata must contain only plain data.\", path);\n for (const [key, item] of Object.entries(v)) {\n if ([\"__proto__\", \"prototype\", \"constructor\"].includes(key))\n fail(\"Reserved metadata key.\", `${path}.${key}`);\n check(item, depth + 1, `${path}.${key}`);\n }\n }\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n fail(\"Frontmatter must be an object.\");\n check(value, 0, \"frontmatter\");\n const meta = value as DocsFrontmatter;\n if (new TextEncoder().encode(JSON.stringify(meta)).length > DOCS_LIMITS.metadataBytes)\n fail(\"Metadata exceeds size limit.\");\n if (typeof meta.title !== \"string\" || !meta.title.trim())\n fail(\"Title is required.\", \"frontmatter.title\");\n for (const key of [\"description\", \"slug\", \"nav_title\"])\n if (meta[key] !== undefined && typeof meta[key] !== \"string\")\n fail(`${key} must be a string.`, `frontmatter.${key}`);\n if (meta.slug !== undefined) {\n try {\n normalizeDocsSlug(meta.slug);\n } catch (error) {\n if (error instanceof DocsContentError)\n throw new DocsContentError(\n error.diagnostics.map((item) => ({\n ...item,\n fieldPath: \"frontmatter.slug\",\n file,\n })),\n );\n throw error;\n }\n }\n if (meta.nav_order !== undefined && !Number.isSafeInteger(meta.nav_order))\n fail(\"nav_order must be an integer.\", \"frontmatter.nav_order\");\n for (const key of [\"published\", \"indexable\"])\n if (meta[key] !== undefined && typeof meta[key] !== \"boolean\")\n fail(`${key} must be a boolean.`, `frontmatter.${key}`);\n if (meta.featured_image !== undefined) {\n const image = meta.featured_image;\n if (\n !image ||\n typeof image !== \"object\" ||\n Array.isArray(image) ||\n Object.keys(image).some((key) => ![\"url\", \"alt\"].includes(key)) ||\n !isSafeDocsUrl(image.url, true) ||\n typeof image.alt !== \"string\"\n )\n fail(\n \"featured_image must contain a stable HTTPS url and alt string.\",\n \"frontmatter.featured_image\",\n );\n }\n return meta;\n}\n\nexport function splitDocsFrontmatter(source: string, file?: string) {\n const normalized = source.replace(/^\\uFEFF/, \"\").replace(/\\r\\n?/g, \"\\n\");\n if (!normalized.startsWith(\"---\\n\"))\n throw new DocsContentError([\n diagnostic(\"INVALID_FRONTMATTER\", \"Markdown requires frontmatter with a title.\", {\n file,\n line: 1,\n column: 1,\n }),\n ]);\n const end = /^---[ \\t]*$/gm;\n end.lastIndex = 4;\n const delimiter = end.exec(normalized);\n if (!delimiter)\n throw new DocsContentError([\n diagnostic(\"INVALID_FRONTMATTER\", \"Frontmatter is not closed.\", {\n file,\n line: 1,\n column: 1,\n }),\n ]);\n const raw = normalized.slice(4, delimiter.index);\n if (new TextEncoder().encode(raw).length > DOCS_LIMITS.metadataBytes)\n throw new DocsContentError([\n diagnostic(\"INVALID_FRONTMATTER\", \"Frontmatter exceeds size limit.\", { file }),\n ]);\n const doc = parseDocument(raw, {\n schema: \"core\",\n uniqueKeys: true,\n strict: true,\n merge: false,\n });\n if (doc.errors.length || doc.warnings.length) {\n throw new DocsContentError(\n [...doc.errors, ...doc.warnings].map((error) => {\n const offset = error.pos[0];\n const prefix = raw.slice(0, offset);\n return diagnostic(\"INVALID_FRONTMATTER\", \"Invalid YAML frontmatter.\", {\n file,\n line: prefix.split(\"\\n\").length + 1,\n column: prefix.length - prefix.lastIndexOf(\"\\n\"),\n });\n }),\n );\n }\n let value: unknown;\n try {\n value = doc.toJS({ maxAliasCount: 0 });\n } catch {\n throw new DocsContentError([\n diagnostic(\"INVALID_FRONTMATTER\", \"YAML aliases are not supported.\", {\n file,\n line: 2,\n column: 1,\n }),\n ]);\n }\n let frontmatter: DocsFrontmatter;\n try {\n frontmatter = requireDocsFrontmatter(value, file);\n } catch (error) {\n if (!(error instanceof DocsContentError)) throw error;\n throw new DocsContentError(\n error.diagnostics.map((item) => {\n const key = item.fieldPath?.split(\".\")[1];\n const field = key ? doc.get(key, true) : undefined;\n const offset =\n field && typeof field === \"object\" && \"range\" in field\n ? (field.range?.[0] ?? 0)\n : 0;\n const prefix = raw.slice(0, offset);\n return {\n ...item,\n file,\n line: prefix.split(\"\\n\").length + 1,\n column: prefix.length - prefix.lastIndexOf(\"\\n\"),\n };\n }),\n );\n }\n const start =\n delimiter.index +\n delimiter[0].length +\n (normalized[delimiter.index + delimiter[0].length] === \"\\n\" ? 1 : 0);\n return {\n frontmatter,\n body: normalized.slice(start),\n lineOffset: normalized.slice(0, start).split(\"\\n\").length - 1,\n };\n}\n\nexport function serializeDocsFrontmatter(meta: DocsFrontmatter): string {\n return `---\\n${stringify(requireDocsFrontmatter(meta), { sortMapEntries: true, aliasDuplicateObjects: false, lineWidth: 0 })}---\\n\\n`;\n}\n","import type { JSONContent } from \"@tiptap/core\";\nimport type { Root, RootContent, PhrasingContent, Definition, Nodes } from \"mdast\";\nimport { unified, type Processor } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkStringify from \"remark-stringify\";\nimport { mdxJsx } from \"micromark-extension-mdx-jsx\";\nimport {\n mdxJsxFromMarkdown,\n mdxJsxToMarkdown,\n type MdxJsxAttribute,\n type MdxJsxExpressionAttribute,\n type MdxJsxFlowElement,\n type MdxJsxTextElement,\n} from \"mdast-util-mdx-jsx\";\nimport { parseExpressionAt, type Expression } from \"acorn\";\nimport { DocsContentError, diagnostic } from \"./diagnostics\";\nimport { requireDocsContent, DOCS_LIMITS } from \"./validate\";\nimport { docsSchema } from \"./extensions\";\nimport {\n splitDocsFrontmatter,\n serializeDocsFrontmatter,\n type DocsFrontmatter,\n} from \"./frontmatter\";\nimport { isSafeDocsUrl } from \"./urls\";\nimport { CALLOUT_TYPES, DOCS_BLOCK_COMPONENTS, type TypeTableRow } from \"./blocks\";\n\nexport const DOCS_PARSER_VERSION = 2;\n\n/** Rich blocks are MDX-style JSX tags. Only the tag syntax is enabled: braces in prose stay text. */\nfunction jsxTags(this: Processor) {\n const data = this.data();\n data.micromarkExtensions = [...(data.micromarkExtensions ?? []), mdxJsx()];\n data.fromMarkdownExtensions = [\n ...(data.fromMarkdownExtensions ?? []),\n mdxJsxFromMarkdown(),\n ];\n data.toMarkdownExtensions = [\n ...(data.toMarkdownExtensions ?? []),\n mdxJsxToMarkdown(),\n {\n // The stock handler indents children, which turns nested fences into indented code.\n handlers: { mdxJsxFlowElement: writeComponent as never },\n },\n ];\n}\n/** Children stay unindented, between blank lines, so code fences inside keep their meaning. */\nfunction writeComponent(\n node: MdxJsxFlowElement,\n _parent: unknown,\n state: { containerFlow(parent: MdxJsxFlowElement, info: unknown): string },\n info: unknown,\n): string {\n const props = node.attributes.map((attribute) => {\n const { name, value } = attribute as MdxJsxAttribute;\n if (value === null || value === undefined) return name;\n if (typeof value === \"string\")\n return `${name}=\"${value.replace(/&/g, \"&amp;\").replace(/\"/g, \"&quot;\")}\"`;\n return `${name}={${value.value}}`;\n });\n // Multi-line props (a type table) go one per line, as people write them by hand.\n const multiline = props.some((item) => item.includes(\"\\n\"));\n const open = multiline\n ? `<${node.name}\\n${props.map((item) => ` ${item}`).join(\"\\n\")}\\n`\n : `<${node.name}${props.map((item) => ` ${item}`).join(\"\")}`;\n if (!node.children.length) return `${open}${multiline ? \"\" : \" \"}/>`;\n const body = state.containerFlow(node, info);\n return `${open}>\\n\\n${body}\\n\\n</${node.name}>`;\n}\n\n/** As in MDX, indentation inside components is layout, not an indented code block. */\nfunction noIndentedCode(this: Processor) {\n const data = this.data();\n data.micromarkExtensions = [\n ...(data.micromarkExtensions ?? []),\n { disable: { null: [\"codeIndented\"] } },\n ];\n}\nconst parser = unified().use(remarkParse).use(remarkGfm);\nconst componentParser = unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(jsxTags)\n .use(noIndentedCode);\nconst writer = unified().use(remarkGfm).use(jsxTags).use(remarkStringify, {\n bullet: \"-\",\n emphasis: \"*\",\n strong: \"*\",\n fences: true,\n incrementListMarker: true,\n resourceLink: true,\n});\nconst COMPONENT_TAG = new RegExp(\n `<\\\\/?(?:${Object.keys(DOCS_BLOCK_COMPONENTS).join(\"|\")})\\\\b`,\n);\n\nconst CODE_TITLE = /^title=(?:\"([^\"\\n]+)\"|'([^'\\n]+)')$/;\nconst IDENTIFIER = /^[A-Za-z_$][\\w$]*$/;\nconst ICON = /^[A-Za-z][\\w-]*$/;\n/** Props each component accepts, and the only child a container may hold. */\nconst PROPS: Record<string, string[]> = {\n Callout: [\"type\", \"title\"],\n Tabs: [\"items\"],\n Tab: [\"value\"],\n Steps: [],\n Step: [],\n Cards: [],\n Card: [\"title\", \"href\", \"icon\"],\n Accordions: [\"type\"],\n Accordion: [\"title\"],\n CodeGroup: [],\n TypeTable: [\"type\"],\n};\nconst CHILD: Record<string, string> = {\n Tabs: \"Tab\",\n Steps: \"Step\",\n Cards: \"Card\",\n Accordions: \"Accordion\",\n};\nconst TYPE_TABLE_FIELDS = [\"type\", \"default\", \"description\", \"required\"];\n\n/** Files that use a rich-block tag follow MDX rules; all others stay plain CommonMark. */\nfunction parseTree(\n body: string,\n fail: (place: { line: number; column: number } | undefined, message: string) => never,\n): Root {\n if (!COMPONENT_TAG.test(body)) return parser.parse(body);\n try {\n return componentParser.parse(body);\n } catch (cause) {\n const {\n line,\n column,\n reason = String(cause),\n } = cause as {\n line?: number;\n column?: number;\n reason?: string;\n };\n // Unclosed-tag errors carry their position only in the message: \"(1:1-1:10)\".\n const place = /\\((\\d+):(\\d+)-/.exec(reason);\n return fail(\n line\n ? { line, column: column ?? 1 }\n : place\n ? { line: Number(place[1]), column: Number(place[2]) }\n : undefined,\n `Invalid component syntax: ${reason}`,\n );\n }\n}\n\n/** Evaluates a prop expression made only of literals: strings, numbers, booleans, null, arrays, objects. */\nfunction literal(source: string): unknown {\n const expression = parseExpressionAt(source, 0, { ecmaVersion: \"latest\" });\n if (source.slice(expression.end).trim()) throw new Error(\"Unexpected input.\");\n return evaluate(expression);\n}\nfunction evaluate(node: Expression): unknown {\n switch (node.type) {\n case \"Literal\":\n if (\n node.value === null ||\n [\"string\", \"number\", \"boolean\"].includes(typeof node.value)\n )\n return node.value;\n break;\n case \"TemplateLiteral\":\n if (!node.expressions.length) return node.quasis[0].value.cooked;\n break;\n case \"UnaryExpression\":\n if (\n node.operator === \"-\" &&\n node.argument.type === \"Literal\" &&\n typeof node.argument.value === \"number\"\n )\n return -node.argument.value;\n break;\n case \"ArrayExpression\":\n return node.elements.map((element) => {\n if (!element || element.type === \"SpreadElement\")\n throw new Error(\"Not literal.\");\n return evaluate(element);\n });\n case \"ObjectExpression\": {\n const output: Record<string, unknown> = {};\n for (const property of node.properties) {\n if (\n property.type !== \"Property\" ||\n property.kind !== \"init\" ||\n property.computed ||\n property.method ||\n property.shorthand\n )\n throw new Error(\"Not literal.\");\n const key =\n property.key.type === \"Identifier\"\n ? property.key.name\n : property.key.type === \"Literal\" && typeof property.key.value === \"string\"\n ? property.key.value\n : undefined;\n if (key === undefined || key === \"__proto__\" || Object.hasOwn(output, key))\n throw new Error(\"Not literal.\");\n output[key] = evaluate(property.value as Expression);\n }\n return output;\n }\n }\n throw new Error(\"Not literal.\");\n}\n\n/** A JS string literal, single-quoted when that avoids escaping double quotes. */\nfunction quote(value: string): string {\n return value.includes('\"') && !/['\\\\\\n]/.test(value)\n ? `'${value}'`\n : JSON.stringify(value);\n}\n\nfunction formatRows(rows: TypeTableRow[]): string {\n const lines = rows.map((row) => {\n const fields = [\n `type: ${quote(row.type)}`,\n ...(row.default === null ? [] : [`default: ${quote(row.default)}`]),\n ...(row.description === null ? [] : [`description: ${quote(row.description)}`]),\n ...(row.required ? [\"required: true\"] : []),\n ];\n const key = IDENTIFIER.test(row.name) ? row.name : JSON.stringify(row.name);\n return ` ${key}: { ${fields.join(\", \")} },`;\n });\n return `{\\n${lines.join(\"\\n\")}\\n }`;\n}\ntype Mark = NonNullable<JSONContent[\"marks\"]>[number];\n\n/** DM-CONVERT: CommonMark/GFM is parsed as data. Unsupported constructs fail closed. */\nexport function parseDocsMarkdown(\n markdown: string,\n options: { file?: string; frontmatter?: boolean } = {},\n) {\n if (\n typeof markdown !== \"string\" ||\n new TextEncoder().encode(markdown).length > DOCS_LIMITS.bytes\n )\n throw new DocsContentError([\n diagnostic(\"INVALID_DOCUMENT\", \"Markdown exceeds size limit.\", {\n file: options.file,\n }),\n ]);\n const source =\n options.frontmatter === false\n ? {\n body: markdown.replace(/\\r\\n?/g, \"\\n\"),\n lineOffset: 0,\n frontmatter: undefined,\n }\n : splitDocsFrontmatter(markdown, options.file);\n const tree = parseTree(source.body, (place, message) => {\n throw new DocsContentError([\n diagnostic(\"UNSUPPORTED_NODE\", message, {\n file: options.file,\n line: place ? place.line + source.lineOffset : undefined,\n column: place?.column,\n }),\n ]);\n });\n const definitions = new Map<string, Definition>();\n function error(node: Nodes, message: string, code = \"UNSUPPORTED_NODE\"): never {\n throw new DocsContentError([\n diagnostic(code, message, {\n file: options.file,\n line: node.position ? node.position.start.line + source.lineOffset : undefined,\n column: node.position?.start.column,\n }),\n ]);\n }\n let nodes = 0;\n function inspect(node: Nodes, depth: number) {\n if (++nodes > DOCS_LIMITS.nodes || depth > DOCS_LIMITS.depth)\n error(node, \"Markdown exceeds structural limits.\", \"INVALID_DOCUMENT\");\n if (node.type === \"definition\") definitions.set(node.identifier, node);\n if (\"children\" in node)\n for (const child of node.children) inspect(child, depth + 1);\n }\n inspect(tree, 0);\n function url(node: Nodes, value: string, image = false) {\n if (image && !/^[a-z]+:/i.test(value))\n error(\n node,\n \"Local image binaries must be uploaded to MediaLit.\",\n \"UNMANAGED_BINARY\",\n );\n if (!isSafeDocsUrl(value, image))\n error(node, \"URL is unsafe or expiring.\", \"UNSAFE_URL\");\n return value;\n }\n function inline(items: PhrasingContent[], marks: Mark[] = []): JSONContent[] {\n return items.flatMap((node): JSONContent[] => {\n switch (node.type) {\n case \"text\": {\n const raw = source.body.slice(\n node.position?.start.offset ?? 0,\n node.position?.end.offset ?? 0,\n );\n if (\n /(?<!\\\\)<\\/?[A-Za-z][^>]*>/.test(raw) ||\n /^(?:import|export)\\s/m.test(raw)\n )\n error(node, \"MDX/JSX and module syntax are unsupported.\");\n return node.value\n ? [{ type: \"text\", text: node.value, ...(marks.length ? { marks } : {}) }]\n : [];\n }\n case \"strong\":\n return inline(node.children, [...marks, { type: \"bold\" }]);\n case \"emphasis\":\n return inline(node.children, [...marks, { type: \"italic\" }]);\n case \"delete\":\n return inline(node.children, [...marks, { type: \"strike\" }]);\n case \"inlineCode\":\n return [\n { type: \"text\", text: node.value, marks: [...marks, { type: \"code\" }] },\n ];\n case \"break\":\n if (marks.length) error(node, \"Marked line breaks are unsupported.\");\n return [{ type: \"hardBreak\" }];\n case \"link\":\n return inline(node.children, [\n ...marks,\n {\n type: \"link\",\n attrs: { href: url(node, node.url), title: node.title ?? null },\n },\n ]);\n case \"linkReference\": {\n const def = definitions.get(node.identifier);\n if (!def) error(node, \"Missing link definition.\", \"BROKEN_LINK\");\n return inline(node.children, [\n ...marks,\n {\n type: \"link\",\n attrs: { href: url(node, def.url), title: def.title ?? null },\n },\n ]);\n }\n case \"mdxJsxTextElement\":\n return error(\n node,\n `Inline <${node.name ?? \"\"}> is unsupported. Put the component on its own lines.`,\n );\n default:\n return error(node, `Unsupported inline construct: ${node.type}.`);\n }\n });\n }\n function image(\n node: Extract<PhrasingContent, { type: \"image\" | \"imageReference\" }>,\n ): JSONContent {\n const def =\n node.type === \"imageReference\" ? definitions.get(node.identifier) : node;\n if (!def) error(node, \"Missing image definition.\", \"BROKEN_LINK\");\n return {\n type: \"image\",\n attrs: {\n src: url(node, def.url, true),\n alt: node.alt ?? \"\",\n title: def.title ?? null,\n },\n };\n }\n function props(node: MdxJsxFlowElement | MdxJsxTextElement) {\n const name = node.name ?? \"\";\n const output: Record<string, unknown> = {};\n for (const attribute of node.attributes as (\n | MdxJsxAttribute\n | MdxJsxExpressionAttribute\n )[]) {\n if (attribute.type === \"mdxJsxExpressionAttribute\")\n error(node, \"Spread props are unsupported.\", \"UNSUPPORTED_ATTRIBUTE\");\n if (!PROPS[name].includes(attribute.name))\n error(\n node,\n `Unsupported <${name}> prop: ${attribute.name}.`,\n \"UNSUPPORTED_ATTRIBUTE\",\n );\n const value = attribute.value;\n const icon =\n name === \"Card\" &&\n attribute.name === \"icon\" &&\n typeof value === \"object\" &&\n value\n ? /^\\s*<([A-Za-z][\\w-]*)\\s*\\/>\\s*$/.exec(value.value)\n : null;\n if (value === null || value === undefined) output[attribute.name] = true;\n else if (typeof value === \"string\") output[attribute.name] = value;\n else if (icon) output.icon = icon[1];\n else\n try {\n output[attribute.name] = literal(value.value);\n } catch {\n error(\n node,\n `<${name}> prop ${attribute.name} must be a literal value.`,\n \"UNSUPPORTED_ATTRIBUTE\",\n );\n }\n }\n return output;\n }\n function component(\n node: MdxJsxFlowElement | MdxJsxTextElement,\n children: RootContent[],\n parent?: string,\n ): JSONContent {\n const name = node.name ?? \"\";\n if (!Object.hasOwn(PROPS, name))\n error(\n node,\n `Unknown component <${name}>. Use a supported block or plain Markdown.`,\n );\n const container = Object.keys(CHILD).find((key) => CHILD[key] === name);\n if (container && parent !== container)\n error(node, `<${name}> must be inside <${container}>.`);\n const p = props(node);\n const label = (prop: string, required: boolean): string | null => {\n const value = p[prop];\n if (value === undefined && !required) return null;\n if (typeof value !== \"string\")\n error(node, `<${name}> needs a text ${prop} prop.`, \"INVALID_DOCUMENT\");\n return value;\n };\n // An empty block is an empty paragraph, as the editor inserts it.\n const content = (optional = false) => {\n const output = children.flatMap(block);\n return output.length || optional ? output : [{ type: \"paragraph\" }];\n };\n const items = () => {\n const output = children\n .filter((child) => child.type !== \"definition\")\n .map((child) => {\n if (child.type !== \"mdxJsxFlowElement\" || child.name !== CHILD[name])\n error(child, `<${name}> can only contain <${CHILD[name]}>.`);\n return child;\n });\n if (!output.length)\n error(\n node,\n `<${name}> needs at least one <${CHILD[name]}>.`,\n \"INVALID_DOCUMENT\",\n );\n return output;\n };\n const nested = () =>\n items().map((child) => component(child, child.children as RootContent[], name));\n switch (name) {\n case \"Callout\": {\n const type = p.type ?? null;\n if (type !== null && !CALLOUT_TYPES.includes(type as never))\n error(\n node,\n `Callout type must be one of: ${CALLOUT_TYPES.join(\", \")}.`,\n \"UNSUPPORTED_ATTRIBUTE\",\n );\n return {\n type: \"callout\",\n attrs: { type, title: label(\"title\", false) },\n content: content(),\n };\n }\n case \"Tabs\": {\n const listed = p.items;\n if (\n listed !== undefined &&\n !(Array.isArray(listed) && listed.every((item) => typeof item === \"string\"))\n )\n error(\n node,\n \"<Tabs> items must be a list of strings.\",\n \"UNSUPPORTED_ATTRIBUTE\",\n );\n const tabs = nested().map((tab, i) => {\n const value: string =\n tab.attrs!.label ?? (listed as string[] | undefined)?.[i] ?? \"\";\n if (listed && !(listed as string[]).includes(value))\n error(\n node,\n `Tab value \"${value}\" is not listed in items.`,\n \"INVALID_DOCUMENT\",\n );\n return { ...tab, attrs: { label: value } };\n });\n return { type: \"tabs\", content: tabs };\n }\n case \"Tab\":\n return {\n type: \"tab\",\n attrs: { label: label(\"value\", false) },\n content: content(),\n };\n case \"Steps\":\n return { type: \"steps\", content: nested() };\n case \"Step\":\n return { type: \"step\", content: content() };\n case \"Cards\":\n return { type: \"cards\", content: nested() };\n case \"Card\": {\n const href = label(\"href\", false);\n if (href !== null && !isSafeDocsUrl(href))\n error(node, \"Card link URL is unsafe.\", \"UNSAFE_URL\");\n const icon = label(\"icon\", false);\n if (icon !== null && !ICON.test(icon))\n error(node, \"Card icon must be an icon name.\", \"UNSUPPORTED_ATTRIBUTE\");\n const body = content(true);\n return {\n type: \"card\",\n attrs: { title: label(\"title\", true), href, icon },\n ...(body.length ? { content: body } : {}),\n };\n }\n case \"Accordions\": {\n const type = p.type ?? null;\n if (type !== null && type !== \"single\" && type !== \"multiple\")\n error(\n node,\n 'Accordions type must be \"single\" or \"multiple\".',\n \"UNSUPPORTED_ATTRIBUTE\",\n );\n return { type: \"accordions\", attrs: { type }, content: nested() };\n }\n case \"Accordion\":\n return {\n type: \"accordion\",\n attrs: { title: label(\"title\", true) },\n content: content(),\n };\n case \"CodeGroup\": {\n for (const child of children)\n if (child.type !== \"code\")\n error(child, \"<CodeGroup> can only contain code blocks.\");\n return { type: \"codeGroup\", content: content() };\n }\n default: {\n if (children.length) error(node, \"<TypeTable> cannot have children.\");\n const type = p.type;\n if (!type || typeof type !== \"object\" || Array.isArray(type))\n error(node, \"<TypeTable> needs a type={{ … }} prop.\", \"INVALID_DOCUMENT\");\n const rows = Object.entries(type as Record<string, unknown>).map(\n ([field, entry]) => {\n const value = entry as Record<string, unknown>;\n if (\n !value ||\n typeof value !== \"object\" ||\n Array.isArray(value) ||\n typeof value.type !== \"string\" ||\n Object.keys(value).some((key) => !TYPE_TABLE_FIELDS.includes(key)) ||\n ![\"string\", \"undefined\"].includes(typeof value.default) ||\n ![\"string\", \"undefined\"].includes(typeof value.description) ||\n ![\"boolean\", \"undefined\"].includes(typeof value.required)\n )\n error(\n node,\n `<TypeTable> field ${field} needs a string type and only string default/description and boolean required.`,\n \"UNSUPPORTED_ATTRIBUTE\",\n );\n return {\n name: field,\n type: value.type as string,\n default: (value.default as string | undefined) ?? null,\n description: (value.description as string | undefined) ?? null,\n required: (value.required as boolean | undefined) ?? false,\n };\n },\n );\n return { type: \"typeTable\", attrs: { rows } };\n }\n }\n }\n function block(node: RootContent): JSONContent[] {\n switch (node.type) {\n case \"definition\":\n return [];\n case \"paragraph\": {\n const only = node.children.length === 1 ? node.children[0] : undefined;\n if (only?.type === \"mdxJsxTextElement\")\n return [\n component(\n only,\n only.children.length\n ? [{ type: \"paragraph\", children: only.children }]\n : [],\n ),\n ];\n if (\n node.children.length === 1 &&\n [\"image\", \"imageReference\"].includes(node.children[0].type)\n )\n return [\n image(\n node.children[0] as Extract<\n PhrasingContent,\n { type: \"image\" | \"imageReference\" }\n >,\n ),\n ];\n return [{ type: \"paragraph\", content: inline(node.children) }];\n }\n case \"heading\":\n return [\n {\n type: \"heading\",\n attrs: { level: node.depth },\n content: inline(node.children),\n },\n ];\n case \"blockquote\":\n return [{ type: \"blockquote\", content: node.children.flatMap(block) }];\n case \"thematicBreak\":\n return [{ type: \"horizontalRule\" }];\n case \"code\": {\n // Without a language, remark reads `title=\"…\"` itself as the language.\n const untitled = node.lang?.startsWith(\"title=\");\n const meta = untitled\n ? [node.lang, node.meta].filter(Boolean).join(\" \")\n : node.meta;\n const lang = untitled ? null : node.lang;\n const title = meta ? CODE_TITLE.exec(meta.trim()) : null;\n if (meta && !title)\n error(\n node,\n 'Code fence metadata other than title=\"…\" is unsupported.',\n \"UNSUPPORTED_ATTRIBUTE\",\n );\n return [\n {\n type: \"codeBlock\",\n attrs: {\n language: lang ?? null,\n ...(title ? { title: title[1] ?? title[2] } : {}),\n },\n content: node.value ? [{ type: \"text\", text: node.value }] : [],\n },\n ];\n }\n case \"mdxJsxFlowElement\":\n return [component(node, node.children as RootContent[])];\n case \"html\": {\n const tag = /^<([A-Z][\\w.]*)/.exec(node.value);\n return error(\n node,\n tag\n ? `Unknown component <${tag[1]}>. Use a supported block or plain Markdown.`\n : \"Raw HTML is unsupported.\",\n );\n }\n case \"list\":\n return [\n {\n type: node.ordered ? \"orderedList\" : \"bulletList\",\n ...(node.ordered ? { attrs: { start: node.start ?? 1 } } : {}),\n content: node.children.map((item) => {\n if (item.checked !== null && item.checked !== undefined)\n error(item, \"Task lists are unsupported.\");\n const content = item.children.flatMap(block);\n return {\n type: \"listItem\",\n content: content.length ? content : [{ type: \"paragraph\" }],\n };\n }),\n },\n ];\n case \"table\":\n if (node.align?.some((alignment) => alignment !== null))\n error(node, \"Table alignment is unsupported.\", \"UNSUPPORTED_ATTRIBUTE\");\n return [\n {\n type: \"table\",\n content: node.children.map((row, i) => ({\n type: \"tableRow\",\n content: row.children.map((cell) => ({\n type: i === 0 ? \"tableHeader\" : \"tableCell\",\n content: [{ type: \"paragraph\", content: inline(cell.children) }],\n })),\n })),\n },\n ];\n default:\n return error(node, `Unsupported block construct: ${node.type}.`);\n }\n }\n const content = requireDocsContent({\n type: \"doc\",\n content: tree.children.flatMap(block),\n });\n return { content, frontmatter: source.frontmatter };\n}\n\n/** Build mark runs rather than wrapping each text separately (adjacent delimiters are ambiguous). */\nfunction toInline(children: JSONContent[]): PhrasingContent[] {\n const rank = [\"link\", \"bold\", \"italic\", \"strike\", \"code\"];\n const nodes = children.map((node) => ({\n ...node,\n marks: [...(node.marks ?? [])].sort(\n (a, b) => rank.indexOf(a.type) - rank.indexOf(b.type),\n ),\n }));\n function group(items: JSONContent[], depth: number): PhrasingContent[] {\n const output: PhrasingContent[] = [];\n for (let i = 0; i < items.length; ) {\n const node = items[i];\n const mark = node.marks?.[depth];\n if (!mark) {\n if (node.type === \"hardBreak\") output.push({ type: \"break\" });\n else output.push({ type: \"text\", value: node.text! });\n i++;\n continue;\n }\n let end = i + 1;\n while (\n end < items.length &&\n JSON.stringify(items[end].marks?.[depth]) === JSON.stringify(mark)\n )\n end++;\n const children = group(items.slice(i, end), depth + 1);\n switch (mark.type) {\n case \"link\":\n output.push({\n type: \"link\",\n url: mark.attrs!.href,\n title: mark.attrs?.title ?? null,\n children,\n });\n break;\n case \"bold\":\n output.push({ type: \"strong\", children });\n break;\n case \"italic\":\n output.push({ type: \"emphasis\", children });\n break;\n case \"strike\":\n output.push({ type: \"delete\", children });\n break;\n case \"code\":\n output.push({\n type: \"inlineCode\",\n value: items\n .slice(i, end)\n .map((item) => item.text)\n .join(\"\"),\n });\n break;\n }\n i = end;\n }\n return output;\n }\n return group(nodes, 0);\n}\n\nexport function serializeDocsMarkdown(\n input: unknown,\n frontmatter?: DocsFrontmatter,\n): string {\n const content = requireDocsContent(input);\n const prop = (\n name: string,\n value: string | null | undefined,\n expression = false,\n ): MdxJsxAttribute | undefined =>\n value === null || value === undefined\n ? undefined\n : {\n type: \"mdxJsxAttribute\",\n name,\n value: expression ? { type: \"mdxJsxAttributeValueExpression\", value } : value,\n };\n function element(\n name: string,\n attributes: (MdxJsxAttribute | undefined)[],\n content: JSONContent[],\n nested?: () => MdxJsxFlowElement[],\n ): MdxJsxFlowElement {\n return {\n type: \"mdxJsxFlowElement\",\n name,\n attributes: attributes.filter((item) => item !== undefined),\n children: (nested\n ? nested()\n : content.map(block)) as MdxJsxFlowElement[\"children\"],\n };\n }\n function block(node: JSONContent): RootContent {\n const children = node.content ?? [];\n switch (node.type) {\n case \"paragraph\":\n return { type: \"paragraph\", children: toInline(children) };\n case \"heading\":\n return {\n type: \"heading\",\n depth: node.attrs!.level,\n children: toInline(children),\n };\n case \"horizontalRule\":\n return { type: \"thematicBreak\" };\n case \"image\":\n return {\n type: \"paragraph\",\n children: [\n {\n type: \"image\",\n url: node.attrs!.src,\n alt: node.attrs?.alt ?? \"\",\n title: node.attrs?.title ?? null,\n },\n ],\n };\n case \"codeBlock\": {\n const title: string | null = node.attrs?.title ?? null;\n const language: string | null = node.attrs?.language ?? null;\n const meta = title\n ? title.includes('\"')\n ? `title='${title}'`\n : `title=\"${title}\"`\n : null;\n // remark drops meta when there is no language; write it as the info string.\n return {\n type: \"code\",\n lang: language ?? meta,\n meta: language ? meta : null,\n value: children.map((child) => child.text ?? \"\").join(\"\"),\n };\n }\n case \"callout\":\n return element(\n \"Callout\",\n [prop(\"type\", node.attrs?.type), prop(\"title\", node.attrs?.title)],\n children,\n );\n case \"tabs\": {\n const labels = children.map((tab) => quote(tab.attrs!.label));\n return element(\n \"Tabs\",\n [prop(\"items\", `[${labels.join(\", \")}]`, true)],\n [],\n () =>\n children.map((tab) =>\n element(\"Tab\", [prop(\"value\", tab.attrs!.label)], tab.content ?? []),\n ),\n );\n }\n case \"steps\":\n return element(\"Steps\", [], [], () =>\n children.map((step) => element(\"Step\", [], step.content ?? [])),\n );\n case \"cards\":\n return element(\"Cards\", [], [], () =>\n children.map((card) =>\n element(\n \"Card\",\n [\n prop(\"title\", card.attrs!.title),\n prop(\"href\", card.attrs?.href),\n prop(\"icon\", card.attrs?.icon ? `<${card.attrs.icon} />` : null, true),\n ],\n card.content ?? [],\n ),\n ),\n );\n case \"accordions\":\n return element(\"Accordions\", [prop(\"type\", node.attrs?.type)], [], () =>\n children.map((item) =>\n element(\n \"Accordion\",\n [prop(\"title\", item.attrs!.title)],\n item.content ?? [],\n ),\n ),\n );\n case \"codeGroup\":\n return element(\"CodeGroup\", [], children);\n case \"typeTable\":\n return element(\n \"TypeTable\",\n [prop(\"type\", formatRows(node.attrs?.rows ?? []), true)],\n [],\n );\n case \"blockquote\":\n return {\n type: \"blockquote\",\n children: children.map(block) as Extract<\n RootContent,\n { type: \"blockquote\" }\n >[\"children\"],\n };\n case \"bulletList\":\n case \"orderedList\":\n return {\n type: \"list\",\n ordered: node.type === \"orderedList\",\n start: node.type === \"orderedList\" ? (node.attrs?.start ?? 1) : null,\n spread: true,\n children: children.map((item) => ({\n type: \"listItem\",\n spread: true,\n children: (item.content ?? []).map(block) as Extract<\n RootContent,\n { type: \"listItem\" }\n >[\"children\"],\n })),\n };\n case \"table\":\n return {\n type: \"table\",\n children: children.map((row) => ({\n type: \"tableRow\",\n children: (row.content ?? []).map((cell) => ({\n type: \"tableCell\",\n children: toInline(cell.content![0].content ?? []),\n })),\n })),\n };\n default:\n throw new DocsContentError([\n diagnostic(\"UNSUPPORTED_NODE\", `Cannot serialize ${node.type}.`),\n ]);\n }\n }\n const tree: Root = { type: \"root\", children: (content.content ?? []).map(block) };\n const markdown = writer.stringify(tree);\n // A serializer must never silently change semantic structure (e.g. empty blocks).\n const roundtrip = parseDocsMarkdown(markdown, { frontmatter: false }).content;\n // Markdown does not encode blank paragraph spacing. Ignore empty paragraphs\n // in semantic comparisons, keeping one where the node needs content (a new\n // callout or table cell); retain them all in canonical editor JSON.\n const semantic = (node: JSONContent): JSONContent => {\n if (!node.content) return node;\n const children = node.content\n .filter((child) => child.type !== \"paragraph\" || child.content?.length)\n .map(semantic);\n const required =\n node.type !== \"doc\" && !docsSchema.nodes[node.type!].contentMatch.validEnd;\n if (children.length) return { ...node, content: children };\n if (required) return { ...node, content: [{ type: \"paragraph\" }] };\n const { content: _empty, ...rest } = node;\n return node.type === \"doc\" ? { ...rest, content: [] } : rest;\n };\n if (JSON.stringify(semantic(roundtrip)) !== JSON.stringify(semantic(content)))\n throw new DocsContentError([\n diagnostic(\n \"INVALID_DOCUMENT\",\n \"Content has no lossless Markdown representation.\",\n ),\n ]);\n return (frontmatter ? serializeDocsFrontmatter(frontmatter) : \"\") + markdown;\n}\n","import { DOCS_SCHEMA_VERSION } from \"./extensions\";\nimport { DOCS_PARSER_VERSION } from \"./markdown\";\nimport { DOCS_HEADING_POLICY_VERSION } from \"./headings\";\nimport { requireDocsContent } from \"./validate\";\nimport type { DocsFrontmatter, PlainData } from \"./frontmatter\";\n\nfunction stable(value: PlainData): PlainData {\n if (Array.isArray(value)) return value.map(stable);\n if (value && typeof value === \"object\")\n return Object.fromEntries(\n Object.keys(value)\n .sort()\n .map((key) => [key, stable(value[key])]),\n );\n return value;\n}\n\n/** DM-CONVERT: include conversion and retrieval versions in immutable content identities. */\nexport async function hashDocsContent(input: {\n content: unknown;\n metadata: DocsFrontmatter;\n embeddingConfigurationVersion: string;\n}): Promise<string> {\n const canonical = stable({\n content: requireDocsContent(input.content) as PlainData,\n metadata: input.metadata,\n versions: {\n schema: DOCS_SCHEMA_VERSION,\n parser: DOCS_PARSER_VERSION,\n headings: DOCS_HEADING_POLICY_VERSION,\n embeddingConfiguration: input.embeddingConfigurationVersion,\n },\n });\n const bytes = new TextEncoder().encode(JSON.stringify(canonical));\n const digest = await globalThis.crypto.subtle.digest(\"SHA-256\", bytes);\n return [...new Uint8Array(digest)]\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n"]}