@almadar/core 10.102.0 → 10.103.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 (45) hide show
  1. package/dist/builders.d.ts +5 -5
  2. package/dist/builders.js +5 -2
  3. package/dist/builders.js.map +1 -1
  4. package/dist/{bus-BS4TMOJW.d.ts → bus-BGojNDOE.d.ts} +37 -7
  5. package/dist/{domain-Ds_7wZIL.d.ts → domain-OgMkN3WN.d.ts} +13 -1
  6. package/dist/{effect-Hm_QDaSI.d.ts → effect-Xn3LIyL7.d.ts} +1 -1
  7. package/dist/{entityAccess-D2OpLCyX.d.ts → entityAccess-z5HA0P7P.d.ts} +3 -3
  8. package/dist/{expression-DRwzVnMu.d.ts → expression-CfeHdS-f.d.ts} +10 -1
  9. package/dist/factory/index.d.ts +5 -5
  10. package/dist/factory/index.js.map +1 -1
  11. package/dist/factory-runtime/index.d.ts +5 -5
  12. package/dist/factory-runtime/index.js +33 -8
  13. package/dist/factory-runtime/index.js.map +1 -1
  14. package/dist/fixtures.d.ts +3 -3
  15. package/dist/fixtures.js +19 -2
  16. package/dist/fixtures.js.map +1 -1
  17. package/dist/i18n/index.js +27 -6
  18. package/dist/i18n/index.js.map +1 -1
  19. package/dist/{index-CyfcxG5N.d.ts → index-CVYZ3GcI.d.ts} +122 -23
  20. package/dist/index.d.ts +74 -17
  21. package/dist/index.js +400 -76
  22. package/dist/index.js.map +1 -1
  23. package/dist/lolo-document/index.d.ts +166 -0
  24. package/dist/lolo-document/index.js +615 -0
  25. package/dist/lolo-document/index.js.map +1 -0
  26. package/dist/mock/index.d.ts +6 -6
  27. package/dist/mock/index.js +12 -1
  28. package/dist/mock/index.js.map +1 -1
  29. package/dist/patterns/index.d.ts +22 -4
  30. package/dist/patterns/index.js +41 -1
  31. package/dist/patterns/index.js.map +1 -1
  32. package/dist/{schema-COf9yTjs.d.ts → schema-sHVqe8Kb.d.ts} +1307 -4
  33. package/dist/state-machine/index.d.ts +1 -1
  34. package/dist/themes/index.d.ts +1 -1
  35. package/dist/themes/index.js +2 -1
  36. package/dist/themes/index.js.map +1 -1
  37. package/dist/{trait-Be3xF0px.d.ts → trait-BSe6oDBd.d.ts} +59 -10
  38. package/dist/types/index.d.ts +8 -8
  39. package/dist/types/index.js +210 -16
  40. package/dist/types/index.js.map +1 -1
  41. package/dist/{types-CYOzs4As.d.ts → types-DK29MMOQ.d.ts} +2 -2
  42. package/fixtures/events-wire/client-effects-provenance/request.json +5 -0
  43. package/fixtures/events-wire/client-effects-provenance/response.json +57 -0
  44. package/package.json +6 -1
  45. package/src/types/bindings.ts +28 -3
@@ -0,0 +1 @@
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\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: 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 const appMatch = /^app\\s+([\\w.-]+)\\s+(?:\"([^\"]+)\"|(v[\\w.]+))/m.exec(text);\n if (appMatch && appMatch.index !== undefined) {\n doc.app = { name: appMatch[1], version: appMatch[2] ?? appMatch[3] ?? '', span: { start: appMatch.index, end: lineEnd(text, appMatch.index) } };\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/** 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,11 +1,11 @@
1
- import { O as OrbitalEntity, a as EntityPersistence, E as EntityField, F as FieldValue, g as EntityRow } from '../effect-Hm_QDaSI.js';
2
- import { a as OrbitalDefinition, O as OrbitalSchema } from '../schema-COf9yTjs.js';
3
- import { S as SExpr } from '../expression-DRwzVnMu.js';
4
- export { E as EntityAccessPolicies, e as entityAccessPolicies, a as entityAccessPoliciesByStoreKey, b as entityAccessTable } from '../entityAccess-D2OpLCyX.js';
1
+ import { O as OrbitalEntity, a as EntityPersistence, E as EntityField, F as FieldValue, g as EntityRow } from '../effect-Xn3LIyL7.js';
2
+ import { a as OrbitalDefinition, O as OrbitalSchema } from '../schema-sHVqe8Kb.js';
3
+ import { S as SExpr } from '../expression-CfeHdS-f.js';
4
+ export { E as EntityAccessPolicies, e as entityAccessPolicies, a as entityAccessPoliciesByStoreKey, b as entityAccessTable } from '../entityAccess-z5HA0P7P.js';
5
5
  import 'zod';
6
6
  import '../json-D8gmyK3l.js';
7
- import '../trait-Be3xF0px.js';
8
- import '../domain-Ds_7wZIL.js';
7
+ import '../trait-BSe6oDBd.js';
8
+ import '../domain-OgMkN3WN.js';
9
9
 
10
10
  /**
11
11
  * Lightweight seeded pseudo-random generator for mock data.
@@ -960,6 +960,17 @@ function mockFieldValue(declared, index) {
960
960
  }
961
961
  return `${declared.trim()}-${index}`;
962
962
  }
963
+ function typedMockValue(field, literal) {
964
+ if (field.type === "number" || field.type === "money") {
965
+ const n = Number(literal);
966
+ return literal.trim() !== "" && Number.isFinite(n) ? n : literal;
967
+ }
968
+ if (field.type === "boolean") {
969
+ if (literal === "true") return true;
970
+ if (literal === "false") return false;
971
+ }
972
+ return literal;
973
+ }
963
974
  function sampleText(field, ctx) {
964
975
  const fieldName = field.name ?? "field";
965
976
  if (IMAGE_FIELD_NAMES.has(fieldName.toLowerCase())) {
@@ -1036,7 +1047,7 @@ function sampleFieldValue(field, ctx) {
1036
1047
  }
1037
1048
  if (field.mock !== void 0) {
1038
1049
  const ordinal = isRuntime ? 1 : ctx.index;
1039
- return mockFieldValue(field.mock, ordinal);
1050
+ return typedMockValue(field, mockFieldValue(field.mock, ordinal));
1040
1051
  }
1041
1052
  switch (field.type) {
1042
1053
  case "string":