@almadar/core 11.3.0 → 11.4.0

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.
Files changed (92) hide show
  1. package/dist/behavior-package.js +1 -3
  2. package/dist/{builders-DXPLnmJy.d.ts → builders-CAQ_shuO.d.ts} +273 -273
  3. package/dist/builders.d.ts +6 -6
  4. package/dist/builders.js +8 -10
  5. package/dist/{bus-CRxTnebm.d.ts → bus-QFvlnIfW.d.ts} +113 -438
  6. package/dist/{chunk-B4MNHGBP.js → chunk-5IRZ6ROW.js} +0 -2
  7. package/dist/{chunk-7NDAXM2Z.js → chunk-6XYHVJ4J.js} +1 -3
  8. package/dist/{chunk-2NKK2X53.js → chunk-7JO77HA6.js} +1 -3
  9. package/dist/chunk-AIRZM37O.js +3809 -0
  10. package/dist/{chunk-RGACZEYC.js → chunk-DDBAQMWA.js} +0 -2
  11. package/dist/{chunk-XBWV3DXX.js → chunk-DHWP7B4S.js} +142 -7
  12. package/dist/{chunk-7GHJU5WI.js → chunk-GNLND5O2.js} +0 -2
  13. package/dist/{chunk-PYYHDYTD.js → chunk-ISAUHHDU.js} +1 -3
  14. package/dist/{chunk-M4S2B5VJ.js → chunk-IU3WGC6Q.js} +0 -2
  15. package/dist/{chunk-VIHQKKTZ.js → chunk-JCRN3F6T.js} +10 -12
  16. package/dist/{chunk-7B4JRMRL.js → chunk-JPJQCTJI.js} +12 -6
  17. package/dist/{chunk-6H3UIZR2.js → chunk-O2ZUOWNK.js} +4 -6
  18. package/dist/{chunk-DNS4GKQV.js → chunk-OLSKERKZ.js} +51 -46
  19. package/dist/{chunk-N3CK4AYW.js → chunk-QV6J4EAF.js} +560 -58
  20. package/dist/{chunk-347APWFM.js → chunk-R3Y7ABF4.js} +2 -4
  21. package/dist/{chunk-3DZOFI53.js → chunk-TOAMAGC7.js} +2 -4
  22. package/dist/{chunk-LPJ7GKRM.js → chunk-UCP26C3C.js} +4 -6
  23. package/dist/{chunk-VG7BRFUD.js → chunk-W3UJRSYC.js} +0 -2
  24. package/dist/{effect-C2VKm6kk.d.ts → effect--PY8R4Oi.d.ts} +84 -50
  25. package/dist/{effect-result-BFNANDJ-.d.ts → effect-result-fH1ZTxn6.d.ts} +59 -38
  26. package/dist/{expression-DirYKz-f.d.ts → expression-DxY6ct3t.d.ts} +1 -1
  27. package/dist/factory/index.d.ts +3 -3
  28. package/dist/factory/index.js +8 -10
  29. package/dist/factory-runtime/index.d.ts +4 -4
  30. package/dist/factory-runtime/index.js +15 -17
  31. package/dist/fixtures.d.ts +8 -7
  32. package/dist/fixtures.js +6 -8
  33. package/dist/i18n/index.js +2 -4
  34. package/dist/{index-DuHpwitt.d.ts → index-Dk2AoJdI.d.ts} +44 -31
  35. package/dist/index.d.ts +17 -19
  36. package/dist/index.js +23 -25
  37. package/dist/kernel-wire.d.ts +3 -3
  38. package/dist/kernel-wire.js +3 -5
  39. package/dist/language/constructs.json +5 -0
  40. package/dist/language/program-types.json +6 -0
  41. package/dist/language/validation-codes.json +135 -0
  42. package/dist/language/vocabulary.json +45 -1
  43. package/dist/language-data.js +3 -5
  44. package/dist/lolo-document/index.js +0 -2
  45. package/dist/patterns/component-mapping.json +1 -1
  46. package/dist/patterns/definitions.d.ts +2 -2
  47. package/dist/patterns/definitions.js +1 -3
  48. package/dist/patterns/event-contracts.json +1 -1
  49. package/dist/patterns/index.d.ts +9 -3
  50. package/dist/patterns/index.js +3 -5
  51. package/dist/patterns/patterns-registry.json +560 -56
  52. package/dist/patterns/registry.json +560 -56
  53. package/dist/themes/index.js +2 -4
  54. package/dist/{trait-Cv3HTGFL.d.ts → trait-BO2gbBte.d.ts} +82 -92
  55. package/dist/types/index.d.ts +9 -9
  56. package/dist/types/index.js +12 -14
  57. package/dist/{types-wWEqi7vj.d.ts → types-CSBhbbse.d.ts} +3 -3
  58. package/package.json +6 -6
  59. package/dist/behavior-package.js.map +0 -1
  60. package/dist/builders.js.map +0 -1
  61. package/dist/chunk-2NKK2X53.js.map +0 -1
  62. package/dist/chunk-347APWFM.js.map +0 -1
  63. package/dist/chunk-3DZOFI53.js.map +0 -1
  64. package/dist/chunk-6H3UIZR2.js.map +0 -1
  65. package/dist/chunk-7B4JRMRL.js.map +0 -1
  66. package/dist/chunk-7GHJU5WI.js.map +0 -1
  67. package/dist/chunk-7NDAXM2Z.js.map +0 -1
  68. package/dist/chunk-B4MNHGBP.js.map +0 -1
  69. package/dist/chunk-DNS4GKQV.js.map +0 -1
  70. package/dist/chunk-LPJ7GKRM.js.map +0 -1
  71. package/dist/chunk-M4S2B5VJ.js.map +0 -1
  72. package/dist/chunk-N3CK4AYW.js.map +0 -1
  73. package/dist/chunk-PYYHDYTD.js.map +0 -1
  74. package/dist/chunk-RGACZEYC.js.map +0 -1
  75. package/dist/chunk-VG7BRFUD.js.map +0 -1
  76. package/dist/chunk-VIHQKKTZ.js.map +0 -1
  77. package/dist/chunk-XBWV3DXX.js.map +0 -1
  78. package/dist/chunk-ZDIHVDTW.js +0 -3810
  79. package/dist/chunk-ZDIHVDTW.js.map +0 -1
  80. package/dist/factory/index.js.map +0 -1
  81. package/dist/factory-runtime/index.js.map +0 -1
  82. package/dist/fixtures.js.map +0 -1
  83. package/dist/i18n/index.js.map +0 -1
  84. package/dist/index.js.map +0 -1
  85. package/dist/kernel-wire.js.map +0 -1
  86. package/dist/language-data.js.map +0 -1
  87. package/dist/lolo-document/index.js.map +0 -1
  88. package/dist/patterns/definitions.js.map +0 -1
  89. package/dist/patterns/index.js.map +0 -1
  90. package/dist/themes/index.js.map +0 -1
  91. package/dist/types/index.js.map +0 -1
  92. package/dist/{domain-WtYcvBMH.d.ts → domain-Cpmja5ak.d.ts} +51 -51
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lolo-document/index.ts"],"names":["at","line"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * lolo-document — structural index + text-span mutations over a `.lolo` source\n * (moved from Kura's scene editor so every editor of `.lolo` shares one owner).\n *\n * NOT a lolo parser: `orbital-lolo` (the `orb` binary) is the parser of record and the\n * server's emit + validate is the correctness gate after every mutation. This module only\n * locates the constructs the editor mutates (uses / entity / traits / config entries /\n * events / listens / pages) as byte spans and produces `TextEdit[]`; every byte outside a\n * touched span is preserved verbatim, so `applyEdits(text, [])` is the identity.\n */\n\nexport interface Span {\n start: number;\n end: number;\n}\n\nexport interface TextEdit {\n start: number;\n end: number;\n insert: string;\n}\n\nexport type LoloValue =\n | string\n | number\n | boolean\n | null\n | ReadonlyArray<LoloValue>\n | { readonly [key: string]: LoloValue };\n\nexport interface UsesDecl {\n alias: string;\n from: string;\n span: Span;\n}\n\nexport interface TypeDecl {\n name: string;\n span: Span;\n}\n\nexport interface EntityFieldDecl {\n name: string;\n type: string;\n span: Span;\n}\n\nexport interface EntityDecl {\n name: string;\n tags: string;\n fields: EntityFieldDecl[];\n span: Span;\n bodySpan: Span;\n}\n\nexport interface ConfigEntry {\n key: string;\n /** Present for inline (typed) config declarations: `key : Type = value`. */\n type?: string;\n valueSpan: Span;\n rawValue: string;\n span: Span;\n}\n\nexport interface EventsEntry {\n upstream: string;\n local: string;\n span: Span;\n}\n\nexport interface BlockDecl {\n span: Span;\n bodySpan: Span;\n}\n\nexport interface ConfigBlock extends BlockDecl {\n entries: ConfigEntry[];\n}\n\nexport interface EventsBlock extends BlockDecl {\n entries: EventsEntry[];\n}\n\nexport interface TraitDecl {\n name: string;\n inline: boolean;\n alias?: string;\n trait?: string;\n entity?: string;\n rebindable: boolean;\n span: Span;\n bodySpan: Span;\n config?: ConfigBlock;\n events?: EventsBlock;\n listens?: BlockDecl;\n stateBlocks: Array<{ name: string; span: Span }>;\n}\n\nexport interface PageDecl {\n path: string;\n name?: string;\n traits: string[];\n /** The ` ->` token (leading whitespace included); absent for a trait-less page. */\n arrowSpan?: Span;\n /** The trait list after `->`; for a trait-less page, the empty insertion point after the head. */\n traitsSpan: Span;\n span: Span;\n}\n\nexport interface LoloDocument {\n text: string;\n app?: { name: string; version: string; span: Span };\n orbital: { name: string; span: Span; bodySpan: Span };\n uses: UsesDecl[];\n types: TypeDecl[];\n entities: EntityDecl[];\n traits: TraitDecl[];\n pages: PageDecl[];\n /** Indentation (whitespace string) of the orbital's direct children. */\n indent: string;\n}\n\nexport interface ListenRoute {\n source: string;\n event: string;\n local: string;\n}\n\n// ---------------------------------------------------------------------------\n// Scanning helpers (string- and comment-aware)\n// ---------------------------------------------------------------------------\n\nfunction isIdentStart(ch: string): boolean {\n return /[A-Za-z_@]/.test(ch);\n}\n\n/** Skip a string literal starting at `i` (which must be `\"`); returns index after the closing quote. */\nfunction skipString(text: string, i: number): number {\n let j = i + 1;\n while (j < text.length) {\n const ch = text[j];\n if (ch === '\\\\') {\n j += 2;\n continue;\n }\n if (ch === '\"') return j + 1;\n j++;\n }\n return text.length;\n}\n\n/** Skip a `;;` or `#` line comment (or `#= … =#` block comment) starting at `i`. */\nfunction skipComment(text: string, i: number): number {\n if (text.startsWith('#=', i)) {\n const end = text.indexOf('=#', i + 2);\n return end === -1 ? text.length : end + 2;\n }\n const nl = text.indexOf('\\n', i);\n return nl === -1 ? text.length : nl;\n}\n\nfunction isCommentStart(text: string, i: number): boolean {\n return text.startsWith(';;', i) || text[i] === '#';\n}\n\n/**\n * Find the index of the matching closing delimiter for the opener at `openIdx`.\n * Respects strings and comments. Returns -1 when unbalanced.\n */\nexport function matchDelimiter(text: string, openIdx: number): number {\n const open = text[openIdx];\n const close = open === '{' ? '}' : open === '[' ? ']' : open === '(' ? ')' : '';\n if (close === '') return -1;\n let depth = 0;\n let i = openIdx;\n while (i < text.length) {\n const ch = text[i];\n if (ch === '\"') {\n i = skipString(text, i);\n continue;\n }\n if (isCommentStart(text, i)) {\n i = skipComment(text, i);\n continue;\n }\n if (ch === '{' || ch === '[' || ch === '(') depth++;\n else if (ch === '}' || ch === ']' || ch === ')') {\n depth--;\n if (depth === 0) return i;\n }\n i++;\n }\n return -1;\n}\n\n/** End index (exclusive) of a value that starts at `start`: balanced through braces/brackets, stopping at a newline at depth 0. */\nfunction scanValueEnd(text: string, start: number, stopBefore: number): number {\n let i = start;\n let depth = 0;\n while (i < stopBefore) {\n const ch = text[i];\n if (ch === '\"') {\n i = skipString(text, i);\n continue;\n }\n if (isCommentStart(text, i)) break;\n if (ch === '{' || ch === '[' || ch === '(') depth++;\n else if (ch === '}' || ch === ']' || ch === ')') {\n if (depth === 0) break;\n depth--;\n } else if (ch === '\\n' && depth === 0) break;\n i++;\n }\n // trim trailing whitespace inside the value span\n let end = i;\n while (end > start && /\\s/.test(text[end - 1])) end--;\n return end;\n}\n\nexport function lineStart(text: string, idx: number): number {\n const nl = text.lastIndexOf('\\n', idx - 1);\n return nl === -1 ? 0 : nl + 1;\n}\n\nfunction lineEnd(text: string, idx: number): number {\n const nl = text.indexOf('\\n', idx);\n return nl === -1 ? text.length : nl;\n}\n\nfunction indentOf(text: string, idx: number): string {\n const ls = lineStart(text, idx);\n const m = /^[ \\t]*/.exec(text.slice(ls, lineEnd(text, ls)));\n return m ? m[0] : '';\n}\n\n/**\n * Iterate the direct-child statements of a `{ … }` body: yields the start index of each\n * statement (first non-whitespace char of a line at depth 0 inside the body).\n */\nfunction* statementStarts(text: string, bodySpan: Span): Generator<number> {\n let i = bodySpan.start;\n let depth = 0;\n let atLineStart = true;\n while (i < bodySpan.end) {\n const ch = text[i];\n if (ch === '\"') {\n i = skipString(text, i);\n atLineStart = false;\n continue;\n }\n if (isCommentStart(text, i)) {\n i = skipComment(text, i);\n continue;\n }\n if (ch === '\\n') {\n atLineStart = true;\n i++;\n continue;\n }\n if (/\\s/.test(ch)) {\n i++;\n continue;\n }\n if (depth === 0 && atLineStart && isIdentStart(ch)) {\n yield i;\n }\n atLineStart = false;\n if (ch === '{' || ch === '[' || ch === '(') depth++;\n else if (ch === '}' || ch === ']' || ch === ')') depth--;\n i++;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Parsing the structural index\n// ---------------------------------------------------------------------------\n\n/** The `uses` alias for a behavior: its kebab name in PascalCase, the identifier form `USES_RE` indexes (`std-arcade-flow` → `StdArcadeFlow`). */\nexport function aliasForBehavior(behavior: string): string {\n return behavior.split(/[^A-Za-z0-9]+/).filter((part) => part.length > 0).map((part) => part[0].toUpperCase() + part.slice(1)).join('');\n}\n\nconst USES_RE = /^uses\\s+([A-Za-z_][\\w]*)\\s+from\\s+\"([^\"]+)\"/;\nconst TYPE_RE = /^type\\s+([A-Za-z_][\\w]*)\\s*=/;\nconst ENTITY_RE = /^entity\\s+([A-Za-z_][\\w]*)\\s*(\\[[^\\]]*\\])?\\s*\\{/;\nconst TRAIT_REF_RE =\n /^trait\\s+([A-Za-z_][\\w]*)\\s*(?:::[^=]*)?=\\s*([A-Za-z_][\\w]*)\\.traits\\.([A-Za-z_][\\w]*)\\s*(?:->\\s*(@rebindable\\s+)?([A-Za-z_][\\w]*))?\\s*\\{/;\nconst TRAIT_INLINE_RE =\n /^trait\\s+([A-Za-z_][\\w]*)\\s*(?:::[^-]*)?->\\s*(@rebindable\\s+)?([A-Za-z_][\\w]*)\\s*(\\[[^\\]]*\\])?\\s*\\{/;\nconst PAGE_RE = /^page\\s+\"([^\"]+)\"(?:\\s+as\\s+([A-Za-z_][\\w]*))?/;\nconst FIELD_RE = /^([A-Za-z_][\\w]*)\\s*:\\s*([^\\n=]+?)(?:\\s*=\\s*|\\s*$)/;\n\nfunction blockAt(text: string, openIdx: number): BlockDecl | null {\n const close = matchDelimiter(text, openIdx);\n if (close === -1) return null;\n return { span: { start: openIdx, end: close + 1 }, bodySpan: { start: openIdx + 1, end: close } };\n}\n\nfunction parseConfigBlock(text: string, block: BlockDecl): ConfigBlock {\n const entries: ConfigEntry[] = [];\n for (const s of statementStarts(text, block.bodySpan)) {\n if (text[s] === '@') continue; // annotation line (@label / @tier …)\n const le = lineEnd(text, s);\n const head = text.slice(s, le);\n const m = /^([A-Za-z_][\\w]*)\\s*:/.exec(head);\n if (!m) continue;\n const key = m[1];\n const afterColon = s + m[0].length;\n // inline typed form: `key : Type = value` — find ` = ` at depth 0 on the head line\n const typed = /^(\\s*)([^=\\n]+?)\\s*=\\s*/.exec(text.slice(afterColon, le));\n let type: string | undefined;\n let valueStart: number;\n if (typed && /^\\s/.test(text.slice(afterColon, afterColon + 1)) && head.includes(' = ')) {\n type = typed[2].trim();\n valueStart = afterColon + typed[0].length;\n } else {\n valueStart = afterColon;\n while (valueStart < le && /[ \\t]/.test(text[valueStart])) valueStart++;\n }\n const valueEnd = scanValueEnd(text, valueStart, block.bodySpan.end);\n entries.push({\n key,\n type,\n valueSpan: { start: valueStart, end: valueEnd },\n rawValue: text.slice(valueStart, valueEnd),\n span: { start: lineStart(text, s), end: valueEnd },\n });\n }\n return { ...block, entries };\n}\n\nfunction parseEventsBlock(text: string, block: BlockDecl): EventsBlock {\n const entries: EventsEntry[] = [];\n const body = text.slice(block.bodySpan.start, block.bodySpan.end);\n const re = /([A-Za-z_][\\w]*)\\s*:\\s*([A-Za-z_][\\w]*)/g;\n let m: RegExpExecArray | null;\n while ((m = re.exec(body)) !== null) {\n const start = block.bodySpan.start + m.index;\n entries.push({ upstream: m[1], local: m[2], span: { start, end: start + m[0].length } });\n }\n return { ...block, entries };\n}\n\nfunction parseTrait(text: string, s: number): TraitDecl | null {\n const rest = text.slice(s);\n let decl: Omit<TraitDecl, 'span' | 'bodySpan' | 'stateBlocks'>;\n let openOffset: number;\n const ref = TRAIT_REF_RE.exec(rest);\n if (ref) {\n decl = {\n name: ref[1],\n inline: false,\n alias: ref[2],\n trait: ref[3],\n entity: ref[5],\n rebindable: ref[4] !== undefined,\n };\n openOffset = ref[0].length - 1;\n } else {\n const inl = TRAIT_INLINE_RE.exec(rest);\n if (!inl) return null;\n decl = { name: inl[1], inline: true, entity: inl[3], rebindable: inl[2] !== undefined };\n openOffset = inl[0].length - 1;\n }\n const block = blockAt(text, s + openOffset);\n if (!block) return null;\n const trait: TraitDecl = { ...decl, span: { start: s, end: block.span.end }, bodySpan: block.bodySpan, stateBlocks: [] };\n for (const cs of statementStarts(text, block.bodySpan)) {\n const le = lineEnd(text, cs);\n const head = text.slice(cs, le);\n const kw = /^(config|events|listens|state|fields|emits|ticks)\\b\\s*([A-Za-z_][\\w]*)?[^{]*\\{/.exec(head);\n if (!kw) continue;\n const open = cs + head.indexOf('{');\n const sub = blockAt(text, open);\n if (!sub) continue;\n if (kw[1] === 'config') trait.config = parseConfigBlock(text, sub);\n else if (kw[1] === 'events') trait.events = parseEventsBlock(text, sub);\n else if (kw[1] === 'listens') trait.listens = sub;\n else if (kw[1] === 'state' && kw[2]) trait.stateBlocks.push({ name: kw[2], span: { start: cs, end: sub.span.end } });\n }\n return trait;\n}\n\nfunction parseEntity(text: string, s: number): EntityDecl | null {\n const m = ENTITY_RE.exec(text.slice(s));\n if (!m) return null;\n const block = blockAt(text, s + m[0].length - 1);\n if (!block) return null;\n const fields: EntityFieldDecl[] = [];\n for (const fs of statementStarts(text, block.bodySpan)) {\n const le = lineEnd(text, fs);\n const fm = FIELD_RE.exec(text.slice(fs, le));\n if (!fm) continue;\n fields.push({ name: fm[1], type: fm[2].trim(), span: { start: lineStart(text, fs), end: le } });\n }\n return { name: m[1], tags: m[2] ?? '', fields, span: { start: s, end: block.span.end }, bodySpan: block.bodySpan };\n}\n\n/** End of a declaration whose `[` modifier bracket may span lines: the line end after its `]`. */\nfunction bracketEnd(text: string, bracketAt: number, firstLineEnd: number): number {\n if (text[bracketAt] !== '[') return firstLineEnd;\n const close = matchDelimiter(text, bracketAt);\n return close === -1 ? firstLineEnd : lineEnd(text, close);\n}\n\nfunction parsePage(text: string, s: number): PageDecl | null {\n const le = lineEnd(text, s);\n const head = text.slice(s, le);\n const m = PAGE_RE.exec(head);\n if (!m) return null;\n // The trait list ends before the attribute block, if any.\n const bracket = head.indexOf('[', m[0].length);\n const tail = bracket === -1 ? le : s + bracket;\n const arrowIdx = head.indexOf('->', m[0].length);\n const arrowAt = arrowIdx !== -1 && (bracket === -1 || arrowIdx < bracket) ? s + arrowIdx : -1;\n // A trait-less page has no `->` at all (the orb binary rejects a dangling arrow);\n // its traits span is the empty insertion point after the head, before attributes.\n let traitsStart: number;\n let traitsEnd = tail;\n if (arrowAt === -1) {\n while (traitsEnd > s + m[0].length && /\\s/.test(text[traitsEnd - 1])) traitsEnd--;\n traitsStart = traitsEnd;\n } else {\n traitsStart = arrowAt + 2;\n while (traitsStart < tail && /\\s/.test(text[traitsStart])) traitsStart++;\n while (traitsEnd > traitsStart && /\\s/.test(text[traitsEnd - 1])) traitsEnd--;\n }\n const traits =\n arrowAt === -1\n ? []\n : text\n .slice(traitsStart, traitsEnd)\n .split(',')\n .map((t) => t.trim())\n .filter((t) => t.length > 0);\n const page: PageDecl = { path: m[1], name: m[2], traits, traitsSpan: { start: traitsStart, end: traitsEnd }, span: { start: s, end: bracketEnd(text, tail, le) } };\n if (arrowAt !== -1) {\n let arrowStart = arrowAt;\n while (arrowStart > s && /\\s/.test(text[arrowStart - 1])) arrowStart--;\n page.arrowSpan = { start: arrowStart, end: arrowAt + 2 };\n }\n return page;\n}\n\nexport function parseLoloDocument(text: string): LoloDocument {\n const orbitalRe = /^orbital\\s+([A-Za-z_][\\w]*)\\s*\\{/m;\n const om = orbitalRe.exec(text);\n if (!om || om.index === undefined) throw new Error('lolo-document: no `orbital Name {` block found');\n const openIdx = om.index + om[0].length - 1;\n const block = blockAt(text, openIdx);\n if (!block) throw new Error('lolo-document: unbalanced orbital block');\n const doc: LoloDocument = {\n text,\n orbital: { name: om[1], span: { start: om.index, end: block.span.end }, bodySpan: block.bodySpan },\n uses: [],\n types: [],\n entities: [],\n traits: [],\n pages: [],\n indent: ' ',\n };\n // `app NAME [version: \"1.0.0\", …]`, or the pre-bracket `app NAME \"1.0.0\"` / `vN`.\n const appMatch = /^app\\s+([\\w.-]+)(?:\\s+(?:\"([^\"]+)\"|(v[\\w.]+)))?/m.exec(text);\n if (appMatch && appMatch.index !== undefined) {\n const appLineEnd = lineEnd(text, appMatch.index);\n const appBracket = text.slice(appMatch.index, appLineEnd).indexOf('[', appMatch[0].length);\n const bracketClose = appBracket === -1 ? -1 : matchDelimiter(text, appMatch.index + appBracket);\n const bracketVersion =\n bracketClose === -1 ? undefined : /\\bversion:\\s*\"([^\"]+)\"/.exec(text.slice(appMatch.index + appBracket, bracketClose))?.[1];\n doc.app = {\n name: appMatch[1],\n version: bracketVersion ?? appMatch[2] ?? appMatch[3] ?? '',\n span: { start: appMatch.index, end: bracketEnd(text, appBracket === -1 ? appLineEnd : appMatch.index + appBracket, appLineEnd) },\n };\n }\n let indentSeen = false;\n for (const s of statementStarts(text, block.bodySpan)) {\n if (!indentSeen) {\n doc.indent = indentOf(text, s);\n indentSeen = true;\n }\n const le = lineEnd(text, s);\n const head = text.slice(s, le);\n const u = USES_RE.exec(head);\n if (u) {\n doc.uses.push({ alias: u[1], from: u[2], span: { start: s, end: le } });\n continue;\n }\n const t = TYPE_RE.exec(head);\n if (t) {\n const brace = head.indexOf('{');\n const end = brace !== -1 ? (matchDelimiter(text, s + brace) + 1) : le;\n doc.types.push({ name: t[1], span: { start: s, end } });\n continue;\n }\n if (head.startsWith('entity ')) {\n const e = parseEntity(text, s);\n if (e) doc.entities.push(e);\n continue;\n }\n if (head.startsWith('trait ')) {\n const tr = parseTrait(text, s);\n if (tr) doc.traits.push(tr);\n continue;\n }\n if (head.startsWith('page ')) {\n const p = parsePage(text, s);\n if (p) doc.pages.push(p);\n }\n }\n return doc;\n}\n\n// ---------------------------------------------------------------------------\n// Edits\n// ---------------------------------------------------------------------------\n\nexport function applyEdits(text: string, edits: ReadonlyArray<TextEdit>): string {\n const sorted = [...edits].sort((a, b) => b.start - a.start || b.end - a.end);\n for (let i = 1; i < sorted.length; i++) {\n if (sorted[i].end > sorted[i - 1].start) throw new Error('lolo-document: overlapping edits');\n }\n let out = text;\n for (const e of sorted) out = out.slice(0, e.start) + e.insert + out.slice(e.end);\n return out;\n}\n\nfunction quote(s: string): string {\n return '\"' + s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') + '\"';\n}\n\n/**\n * Render a value in the `.lolo` literal style the corpus uses: objects inline with commas,\n * arrays of objects one element per line (no commas), scalar arrays inline space-separated.\n */\nexport function formatLoloValue(value: LoloValue, indent = ''): string {\n if (value === null) return 'null';\n if (typeof value === 'string') return quote(value);\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n if (Array.isArray(value)) {\n if (value.length === 0) return '[]';\n const allObjects = value.every((v) => typeof v === 'object' && v !== null && !Array.isArray(v));\n if (allObjects) {\n const inner = indent + ' ';\n return '[\\n' + value.map((v) => inner + formatLoloValue(v, inner)).join('\\n') + '\\n' + indent + ']';\n }\n return '[' + value.map((v) => formatLoloValue(v, indent)).join(' ') + ']';\n }\n const parts = Object.entries(value).map(([k, v]) => `${k}: ${formatLoloValue(v, indent)}`);\n return parts.length === 0 ? '{}' : '{ ' + parts.join(', ') + ' }';\n}\n\nfunction inferLoloType(value: LoloValue): string {\n if (typeof value === 'string') return 'string';\n if (typeof value === 'number') return 'number';\n if (typeof value === 'boolean') return 'boolean';\n if (Array.isArray(value)) return '[object]';\n return 'object';\n}\n\nfunction findTrait(doc: LoloDocument, name: string): TraitDecl {\n const t = doc.traits.find((x) => x.name === name);\n if (!t) throw new Error(`lolo-document: trait \"${name}\" not found`);\n return t;\n}\n\nfunction insertAtBlockEnd(text: string, block: BlockDecl, line: string, childIndent: string): TextEdit {\n const closeIdx = block.bodySpan.end;\n const ls = lineStart(text, closeIdx);\n const singleLine = !text.slice(block.bodySpan.start, block.bodySpan.end).includes('\\n');\n if (singleLine) {\n // Keep existing bytes untouched: append the new line and move the `}` to its own line.\n const parentIndent = indentOf(text, block.span.start);\n let at = block.bodySpan.end;\n while (at > block.bodySpan.start && /\\s/.test(text[at - 1])) at--;\n return { start: at, end: block.bodySpan.end, insert: `\\n${childIndent}${line}\\n${parentIndent}` };\n }\n return { start: ls, end: ls, insert: `${childIndent}${line}\\n` };\n}\n\nfunction childIndentOf(text: string, block: BlockDecl, fallbackParentIndent: string): string {\n const openerLine = lineStart(text, block.span.start);\n for (const s of statementStarts(text, block.bodySpan)) {\n if (lineStart(text, s) !== openerLine) return indentOf(text, s);\n }\n return fallbackParentIndent + ' ';\n}\n\nexport function addUses(doc: LoloDocument, alias: string, from: string): TextEdit[] {\n if (doc.uses.some((u) => u.from === from || u.alias === alias)) return [];\n const line = `${doc.indent}uses ${alias} from ${quote(from)}\\n`;\n if (doc.uses.length > 0) {\n const last = doc.uses[doc.uses.length - 1];\n const at = lineEnd(doc.text, last.span.end) + 1;\n return [{ start: at, end: at, insert: line }];\n }\n const at = lineEnd(doc.text, doc.orbital.bodySpan.start) + 1;\n return [{ start: at, end: at, insert: line }];\n}\n\nexport function usesAlias(doc: LoloDocument, from: string): string | undefined {\n return doc.uses.find((u) => u.from === from)?.alias;\n}\n\nexport interface AddTraitRefInput {\n name: string;\n alias: string;\n trait: string;\n entity: string;\n config: Record<string, LoloValue>;\n events?: Record<string, string>;\n}\n\nexport function addTraitRef(doc: LoloDocument, input: AddTraitRefInput): TextEdit[] {\n if (doc.traits.some((t) => t.name === input.name)) throw new Error(`lolo-document: trait \"${input.name}\" already exists`);\n const ind = doc.indent;\n const inner = ind + ' ';\n const lines: string[] = [`${ind}trait ${input.name} = ${input.alias}.traits.${input.trait} -> ${input.entity} {`];\n const events = Object.entries(input.events ?? {});\n if (events.length > 0) {\n lines.push(`${inner}events {`);\n for (const [up, local] of events) lines.push(`${inner} ${up}: ${local}`);\n lines.push(`${inner}}`);\n }\n const cfg = Object.entries(input.config);\n if (cfg.length > 0) {\n lines.push(`${inner}config {`);\n for (const [k, v] of cfg) lines.push(`${inner} ${k}: ${formatLoloValue(v, inner + ' ')}`);\n lines.push(`${inner}}`);\n }\n lines.push(`${ind}}`);\n const block = lines.join('\\n') + '\\n\\n';\n const anchor = doc.pages.length > 0 ? lineStart(doc.text, doc.pages[0].span.start) : lineStart(doc.text, doc.orbital.bodySpan.end);\n return [{ start: anchor, end: anchor, insert: block }];\n}\n\nexport function removeTrait(doc: LoloDocument, name: string): TextEdit[] {\n const trait = findTrait(doc, name);\n const edits: TextEdit[] = [];\n const ls = lineStart(doc.text, trait.span.start);\n let end = lineEnd(doc.text, trait.span.end);\n if (doc.text[end] === '\\n') end++;\n if (doc.text[end] === '\\n' && doc.text[ls - 1] === '\\n' && doc.text[ls - 2] === '\\n') end++;\n edits.push({ start: ls, end, insert: '' });\n for (const page of doc.pages) {\n if (page.traits.includes(name)) edits.push(...removePageTrait(doc, page.path, name));\n }\n if (trait.alias !== undefined) {\n const stillUsed = doc.traits.some((t) => t.name !== name && t.alias === trait.alias);\n const pageUses = doc.text.slice(doc.orbital.bodySpan.start, doc.orbital.bodySpan.end).includes(`${trait.alias}.pages.`);\n if (!stillUsed && !pageUses) {\n const u = doc.uses.find((x) => x.alias === trait.alias);\n if (u) {\n const uls = lineStart(doc.text, u.span.start);\n let uend = lineEnd(doc.text, u.span.end);\n if (doc.text[uend] === '\\n') uend++;\n edits.push({ start: uls, end: uend, insert: '' });\n }\n }\n }\n return edits;\n}\n\nexport function findPage(doc: LoloDocument, path: string): PageDecl {\n const p = doc.pages.find((x) => x.path === path);\n if (!p) throw new Error(`lolo-document: page \"${path}\" not found`);\n return p;\n}\n\nexport function appendPageTrait(doc: LoloDocument, path: string, traitName: string): TextEdit[] {\n const page = findPage(doc, path);\n if (page.traits.includes(traitName)) return [];\n const insert = page.arrowSpan === undefined ? ` -> ${traitName}` : page.traits.length === 0 ? traitName : `, ${traitName}`;\n return [{ start: page.traitsSpan.end, end: page.traitsSpan.end, insert }];\n}\n\nexport function removePageTrait(doc: LoloDocument, path: string, traitName: string): TextEdit[] {\n const page = findPage(doc, path);\n if (!page.traits.includes(traitName)) return [];\n const remaining = page.traits.filter((t) => t !== traitName);\n // Removing the last trait removes the arrow too — `page \"/\" as P -> ` does not emit.\n if (remaining.length === 0 && page.arrowSpan !== undefined) {\n return [{ start: page.arrowSpan.start, end: page.traitsSpan.end, insert: '' }];\n }\n return [{ start: page.traitsSpan.start, end: page.traitsSpan.end, insert: remaining.join(', ') }];\n}\n\nexport function setConfigValue(doc: LoloDocument, traitName: string, key: string, value: LoloValue): TextEdit[] {\n const trait = findTrait(doc, traitName);\n const text = doc.text;\n if (trait.config) {\n const entry = trait.config.entries.find((e) => e.key === key);\n const childIndent = childIndentOf(text, trait.config, indentOf(text, trait.config.span.start));\n if (entry) {\n return [{ start: entry.valueSpan.start, end: entry.valueSpan.end, insert: formatLoloValue(value, childIndent) }];\n }\n const typed = trait.config.entries.some((e) => e.type !== undefined) || trait.inline;\n const line = typed\n ? `${key} : ${inferLoloType(value)} = ${formatLoloValue(value, childIndent)}`\n : `${key}: ${formatLoloValue(value, childIndent)}`;\n return [insertAtBlockEnd(text, trait.config, line, childIndent)];\n }\n const inner = indentOf(text, trait.span.start) + ' ';\n const line = trait.inline\n ? `${inner}config {\\n${inner} ${key} : ${inferLoloType(value)} = ${formatLoloValue(value, inner + ' ')}\\n${inner}}\\n`\n : `${inner}config {\\n${inner} ${key}: ${formatLoloValue(value, inner + ' ')}\\n${inner}}\\n`;\n const ls = lineStart(text, trait.bodySpan.end);\n return [{ start: ls, end: ls, insert: line }];\n}\n\n/**\n * Index of a 1-based line and character (code point) column — the position `orb embeds`\n * reports for an inline embed's opening `<`. -1 when the text has no such position.\n */\nfunction indexOfLineCol(text: string, line: number, col: number): number {\n let i = 0;\n for (let l = 1; l < line; l++) {\n const nl = text.indexOf('\\n', i);\n if (nl === -1) return -1;\n i = nl + 1;\n }\n for (let c = 1; c < col; c++) {\n if (i >= text.length || text[i] === '\\n') return -1;\n i += (text.codePointAt(i) ?? 0) > 0xffff ? 2 : 1;\n }\n return i;\n}\n\n/**\n * Set `key` on the inline behavior embed whose tag opens at (`line`, `col`) — the\n * `.lolo` home of an `.orb` trait named `Inline<Short><N>` (located by `orb embeds`).\n * Replaces the attribute's value in place, or adds it before the opening tag closes.\n */\nexport function setEmbedAttribute(text: string, line: number, col: number, key: string, value: LoloValue): TextEdit[] {\n const open = indexOfLineCol(text, line, col);\n if (open < 0 || text[open] !== '<') throw new Error(`lolo-document: no embed tag at ${line}:${col}`);\n const formatted = `{${formatLoloValue(value)}}`;\n let i = open + 1;\n while (i < text.length && !/[\\s/>]/.test(text[i])) i++;\n for (;;) {\n while (i < text.length && /\\s/.test(text[i])) i++;\n if (i >= text.length) throw new Error(`lolo-document: unterminated embed tag at ${line}:${col}`);\n if (text[i] === '>' || text.startsWith('/>', i)) {\n let at = i;\n while (at > open && /\\s/.test(text[at - 1])) at--;\n return [{ start: at, end: at, insert: ` ${key}=${formatted}` }];\n }\n const nameStart = i;\n while (i < text.length && /[A-Za-z0-9_-]/.test(text[i])) i++;\n const name = text.slice(nameStart, i);\n if (name === '' || text[i] !== '=') throw new Error(`lolo-document: unreadable attribute in the embed at ${line}:${col}`);\n const valueStart = i + 1;\n const valueEnd = text[valueStart] === '{'\n ? matchDelimiter(text, valueStart) + 1\n : text[valueStart] === '\"'\n ? skipString(text, valueStart)\n : -1;\n if (valueEnd <= valueStart) throw new Error(`lolo-document: unreadable value for ${name} in the embed at ${line}:${col}`);\n if (name === key) return [{ start: valueStart, end: valueEnd, insert: formatted }];\n i = valueEnd;\n }\n}\n\n/** Top-level elements of an array literal `[ … ]` as spans (balanced, string-aware). */\nexport function arrayElementSpans(text: string, arraySpan: Span): Span[] {\n const spans: Span[] = [];\n const open = text.indexOf('[', arraySpan.start);\n if (open === -1 || open >= arraySpan.end) return spans;\n let i = open + 1;\n const close = arraySpan.end - 1;\n while (i < close) {\n const ch = text[i];\n if (/[\\s,]/.test(ch)) {\n i++;\n continue;\n }\n if (isCommentStart(text, i)) {\n i = skipComment(text, i);\n continue;\n }\n let end: number;\n if (ch === '{' || ch === '[' || ch === '(') end = matchDelimiter(text, i) + 1;\n else if (ch === '\"') end = skipString(text, i);\n else {\n end = i;\n while (end < close && !/[\\s,\\]]/.test(text[end])) end++;\n }\n spans.push({ start: i, end });\n i = end;\n }\n return spans;\n}\n\n/** Patch scalar fields of an object literal element `{ k: v, … }`; unknown keys are appended. */\nfunction patchObjectLiteral(text: string, span: Span, patch: Record<string, LoloValue>): TextEdit[] {\n const edits: TextEdit[] = [];\n const body = { start: span.start + 1, end: span.end - 1 };\n const remaining = new Map(Object.entries(patch));\n let i = body.start;\n while (i < body.end) {\n const ch = text[i];\n if (/[\\s,]/.test(ch)) {\n i++;\n continue;\n }\n const km = /^([A-Za-z_][\\w]*)\\s*:\\s*/.exec(text.slice(i, body.end));\n if (!km) break;\n const vs = i + km[0].length;\n let ve: number;\n const vc = text[vs];\n if (vc === '{' || vc === '[' || vc === '(') ve = matchDelimiter(text, vs) + 1;\n else if (vc === '\"') ve = skipString(text, vs);\n else {\n ve = vs;\n while (ve < body.end && !/[\\s,}]/.test(text[ve])) ve++;\n }\n const key = km[1];\n if (remaining.has(key)) {\n const v = remaining.get(key);\n if (v !== undefined) edits.push({ start: vs, end: ve, insert: formatLoloValue(v) });\n remaining.delete(key);\n }\n i = ve;\n }\n if (remaining.size > 0) {\n const tail = [...remaining.entries()].map(([k, v]) => `${k}: ${formatLoloValue(v)}`).join(', ');\n let insertAt = body.end;\n while (insertAt > body.start && /\\s/.test(text[insertAt - 1])) insertAt--;\n const hasFields = text.slice(body.start, body.end).trim().length > 0;\n edits.push({ start: insertAt, end: insertAt, insert: hasFields ? `, ${tail}` : ` ${tail} ` });\n }\n return edits;\n}\n\nexport function setConfigArrayRow(\n doc: LoloDocument,\n traitName: string,\n key: string,\n index: number,\n patch: Record<string, LoloValue>,\n): TextEdit[] {\n const trait = findTrait(doc, traitName);\n const entry = trait.config?.entries.find((e) => e.key === key);\n if (!entry) throw new Error(`lolo-document: config \"${key}\" not found on trait \"${traitName}\"`);\n const elements = arrayElementSpans(doc.text, entry.valueSpan);\n const el = elements[index];\n if (!el) throw new Error(`lolo-document: \"${key}[${index}]\" out of range (${elements.length} elements)`);\n if (doc.text[el.start] !== '{') throw new Error(`lolo-document: \"${key}[${index}]\" is not an object literal`);\n return patchObjectLiteral(doc.text, el, patch);\n}\n\nexport function renameEvent(doc: LoloDocument, traitName: string, upstream: string, local: string): TextEdit[] {\n const trait = findTrait(doc, traitName);\n if (trait.inline) throw new Error('lolo-document: events {} renames apply to referenced traits only');\n const text = doc.text;\n if (trait.events) {\n const existing = trait.events.entries.find((e) => e.upstream === upstream);\n const childIndent = childIndentOf(text, trait.events, indentOf(text, trait.events.span.start));\n if (existing) {\n return [{ start: existing.span.start, end: existing.span.end, insert: `${upstream}: ${local}` }];\n }\n return [insertAtBlockEnd(text, trait.events, `${upstream}: ${local}`, childIndent)];\n }\n const inner = indentOf(text, trait.span.start) + ' ';\n const at = lineEnd(text, trait.span.start) + 1;\n return [{ start: at, end: at, insert: `${inner}events {\\n${inner} ${upstream}: ${local}\\n${inner}}\\n` }];\n}\n\n/**\n * Add a listens route. On a referenced trait a `listens {}` override REPLACES the atom's\n * set, so the atom's own routes are restated first (`atomRoutes`) — the rebind-listens trap.\n */\nexport function addListens(\n doc: LoloDocument,\n traitName: string,\n route: ListenRoute,\n atomRoutes: ReadonlyArray<ListenRoute> = [],\n): TextEdit[] {\n const trait = findTrait(doc, traitName);\n const text = doc.text;\n const line = `${route.source}.${route.event} -> ${route.local}`;\n if (trait.listens) {\n const body = text.slice(trait.listens.bodySpan.start, trait.listens.bodySpan.end);\n if (body.includes(line)) return [];\n const childIndent = childIndentOf(text, trait.listens, indentOf(text, trait.listens.span.start));\n return [insertAtBlockEnd(text, trait.listens, line, childIndent)];\n }\n const inner = indentOf(text, trait.span.start) + ' ';\n const routes = trait.inline ? [route] : [...atomRoutes, route];\n const lines = routes.map((r) => `${inner} ${r.source}.${r.event} -> ${r.local}`);\n const ls = lineStart(text, trait.bodySpan.end);\n return [{ start: ls, end: ls, insert: `${inner}listens {\\n${lines.join('\\n')}\\n${inner}}\\n` }];\n}\n\nexport interface LoloFieldInput {\n name: string;\n type: string;\n default?: LoloValue;\n}\n\nexport function addEntityFields(doc: LoloDocument, entityName: string, fields: ReadonlyArray<LoloFieldInput>): TextEdit[] {\n const entity = doc.entities.find((e) => e.name === entityName);\n if (!entity) throw new Error(`lolo-document: entity \"${entityName}\" not found`);\n const missing = fields.filter((f) => !entity.fields.some((x) => x.name === f.name));\n if (missing.length === 0) return [];\n const childIndent = childIndentOf(doc.text, entity, indentOf(doc.text, entity.span.start));\n const lines = missing.map((f) => `${childIndent}${f.name} : ${f.type}${f.default !== undefined ? ` = ${formatLoloValue(f.default, childIndent)}` : ''}\\n`);\n const ls = lineStart(doc.text, entity.bodySpan.end);\n return [{ start: ls, end: ls, insert: lines.join('') }];\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"definitions.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -240,8 +240,8 @@ declare const UXHintsSchema: z.ZodObject<{
240
240
  relation: z.ZodString;
241
241
  label: z.ZodString;
242
242
  targetView: z.ZodOptional<z.ZodEnum<{
243
- list: "list";
244
243
  detail: "detail";
244
+ list: "list";
245
245
  }>>;
246
246
  }, z.core.$strip>>>>;
247
247
  }, z.core.$strip>;
@@ -260,8 +260,8 @@ declare const RelatedLinkSchema: z.ZodObject<{
260
260
  relation: z.ZodString;
261
261
  label: z.ZodString;
262
262
  targetView: z.ZodOptional<z.ZodEnum<{
263
- list: "list";
264
263
  detail: "detail";
264
+ list: "list";
265
265
  }>>;
266
266
  }, z.core.$strip>;
267
267
  /**
@@ -321,8 +321,8 @@ declare const DesignPreferencesSchema: z.ZodObject<{
321
321
  relation: z.ZodString;
322
322
  label: z.ZodString;
323
323
  targetView: z.ZodOptional<z.ZodEnum<{
324
- list: "list";
325
324
  detail: "detail";
325
+ list: "list";
326
326
  }>>;
327
327
  }, z.core.$strip>>>>;
328
328
  }, z.core.$strip>>;
@@ -1180,8 +1180,8 @@ declare const MotionShapeTokensSchema: z.ZodObject<{
1180
1180
  declare const ENTER_ANIMATIONS: readonly ["none", "fade", "rise", "scale", "slide"];
1181
1181
  type EnterAnimation = (typeof ENTER_ANIMATIONS)[number];
1182
1182
  declare const EnterAnimationSchema: z.ZodEnum<{
1183
- scale: "scale";
1184
1183
  none: "none";
1184
+ scale: "scale";
1185
1185
  fade: "fade";
1186
1186
  rise: "rise";
1187
1187
  slide: "slide";
@@ -1198,8 +1198,8 @@ type MotionEntryTokens = {
1198
1198
  };
1199
1199
  declare const MotionEntryTokensSchema: z.ZodObject<{
1200
1200
  default: z.ZodOptional<z.ZodEnum<{
1201
- scale: "scale";
1202
1201
  none: "none";
1202
+ scale: "scale";
1203
1203
  fade: "fade";
1204
1204
  rise: "rise";
1205
1205
  slide: "slide";
@@ -1339,8 +1339,8 @@ declare const MotionTokensSchema: z.ZodObject<{
1339
1339
  }, z.core.$strip>>;
1340
1340
  entry: z.ZodOptional<z.ZodObject<{
1341
1341
  default: z.ZodOptional<z.ZodEnum<{
1342
- scale: "scale";
1343
1342
  none: "none";
1343
+ scale: "scale";
1344
1344
  fade: "fade";
1345
1345
  rise: "rise";
1346
1346
  slide: "slide";
@@ -1482,9 +1482,9 @@ declare const SurfaceTokensSchema: z.ZodObject<{
1482
1482
  }, z.core.$strip>;
1483
1483
  type DiagramLineCap = 'butt' | 'round' | 'square';
1484
1484
  declare const DiagramLineCapSchema: z.ZodEnum<{
1485
+ square: "square";
1485
1486
  butt: "butt";
1486
1487
  round: "round";
1487
- square: "square";
1488
1488
  }>;
1489
1489
  type DiagramLineJoin = 'miter' | 'round' | 'bevel';
1490
1490
  declare const DiagramLineJoinSchema: z.ZodEnum<{
@@ -1502,10 +1502,10 @@ declare const DiagramFillStyleSchema: z.ZodEnum<{
1502
1502
  }>;
1503
1503
  type DiagramMarker = 'triangle' | 'open' | 'line' | 'dot';
1504
1504
  declare const DiagramMarkerSchema: z.ZodEnum<{
1505
- dot: "dot";
1506
- triangle: "triangle";
1507
1505
  open: "open";
1508
1506
  line: "line";
1507
+ dot: "dot";
1508
+ triangle: "triangle";
1509
1509
  }>;
1510
1510
  /** Which of the theme's three faces diagram labels are set in. */
1511
1511
  type DiagramLabelFont = 'body' | 'display' | 'mono';
@@ -1565,9 +1565,9 @@ declare const DiagramTokensSchema: z.ZodObject<{
1565
1565
  strokeNormal: z.ZodOptional<z.ZodString>;
1566
1566
  strokeBold: z.ZodOptional<z.ZodString>;
1567
1567
  lineCap: z.ZodOptional<z.ZodEnum<{
1568
+ square: "square";
1568
1569
  butt: "butt";
1569
1570
  round: "round";
1570
- square: "square";
1571
1571
  }>>;
1572
1572
  lineJoin: z.ZodOptional<z.ZodEnum<{
1573
1573
  round: "round";
@@ -1587,10 +1587,10 @@ declare const DiagramTokensSchema: z.ZodObject<{
1587
1587
  glow: z.ZodOptional<z.ZodString>;
1588
1588
  shadow: z.ZodOptional<z.ZodString>;
1589
1589
  marker: z.ZodOptional<z.ZodEnum<{
1590
- dot: "dot";
1591
- triangle: "triangle";
1592
1590
  open: "open";
1593
1591
  line: "line";
1592
+ dot: "dot";
1593
+ triangle: "triangle";
1594
1594
  }>>;
1595
1595
  labelFont: z.ZodOptional<z.ZodEnum<{
1596
1596
  display: "display";
@@ -2161,8 +2161,8 @@ declare const ThemeTokensSchema: z.ZodObject<{
2161
2161
  }, z.core.$strip>>;
2162
2162
  entry: z.ZodOptional<z.ZodObject<{
2163
2163
  default: z.ZodOptional<z.ZodEnum<{
2164
- scale: "scale";
2165
2164
  none: "none";
2165
+ scale: "scale";
2166
2166
  fade: "fade";
2167
2167
  rise: "rise";
2168
2168
  slide: "slide";
@@ -2236,9 +2236,9 @@ declare const ThemeTokensSchema: z.ZodObject<{
2236
2236
  strokeNormal: z.ZodOptional<z.ZodString>;
2237
2237
  strokeBold: z.ZodOptional<z.ZodString>;
2238
2238
  lineCap: z.ZodOptional<z.ZodEnum<{
2239
+ square: "square";
2239
2240
  butt: "butt";
2240
2241
  round: "round";
2241
- square: "square";
2242
2242
  }>>;
2243
2243
  lineJoin: z.ZodOptional<z.ZodEnum<{
2244
2244
  round: "round";
@@ -2258,10 +2258,10 @@ declare const ThemeTokensSchema: z.ZodObject<{
2258
2258
  glow: z.ZodOptional<z.ZodString>;
2259
2259
  shadow: z.ZodOptional<z.ZodString>;
2260
2260
  marker: z.ZodOptional<z.ZodEnum<{
2261
- dot: "dot";
2262
- triangle: "triangle";
2263
2261
  open: "open";
2264
2262
  line: "line";
2263
+ dot: "dot";
2264
+ triangle: "triangle";
2265
2265
  }>>;
2266
2266
  labelFont: z.ZodOptional<z.ZodEnum<{
2267
2267
  display: "display";
@@ -2706,8 +2706,8 @@ declare const ThemeVariantSchema: z.ZodObject<{
2706
2706
  }, z.core.$strip>>;
2707
2707
  entry: z.ZodOptional<z.ZodObject<{
2708
2708
  default: z.ZodOptional<z.ZodEnum<{
2709
- scale: "scale";
2710
2709
  none: "none";
2710
+ scale: "scale";
2711
2711
  fade: "fade";
2712
2712
  rise: "rise";
2713
2713
  slide: "slide";
@@ -2781,9 +2781,9 @@ declare const ThemeVariantSchema: z.ZodObject<{
2781
2781
  strokeNormal: z.ZodOptional<z.ZodString>;
2782
2782
  strokeBold: z.ZodOptional<z.ZodString>;
2783
2783
  lineCap: z.ZodOptional<z.ZodEnum<{
2784
+ square: "square";
2784
2785
  butt: "butt";
2785
2786
  round: "round";
2786
- square: "square";
2787
2787
  }>>;
2788
2788
  lineJoin: z.ZodOptional<z.ZodEnum<{
2789
2789
  round: "round";
@@ -2803,10 +2803,10 @@ declare const ThemeVariantSchema: z.ZodObject<{
2803
2803
  glow: z.ZodOptional<z.ZodString>;
2804
2804
  shadow: z.ZodOptional<z.ZodString>;
2805
2805
  marker: z.ZodOptional<z.ZodEnum<{
2806
- dot: "dot";
2807
- triangle: "triangle";
2808
2806
  open: "open";
2809
2807
  line: "line";
2808
+ dot: "dot";
2809
+ triangle: "triangle";
2810
2810
  }>>;
2811
2811
  labelFont: z.ZodOptional<z.ZodEnum<{
2812
2812
  display: "display";
@@ -3229,8 +3229,8 @@ declare const ThemeDefinitionSchema: z.ZodObject<{
3229
3229
  }, z.core.$strip>>;
3230
3230
  entry: z.ZodOptional<z.ZodObject<{
3231
3231
  default: z.ZodOptional<z.ZodEnum<{
3232
- scale: "scale";
3233
3232
  none: "none";
3233
+ scale: "scale";
3234
3234
  fade: "fade";
3235
3235
  rise: "rise";
3236
3236
  slide: "slide";
@@ -3304,9 +3304,9 @@ declare const ThemeDefinitionSchema: z.ZodObject<{
3304
3304
  strokeNormal: z.ZodOptional<z.ZodString>;
3305
3305
  strokeBold: z.ZodOptional<z.ZodString>;
3306
3306
  lineCap: z.ZodOptional<z.ZodEnum<{
3307
+ square: "square";
3307
3308
  butt: "butt";
3308
3309
  round: "round";
3309
- square: "square";
3310
3310
  }>>;
3311
3311
  lineJoin: z.ZodOptional<z.ZodEnum<{
3312
3312
  round: "round";
@@ -3326,10 +3326,10 @@ declare const ThemeDefinitionSchema: z.ZodObject<{
3326
3326
  glow: z.ZodOptional<z.ZodString>;
3327
3327
  shadow: z.ZodOptional<z.ZodString>;
3328
3328
  marker: z.ZodOptional<z.ZodEnum<{
3329
- dot: "dot";
3330
- triangle: "triangle";
3331
3329
  open: "open";
3332
3330
  line: "line";
3331
+ dot: "dot";
3332
+ triangle: "triangle";
3333
3333
  }>>;
3334
3334
  labelFont: z.ZodOptional<z.ZodEnum<{
3335
3335
  display: "display";
@@ -3736,8 +3736,8 @@ declare const ThemeDefinitionSchema: z.ZodObject<{
3736
3736
  }, z.core.$strip>>;
3737
3737
  entry: z.ZodOptional<z.ZodObject<{
3738
3738
  default: z.ZodOptional<z.ZodEnum<{
3739
- scale: "scale";
3740
3739
  none: "none";
3740
+ scale: "scale";
3741
3741
  fade: "fade";
3742
3742
  rise: "rise";
3743
3743
  slide: "slide";
@@ -3811,9 +3811,9 @@ declare const ThemeDefinitionSchema: z.ZodObject<{
3811
3811
  strokeNormal: z.ZodOptional<z.ZodString>;
3812
3812
  strokeBold: z.ZodOptional<z.ZodString>;
3813
3813
  lineCap: z.ZodOptional<z.ZodEnum<{
3814
+ square: "square";
3814
3815
  butt: "butt";
3815
3816
  round: "round";
3816
- square: "square";
3817
3817
  }>>;
3818
3818
  lineJoin: z.ZodOptional<z.ZodEnum<{
3819
3819
  round: "round";
@@ -3833,10 +3833,10 @@ declare const ThemeDefinitionSchema: z.ZodObject<{
3833
3833
  glow: z.ZodOptional<z.ZodString>;
3834
3834
  shadow: z.ZodOptional<z.ZodString>;
3835
3835
  marker: z.ZodOptional<z.ZodEnum<{
3836
- dot: "dot";
3837
- triangle: "triangle";
3838
3836
  open: "open";
3839
3837
  line: "line";
3838
+ dot: "dot";
3839
+ triangle: "triangle";
3840
3840
  }>>;
3841
3841
  labelFont: z.ZodOptional<z.ZodEnum<{
3842
3842
  display: "display";
@@ -4321,8 +4321,8 @@ declare const ThemeRefSchema: z.ZodUnion<readonly [z.ZodObject<{
4321
4321
  }, z.core.$strip>>;
4322
4322
  entry: z.ZodOptional<z.ZodObject<{
4323
4323
  default: z.ZodOptional<z.ZodEnum<{
4324
- scale: "scale";
4325
4324
  none: "none";
4325
+ scale: "scale";
4326
4326
  fade: "fade";
4327
4327
  rise: "rise";
4328
4328
  slide: "slide";
@@ -4396,9 +4396,9 @@ declare const ThemeRefSchema: z.ZodUnion<readonly [z.ZodObject<{
4396
4396
  strokeNormal: z.ZodOptional<z.ZodString>;
4397
4397
  strokeBold: z.ZodOptional<z.ZodString>;
4398
4398
  lineCap: z.ZodOptional<z.ZodEnum<{
4399
+ square: "square";
4399
4400
  butt: "butt";
4400
4401
  round: "round";
4401
- square: "square";
4402
4402
  }>>;
4403
4403
  lineJoin: z.ZodOptional<z.ZodEnum<{
4404
4404
  round: "round";
@@ -4418,10 +4418,10 @@ declare const ThemeRefSchema: z.ZodUnion<readonly [z.ZodObject<{
4418
4418
  glow: z.ZodOptional<z.ZodString>;
4419
4419
  shadow: z.ZodOptional<z.ZodString>;
4420
4420
  marker: z.ZodOptional<z.ZodEnum<{
4421
- dot: "dot";
4422
- triangle: "triangle";
4423
4421
  open: "open";
4424
4422
  line: "line";
4423
+ dot: "dot";
4424
+ triangle: "triangle";
4425
4425
  }>>;
4426
4426
  labelFont: z.ZodOptional<z.ZodEnum<{
4427
4427
  display: "display";
@@ -4828,8 +4828,8 @@ declare const ThemeRefSchema: z.ZodUnion<readonly [z.ZodObject<{
4828
4828
  }, z.core.$strip>>;
4829
4829
  entry: z.ZodOptional<z.ZodObject<{
4830
4830
  default: z.ZodOptional<z.ZodEnum<{
4831
- scale: "scale";
4832
4831
  none: "none";
4832
+ scale: "scale";
4833
4833
  fade: "fade";
4834
4834
  rise: "rise";
4835
4835
  slide: "slide";
@@ -4903,9 +4903,9 @@ declare const ThemeRefSchema: z.ZodUnion<readonly [z.ZodObject<{
4903
4903
  strokeNormal: z.ZodOptional<z.ZodString>;
4904
4904
  strokeBold: z.ZodOptional<z.ZodString>;
4905
4905
  lineCap: z.ZodOptional<z.ZodEnum<{
4906
+ square: "square";
4906
4907
  butt: "butt";
4907
4908
  round: "round";
4908
- square: "square";
4909
4909
  }>>;
4910
4910
  lineJoin: z.ZodOptional<z.ZodEnum<{
4911
4911
  round: "round";
@@ -4925,10 +4925,10 @@ declare const ThemeRefSchema: z.ZodUnion<readonly [z.ZodObject<{
4925
4925
  glow: z.ZodOptional<z.ZodString>;
4926
4926
  shadow: z.ZodOptional<z.ZodString>;
4927
4927
  marker: z.ZodOptional<z.ZodEnum<{
4928
- dot: "dot";
4929
- triangle: "triangle";
4930
4928
  open: "open";
4931
4929
  line: "line";
4930
+ dot: "dot";
4931
+ triangle: "triangle";
4932
4932
  }>>;
4933
4933
  labelFont: z.ZodOptional<z.ZodEnum<{
4934
4934
  display: "display";
@@ -5350,8 +5350,8 @@ declare const SkinSpecSchema: z.ZodObject<{
5350
5350
  }, z.core.$strip>>;
5351
5351
  entry: z.ZodOptional<z.ZodObject<{
5352
5352
  default: z.ZodOptional<z.ZodEnum<{
5353
- scale: "scale";
5354
5353
  none: "none";
5354
+ scale: "scale";
5355
5355
  fade: "fade";
5356
5356
  rise: "rise";
5357
5357
  slide: "slide";
@@ -5425,9 +5425,9 @@ declare const SkinSpecSchema: z.ZodObject<{
5425
5425
  strokeNormal: z.ZodOptional<z.ZodString>;
5426
5426
  strokeBold: z.ZodOptional<z.ZodString>;
5427
5427
  lineCap: z.ZodOptional<z.ZodEnum<{
5428
+ square: "square";
5428
5429
  butt: "butt";
5429
5430
  round: "round";
5430
- square: "square";
5431
5431
  }>>;
5432
5432
  lineJoin: z.ZodOptional<z.ZodEnum<{
5433
5433
  round: "round";
@@ -5447,10 +5447,10 @@ declare const SkinSpecSchema: z.ZodObject<{
5447
5447
  glow: z.ZodOptional<z.ZodString>;
5448
5448
  shadow: z.ZodOptional<z.ZodString>;
5449
5449
  marker: z.ZodOptional<z.ZodEnum<{
5450
- dot: "dot";
5451
- triangle: "triangle";
5452
5450
  open: "open";
5453
5451
  line: "line";
5452
+ dot: "dot";
5453
+ triangle: "triangle";
5454
5454
  }>>;
5455
5455
  labelFont: z.ZodOptional<z.ZodEnum<{
5456
5456
  display: "display";
@@ -5857,8 +5857,8 @@ declare const SkinSpecSchema: z.ZodObject<{
5857
5857
  }, z.core.$strip>>;
5858
5858
  entry: z.ZodOptional<z.ZodObject<{
5859
5859
  default: z.ZodOptional<z.ZodEnum<{
5860
- scale: "scale";
5861
5860
  none: "none";
5861
+ scale: "scale";
5862
5862
  fade: "fade";
5863
5863
  rise: "rise";
5864
5864
  slide: "slide";
@@ -5932,9 +5932,9 @@ declare const SkinSpecSchema: z.ZodObject<{
5932
5932
  strokeNormal: z.ZodOptional<z.ZodString>;
5933
5933
  strokeBold: z.ZodOptional<z.ZodString>;
5934
5934
  lineCap: z.ZodOptional<z.ZodEnum<{
5935
+ square: "square";
5935
5936
  butt: "butt";
5936
5937
  round: "round";
5937
- square: "square";
5938
5938
  }>>;
5939
5939
  lineJoin: z.ZodOptional<z.ZodEnum<{
5940
5940
  round: "round";
@@ -5954,10 +5954,10 @@ declare const SkinSpecSchema: z.ZodObject<{
5954
5954
  glow: z.ZodOptional<z.ZodString>;
5955
5955
  shadow: z.ZodOptional<z.ZodString>;
5956
5956
  marker: z.ZodOptional<z.ZodEnum<{
5957
- dot: "dot";
5958
- triangle: "triangle";
5959
5957
  open: "open";
5960
5958
  line: "line";
5959
+ dot: "dot";
5960
+ triangle: "triangle";
5961
5961
  }>>;
5962
5962
  labelFont: z.ZodOptional<z.ZodEnum<{
5963
5963
  display: "display";
@@ -6400,8 +6400,8 @@ declare const MotionSliceSchema: z.ZodObject<{
6400
6400
  }, z.core.$strip>>;
6401
6401
  entry: z.ZodOptional<z.ZodObject<{
6402
6402
  default: z.ZodOptional<z.ZodEnum<{
6403
- scale: "scale";
6404
6403
  none: "none";
6404
+ scale: "scale";
6405
6405
  fade: "fade";
6406
6406
  rise: "rise";
6407
6407
  slide: "slide";
@@ -6498,11 +6498,12 @@ declare const CustomPatternDefinitionSchema: z.ZodObject<{
6498
6498
  input: "input";
6499
6499
  header: "header";
6500
6500
  form: "form";
6501
- aside: "aside";
6502
- button: "button";
6503
6501
  label: "label";
6502
+ article: "article";
6503
+ button: "button";
6504
6504
  section: "section";
6505
6505
  main: "main";
6506
+ aside: "aside";
6506
6507
  div: "div";
6507
6508
  span: "span";
6508
6509
  a: "a";
@@ -6514,7 +6515,6 @@ declare const CustomPatternDefinitionSchema: z.ZodObject<{
6514
6515
  h5: "h5";
6515
6516
  h6: "h6";
6516
6517
  footer: "footer";
6517
- article: "article";
6518
6518
  nav: "nav";
6519
6519
  ul: "ul";
6520
6520
  ol: "ol";
@@ -6535,11 +6535,12 @@ declare const CustomPatternMapSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.Z
6535
6535
  input: "input";
6536
6536
  header: "header";
6537
6537
  form: "form";
6538
- aside: "aside";
6539
- button: "button";
6540
6538
  label: "label";
6539
+ article: "article";
6540
+ button: "button";
6541
6541
  section: "section";
6542
6542
  main: "main";
6543
+ aside: "aside";
6543
6544
  div: "div";
6544
6545
  span: "span";
6545
6546
  a: "a";
@@ -6551,7 +6552,6 @@ declare const CustomPatternMapSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.Z
6551
6552
  h5: "h5";
6552
6553
  h6: "h6";
6553
6554
  footer: "footer";
6554
- article: "article";
6555
6555
  nav: "nav";
6556
6556
  ul: "ul";
6557
6557
  ol: "ol";