@kalada/syntax 0.1.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.
- package/README.md +98 -0
- package/dist/index.cjs +2027 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +231 -0
- package/dist/index.d.ts +231 -0
- package/dist/index.js +2017 -0
- package/dist/index.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/freeze.ts","../src/diagnostics.ts","../src/limits.ts","../src/lex-literals.ts","../src/lexer.ts","../src/operators.ts","../src/parser-budget.ts","../src/parser-types.ts","../src/parser.ts","../src/parse.ts","../src/static-types.ts","../src/direct-location.ts","../src/format.ts","../src/guest-boundary.ts","../src/dispatch.ts","../src/reference-environment.ts","../src/semantic-inference.ts","../src/source-map.ts","../src/lower.ts","../src/semantic-query.ts"],"names":["property","isIdentifierStart","token","target","coalesce","result","record","failure","diagnostic"],"mappings":"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","file":"index.js","sourcesContent":["export function freezeRange(start: number, end: number): Readonly<{ start: number; end: number }> {\n return Object.freeze({ start, end });\n}\n\nexport function deepFreeze<T>(value: T): T {\n if (typeof value !== \"object\" || value === null || Object.isFrozen(value)) return value;\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor && \"value\" in descriptor) deepFreeze(descriptor.value);\n }\n return Object.freeze(value);\n}\n","import type { KaladaSourceRange } from \"./cst-types.js\";\nimport { deepFreeze, freezeRange } from \"./freeze.js\";\nimport type {\n KaladaSyntaxDiagnostic,\n KaladaSyntaxDiagnosticCode,\n KaladaSyntaxLimits,\n} from \"./public-types.js\";\n\nexport const KALADA_SYNTAX_DIAGNOSTIC_MESSAGES = Object.freeze({\n KALADA_SYNTAX_INVALID_INPUT: \"Kalada syntax input is invalid.\",\n KALADA_SYNTAX_LIMIT_EXCEEDED: \"Kalada syntax input exceeds a configured limit.\",\n KALADA_SYNTAX_UNEXPECTED_TOKEN: \"Kalada syntax contains an unexpected token.\",\n KALADA_SYNTAX_EXPECTED_EXPRESSION: \"Kalada syntax expected an expression.\",\n KALADA_SYNTAX_EXPECTED_FIELD: \"Kalada syntax expected a field name.\",\n KALADA_SYNTAX_EXPECTED_RIGHT_PARENTHESIS: \"Kalada syntax expected a closing parenthesis.\",\n KALADA_SYNTAX_EXPECTED_COLON: \"Kalada syntax expected a colon.\",\n KALADA_SYNTAX_INVALID_NUMBER: \"Kalada syntax contains an invalid JSON number.\",\n KALADA_SYNTAX_INVALID_STRING: \"Kalada syntax contains an invalid JSON string.\",\n KALADA_SYNTAX_UNSUPPORTED_FORM: \"Kalada syntax form is not supported.\",\n KALADA_SYNTAX_UNSUPPORTED_OPERATOR: \"Kalada syntax operator is not supported.\",\n KALADA_SYNTAX_RELATIONAL_CHAIN: \"Kalada relational and membership operators cannot be chained.\",\n KALADA_SYNTAX_COALESCE_LOGICAL_MIX:\n \"Kalada null coalescing cannot be mixed with && or || without parentheses.\",\n KALADA_SYNTAX_UNKNOWN_REFERENCE: \"Kalada reference is not present in the lowering environment.\",\n KALADA_SYNTAX_WRITE_INELIGIBLE: \"Expression is not a static direct write location.\",\n KALADA_SYNTAX_WRITE_BINDING_INVALID: \"Write location binding is missing or invalid.\",\n KALADA_SYNTAX_WRITE_PROPERTY_INVALID: \"Write location property is missing or invalid.\",\n} satisfies Readonly<Record<KaladaSyntaxDiagnosticCode, string>>);\n\nexport class DiagnosticSink {\n readonly diagnostics: KaladaSyntaxDiagnostic[];\n readonly limits: KaladaSyntaxLimits;\n private limitIndex: number | null;\n\n constructor(limits: KaladaSyntaxLimits, initial: readonly KaladaSyntaxDiagnostic[] = []) {\n this.limits = limits;\n this.diagnostics = [...initial];\n const limitIndex = initial.findIndex((item) => item.code === \"KALADA_SYNTAX_LIMIT_EXCEEDED\");\n this.limitIndex = limitIndex < 0 ? null : limitIndex;\n }\n\n add(\n phase: KaladaSyntaxDiagnostic[\"phase\"],\n code: KaladaSyntaxDiagnosticCode,\n range: KaladaSourceRange,\n path: readonly (string | number)[] = [],\n ): void {\n if (this.diagnostics.length >= this.limits.maxDiagnostics) {\n if (this.limitIndex === null) this.limit(phase, range);\n return;\n }\n this.diagnostics.push(\n diagnostic(phase, code, KALADA_SYNTAX_DIAGNOSTIC_MESSAGES[code], range, path),\n );\n }\n\n limit(phase: KaladaSyntaxDiagnostic[\"phase\"], range: KaladaSourceRange): void {\n const current = this.limitIndex === null ? undefined : this.diagnostics[this.limitIndex];\n if (current && current.range.start <= range.start) return;\n const problem = diagnostic(\n phase,\n \"KALADA_SYNTAX_LIMIT_EXCEEDED\",\n KALADA_SYNTAX_DIAGNOSTIC_MESSAGES.KALADA_SYNTAX_LIMIT_EXCEEDED,\n range,\n [],\n );\n if (this.limitIndex !== null) {\n this.diagnostics.splice(this.limitIndex, 1, problem);\n return;\n }\n if (this.diagnostics.length >= this.limits.maxDiagnostics) {\n this.diagnostics.splice(-1, 1, problem);\n this.limitIndex = this.diagnostics.length - 1;\n return;\n }\n this.diagnostics.push(problem);\n this.limitIndex = this.diagnostics.length - 1;\n }\n\n hasLexicalLimitAt(start: number): boolean {\n return this.diagnostics.some(\n (item) =>\n item.phase === \"lex\" &&\n item.code === \"KALADA_SYNTAX_LIMIT_EXCEEDED\" &&\n item.range.start === start,\n );\n }\n}\n\nexport function diagnostic(\n phase: KaladaSyntaxDiagnostic[\"phase\"],\n code: KaladaSyntaxDiagnostic[\"code\"],\n message: string,\n range: KaladaSourceRange,\n path: readonly (string | number)[],\n): KaladaSyntaxDiagnostic {\n return deepFreeze({\n phase,\n code,\n message,\n range: freezeRange(range.start, range.end),\n path: [...path],\n });\n}\n","import type { KaladaSyntaxLimits } from \"./public-types.js\";\n\nexport const DEFAULT_KALADA_SYNTAX_LIMITS: Readonly<KaladaSyntaxLimits> = Object.freeze({\n maxSourceLength: 100_000,\n maxTokens: 20_000,\n maxCstDepth: 64,\n maxCstNodes: 10_000,\n maxDiagnostics: 100,\n maxRecoveryTokens: 1_000,\n maxIdentifierLength: 1_000,\n maxDecodedStringLength: 10_000,\n maxStaticTypeDepth: 64,\n});\n\nexport const MAXIMUM_KALADA_SYNTAX_LIMITS: Readonly<KaladaSyntaxLimits> = Object.freeze({\n maxSourceLength: 1_000_000,\n maxTokens: 200_000,\n maxCstDepth: 256,\n maxCstNodes: 100_000,\n maxDiagnostics: 1_000,\n maxRecoveryTokens: 10_000,\n maxIdentifierLength: 100_000,\n maxDecodedStringLength: 1_000_000,\n maxStaticTypeDepth: 256,\n});\n\nexport function resolveSyntaxLimits(options: unknown): KaladaSyntaxLimits | null {\n if (options === undefined) return DEFAULT_KALADA_SYNTAX_LIMITS;\n if (!hasOnlyKeys(options, new Set([\"limits\"]))) return null;\n const limitsProperty = ownDataProperty(options, \"limits\");\n if (!limitsProperty.ok) return null;\n if (!limitsProperty.present) return DEFAULT_KALADA_SYNTAX_LIMITS;\n const limits = limitsProperty.value;\n if (!isPlainRecord(limits)) return null;\n const output = { ...DEFAULT_KALADA_SYNTAX_LIMITS };\n for (const key of Object.keys(DEFAULT_KALADA_SYNTAX_LIMITS) as (keyof KaladaSyntaxLimits)[]) {\n const property = ownDataProperty(limits, key);\n if (!property.ok) return null;\n if (!property.present || property.value === undefined) continue;\n const value = property.value;\n if (\n typeof value !== \"number\" ||\n !Number.isSafeInteger(value) ||\n value < 1 ||\n value > MAXIMUM_KALADA_SYNTAX_LIMITS[key]\n )\n return null;\n output[key] = value;\n }\n return Object.freeze(output);\n}\n\nexport function ownDataProperty(\n input: unknown,\n key: PropertyKey,\n): { readonly ok: boolean; readonly present: boolean; readonly value?: unknown } {\n if ((typeof input !== \"object\" && typeof input !== \"function\") || input === null)\n return { ok: false, present: false };\n try {\n const descriptor = Object.getOwnPropertyDescriptor(input, key);\n if (!descriptor) return { ok: true, present: false };\n return \"value\" in descriptor\n ? { ok: true, present: true, value: descriptor.value }\n : { ok: false, present: true };\n } catch {\n return { ok: false, present: false };\n }\n}\n\nfunction isPlainRecord(input: unknown): input is Partial<KaladaSyntaxLimits> {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) return false;\n try {\n const keys = Reflect.ownKeys(input);\n const allowed = new Set(Reflect.ownKeys(DEFAULT_KALADA_SYNTAX_LIMITS));\n return keys.every((key) => typeof key === \"string\" && allowed.has(key));\n } catch {\n return false;\n }\n}\n\nexport function hasOnlyKeys(input: unknown, allowed: ReadonlySet<string>): boolean {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) return false;\n try {\n return Reflect.ownKeys(input).every((key) => typeof key === \"string\" && allowed.has(key));\n } catch {\n return false;\n }\n}\n","import type { KaladaToken, KaladaTokenKind } from \"./cst-types.js\";\nimport type { DiagnosticSink } from \"./diagnostics.js\";\nimport { freezeRange } from \"./freeze.js\";\nimport type { KaladaSyntaxLimits } from \"./public-types.js\";\n\n// A guest scanner supplies state so a lexical limit cannot be confused with a malformed literal.\nexport interface GuestTokenState {\n limited: boolean;\n}\n\nexport function token(\n kind: KaladaTokenKind,\n text: string,\n start: number,\n end: number,\n): KaladaToken {\n return Object.freeze({ kind, text, range: freezeRange(start, end) });\n}\n\nexport function limitedToken(\n source: string,\n start: number,\n end: number,\n sink: DiagnosticSink,\n guest?: GuestTokenState,\n): KaladaToken {\n const limitEnd = guest ? end : source.length;\n sink.limit(\"lex\", freezeRange(start, limitEnd));\n if (guest) guest.limited = true;\n return token(\"invalid\", source.slice(start, limitEnd), start, limitEnd);\n}\n\nexport function scanNumber(source: string, start: number, sink: DiagnosticSink): KaladaToken {\n let end = scanDigits(source, start);\n if (source[end] === \".\" && isDigit(source[end + 1] as string)) {\n end = scanDigits(source, end + 1);\n }\n if (source[end] === \"e\" || source[end] === \"E\") {\n end += 1;\n if (source[end] === \"+\" || source[end] === \"-\") end += 1;\n end = scanDigits(source, end);\n }\n let text = source.slice(start, end);\n let valid = validNumber(text);\n if (source[end] === \".\" && !(valid && isIdentifierStart(source[end + 1] as string))) {\n end += 1;\n text = source.slice(start, end);\n valid = false;\n }\n if (!valid) sink.add(\"lex\", \"KALADA_SYNTAX_INVALID_NUMBER\", freezeRange(start, end));\n return token(valid ? \"number\" : \"invalid\", text, start, end);\n}\n\nfunction scanDigits(source: string, start: number): number {\n let end = start;\n while (end < source.length && isDigit(source[end] as string)) end += 1;\n return end;\n}\n\nfunction validNumber(text: string): boolean {\n return (\n /^(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/u.test(text) &&\n Number.isFinite(Number(text))\n );\n}\n\nexport function scanString(\n source: string,\n start: number,\n limits: KaladaSyntaxLimits,\n sink: DiagnosticSink,\n guest?: GuestTokenState,\n): KaladaToken {\n let end = start + 1;\n let escaped = false;\n while (end < source.length) {\n const character = source[end] as string;\n end += 1;\n if (!escaped && character === '\"') break;\n escaped = !escaped && character === \"\\\\\";\n if (character !== \"\\\\\") escaped = false;\n }\n const text = source.slice(start, end);\n let value: unknown;\n try {\n value = JSON.parse(text);\n } catch {\n value = null;\n }\n if (typeof value === \"string\" && value.length > limits.maxDecodedStringLength) {\n return limitedToken(source, start, end, sink, guest);\n }\n const valid = typeof value === \"string\";\n if (!valid) sink.add(\"lex\", \"KALADA_SYNTAX_INVALID_STRING\", freezeRange(start, end));\n return token(valid ? \"string\" : \"invalid\", text, start, end);\n}\n\nfunction isIdentifierStart(value: string): boolean {\n return value?.length === 1 && /[A-Za-z_]/u.test(value);\n}\n\nexport function isDigit(value: string): boolean {\n return /[0-9]/u.test(value);\n}\n","import type { KaladaToken, KaladaTokenKind } from \"./cst-types.js\";\nimport { DiagnosticSink, diagnostic } from \"./diagnostics.js\";\nimport { deepFreeze, freezeRange } from \"./freeze.js\";\nimport {\n type GuestTokenState,\n isDigit,\n limitedToken,\n scanNumber,\n scanString,\n token,\n} from \"./lex-literals.js\";\nimport type { KaladaSyntaxDiagnostic, KaladaSyntaxLimits } from \"./public-types.js\";\n\nexport interface LexResult {\n readonly tokens: readonly KaladaToken[];\n readonly diagnostics: readonly KaladaSyntaxDiagnostic[];\n}\n\nexport interface GuestLexResult extends LexResult {\n readonly stop: number | null;\n readonly unmatchedParentheses: boolean;\n readonly unsupportedComment: boolean;\n readonly unsupportedQuote: boolean;\n}\n\nconst VALID_OPERATORS = [\n \"??\",\n \"&&\",\n \"||\",\n \"==\",\n \"!=\",\n \"<=\",\n \">=\",\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \"%\",\n \"!\",\n \"<\",\n \">\",\n];\nconst UNSUPPORTED_OPERATORS = [\n \"===\",\n \"!==\",\n \"=>\",\n \"**\",\n \"++\",\n \"--\",\n \"<<\",\n \">>\",\n \"^\",\n \"&\",\n \"|\",\n \"=\",\n \"~\",\n];\n\nexport function lex(source: string, limits: KaladaSyntaxLimits): LexResult {\n const sink = new DiagnosticSink(limits);\n if (source.length > limits.maxSourceLength) {\n sink.limit(\"lex\", freezeRange(0, source.length));\n return result(\n [token(\"invalid\", source, 0, source.length), token(\"eof\", \"\", source.length, source.length)],\n sink,\n );\n }\n const tokens: KaladaToken[] = [];\n let offset = 0;\n while (offset < source.length) {\n if (tokens.length >= limits.maxTokens) {\n sink.limit(\"lex\", freezeRange(offset, source.length));\n tokens.push(token(\"invalid\", source.slice(offset), offset, source.length));\n offset = source.length;\n break;\n }\n const next = scanToken(source, offset, limits, sink);\n tokens.push(next);\n offset = next.range.end;\n }\n tokens.push(token(\"eof\", \"\", source.length, source.length));\n return result(tokens, sink);\n}\n\n// The bounded window prevents any token scanner (including strings/comments) from reading host tail.\nexport function lexGuest(\n source: string,\n start: number,\n limits: KaladaSyntaxLimits,\n): GuestLexResult {\n const window = source.slice(start, start + limits.maxSourceLength + 1);\n const scanned = scanGuest(window, limits);\n return deepFreeze({\n stop: scanned.stop === null ? null : start + scanned.stop,\n unmatchedParentheses: scanned.unmatchedParentheses,\n unsupportedComment: scanned.unsupportedComment,\n unsupportedQuote: scanned.unsupportedQuote,\n tokens: scanned.tokens.map((item) =>\n token(item.kind, item.text, start + item.range.start, start + item.range.end),\n ),\n diagnostics: scanned.diagnostics.map((item) =>\n diagnostic(\n item.phase,\n item.code,\n item.message,\n freezeRange(start + item.range.start, start + item.range.end),\n item.path,\n ),\n ),\n });\n}\n\nfunction scanGuest(source: string, limits: KaladaSyntaxLimits): GuestLexResult {\n const sink = new DiagnosticSink(limits);\n const tokens: KaladaToken[] = [];\n let offset = 0;\n let depth = 0;\n let unmatchedParentheses = false;\n let unsupportedComment = false;\n let unsupportedQuote = false;\n let stop: number | null = null;\n while (offset < source.length) {\n if (source[offset] === \"}\") {\n stop = offset;\n unmatchedParentheses ||= depth !== 0;\n break;\n }\n if (offset >= limits.maxSourceLength || tokens.length >= limits.maxTokens) {\n sink.limit(\"lex\", freezeRange(offset, offset));\n break;\n }\n const opener = ambiguousGuestOpener(source, offset);\n if (opener !== null) {\n // Ownership is ambiguous at this seam; never scan the body for a host brace.\n sink.add(\"lex\", \"KALADA_SYNTAX_UNSUPPORTED_FORM\", freezeRange(offset, offset));\n stop = offset;\n unsupportedComment = opener === \"comment\";\n unsupportedQuote = opener === \"quote\";\n break;\n }\n const guest: GuestTokenState = { limited: false };\n const next = scanToken(source, offset, limits, sink, guest);\n tokens.push(next);\n offset = next.range.end;\n if (guest.limited) break;\n depth += parenthesisDelta(next);\n unmatchedParentheses ||= depth < 0;\n if (offset > limits.maxSourceLength)\n sink.limit(\"lex\", freezeRange(limits.maxSourceLength, offset));\n }\n if (stop === null && source.length > limits.maxSourceLength) {\n sink.limit(\"lex\", freezeRange(limits.maxSourceLength, limits.maxSourceLength));\n }\n return finishGuest(tokens, sink, offset, {\n stop,\n unmatchedParentheses,\n unsupportedComment,\n unsupportedQuote,\n });\n}\n\nfunction finishGuest(\n tokens: KaladaToken[],\n sink: DiagnosticSink,\n offset: number,\n state: Pick<\n GuestLexResult,\n \"stop\" | \"unmatchedParentheses\" | \"unsupportedComment\" | \"unsupportedQuote\"\n >,\n): GuestLexResult {\n tokens.push(token(\"eof\", \"\", offset, offset));\n return deepFreeze({\n tokens,\n diagnostics: sink.diagnostics,\n ...state,\n });\n}\n\nfunction ambiguousGuestOpener(source: string, offset: number): \"comment\" | \"quote\" | null {\n if (source.startsWith(\"//\", offset) || source.startsWith(\"/*\", offset)) return \"comment\";\n if (source[offset] === \"'\" || source[offset] === \"`\") return \"quote\";\n return null;\n}\n\nfunction parenthesisDelta(found: KaladaToken): number {\n if (found.kind === \"left-parenthesis\") return 1;\n if (found.kind === \"right-parenthesis\") return -1;\n return 0;\n}\n\nfunction scanToken(\n source: string,\n start: number,\n limits: KaladaSyntaxLimits,\n sink: DiagnosticSink,\n guest?: GuestTokenState,\n): KaladaToken {\n const character = source[start] as string;\n if (isWhitespace(character)) return scanWhile(source, start, isWhitespace, \"whitespace\");\n if (isIdentifierStart(character)) return scanIdentifier(source, start, limits, sink, guest);\n if (isDigit(character)) return scanNumber(source, start, sink);\n if (character === '\"') return scanString(source, start, limits, sink, guest);\n return scanSymbol(source, start, sink);\n}\n\nfunction scanSymbol(source: string, start: number, sink: DiagnosticSink): KaladaToken {\n const character = source[start] as string;\n if (\n (character === \"/\" && source[start + 1] === \"/\") ||\n (character === \"/\" && source[start + 1] === \"*\")\n ) {\n return scanComment(source, start, sink);\n }\n if (character === \"'\" || character === \"`\") return scanQuotedUnsupported(source, start, sink);\n if (source.startsWith(\"?.\", start)) return token(\"optional-dot\", \"?.\", start, start + 2);\n const unsupported = matchAt(source, start, UNSUPPORTED_OPERATORS);\n const operator = matchAt(source, start, VALID_OPERATORS);\n if (unsupported && (!operator || unsupported.length > operator.length)) {\n return unsupportedToken(source, start, unsupported.length, sink, \"operator\");\n }\n if (operator) return token(\"operator\", operator, start, start + operator.length);\n if (unsupported) return unsupportedToken(source, start, unsupported.length, sink, \"operator\");\n const navigation = scanNavigation(source, start);\n if (navigation) return navigation;\n if (\"[]{};,\".includes(character)) return unsupportedToken(source, start, 1, sink, \"form\");\n sink.add(\"lex\", \"KALADA_SYNTAX_UNEXPECTED_TOKEN\", freezeRange(start, start + 1));\n return token(\"invalid\", character, start, start + 1);\n}\n\nfunction scanIdentifier(\n source: string,\n start: number,\n limits: KaladaSyntaxLimits,\n sink: DiagnosticSink,\n guest?: GuestTokenState,\n): KaladaToken {\n const found = scanWhile(source, start, isIdentifierContinue, \"identifier\");\n if (found.text.length > limits.maxIdentifierLength) {\n return limitedToken(source, start, found.range.end, sink, guest);\n }\n const keyword = ([\"true\", \"false\", \"null\", \"in\", \"xor\"] as const).find(\n (item) => item === found.text,\n );\n return keyword ? token(keyword, found.text, found.range.start, found.range.end) : found;\n}\n\nfunction scanComment(source: string, start: number, sink: DiagnosticSink): KaladaToken {\n const line = source.startsWith(\"//\", start);\n let end = start + 2;\n if (line) while (end < source.length && source[end] !== \"\\n\" && source[end] !== \"\\r\") end += 1;\n else {\n const close = source.indexOf(\"*/\", end);\n end = close < 0 ? source.length : close + 2;\n }\n return unsupportedToken(source, start, end - start, sink, \"form\");\n}\n\nfunction scanQuotedUnsupported(source: string, start: number, sink: DiagnosticSink): KaladaToken {\n const quote = source[start];\n let end = start + 1;\n while (\n end < source.length &&\n source[end] !== quote &&\n source[end] !== \"\\n\" &&\n source[end] !== \"\\r\"\n )\n end += 1;\n if (source[end] === quote) end += 1;\n return unsupportedToken(source, start, end - start, sink, \"form\");\n}\n\nfunction scanNavigation(source: string, start: number): KaladaToken | null {\n if (source.startsWith(\"?.\", start)) return token(\"optional-dot\", \"?.\", start, start + 2);\n const kinds: Readonly<Record<string, KaladaTokenKind>> = {\n \"(\": \"left-parenthesis\",\n \")\": \"right-parenthesis\",\n \".\": \"dot\",\n \"?\": \"question\",\n \":\": \"colon\",\n };\n const text = source[start] as string;\n return kinds[text] ? token(kinds[text], text, start, start + 1) : null;\n}\n\nfunction unsupportedToken(\n source: string,\n start: number,\n length: number,\n sink: DiagnosticSink,\n type: \"form\" | \"operator\",\n): KaladaToken {\n const end = start + length;\n sink.add(\n \"lex\",\n type === \"form\" ? \"KALADA_SYNTAX_UNSUPPORTED_FORM\" : \"KALADA_SYNTAX_UNSUPPORTED_OPERATOR\",\n freezeRange(start, end),\n );\n return token(\"unsupported\", source.slice(start, end), start, end);\n}\n\nfunction scanWhile(\n source: string,\n start: number,\n predicate: (value: string) => boolean,\n kind: KaladaTokenKind,\n): KaladaToken {\n let end = start + 1;\n while (end < source.length && predicate(source[end] as string)) end += 1;\n return token(kind, source.slice(start, end), start, end);\n}\n\nfunction matchAt(source: string, start: number, values: readonly string[]): string | null {\n return (\n [...values]\n .sort((left, right) => right.length - left.length)\n .find((value) => source.startsWith(value, start)) ?? null\n );\n}\n\nfunction result(tokens: KaladaToken[], sink: DiagnosticSink): LexResult {\n return deepFreeze({ tokens, diagnostics: sink.diagnostics });\n}\n\nfunction isWhitespace(value: string): boolean {\n return value === \" \" || value === \"\\t\" || value === \"\\r\" || value === \"\\n\";\n}\n\nfunction isIdentifierStart(value: string): boolean {\n return value?.length === 1 && /[A-Za-z_]/u.test(value);\n}\n\nfunction isIdentifierContinue(value: string): boolean {\n return value?.length === 1 && /[A-Za-z0-9_]/u.test(value);\n}\n","import type { KaladaBinaryOperator } from \"./cst-types.js\";\n\nconst tiers = Object.freeze({\n multiplicative: Object.freeze([\"*\", \"/\", \"%\"] as const),\n additive: Object.freeze([\"+\", \"-\"] as const),\n relational: Object.freeze([\"<\", \"<=\", \">\", \">=\", \"in\"] as const),\n equality: Object.freeze([\"==\", \"!=\"] as const),\n logicalAnd: Object.freeze([\"&&\"] as const),\n logicalXor: Object.freeze([\"xor\"] as const),\n logicalOr: Object.freeze([\"||\"] as const),\n coalesce: Object.freeze([\"??\"] as const),\n});\n\nexport const BINARY_OPERATOR_TIERS = Object.freeze({\n multiplicative: new Set<string>(tiers.multiplicative),\n additive: new Set<string>(tiers.additive),\n relational: new Set<string>(tiers.relational),\n equality: new Set<string>(tiers.equality),\n logicalAnd: new Set<string>(tiers.logicalAnd),\n logicalXor: new Set<string>(tiers.logicalXor),\n logicalOr: new Set<string>(tiers.logicalOr),\n coalesce: new Set<string>(tiers.coalesce),\n});\n\nexport const BINARY_OPERATORS: readonly KaladaBinaryOperator[] = Object.freeze([\n ...tiers.multiplicative,\n ...tiers.additive,\n ...tiers.relational,\n ...tiers.equality,\n ...tiers.logicalAnd,\n ...tiers.logicalXor,\n ...tiers.logicalOr,\n ...tiers.coalesce,\n]);\n\nexport function isAdditiveOperator(operator: KaladaBinaryOperator): operator is \"+\" | \"-\" {\n return BINARY_OPERATOR_TIERS.additive.has(operator);\n}\n","import type { KaladaCstNode, KaladaErrorCstNode, KaladaSourceRange } from \"./cst-types.js\";\nimport type { DiagnosticSink } from \"./diagnostics.js\";\nimport { freezeRange } from \"./freeze.js\";\nimport type { KaladaSyntaxLimits } from \"./public-types.js\";\n\nexport class ParserLimit extends Error {\n readonly node: KaladaErrorCstNode;\n\n constructor(node: KaladaErrorCstNode) {\n super(\"KALADA_SYNTAX_LIMIT_EXCEEDED\");\n this.node = node;\n }\n}\n\nexport class ParserBudget {\n private nodes = 0;\n private recovered = 0;\n private pendingDepth = 0;\n private stopped = false;\n private readonly limits: KaladaSyntaxLimits;\n private readonly sink: DiagnosticSink;\n private readonly sourceEnd: number;\n\n constructor(limits: KaladaSyntaxLimits, sink: DiagnosticSink, sourceEnd: number) {\n this.limits = limits;\n this.sink = sink;\n this.sourceEnd = sourceEnd;\n }\n\n create<T extends KaladaCstNode>(node: T): T {\n if (this.nodes >= this.limits.maxCstNodes) this.stop(node.range.start);\n this.nodes += 1;\n return Object.freeze(node);\n }\n\n finishDepth(depth: number, start: number): void {\n if (this.pendingDepth + depth > this.limits.maxCstDepth) this.stop(start);\n }\n\n recover(range: KaladaSourceRange): void {\n if (this.recovered >= this.limits.maxRecoveryTokens) this.stop(range.start);\n this.recovered += 1;\n }\n\n exhaust(start: number): never {\n return this.stop(start);\n }\n\n withWrapper<T>(start: number, parse: () => T): T {\n if (this.pendingDepth + 1 >= this.limits.maxCstDepth) this.stop(start);\n this.pendingDepth += 1;\n try {\n return parse();\n } finally {\n this.pendingDepth -= 1;\n }\n }\n\n withConditional<T>(conditionDepth: number, start: number, parse: () => T): T {\n if (this.pendingDepth + conditionDepth + 1 > this.limits.maxCstDepth) this.stop(start);\n return this.withWrapper(start, parse);\n }\n\n withinWrapper<T>(start: number, parse: () => T): T {\n if (this.pendingDepth >= this.limits.maxCstDepth) this.stop(start);\n return parse();\n }\n\n private stop(start: number): never {\n const range = freezeRange(start, this.sourceEnd);\n if (!this.stopped) {\n this.stopped = true;\n this.sink.limit(\"parse\", range);\n }\n throw new ParserLimit(Object.freeze({ kind: \"error\", token: null, range }));\n }\n}\n","import type { KaladaCstNode } from \"./cst-types.js\";\n\nexport interface Parsed {\n readonly node: KaladaCstNode;\n readonly coalesce: boolean;\n readonly logical: boolean;\n readonly depth: number;\n}\n\nexport function maxParsedDepth(...values: readonly Parsed[]): number {\n return Math.max(...values.map((value) => value.depth));\n}\n","import type {\n KaladaBinaryOperator,\n KaladaCstNode,\n KaladaErrorCstNode,\n KaladaToken,\n} from \"./cst-types.js\";\nimport { DiagnosticSink } from \"./diagnostics.js\";\nimport { freezeRange } from \"./freeze.js\";\nimport { BINARY_OPERATOR_TIERS } from \"./operators.js\";\nimport { ParserBudget, ParserLimit } from \"./parser-budget.js\";\nimport { maxParsedDepth, type Parsed } from \"./parser-types.js\";\nimport type { KaladaSyntaxDiagnostic, KaladaSyntaxLimits } from \"./public-types.js\";\n\nconst OPERATORS = BINARY_OPERATOR_TIERS;\nexport class Parser {\n private index = 0;\n readonly sink: DiagnosticSink;\n private readonly tokens: readonly KaladaToken[];\n private readonly budget: ParserBudget;\n constructor(\n tokens: readonly KaladaToken[],\n limits: KaladaSyntaxLimits,\n diagnostics: readonly KaladaSyntaxDiagnostic[],\n ) {\n this.tokens = tokens;\n this.sink = new DiagnosticSink(limits, diagnostics);\n this.budget = new ParserBudget(limits, this.sink, tokens[tokens.length - 1]?.range.end ?? 0);\n }\n parse(): KaladaCstNode {\n try {\n const expression = this.parseConditional().node;\n while (!this.at(\"eof\")) {\n const current = this.current();\n this.budget.recover(current.range);\n const alreadyDiagnosed = current.kind === \"unsupported\" || current.kind === \"invalid\";\n if (current.kind === \"left-parenthesis\")\n this.sink.add(\"parse\", \"KALADA_SYNTAX_UNSUPPORTED_FORM\", current.range);\n if (current.kind !== \"left-parenthesis\" && !alreadyDiagnosed) {\n this.sink.add(\"parse\", \"KALADA_SYNTAX_UNEXPECTED_TOKEN\", current.range);\n }\n this.consume();\n }\n return expression;\n } catch (error) {\n if (error instanceof ParserLimit) {\n this.index = this.tokens.length - 1;\n return error.node;\n }\n throw error;\n }\n }\n private parseConditional(): Parsed {\n const condition = this.parseCoalesce();\n if (!this.at(\"question\")) return condition;\n const branches = this.parseConditionalBranches(condition.depth);\n const node = this.create({\n kind: \"conditional\",\n condition: condition.node,\n questionToken: branches.questionToken,\n // biome-ignore lint/suspicious/noThenProperty: The CST field mirrors ternary syntax.\n then: branches.then.node,\n colonToken: branches.colonToken,\n else: branches.otherwise.node,\n range: freezeRange(condition.node.range.start, branches.otherwise.node.range.end),\n });\n return this.parsed(\n node,\n false,\n false,\n maxParsedDepth(condition, branches.then, branches.otherwise) + 1,\n );\n }\n private parseConditionalBranches(conditionDepth: number): {\n readonly questionToken: number;\n readonly then: Parsed;\n readonly colonToken: number | null;\n readonly otherwise: Parsed;\n } {\n return this.budget.withConditional(conditionDepth, this.current().range.start, () => {\n const questionToken = this.consume();\n const then = this.budget.withinWrapper(this.current().range.start, () =>\n this.parseConditional(),\n );\n let colonToken: number | null = null;\n if (this.at(\"colon\")) colonToken = this.consume();\n else this.sink.add(\"parse\", \"KALADA_SYNTAX_EXPECTED_COLON\", this.current().range);\n const otherwise = this.budget.withinWrapper(this.current().range.start, () =>\n this.parseConditional(),\n );\n return { questionToken, then, colonToken, otherwise };\n });\n }\n\n private parseCoalesce(): Parsed {\n let left = this.parseLogicalOr();\n while (this.currentOperator(OPERATORS.coalesce)) {\n const operatorToken = this.consume();\n const right = this.parseLogicalOr();\n if (left.logical || right.logical) {\n this.sink.add(\n \"parse\",\n \"KALADA_SYNTAX_COALESCE_LOGICAL_MIX\",\n this.token(operatorToken).range,\n );\n }\n left = this.binary(left, right, \"??\", operatorToken, true, left.logical || right.logical);\n }\n return left;\n }\n\n private parseLogicalOr(): Parsed {\n return this.parseBinaryTier(() => this.parseLogicalXor(), OPERATORS.logicalOr, true);\n }\n\n private parseLogicalXor(): Parsed {\n return this.parseBinaryTier(() => this.parseLogicalAnd(), OPERATORS.logicalXor, false);\n }\n\n private parseLogicalAnd(): Parsed {\n return this.parseBinaryTier(() => this.parseEquality(), OPERATORS.logicalAnd, true);\n }\n\n private parseEquality(): Parsed {\n return this.parseBinaryTier(() => this.parseRelational(), OPERATORS.equality, false);\n }\n\n private parseRelational(): Parsed {\n let left = this.parseAdditive();\n let seen = false;\n while (this.currentOperator(OPERATORS.relational)) {\n const operatorToken = this.consume();\n if (seen) {\n this.sink.add(\"parse\", \"KALADA_SYNTAX_RELATIONAL_CHAIN\", this.token(operatorToken).range);\n }\n seen = true;\n const operator = this.token(operatorToken).text as KaladaBinaryOperator;\n left = this.binary(\n left,\n this.parseAdditive(),\n operator,\n operatorToken,\n left.coalesce,\n left.logical,\n );\n }\n return left;\n }\n\n private parseAdditive(): Parsed {\n return this.parseBinaryTier(() => this.parseMultiplicative(), OPERATORS.additive, false);\n }\n\n private parseMultiplicative(): Parsed {\n return this.parseBinaryTier(() => this.parseUnary(), OPERATORS.multiplicative, false);\n }\n\n private parseBinaryTier(\n next: () => Parsed,\n operators: ReadonlySet<string>,\n logical: boolean,\n ): Parsed {\n let left = next();\n while (this.currentOperator(operators)) {\n const operatorToken = this.consume();\n const operator = this.token(operatorToken).text as KaladaBinaryOperator;\n const right = next();\n if (logical && (left.coalesce || right.coalesce)) {\n this.sink.add(\n \"parse\",\n \"KALADA_SYNTAX_COALESCE_LOGICAL_MIX\",\n this.token(operatorToken).range,\n );\n }\n left = this.binary(\n left,\n right,\n operator,\n operatorToken,\n left.coalesce || right.coalesce,\n logical || left.logical || right.logical,\n );\n }\n return left;\n }\n\n private parseUnary(): Parsed {\n const token = this.current();\n if (token.kind !== \"operator\" || ![\"!\", \"+\", \"-\"].includes(token.text))\n return this.parsePostfix();\n const operatorToken = this.consume();\n const operand = this.budget.withWrapper(this.current().range.start, () => this.parseUnary());\n const node = this.create({\n kind: \"unary\",\n operator: token.text as \"!\" | \"+\" | \"-\",\n operatorToken,\n operand: operand.node,\n range: freezeRange(token.range.start, operand.node.range.end),\n });\n return this.parsed(node, operand.coalesce, operand.logical, operand.depth + 1);\n }\n\n private parsePostfix(): Parsed {\n let target = this.parsePrimary();\n while (this.at(\"dot\") || this.at(\"optional-dot\")) {\n const operatorToken = this.consume();\n const operator = this.token(operatorToken);\n const fieldToken = this.fieldToken();\n const field = fieldToken === null ? null : this.token(fieldToken).text;\n const end = fieldToken === null ? operator.range.end : this.token(fieldToken).range.end;\n const node = this.create({\n kind: \"field-access\",\n target: target.node,\n optional: operator.kind === \"optional-dot\",\n operatorToken,\n fieldToken,\n field,\n range: freezeRange(target.node.range.start, end),\n });\n target = this.parsed(node, target.coalesce, target.logical, target.depth + 1);\n }\n return target;\n }\n\n private parsePrimary(): Parsed {\n const current = this.current();\n if (current.kind === \"identifier\") return this.reference();\n if ([\"number\", \"string\", \"true\", \"false\", \"null\"].includes(current.kind)) return this.literal();\n if (current.kind === \"left-parenthesis\") return this.group();\n if (current.kind === \"invalid\" || current.kind === \"unsupported\") {\n return this.parsed(this.error(this.recoverAdvance()), false, false, 1);\n }\n this.sink.add(\"parse\", \"KALADA_SYNTAX_EXPECTED_EXPRESSION\", current.range);\n const synchronizer =\n current.kind === \"eof\" ||\n current.kind === \"right-parenthesis\" ||\n current.kind === \"colon\" ||\n this.isBinary(current);\n const token = synchronizer ? null : this.recoverAdvance();\n return this.parsed(this.error(token), false, false, 1);\n }\n\n private group(): Parsed {\n const openToken = this.consume();\n const expression = this.budget.withWrapper(this.current().range.start, () =>\n this.parseConditional(),\n );\n let closeToken: number | null = null;\n if (this.at(\"right-parenthesis\")) closeToken = this.consume();\n else this.sink.add(\"parse\", \"KALADA_SYNTAX_EXPECTED_RIGHT_PARENTHESIS\", this.current().range);\n const end = closeToken === null ? expression.node.range.end : this.token(closeToken).range.end;\n const node = this.create({\n kind: \"group\",\n openToken,\n expression: expression.node,\n closeToken,\n range: freezeRange(this.token(openToken).range.start, end),\n });\n return this.parsed(node, false, false, expression.depth + 1);\n }\n\n private reference(): Parsed {\n const index = this.consume();\n const found = this.token(index);\n const node = this.create({\n kind: \"reference\",\n token: index,\n name: found.text,\n range: found.range,\n });\n return this.parsed(node, false, false, 1);\n }\n\n private literal(): Parsed {\n const index = this.consume();\n const found = this.token(index);\n const value =\n found.kind === \"number\"\n ? Number(found.text)\n : found.kind === \"string\"\n ? JSON.parse(found.text)\n : found.kind === \"true\"\n ? true\n : found.kind === \"false\"\n ? false\n : null;\n const literalKind: \"number\" | \"string\" | \"boolean\" | \"null\" =\n found.kind === \"true\" || found.kind === \"false\"\n ? \"boolean\"\n : (found.kind as \"number\" | \"string\" | \"null\");\n const node = this.create({\n kind: \"literal\",\n literalKind,\n token: index,\n value,\n range: found.range,\n });\n return this.parsed(node, false, false, 1);\n }\n\n private fieldToken(): number | null {\n const current = this.current();\n if ([\"identifier\", \"true\", \"false\", \"null\", \"in\", \"xor\"].includes(current.kind))\n return this.consume();\n this.sink.add(\"parse\", \"KALADA_SYNTAX_EXPECTED_FIELD\", current.range);\n return null;\n }\n\n private binary(\n left: Parsed,\n right: Parsed,\n operator: KaladaBinaryOperator,\n operatorToken: number,\n coalesce: boolean,\n logical: boolean,\n ): Parsed {\n const node = this.create({\n kind: \"binary\",\n operator,\n operatorToken,\n left: left.node,\n right: right.node,\n range: freezeRange(left.node.range.start, right.node.range.end),\n });\n return this.parsed(\n node,\n coalesce || operator === \"??\",\n logical,\n Math.max(left.depth, right.depth) + 1,\n );\n }\n\n private parsed(node: KaladaCstNode, coalesce: boolean, logical: boolean, depth: number): Parsed {\n this.budget.finishDepth(depth, node.range.start);\n return { node, coalesce, logical, depth };\n }\n\n private create<T extends KaladaCstNode>(node: T): T {\n return this.budget.create(node);\n }\n\n private error(index: number | null): KaladaErrorCstNode {\n const range = index === null ? this.current().range : this.token(index).range;\n return this.create({ kind: \"error\", token: index, range });\n }\n\n private recoverAdvance(): number | null {\n if (this.at(\"eof\")) return null;\n this.budget.recover(this.current().range);\n const found = this.consume();\n return found;\n }\n\n private currentOperator(operators: ReadonlySet<string>): boolean {\n const current = this.current();\n return (\n (current.kind === \"operator\" || current.kind === \"in\" || current.kind === \"xor\") &&\n operators.has(current.text)\n );\n }\n\n private isBinary(value: KaladaToken): boolean {\n return (\n value.kind === \"in\" ||\n value.kind === \"xor\" ||\n (value.kind === \"operator\" && ![\"!\"].includes(value.text))\n );\n }\n\n private at(kind: KaladaToken[\"kind\"]): boolean {\n return this.current().kind === kind;\n }\n private current(): KaladaToken {\n this.skipTrivia();\n const found = this.token(this.index);\n if (found.kind === \"invalid\" && this.sink.hasLexicalLimitAt(found.range.start))\n this.budget.exhaust(found.range.start);\n return found;\n }\n private token(index: number): KaladaToken {\n const found = this.tokens[index] ?? this.tokens[this.tokens.length - 1];\n if (found === undefined) throw new Error(\"Parser token invariant failed.\");\n return found;\n }\n\n private consume(): number {\n this.skipTrivia();\n const found = this.index;\n if (this.tokens[found]?.kind !== \"eof\") this.index += 1;\n return found;\n }\n\n private skipTrivia(): void {\n while (this.tokens[this.index]?.kind === \"whitespace\") this.index += 1;\n }\n}\n","import type { KaladaCstDocument, KaladaToken } from \"./cst-types.js\";\nimport { diagnostic } from \"./diagnostics.js\";\nimport { deepFreeze, freezeRange } from \"./freeze.js\";\nimport { lex } from \"./lexer.js\";\nimport { DEFAULT_KALADA_SYNTAX_LIMITS, resolveSyntaxLimits } from \"./limits.js\";\nimport { Parser } from \"./parser.js\";\nimport type { KaladaParseOptions, KaladaParseResult, KaladaSyntaxLimits } from \"./public-types.js\";\n\nconst parseLimits = new WeakMap<KaladaParseResult, KaladaSyntaxLimits>();\n\nexport function parseKaladaV1Expression(\n source: string,\n options?: KaladaParseOptions,\n): KaladaParseResult {\n if (typeof source !== \"string\") return invalidParseResult();\n let limits: KaladaSyntaxLimits | null;\n try {\n limits = resolveSyntaxLimits(options);\n } catch {\n limits = null;\n }\n if (limits === null) return invalidParseResult(source);\n const scanned = lex(source, limits);\n return parseTokens(source, scanned.tokens, limits, scanned.diagnostics);\n}\n\n// Internal provenance path shared by whole-document and bounded guest parsing.\nexport function parseTokens(\n source: string,\n tokens: readonly KaladaToken[],\n limits: KaladaSyntaxLimits,\n diagnostics: KaladaParseResult[\"diagnostics\"],\n): KaladaParseResult {\n const parser = new Parser(tokens, limits, diagnostics);\n const document: KaladaCstDocument = {\n source,\n tokens,\n expression: parser.parse(),\n };\n const result = deepFreeze({ document, diagnostics: parser.sink.diagnostics });\n parseLimits.set(result, limits);\n return result;\n}\n\nfunction invalidParseResult(source = \"\"): KaladaParseResult {\n const range = freezeRange(0, source.length);\n const eof = Object.freeze({\n kind: \"eof\" as const,\n text: \"\",\n range: freezeRange(source.length, source.length),\n });\n const result: KaladaParseResult = deepFreeze({\n document: {\n source,\n tokens: [eof],\n expression: { kind: \"error\" as const, token: null, range },\n },\n diagnostics: [\n diagnostic(\n \"parse\",\n \"KALADA_SYNTAX_INVALID_INPUT\",\n \"Kalada syntax input is invalid.\",\n range,\n [],\n ),\n ],\n });\n parseLimits.set(result, DEFAULT_KALADA_SYNTAX_LIMITS);\n return result;\n}\n\nexport function syntaxLimitsFor(parsed: KaladaParseResult): KaladaSyntaxLimits | null {\n return parseLimits.get(parsed) ?? null;\n}\n","import type { JsonValue, KaladaType } from \"@kalada/core\";\nimport { deepFreeze } from \"./freeze.js\";\n\nexport interface StaticOption {\n readonly shape: \"option\";\n readonly value: StaticType;\n}\n\nexport type StaticType = \"dynamic\" | KaladaType | StaticOption;\n\nexport function projectStaticType(type: StaticType): \"dynamic\" | KaladaType {\n if (type === \"dynamic\") return type;\n if (!(\"shape\" in type)) return type;\n const value = projectStaticType(type.value);\n return value === \"dynamic\" ? \"dynamic\" : deepFreeze({ kind: \"option-type\", value });\n}\n\nexport const primitive = (\n name: Extract<KaladaType, { kind: \"primitive-type\" }>[\"name\"],\n): KaladaType => Object.freeze({ kind: \"primitive-type\", name });\n\nexport function literalType(value: JsonValue): KaladaType {\n if (value === null) return primitive(\"null\");\n return primitive(typeof value as \"boolean\" | \"number\" | \"string\");\n}\n\nexport function readStaticType(input: unknown, maxDepth: number): StaticType | null {\n if (input === \"dynamic\") return \"dynamic\";\n return readType(input, 1, maxDepth);\n}\n\nfunction readType(input: unknown, depth: number, maximum: number): KaladaType | null {\n if (depth > maximum) return null;\n const record = ownRecord(input);\n if (record === null || typeof record.kind !== \"string\") return null;\n if (record.kind === \"primitive-type\") return readExactPrimitive(record);\n if (record.kind === \"array-type\" || record.kind === \"option-type\")\n return readCollection(record, depth, maximum);\n if (record.kind === \"result-type\") return readExactResult(record, depth, maximum);\n if (record.kind === \"function-type\") return readExactFunction(record, depth, maximum);\n return null;\n}\n\nfunction readExactPrimitive(record: Record<string, unknown>): KaladaType | null {\n return exactKeys(record, [\"kind\", \"name\"]) ? readPrimitive(record) : null;\n}\n\nfunction readCollection(\n record: Record<string, unknown>,\n depth: number,\n maximum: number,\n): KaladaType | null {\n const array = record.kind === \"array-type\";\n const field = array ? \"element\" : \"value\";\n if (!exactKeys(record, [\"kind\", field])) return null;\n const value = readType(record[field], depth + 1, maximum);\n return value ? (deepFreeze({ kind: record.kind, [field]: value }) as KaladaType) : null;\n}\n\nfunction readExactResult(\n record: Record<string, unknown>,\n depth: number,\n maximum: number,\n): KaladaType | null {\n return exactKeys(record, [\"kind\", \"ok\", \"error\"]) ? readResult(record, depth, maximum) : null;\n}\n\nfunction readExactFunction(\n record: Record<string, unknown>,\n depth: number,\n maximum: number,\n): KaladaType | null {\n return exactKeys(record, [\"kind\", \"parameters\", \"returns\"])\n ? readFunction(record, depth, maximum)\n : null;\n}\n\nfunction readPrimitive(record: Record<string, unknown>): KaladaType | null {\n const names = [\"null\", \"boolean\", \"number\", \"string\", \"json\", \"Instant\", \"Duration\"];\n if (typeof record.name !== \"string\" || !names.includes(record.name)) return null;\n return primitive(record.name as Extract<KaladaType, { kind: \"primitive-type\" }>[\"name\"]);\n}\n\nfunction readResult(\n record: Record<string, unknown>,\n depth: number,\n maximum: number,\n): KaladaType | null {\n const ok = readType(record.ok, depth + 1, maximum);\n const error = readType(record.error, depth + 1, maximum);\n return ok && error ? deepFreeze({ kind: \"result-type\", ok, error }) : null;\n}\n\nfunction readFunction(\n record: Record<string, unknown>,\n depth: number,\n maximum: number,\n): KaladaType | null {\n if (!Array.isArray(record.parameters)) return null;\n const parameters: KaladaType[] = [];\n for (let index = 0; index < record.parameters.length; index++) {\n const found = readType(record.parameters[index], depth + 1, maximum);\n if (found === null) return null;\n parameters.push(found);\n }\n const returns = readType(record.returns, depth + 1, maximum);\n return returns ? deepFreeze({ kind: \"function-type\", parameters, returns }) : null;\n}\n\nfunction ownRecord(input: unknown): Record<string, unknown> | null {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) return null;\n const output: Record<string, unknown> = Object.create(null);\n try {\n for (const key of Reflect.ownKeys(input)) {\n if (typeof key !== \"string\") return null;\n const descriptor = Object.getOwnPropertyDescriptor(input, key);\n if (!descriptor || !(\"value\" in descriptor)) return null;\n output[key] = descriptor.value;\n }\n } catch {\n return null;\n }\n return output;\n}\n\nfunction exactKeys(record: Record<string, unknown>, expected: readonly string[]): boolean {\n const keys = Object.keys(record);\n return keys.length === expected.length && expected.every((key) => keys.includes(key));\n}\n\nexport function typeIs(type: StaticType, name: string): boolean {\n return (\n type !== \"dynamic\" && !(\"shape\" in type) && type.kind === \"primitive-type\" && type.name === name\n );\n}\n\nexport function isCallable(type: StaticType): boolean {\n return type !== \"dynamic\" && !(\"shape\" in type) && type.kind === \"function-type\";\n}\n\nexport function isOption(\n type: StaticType,\n): type is Extract<KaladaType, { kind: \"option-type\" }> | StaticOption {\n return (\n type !== \"dynamic\" &&\n ((\"shape\" in type && type.shape === \"option\") ||\n (!(\"shape\" in type) && type.kind === \"option-type\"))\n );\n}\n\nexport function equalTypes(left: StaticType, right: StaticType): boolean {\n return (\n left === right ||\n (left !== \"dynamic\" && right !== \"dynamic\" && JSON.stringify(left) === JSON.stringify(right))\n );\n}\n\nexport function joinTypes(left: StaticType, right: StaticType): StaticType | null {\n if (equalTypes(left, right)) return left;\n if (left === \"dynamic\" || right === \"dynamic\") return \"dynamic\";\n if (\n !(\"shape\" in left) &&\n !(\"shape\" in right) &&\n isJsonCompatible(left) &&\n isJsonCompatible(right)\n )\n return primitive(\"json\");\n return null;\n}\n\nfunction isJsonCompatible(type: KaladaType): boolean {\n if (type.kind === \"array-type\") return isJsonCompatible(type.element);\n return (\n type.kind === \"primitive-type\" &&\n [\"null\", \"boolean\", \"number\", \"string\", \"json\"].includes(type.name)\n );\n}\n","import type { KaladaType } from \"@kalada/core\";\nimport type { KaladaCstNode, KaladaSourceRange } from \"./cst-types.js\";\nimport { diagnostic, KALADA_SYNTAX_DIAGNOSTIC_MESSAGES } from \"./diagnostics.js\";\nimport { deepFreeze, freezeRange } from \"./freeze.js\";\nimport { ownDataProperty } from \"./limits.js\";\nimport { parseKaladaV1Expression } from \"./parse.js\";\nimport type { KaladaParseOptions, KaladaSyntaxDiagnostic } from \"./public-types.js\";\nimport { readStaticType } from \"./static-types.js\";\n\n/** Static evidence only; the host must authorize this target again at use time. */\nexport interface KaladaDataStateRef {\n readonly namespace: \"data\";\n readonly scope?: string;\n readonly segments: readonly string[];\n}\n\nexport interface KaladaDirectLocationProperty {\n readonly type: KaladaType;\n readonly writable: true;\n readonly properties?: Readonly<Record<string, KaladaDirectLocationProperty>>;\n}\n\nexport interface KaladaDirectLocationBinding extends KaladaDirectLocationProperty {\n readonly target: KaladaDataStateRef;\n}\n\nexport interface KaladaDirectLocationOptions extends KaladaParseOptions {\n readonly bindings: Readonly<Record<string, KaladaDirectLocationBinding>>;\n}\n\nexport interface KaladaDirectLocation {\n readonly target: KaladaDataStateRef;\n readonly type: KaladaType;\n readonly range: KaladaSourceRange;\n}\n\nexport type KaladaDirectLocationOutcome =\n | { readonly ok: true; readonly location: KaladaDirectLocation }\n | { readonly ok: false; readonly diagnostics: readonly KaladaSyntaxDiagnostic[] };\n\ntype WriteCode =\n | \"KALADA_SYNTAX_WRITE_INELIGIBLE\"\n | \"KALADA_SYNTAX_WRITE_BINDING_INVALID\"\n | \"KALADA_SYNTAX_WRITE_PROPERTY_INVALID\";\ntype Field = { readonly name: string; readonly range: KaladaSourceRange };\n\nfunction failure(code: WriteCode, range: KaladaSourceRange): KaladaDirectLocationOutcome {\n return deepFreeze({\n ok: false,\n diagnostics: [diagnostic(\"lower\", code, KALADA_SYNTAX_DIAGNOSTIC_MESSAGES[code], range, [])],\n });\n}\n\nfunction safeKey(value: unknown): value is string {\n return (\n typeof value === \"string\" &&\n value.length > 0 &&\n ![\"__proto__\", \"prototype\", \"constructor\"].includes(value)\n );\n}\n\nfunction record(\n input: unknown,\n keys: readonly string[],\n optional: readonly string[] = [],\n): boolean {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) return false;\n try {\n const found = Reflect.ownKeys(input);\n return (\n found.every(\n (key) => typeof key === \"string\" && (keys.includes(key) || optional.includes(key)),\n ) &&\n keys.every((key) => ownDataProperty(input, key).present && ownDataProperty(input, key).ok) &&\n found.every((key) => ownDataProperty(input, key).ok)\n );\n } catch {\n return false;\n }\n}\n\nfunction target(input: unknown, max: number): KaladaDataStateRef | null {\n if (!record(input, [\"namespace\", \"segments\"], [\"scope\"])) return null;\n const namespace = ownDataProperty(input, \"namespace\").value;\n const scope = ownDataProperty(input, \"scope\");\n const segments = ownDataProperty(input, \"segments\").value;\n if (namespace !== \"data\" || (scope.present && !safeKey(scope.value))) return null;\n const copy = copySegments(segments, max, scope.present);\n if (copy === null) return null;\n return scope.present\n ? { namespace: \"data\", scope: scope.value as string, segments: copy }\n : { namespace: \"data\", segments: copy };\n}\n\nfunction copySegments(segments: unknown, max: number, scoped: boolean): string[] | null {\n if (!Array.isArray(segments)) return null;\n const copy: string[] = [];\n try {\n if (Object.getPrototypeOf(segments) !== Array.prototype) return null;\n const keys = Reflect.ownKeys(segments);\n const length = arrayLength(segments, keys);\n if (length > max || (!scoped && length === 0)) return null;\n for (let i = 0; i < length; i++) {\n const part = ownDataProperty(segments, String(i));\n if (!part.ok || !part.present || !safeKey(part.value)) return null;\n copy.push(part.value);\n }\n if (!keys.every((key) => typeof key === \"string\" && arrayKey(key, length))) return null;\n } catch {\n return null;\n }\n return copy;\n}\n\nfunction snapshotType(input: unknown): unknown | null {\n const ancestors = new Set<object>();\n const budget = { remaining: 512 };\n try {\n return copyType(input, ancestors, budget, 0);\n } catch {\n // A malformed descriptor, cycle, depth limit, or throwing proxy is not static evidence.\n return null;\n }\n}\n\nfunction copyType(\n input: unknown,\n ancestors: Set<object>,\n budget: { remaining: number },\n depth: number,\n): unknown {\n if (input === null || typeof input === \"string\" || typeof input === \"boolean\") return input;\n if (typeof input === \"number\" && Number.isFinite(input)) return input;\n if (typeof input !== \"object\") throw Error(\"non-data type leaf\");\n if (depth >= 256 || ancestors.has(input)) throw Error(\"invalid type graph\");\n ancestors.add(input);\n try {\n const array = Array.isArray(input);\n const prototype = Object.getPrototypeOf(input);\n if (prototype !== null && prototype !== (array ? Array.prototype : Object.prototype))\n throw Error(\"exotic type prototype\");\n const keys = Reflect.ownKeys(input);\n budget.remaining -= keys.length + 1;\n if (budget.remaining < 0) throw Error(\"type graph too large\");\n const output: Record<string, unknown> | unknown[] = array ? [] : Object.create(null);\n copyTypeFields(input, output, keys, array, ancestors, budget, depth);\n if (array) Object.setPrototypeOf(output, null);\n return Object.freeze(output);\n } finally {\n ancestors.delete(input);\n }\n}\n\nfunction copyTypeFields(\n input: object,\n output: object,\n keys: readonly PropertyKey[],\n array: boolean,\n ancestors: Set<object>,\n budget: { remaining: number },\n depth: number,\n): void {\n const length = array ? arrayLength(input, keys) : 0;\n for (const key of keys) {\n if (typeof key !== \"string\" || (array && !arrayKey(key, length)))\n throw Error(\"invalid type key\");\n if (array && key === \"length\") continue;\n copyTypeField(input, output, key, ancestors, budget, depth);\n }\n}\n\nfunction arrayLength(input: object, keys: readonly PropertyKey[]): number {\n const length = ownDataProperty(input, \"length\").value;\n if (typeof length !== \"number\" || !Number.isSafeInteger(length) || length > 512)\n throw Error(\"invalid type array\");\n if (keys.length !== length + 1) throw Error(\"sparse type array\");\n return length;\n}\n\nfunction copyTypeField(\n input: object,\n output: object,\n key: string,\n ancestors: Set<object>,\n budget: { remaining: number },\n depth: number,\n): void {\n const part = ownDataProperty(input, key);\n if (!part.ok || !part.present) throw Error(\"invalid type descriptor\");\n Object.defineProperty(output, key, {\n value: copyType(part.value, ancestors, budget, depth + 1),\n enumerable: true,\n configurable: true,\n });\n}\n\nfunction arrayKey(key: string, length: number): boolean {\n if (key === \"length\") return true;\n const index = Number(key);\n return Number.isInteger(index) && index >= 0 && index < length && String(index) === key;\n}\n\nfunction property(\n input: unknown,\n binding: boolean,\n max: number,\n): { type: KaladaType; properties?: unknown } | null {\n if (\n !record(input, binding ? [\"target\", \"type\", \"writable\"] : [\"type\", \"writable\"], [\"properties\"])\n )\n return null;\n if (ownDataProperty(input, \"writable\").value !== true) return null;\n const snapshot = snapshotType(ownDataProperty(input, \"type\").value);\n if (snapshot === null) return null;\n const type = readStaticType(snapshot, max);\n if (type === null || type === \"dynamic\" || \"shape\" in type) return null;\n const properties = ownDataProperty(input, \"properties\");\n if (\n properties.present &&\n (type.kind !== \"primitive-type\" ||\n type.name !== \"json\" ||\n typeof properties.value !== \"object\" ||\n properties.value === null ||\n Array.isArray(properties.value))\n )\n return null;\n return { type, properties: properties.value };\n}\n\nfunction chain(\n node: KaladaCstNode,\n max: number,\n): { reference: string; fields: Field[]; range: KaladaSourceRange } | null {\n const fields: Field[] = [];\n const range = node.range;\n let current = node;\n for (let depth = 0; depth <= max; depth++) {\n if (current.kind === \"group\" && current.closeToken !== null) {\n current = current.expression;\n continue;\n }\n if (current.kind === \"reference\")\n return { reference: current.name, fields: fields.reverse(), range };\n if (\n current.kind !== \"field-access\" ||\n current.optional ||\n current.fieldToken === null ||\n !safeKey(current.field)\n )\n return null;\n fields.push({ name: current.field, range: current.range });\n current = current.target;\n }\n return null;\n}\n\nexport function checkKaladaV1DirectLocation(\n source: string,\n options: KaladaDirectLocationOptions,\n): KaladaDirectLocationOutcome {\n try {\n return checkSource(source, options);\n } catch {\n return failure(\n \"KALADA_SYNTAX_WRITE_BINDING_INVALID\",\n freezeRange(0, typeof source === \"string\" ? source.length : 0),\n );\n }\n}\n\nfunction checkSource(\n source: string,\n options: KaladaDirectLocationOptions,\n): KaladaDirectLocationOutcome {\n // Reparse source: never accept a caller-supplied CST or a read-context lowered program.\n const limits = ownDataProperty(options, \"limits\");\n const bindings = ownDataProperty(options, \"bindings\");\n if (!record(options, [\"bindings\"], [\"limits\"]) || !bindings.ok || !bindings.present || !limits.ok)\n return failure(\n \"KALADA_SYNTAX_WRITE_BINDING_INVALID\",\n freezeRange(0, typeof source === \"string\" ? source.length : 0),\n );\n const parsed = parseKaladaV1Expression(\n source,\n limits.present ? { limits: limits.value as KaladaParseOptions[\"limits\"] } : undefined,\n );\n if (parsed.diagnostics.length) return deepFreeze({ ok: false, diagnostics: parsed.diagnostics });\n const range = parsed.document.expression.range;\n const found = chain(parsed.document.expression, 256);\n if (!found) return failure(\"KALADA_SYNTAX_WRITE_INELIGIBLE\", range);\n return resolveLocation(found, bindings.value);\n}\n\nfunction resolveLocation(\n found: NonNullable<ReturnType<typeof chain>>,\n bindings: unknown,\n): KaladaDirectLocationOutcome {\n const range = found.range;\n const binding = ownDataProperty(bindings, found.reference);\n if (!binding.ok || !binding.present) return failure(\"KALADA_SYNTAX_WRITE_BINDING_INVALID\", range);\n let entry = property(binding.value, true, 256);\n const base = target(ownDataProperty(binding.value, \"target\").value, 256);\n if (!entry || !base || !safeKey(found.reference))\n return failure(\"KALADA_SYNTAX_WRITE_BINDING_INVALID\", range);\n const segments = [...base.segments];\n for (const field of found.fields) {\n const next = ownDataProperty(entry.properties, field.name);\n if (!next.ok || !next.present)\n return failure(\"KALADA_SYNTAX_WRITE_PROPERTY_INVALID\", field.range);\n entry = property(next.value, false, 256);\n if (!entry) return failure(\"KALADA_SYNTAX_WRITE_PROPERTY_INVALID\", field.range);\n segments.push(field.name);\n }\n return deepFreeze({\n ok: true,\n location: {\n target: { ...base, segments },\n type: entry.type,\n range: freezeRange(range.start, range.end),\n },\n });\n}\n","import type { KaladaCstDocument, KaladaCstNode } from \"./cst-types.js\";\nimport { deepFreeze } from \"./freeze.js\";\nimport { parseKaladaV1Expression } from \"./parse.js\";\nimport type { KaladaFormatOutcome, KaladaParseOptions } from \"./public-types.js\";\n\nexport function formatKaladaV1Expression(\n source: string,\n options?: KaladaParseOptions,\n): KaladaFormatOutcome {\n const parsed = parseKaladaV1Expression(source, options);\n if (parsed.diagnostics.length > 0) {\n return deepFreeze({ ok: false, diagnostics: parsed.diagnostics });\n }\n return Object.freeze({ ok: true, text: formatNode(parsed.document.expression, parsed.document) });\n}\n\nfunction formatNode(node: KaladaCstNode, document: KaladaCstDocument): string {\n if (node.kind === \"literal\" || node.kind === \"reference\") {\n return document.tokens[node.token]?.text ?? \"\";\n }\n if (node.kind === \"group\") return formatGroup(node, document);\n if (node.kind === \"field-access\") {\n const operator = document.tokens[node.operatorToken]?.text ?? \"\";\n const field = node.fieldToken === null ? \"\" : (document.tokens[node.fieldToken]?.text ?? \"\");\n return `${formatNode(node.target, document)}${operator}${field}`;\n }\n if (node.kind === \"unary\") return formatUnary(node, document);\n if (node.kind === \"binary\") {\n return `${formatNode(node.left, document)} ${node.operator} ${formatNode(node.right, document)}`;\n }\n if (node.kind === \"conditional\") {\n return `${formatNode(node.condition, document)} ? ${formatNode(node.then, document)} : ${formatNode(node.else, document)}`;\n }\n return \"\";\n}\n\nfunction formatUnary(\n node: Extract<KaladaCstNode, { kind: \"unary\" }>,\n document: KaladaCstDocument,\n): string {\n const sameSign =\n (node.operator === \"+\" || node.operator === \"-\") &&\n node.operand.kind === \"unary\" &&\n node.operand.operator === node.operator;\n return `${node.operator}${sameSign ? \" \" : \"\"}${formatNode(node.operand, document)}`;\n}\n\nfunction formatGroup(\n node: Extract<KaladaCstNode, { kind: \"group\" }>,\n document: KaladaCstDocument,\n): string {\n return `(${formatNode(node.expression, document)})`;\n}\n","import type { KaladaSourceRange } from \"./cst-types.js\";\nimport { DiagnosticSink } from \"./diagnostics.js\";\nimport { deepFreeze, freezeRange } from \"./freeze.js\";\nimport { type GuestLexResult, lexGuest } from \"./lexer.js\";\nimport { resolveSyntaxLimits } from \"./limits.js\";\nimport { parseTokens } from \"./parse.js\";\nimport type {\n KaladaParseOptions,\n KaladaParseResult,\n KaladaSyntaxDiagnostic,\n KaladaSyntaxLimits,\n} from \"./public-types.js\";\n\nexport interface GuestBoundaryResult {\n readonly ok: boolean;\n readonly range: KaladaSourceRange;\n readonly stop: number;\n readonly reason:\n | \"outer-brace\"\n | \"unmatched-parentheses\"\n | \"unsupported-comment\"\n | \"unsupported-quote\"\n | \"eof\"\n | \"limit\"\n | \"invalid-start\";\n readonly parsed: KaladaParseResult | null;\n readonly diagnostics: readonly KaladaSyntaxDiagnostic[];\n}\n\n/**\n * Experimental opt-in syntax seam, not a host grammar contract.\n * The host declares start and independently checks/consumes source[stop] === \"}\".\n * Only current supported Kalada expressions succeed; future grammar belongs to the guest lexer.\n * An unterminated supported double-quoted string is ambiguous: scanning remains bounded by\n * maxSourceLength and fails closed, but cannot identify a brace inside that string as host-owned.\n */\nexport function parseGuestExpressionPrefix(\n source: string,\n start: number,\n options?: KaladaParseOptions,\n): GuestBoundaryResult {\n let limits: KaladaSyntaxLimits | null;\n try {\n limits = resolveSyntaxLimits(options);\n } catch {\n limits = null;\n }\n if (\n typeof source !== \"string\" ||\n !Number.isSafeInteger(start) ||\n start < 0 ||\n start > source.length ||\n limits === null\n ) {\n return deepFreeze({\n ok: false,\n range: freezeRange(0, 0),\n stop: 0,\n reason: \"invalid-start\",\n parsed: null,\n diagnostics: [],\n });\n }\n const scanned = lexGuest(source, start, limits);\n const stop = scanned.stop ?? scanned.tokens[scanned.tokens.length - 1]?.range.start ?? start;\n const sink = new DiagnosticSink(limits, scanned.diagnostics);\n const limited = sink.diagnostics.some((item) => item.code === \"KALADA_SYNTAX_LIMIT_EXCEEDED\");\n const reason = guestStopReason(scanned, limited);\n if (reason === \"eof\")\n sink.add(\"parse\", \"KALADA_SYNTAX_UNEXPECTED_TOKEN\", freezeRange(stop, stop));\n const parsed = parseTokens(source, scanned.tokens, limits, sink.diagnostics);\n return deepFreeze({\n ok: reason === \"outer-brace\" && parsed.diagnostics.length === 0,\n range: freezeRange(start, stop),\n stop,\n reason,\n parsed,\n diagnostics: parsed.diagnostics,\n });\n}\n\nfunction guestStopReason(scanned: GuestLexResult, limited: boolean): GuestBoundaryResult[\"reason\"] {\n if (scanned.stop === null) return limited ? \"limit\" : \"eof\";\n if (scanned.unsupportedComment) return \"unsupported-comment\";\n if (scanned.unsupportedQuote) return \"unsupported-quote\";\n return scanned.unmatchedParentheses ? \"unmatched-parentheses\" : \"outer-brace\";\n}\n","import type { KaladaV1DiagnosticCode } from \"@kalada/core\";\nimport type { KaladaBinaryOperator } from \"./cst-types.js\";\nimport { BINARY_OPERATOR_TIERS, isAdditiveOperator } from \"./operators.js\";\nimport {\n isCallable,\n isOption,\n joinTypes,\n primitive,\n type StaticType,\n typeIs,\n} from \"./static-types.js\";\n\nexport type DispatchFamily =\n | \"equality\"\n | \"ordered-number\"\n | \"ordered-string\"\n | \"temporal-comparison\"\n | \"membership\"\n | \"numeric-binary\"\n | \"temporal-arithmetic\"\n | \"boolean-logical\"\n | \"boolean-xor\"\n | \"option-coalesce\";\n\nexport interface DispatchResult {\n readonly family: DispatchFamily;\n readonly type: StaticType;\n}\n\nexport class DispatchFailure extends Error {\n readonly code: Extract<\n KaladaV1DiagnosticCode,\n | \"KALADA_OPERATOR_TYPE\"\n | \"KALADA_OPERATOR_AMBIGUOUS\"\n | \"KALADA_OPTION_REQUIRED\"\n | \"KALADA_FIELD_TYPE_MISMATCH\"\n >;\n readonly operand:\n | \"left\"\n | \"right\"\n | \"operator\"\n | \"option\"\n | \"fallback\"\n | \"condition\"\n | \"target\"\n | \"needle\"\n | \"array\"\n | \"else\";\n\n constructor(code: DispatchFailure[\"code\"], operand: DispatchFailure[\"operand\"]) {\n super(code);\n this.code = code;\n this.operand = operand;\n }\n}\n\nexport function dispatchBinary(\n operator: KaladaBinaryOperator,\n left: StaticType,\n right: StaticType,\n): DispatchResult {\n if (BINARY_OPERATOR_TIERS.equality.has(operator)) return equality(left, right);\n if (BINARY_OPERATOR_TIERS.relational.has(operator) && operator !== \"in\")\n return ordering(left, right);\n if (operator === \"in\") return membership(left, right);\n if (isAdditiveOperator(operator)) return additive(operator, left, right);\n if (BINARY_OPERATOR_TIERS.multiplicative.has(operator)) return numeric(left, right);\n if (operator === \"&&\" || operator === \"||\") return booleanLogical(left, right);\n if (operator === \"xor\") return booleanXor(left, right);\n return coalesce(left, right);\n}\n\nexport function dispatchUnary(operator: \"!\" | \"+\" | \"-\", operand: StaticType): DispatchResult {\n requireType(operand, operator === \"!\" ? \"boolean\" : \"number\", \"left\");\n return {\n family: operator === \"!\" ? \"boolean-logical\" : \"numeric-binary\",\n type: primitive(operator === \"!\" ? \"boolean\" : \"number\"),\n };\n}\n\nexport function dispatchField(target: StaticType, optional: boolean): StaticType {\n if (!optional) {\n if (target !== \"dynamic\" && !typeIs(target, \"json\"))\n fail(\"KALADA_FIELD_TYPE_MISMATCH\", \"target\");\n return \"dynamic\";\n }\n if (target === \"dynamic\") return option(\"dynamic\");\n if (typeIs(target, \"null\")) return option(primitive(\"null\"));\n if (typeIs(target, \"json\")) return option(\"dynamic\");\n if (isOption(target) && validOptionalPayload(target.value))\n return option(typeIs(target.value, \"null\") ? primitive(\"null\") : \"dynamic\");\n return fail(\"KALADA_FIELD_TYPE_MISMATCH\", \"target\");\n}\n\nexport function dispatchConditional(\n condition: StaticType,\n thenType: StaticType,\n elseType: StaticType,\n): StaticType {\n requireType(condition, \"boolean\", \"condition\");\n const joined = joinTypes(thenType, elseType);\n return joined ?? fail(\"KALADA_OPERATOR_TYPE\", \"else\");\n}\n\nfunction equality(left: StaticType, right: StaticType): DispatchResult {\n if (isCallable(left)) fail(\"KALADA_OPERATOR_TYPE\", \"left\");\n if (isCallable(right)) fail(\"KALADA_OPERATOR_TYPE\", \"right\");\n return { family: \"equality\", type: primitive(\"boolean\") };\n}\n\nfunction ordering(left: StaticType, right: StaticType): DispatchResult {\n const leftDomain = orderedDomain(left);\n const rightDomain = orderedDomain(right);\n if (leftDomain === \"unsupported\") fail(\"KALADA_OPERATOR_TYPE\", \"left\");\n if (rightDomain === \"unsupported\") fail(\"KALADA_OPERATOR_TYPE\", \"right\");\n if (leftDomain === \"dynamic\" && rightDomain === \"dynamic\")\n fail(\"KALADA_OPERATOR_AMBIGUOUS\", \"operator\");\n const domain = leftDomain === \"dynamic\" ? rightDomain : leftDomain;\n if (rightDomain !== \"dynamic\" && leftDomain !== \"dynamic\" && leftDomain !== rightDomain)\n fail(\"KALADA_OPERATOR_TYPE\", \"right\");\n const family =\n domain === \"number\"\n ? \"ordered-number\"\n : domain === \"string\"\n ? \"ordered-string\"\n : \"temporal-comparison\";\n return { family, type: primitive(\"boolean\") };\n}\n\nfunction membership(left: StaticType, right: StaticType): DispatchResult {\n if (isCallable(left)) fail(\"KALADA_OPERATOR_TYPE\", \"needle\");\n if (right !== \"dynamic\" && (\"shape\" in right || right.kind !== \"array-type\"))\n fail(\"KALADA_OPERATOR_TYPE\", \"array\");\n return { family: \"membership\", type: primitive(\"boolean\") };\n}\n\nfunction additive(operator: \"+\" | \"-\", left: StaticType, right: StaticType): DispatchResult {\n if (left === \"dynamic\" && right === \"dynamic\") fail(\"KALADA_OPERATOR_AMBIGUOUS\", \"operator\");\n if (typeIs(left, \"number\") || (left === \"dynamic\" && typeIs(right, \"number\")))\n return numeric(left, right);\n if (typeIs(left, \"number\")) return numeric(left, right);\n if (isTemporalCandidate(left, right, operator)) return temporalResult(operator, left, right);\n if (left !== \"dynamic\" && !isTemporal(left)) fail(\"KALADA_OPERATOR_TYPE\", \"left\");\n return fail(\"KALADA_OPERATOR_TYPE\", \"right\");\n}\n\nfunction numeric(left: StaticType, right: StaticType): DispatchResult {\n requireType(left, \"number\", \"left\");\n requireType(right, \"number\", \"right\");\n return { family: \"numeric-binary\", type: primitive(\"number\") };\n}\n\nfunction temporalResult(operator: \"+\" | \"-\", left: StaticType, right: StaticType): DispatchResult {\n let type: StaticType = \"dynamic\";\n if (operator === \"+\" && typeIs(left, \"Instant\")) type = primitive(\"Instant\");\n if (operator === \"+\" && typeIs(left, \"Duration\")) type = primitive(\"Duration\");\n if (operator === \"-\" && typeIs(left, \"Duration\")) type = primitive(\"Duration\");\n if (operator === \"-\" && typeIs(left, \"Instant\") && typeIs(right, \"Duration\"))\n type = primitive(\"Instant\");\n if (operator === \"-\" && typeIs(right, \"Instant\")) type = primitive(\"Duration\");\n return { family: \"temporal-arithmetic\", type };\n}\n\nfunction booleanLogical(left: StaticType, right: StaticType): DispatchResult {\n requireType(left, \"boolean\", \"left\");\n requireType(right, \"boolean\", \"right\");\n return { family: \"boolean-logical\", type: primitive(\"boolean\") };\n}\n\nfunction booleanXor(left: StaticType, right: StaticType): DispatchResult {\n const result = booleanLogical(left, right);\n return { ...result, family: \"boolean-xor\" };\n}\n\nfunction coalesce(left: StaticType, right: StaticType): DispatchResult {\n const payload =\n left === \"dynamic\"\n ? \"dynamic\"\n : isOption(left)\n ? left.value\n : fail(\"KALADA_OPTION_REQUIRED\", \"option\");\n const joined = joinTypes(payload, right);\n if (joined === null) fail(\"KALADA_OPERATOR_TYPE\", \"fallback\");\n return { family: \"option-coalesce\", type: joined };\n}\n\nfunction orderedDomain(\n type: StaticType,\n): \"dynamic\" | \"number\" | \"string\" | \"Instant\" | \"Duration\" | \"unsupported\" {\n if (type === \"dynamic\") return \"dynamic\";\n if (\"shape\" in type) return \"unsupported\";\n if (type.kind !== \"primitive-type\") return \"unsupported\";\n return [\"number\", \"string\", \"Instant\", \"Duration\"].includes(type.name)\n ? (type.name as \"number\" | \"string\" | \"Instant\" | \"Duration\")\n : \"unsupported\";\n}\n\nfunction isTemporalCandidate(left: StaticType, right: StaticType, operator: \"+\" | \"-\"): boolean {\n if (operator === \"+\")\n return (\n (typeIs(left, \"Instant\") && (typeIs(right, \"Duration\") || right === \"dynamic\")) ||\n (typeIs(left, \"Duration\") && (typeIs(right, \"Duration\") || right === \"dynamic\")) ||\n (left === \"dynamic\" && typeIs(right, \"Duration\"))\n );\n return (\n (typeIs(left, \"Instant\") && (isTemporal(right) || right === \"dynamic\")) ||\n (typeIs(left, \"Duration\") && (typeIs(right, \"Duration\") || right === \"dynamic\")) ||\n (left === \"dynamic\" && isTemporal(right))\n );\n}\n\nfunction isTemporal(type: StaticType): boolean {\n return typeIs(type, \"Instant\") || typeIs(type, \"Duration\");\n}\n\nfunction validOptionalPayload(type: StaticType): boolean {\n return type === \"dynamic\" || typeIs(type, \"json\") || typeIs(type, \"null\");\n}\n\nfunction option(value: StaticType): StaticType {\n return Object.freeze({ shape: \"option\", value });\n}\n\nfunction requireType(\n type: StaticType,\n name: \"number\" | \"boolean\",\n operand: \"left\" | \"right\" | \"condition\",\n): void {\n if (type !== \"dynamic\" && !typeIs(type, name)) fail(\"KALADA_OPERATOR_TYPE\", operand);\n}\n\nfunction fail(code: DispatchFailure[\"code\"], operand: DispatchFailure[\"operand\"]): never {\n throw new DispatchFailure(code, operand);\n}\n","import type { JsonValue, KaladaV1Options } from \"@kalada/core\";\nimport { hasOnlyKeys, ownDataProperty } from \"./limits.js\";\nimport type { KaladaLowerOptions, KaladaSyntaxLimits } from \"./public-types.js\";\nimport { readStaticType, type StaticType } from \"./static-types.js\";\n\nexport interface SafeBinding<R extends JsonValue> {\n readonly reference: R;\n readonly type: StaticType;\n}\n\nexport interface LowerConfiguration<R extends JsonValue> {\n readonly environment: ReadonlyMap<string, SafeBinding<R>> | null;\n readonly coreOptions: KaladaV1Options<R>;\n}\n\nexport function readLowerConfiguration<R extends JsonValue>(\n options: KaladaLowerOptions<R> | undefined,\n limits: KaladaSyntaxLimits,\n): LowerConfiguration<R> | null {\n if (options === undefined) return { environment: null, coreOptions: {} };\n if (!hasOnlyKeys(options, new Set([\"references\", \"coreOptions\"]))) return null;\n const referencesProperty = ownDataProperty(options, \"references\");\n const coreOptionsProperty = ownDataProperty(options, \"coreOptions\");\n if (!referencesProperty.ok || !coreOptionsProperty.ok) return null;\n const references = referencesProperty.value;\n const coreOptions = coreOptionsProperty.value;\n if (coreOptionsProperty.present && (typeof coreOptions !== \"object\" || coreOptions === null))\n return null;\n const environment = referencesProperty.present ? readEnvironment<R>(references, limits) : null;\n if (referencesProperty.present && environment === null) return null;\n return { environment, coreOptions: (coreOptions ?? {}) as KaladaV1Options<R> };\n}\n\nfunction readEnvironment<R extends JsonValue>(\n input: unknown,\n limits: KaladaSyntaxLimits,\n): ReadonlyMap<string, SafeBinding<R>> | null {\n try {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) return null;\n const output = new Map<string, SafeBinding<R>>();\n for (const key of Reflect.ownKeys(input)) {\n if (typeof key !== \"string\") return null;\n const descriptor = Object.getOwnPropertyDescriptor(input, key);\n if (!descriptor || !(\"value\" in descriptor)) return null;\n const binding = readBinding<R>(descriptor.value, limits);\n if (binding === null) return null;\n output.set(key, binding);\n }\n return output;\n } catch {\n return null;\n }\n}\n\nfunction readBinding<R extends JsonValue>(\n input: unknown,\n limits: KaladaSyntaxLimits,\n): SafeBinding<R> | null {\n if (!hasOnlyKeys(input, new Set([\"reference\", \"type\"]))) return null;\n const reference = dataProperty(input as object, \"reference\");\n const rawType = dataProperty(input as object, \"type\");\n if (!reference.found || !rawType.found) return null;\n const type = readStaticType(rawType.value, limits.maxStaticTypeDepth);\n if (type === null) return null;\n return Object.freeze({ reference: reference.value as R, type });\n}\n\nfunction dataProperty(input: object, key: string): { found: boolean; value?: unknown } {\n try {\n const descriptor = Object.getOwnPropertyDescriptor(input, key);\n return descriptor && \"value\" in descriptor\n ? { found: true, value: descriptor.value }\n : { found: false };\n } catch {\n return { found: false };\n }\n}\n","import type { JsonValue } from \"@kalada/core\";\nimport type { KaladaCstNode } from \"./cst-types.js\";\nimport { diagnostic } from \"./diagnostics.js\";\nimport {\n DispatchFailure,\n type DispatchResult,\n dispatchBinary,\n dispatchConditional,\n dispatchField,\n dispatchUnary,\n} from \"./dispatch.js\";\nimport type { KaladaParseResult, KaladaSyntaxDiagnostic } from \"./public-types.js\";\nimport type { LowerConfiguration } from \"./reference-environment.js\";\nimport { literalType, type StaticType } from \"./static-types.js\";\n\nexport interface SemanticInference {\n readonly type: StaticType;\n readonly complete: boolean;\n readonly dispatch?: DispatchResult;\n readonly failure?: DispatchFailure;\n}\n\nexport interface SemanticAnalysis {\n readonly ordered: readonly KaladaCstNode[];\n readonly inferred: ReadonlyMap<KaladaCstNode, SemanticInference>;\n readonly diagnostics: readonly KaladaSyntaxDiagnostic[];\n readonly incomplete: boolean;\n}\n\ninterface AnalysisState<R extends JsonValue> {\n readonly configuration: LowerConfiguration<R>;\n readonly inferred: Map<KaladaCstNode, SemanticInference>;\n readonly diagnostics: KaladaSyntaxDiagnostic[];\n incomplete: boolean;\n}\n\nexport function analyzeSemantics<R extends JsonValue>(\n parsed: KaladaParseResult,\n configuration: LowerConfiguration<R>,\n): SemanticAnalysis {\n const state: AnalysisState<R> = {\n configuration,\n inferred: new Map(),\n diagnostics: [...parsed.diagnostics],\n incomplete: parsed.diagnostics.length > 0,\n };\n const ordered = postorder(parsed.document.expression);\n for (const node of ordered) state.inferred.set(node, inferNode(node, state));\n return {\n ordered,\n inferred: state.inferred,\n diagnostics: state.diagnostics,\n incomplete: state.incomplete,\n };\n}\n\nfunction inferNode<R extends JsonValue>(\n node: KaladaCstNode,\n state: AnalysisState<R>,\n): SemanticInference {\n if (node.kind === \"literal\") return complete(literalType(node.value));\n if (node.kind === \"reference\") return inferReference(node, state);\n if (node.kind === \"error\") return incomplete(state);\n try {\n return inferComposite(node, state);\n } catch (error) {\n return failed(node, error, state);\n }\n}\n\nfunction inferComposite<R extends JsonValue>(\n node: Exclude<KaladaCstNode, { kind: \"literal\" | \"reference\" | \"error\" }>,\n state: AnalysisState<R>,\n): SemanticInference {\n if (node.kind === \"group\") {\n const child = childInference(node.expression, state);\n return node.closeToken === null || !child.complete ? incomplete(state) : child;\n }\n if (node.kind === \"field-access\") return inferField(node, state);\n if (node.kind === \"unary\") return inferUnary(node, state);\n if (node.kind === \"binary\") return inferBinary(node, state);\n return inferConditional(node, state);\n}\n\nfunction inferField<R extends JsonValue>(\n node: Extract<KaladaCstNode, { kind: \"field-access\" }>,\n state: AnalysisState<R>,\n): SemanticInference {\n const target = childInference(node.target, state);\n if (!target.complete || node.field === null || node.fieldToken === null) return incomplete(state);\n return complete(dispatchField(target.type, node.optional));\n}\n\nfunction inferUnary<R extends JsonValue>(\n node: Extract<KaladaCstNode, { kind: \"unary\" }>,\n state: AnalysisState<R>,\n): SemanticInference {\n const operand = childInference(node.operand, state);\n if (!operand.complete) return incomplete(state);\n const dispatch = dispatchUnary(node.operator, operand.type);\n return complete(dispatch.type, dispatch);\n}\n\nfunction inferBinary<R extends JsonValue>(\n node: Extract<KaladaCstNode, { kind: \"binary\" }>,\n state: AnalysisState<R>,\n): SemanticInference {\n const left = childInference(node.left, state);\n const right = childInference(node.right, state);\n if (!left.complete || !right.complete) return incomplete(state);\n const dispatch = dispatchBinary(node.operator, left.type, right.type);\n return complete(dispatch.type, dispatch);\n}\n\nfunction inferConditional<R extends JsonValue>(\n node: Extract<KaladaCstNode, { kind: \"conditional\" }>,\n state: AnalysisState<R>,\n): SemanticInference {\n const condition = childInference(node.condition, state);\n const then = childInference(node.then, state);\n const otherwise = childInference(node.else, state);\n if (node.colonToken === null || !condition.complete || !then.complete || !otherwise.complete) {\n return incomplete(state);\n }\n return complete(dispatchConditional(condition.type, then.type, otherwise.type));\n}\n\nfunction inferReference<R extends JsonValue>(\n node: Extract<KaladaCstNode, { kind: \"reference\" }>,\n state: AnalysisState<R>,\n): SemanticInference {\n const environment = state.configuration.environment;\n const binding = environment?.get(node.name);\n if (!environment || binding) return complete(binding?.type ?? \"dynamic\");\n state.incomplete = true;\n state.diagnostics.push(\n diagnostic(\n \"lower\",\n \"KALADA_SYNTAX_UNKNOWN_REFERENCE\",\n \"Kalada reference is not present in the lowering environment.\",\n node.range,\n [],\n ),\n );\n return { type: \"dynamic\", complete: false };\n}\n\nfunction failed<R extends JsonValue>(\n node: KaladaCstNode,\n error: unknown,\n state: AnalysisState<R>,\n): SemanticInference {\n state.incomplete = true;\n const failure = error instanceof DispatchFailure ? error : undefined;\n state.diagnostics.push(\n diagnostic(\n \"lower\",\n failure?.code ?? \"KALADA_SYNTAX_INVALID_INPUT\",\n \"Kalada semantic analysis could not determine this expression.\",\n node.range,\n [],\n ),\n );\n return { type: \"dynamic\", complete: false, ...(failure ? { failure } : {}) };\n}\n\nfunction childInference<R extends JsonValue>(\n node: KaladaCstNode,\n state: AnalysisState<R>,\n): SemanticInference {\n return state.inferred.get(node) ?? incomplete(state);\n}\n\nfunction complete(type: StaticType, dispatch?: DispatchResult): SemanticInference {\n return { type, complete: true, ...(dispatch ? { dispatch } : {}) };\n}\n\nfunction incomplete<R extends JsonValue>(state: AnalysisState<R>): SemanticInference {\n state.incomplete = true;\n return { type: \"dynamic\", complete: false };\n}\n\nfunction postorder(root: KaladaCstNode): KaladaCstNode[] {\n const output: KaladaCstNode[] = [];\n const stack: { node: KaladaCstNode; visited: boolean }[] = [{ node: root, visited: false }];\n while (stack.length > 0) {\n const entry = stack.pop();\n if (!entry) continue;\n if (entry.visited) output.push(entry.node);\n else scheduleChildren(stack, entry.node);\n }\n return output;\n}\n\nfunction scheduleChildren(\n stack: { node: KaladaCstNode; visited: boolean }[],\n node: KaladaCstNode,\n): void {\n stack.push({ node, visited: true });\n const children = nodeChildren(node);\n for (let index = children.length - 1; index >= 0; index -= 1) {\n const child = children[index];\n if (child) stack.push({ node: child, visited: false });\n }\n}\n\nfunction nodeChildren(node: KaladaCstNode): readonly KaladaCstNode[] {\n if (node.kind === \"group\") return [node.expression];\n if (node.kind === \"field-access\") return [node.target];\n if (node.kind === \"unary\") return [node.operand];\n if (node.kind === \"binary\") return [node.left, node.right];\n if (node.kind === \"conditional\") return [node.condition, node.then, node.else];\n return [];\n}\n","import type { KaladaSourceRange } from \"./cst-types.js\";\nimport { deepFreeze, freezeRange } from \"./freeze.js\";\nimport type { KaladaSourceMapEntry, KaladaSourceMapRole } from \"./public-types.js\";\n\nconst ROLE_ORDER: Readonly<Record<KaladaSourceMapRole, number>> = Object.freeze({\n node: 0,\n operator: 1,\n literal: 2,\n reference: 3,\n field: 4,\n group: 5,\n});\n\nexport function addMap(\n entries: KaladaSourceMapEntry[],\n path: readonly (string | number)[],\n role: KaladaSourceMapRole,\n range: KaladaSourceRange,\n): void {\n entries.push({ path: [...path], role, range: freezeRange(range.start, range.end) });\n}\n\nexport function widenNode(\n entries: KaladaSourceMapEntry[],\n path: readonly (string | number)[],\n range: KaladaSourceRange,\n): void {\n const index = entries.findIndex((entry) => entry.role === \"node\" && equalPath(entry.path, path));\n if (index < 0) return;\n const found = entries[index] as KaladaSourceMapEntry;\n entries[index] = { ...found, range: freezeRange(range.start, range.end) };\n}\n\nexport function finishMap(entries: KaladaSourceMapEntry[]): readonly KaladaSourceMapEntry[] {\n entries.sort(compareEntries);\n return deepFreeze(entries);\n}\n\nexport function rangeForPath(\n entries: readonly KaladaSourceMapEntry[],\n path: readonly (string | number)[],\n fallback: KaladaSourceRange,\n): KaladaSourceRange {\n const exact = entries.filter((entry) => equalPath(entry.path, path)).sort(preferNarrow)[0];\n if (exact) return exact.range;\n for (let length = path.length - 1; length >= 1; length -= 1) {\n const ancestor = path.slice(0, length);\n const found = entries.find((entry) => entry.role === \"node\" && equalPath(entry.path, ancestor));\n if (found) return found.range;\n }\n return fallback;\n}\n\nfunction compareEntries(left: KaladaSourceMapEntry, right: KaladaSourceMapEntry): number {\n return (\n left.range.start - right.range.start ||\n left.range.end - right.range.end ||\n ROLE_ORDER[left.role] - ROLE_ORDER[right.role] ||\n pathKey(left.path).localeCompare(pathKey(right.path))\n );\n}\n\nfunction preferNarrow(left: KaladaSourceMapEntry, right: KaladaSourceMapEntry): number {\n const leftLength = left.range.end - left.range.start;\n const rightLength = right.range.end - right.range.start;\n return leftLength - rightLength || ROLE_ORDER[left.role] - ROLE_ORDER[right.role];\n}\n\nfunction equalPath(\n left: readonly (string | number)[],\n right: readonly (string | number)[],\n): boolean {\n return left.length === right.length && left.every((item, index) => item === right[index]);\n}\n\nfunction pathKey(path: readonly (string | number)[]): string {\n return JSON.stringify(path);\n}\n","import {\n compileKaladaV1Program,\n type JsonValue,\n KaladaV1,\n type KaladaV1Diagnostic,\n type KaladaV1Expression,\n} from \"@kalada/core\";\nimport type { KaladaBinaryCstNode, KaladaCstNode, KaladaSourceRange } from \"./cst-types.js\";\nimport { diagnostic } from \"./diagnostics.js\";\nimport { DispatchFailure, type DispatchResult } from \"./dispatch.js\";\nimport { deepFreeze, freezeRange } from \"./freeze.js\";\nimport { syntaxLimitsFor } from \"./parse.js\";\nimport type {\n KaladaLowerOptions,\n KaladaLowerOutcome,\n KaladaParseResult,\n KaladaSourceMapEntry,\n KaladaSyntaxDiagnostic,\n} from \"./public-types.js\";\nimport { type LowerConfiguration, readLowerConfiguration } from \"./reference-environment.js\";\nimport { analyzeSemantics, type SemanticInference } from \"./semantic-inference.js\";\nimport { addMap, finishMap, rangeForPath, widenNode } from \"./source-map.js\";\nimport { projectStaticType, type StaticType } from \"./static-types.js\";\n\ninterface Lowered<R extends JsonValue> {\n readonly expression: KaladaV1Expression<R>;\n readonly type: StaticType;\n}\n\ninterface LowerState<R extends JsonValue> {\n readonly parsed: KaladaParseResult;\n readonly configuration: LowerConfiguration<R>;\n readonly entries: KaladaSourceMapEntry[];\n readonly inferred: ReadonlyMap<KaladaCstNode, SemanticInference>;\n}\n\nconst CORE_MESSAGES = Object.freeze({\n KALADA_OPERATOR_TYPE: \"Kalada operator received an incompatible value.\",\n KALADA_OPERATOR_AMBIGUOUS: \"Kalada operator domain is ambiguous.\",\n KALADA_OPTION_REQUIRED: \"Kalada option coalesce requires an Option value.\",\n KALADA_FIELD_TYPE_MISMATCH: \"Kalada field access requires a JSON object.\",\n});\n\nclass LowerFailure extends Error {\n readonly diagnostic: KaladaSyntaxDiagnostic;\n\n constructor(diagnostic: KaladaSyntaxDiagnostic) {\n super(diagnostic.code);\n this.diagnostic = diagnostic;\n }\n}\n\nexport function lowerKaladaV1Expression<R extends JsonValue = string>(\n parsed: KaladaParseResult,\n options?: KaladaLowerOptions<R>,\n): KaladaLowerOutcome<R> {\n const limits = syntaxLimitsFor(parsed);\n if (limits === null) return invalidOutcome();\n if (parsed.diagnostics.length > 0)\n return deepFreeze({ ok: false, diagnostics: parsed.diagnostics });\n let configuration: LowerConfiguration<R> | null;\n try {\n configuration = readLowerConfiguration(options, limits);\n } catch {\n configuration = null;\n }\n if (configuration === null) return invalidOutcome(parsed.document.expression.range);\n const analysis = analyzeSemantics(parsed, configuration);\n const state: LowerState<R> = { parsed, configuration, entries: [], inferred: analysis.inferred };\n try {\n const lowered = lowerNode(parsed.document.expression, [\"expression\"], state);\n const input = KaladaV1.program(lowered.expression);\n const compiled = compileKaladaV1Program(input, configuration.coreOptions);\n if (!compiled.ok) throw coreFailure(compiled.diagnostic, state);\n return deepFreeze({\n ok: true,\n program: compiled.value.program,\n sourceMap: finishMap(state.entries),\n resultType: projectStaticType(lowered.type),\n });\n } catch (error) {\n const problem =\n error instanceof LowerFailure\n ? error.diagnostic\n : invalidDiagnostic(parsed.document.expression.range);\n return deepFreeze({ ok: false, diagnostics: [problem] });\n }\n}\n\nfunction lowerNode<R extends JsonValue>(\n node: KaladaCstNode,\n path: readonly (string | number)[],\n state: LowerState<R>,\n): Lowered<R> {\n if (node.kind === \"literal\") return lowerLiteral(node, path, state);\n if (node.kind === \"reference\") return lowerReference(node, path, state);\n if (node.kind === \"group\") return lowerGroup(node, path, state);\n if (node.kind === \"field-access\") return lowerField(node, path, state);\n if (node.kind === \"unary\") return lowerUnary(node, path, state);\n if (node.kind === \"binary\") return lowerBinary(node, path, state);\n if (node.kind === \"conditional\") return lowerConditional(node, path, state);\n throw new LowerFailure(invalidDiagnostic(node.range));\n}\n\nfunction lowerLiteral<R extends JsonValue>(\n node: Extract<KaladaCstNode, { kind: \"literal\" }>,\n path: readonly (string | number)[],\n state: LowerState<R>,\n): Lowered<R> {\n addMap(state.entries, path, \"node\", node.range);\n addMap(state.entries, [...path, \"value\"], \"literal\", node.range);\n return { expression: KaladaV1.literal<R>(node.value), type: inferenceFor(node, state).type };\n}\n\nfunction lowerReference<R extends JsonValue>(\n node: Extract<KaladaCstNode, { kind: \"reference\" }>,\n path: readonly (string | number)[],\n state: LowerState<R>,\n): Lowered<R> {\n const binding = state.configuration.environment?.get(node.name);\n if (state.configuration.environment && !binding) {\n throw syntaxFailure(\"KALADA_SYNTAX_UNKNOWN_REFERENCE\", node.range, [...path, \"ref\"]);\n }\n addMap(state.entries, path, \"node\", node.range);\n addMap(state.entries, [...path, \"ref\"], \"reference\", node.range);\n const type = inferenceFor(node, state).type;\n return binding\n ? { expression: KaladaV1.ref<R>(binding.reference), type }\n : { expression: KaladaV1.ref<R>(node.name as R), type };\n}\n\nfunction lowerGroup<R extends JsonValue>(\n node: Extract<KaladaCstNode, { kind: \"group\" }>,\n path: readonly (string | number)[],\n state: LowerState<R>,\n): Lowered<R> {\n const child = lowerNode(node.expression, path, state);\n addMap(state.entries, path, \"group\", node.range);\n widenNode(state.entries, path, node.range);\n return child;\n}\n\nfunction lowerField<R extends JsonValue>(\n node: Extract<KaladaCstNode, { kind: \"field-access\" }>,\n path: readonly (string | number)[],\n state: LowerState<R>,\n): Lowered<R> {\n const target = lowerNode(node.target, [...path, \"target\"], state);\n const operatorRange = sourceRange(state, node.operatorToken);\n addMap(state.entries, path, \"operator\", operatorRange);\n const fieldRange = node.fieldToken === null ? operatorRange : sourceRange(state, node.fieldToken);\n addMap(state.entries, [...path, \"field\"], \"field\", fieldRange);\n const inferred = inferenceFor(node, state);\n if (inferred.failure) throw dispatchFailure(inferred.failure, path, state, node.range);\n if (!inferred.complete) throw new LowerFailure(invalidDiagnostic(node.range));\n const expression = node.optional\n ? KaladaV1.optionalFieldAccess(target.expression, node.field as string)\n : KaladaV1.fieldAccess(target.expression, node.field as string);\n addMap(state.entries, path, \"node\", node.range);\n return { expression, type: inferred.type };\n}\n\nfunction lowerUnary<R extends JsonValue>(\n node: Extract<KaladaCstNode, { kind: \"unary\" }>,\n path: readonly (string | number)[],\n state: LowerState<R>,\n): Lowered<R> {\n const operand = lowerNode(node.operand, [...path, \"operand\"], state);\n const operatorPath = node.operator === \"!\" ? path : [...path, \"operator\"];\n addMap(state.entries, operatorPath, \"operator\", sourceRange(state, node.operatorToken));\n const inferred = inferenceFor(node, state);\n if (inferred.failure) throw dispatchFailure(inferred.failure, path, state, node.range, \"operand\");\n const result = requireDispatch(inferred, node.range);\n const expression =\n node.operator === \"!\"\n ? KaladaV1.booleanNot(operand.expression)\n : KaladaV1.numericUnary(node.operator === \"+\" ? \"plus\" : \"negate\", operand.expression);\n addMap(state.entries, path, \"node\", node.range);\n return { expression, type: result.type };\n}\n\nfunction lowerBinary<R extends JsonValue>(\n node: KaladaBinaryCstNode,\n path: readonly (string | number)[],\n state: LowerState<R>,\n): Lowered<R> {\n const [leftKey, rightKey] = binaryKeys(node.operator);\n const left = lowerNode(node.left, [...path, leftKey], state);\n const right = lowerNode(node.right, [...path, rightKey], state);\n const operatorPath = operatorHasField(node.operator) ? [...path, \"operator\"] : path;\n addMap(state.entries, operatorPath, \"operator\", sourceRange(state, node.operatorToken));\n const inferred = inferenceFor(node, state);\n if (inferred.failure) throw dispatchFailure(inferred.failure, path, state, node.range);\n const dispatch = requireDispatch(inferred, node.range);\n const expression = binaryExpression(\n node.operator,\n dispatch.family,\n left.expression,\n right.expression,\n );\n addMap(state.entries, path, \"node\", node.range);\n return { expression, type: dispatch.type };\n}\n\nfunction lowerConditional<R extends JsonValue>(\n node: Extract<KaladaCstNode, { kind: \"conditional\" }>,\n path: readonly (string | number)[],\n state: LowerState<R>,\n): Lowered<R> {\n const condition = lowerNode(node.condition, [...path, \"condition\"], state);\n const then = lowerNode(node.then, [...path, \"then\"], state);\n const otherwise = lowerNode(node.else, [...path, \"else\"], state);\n addMap(state.entries, path, \"operator\", sourceRange(state, node.questionToken));\n if (node.colonToken !== null)\n addMap(state.entries, path, \"operator\", sourceRange(state, node.colonToken));\n const inferred = inferenceFor(node, state);\n if (inferred.failure) throw dispatchFailure(inferred.failure, path, state, node.range);\n if (!inferred.complete) throw new LowerFailure(invalidDiagnostic(node.range));\n addMap(state.entries, path, \"node\", node.range);\n return {\n expression: KaladaV1.conditional(condition.expression, then.expression, otherwise.expression),\n type: inferred.type,\n };\n}\n\nfunction binaryExpression<R extends JsonValue>(\n operator: KaladaBinaryCstNode[\"operator\"],\n family: DispatchResult[\"family\"],\n left: KaladaV1Expression<R>,\n right: KaladaV1Expression<R>,\n): KaladaV1Expression<R> {\n if (family === \"equality\")\n return KaladaV1.equality(operator === \"==\" ? \"equal\" : \"not-equal\", left, right);\n if (family === \"ordered-number\" || family === \"ordered-string\")\n return KaladaV1.orderedComparison(\n family === \"ordered-number\" ? \"number\" : \"string\",\n comparisonOperator(operator),\n left,\n right,\n );\n if (family === \"temporal-comparison\")\n return KaladaV1.temporalComparison(comparisonOperator(operator), left, right);\n return remainingBinaryExpression(operator, family, left, right);\n}\n\nfunction remainingBinaryExpression<R extends JsonValue>(\n operator: KaladaBinaryCstNode[\"operator\"],\n family: DispatchResult[\"family\"],\n left: KaladaV1Expression<R>,\n right: KaladaV1Expression<R>,\n): KaladaV1Expression<R> {\n if (family === \"membership\") return KaladaV1.membership(left, right);\n if (family === \"numeric-binary\")\n return KaladaV1.numericBinary(numericOperator(operator), left, right);\n if (family === \"temporal-arithmetic\")\n return KaladaV1.temporalArithmetic(operator === \"+\" ? \"add\" : \"subtract\", left, right);\n if (family === \"boolean-logical\")\n return KaladaV1.booleanLogical(operator === \"&&\" ? \"and\" : \"or\", left, right);\n if (family === \"boolean-xor\") return KaladaV1.booleanXor(left, right);\n return KaladaV1.optionCoalesce(left, right);\n}\n\nfunction comparisonOperator(\n operator: KaladaBinaryCstNode[\"operator\"],\n): \"less-than\" | \"less-than-or-equal\" | \"greater-than\" | \"greater-than-or-equal\" {\n const values = {\n \"<\": \"less-than\",\n \"<=\": \"less-than-or-equal\",\n \">\": \"greater-than\",\n \">=\": \"greater-than-or-equal\",\n } as const;\n return values[operator as keyof typeof values];\n}\n\nfunction numericOperator(\n operator: KaladaBinaryCstNode[\"operator\"],\n): \"add\" | \"subtract\" | \"multiply\" | \"divide\" | \"remainder\" {\n const values = {\n \"+\": \"add\",\n \"-\": \"subtract\",\n \"*\": \"multiply\",\n \"/\": \"divide\",\n \"%\": \"remainder\",\n } as const;\n return values[operator as keyof typeof values];\n}\n\nfunction binaryKeys(operator: KaladaBinaryCstNode[\"operator\"]): readonly [string, string] {\n if (operator === \"in\") return [\"needle\", \"array\"];\n if (operator === \"??\") return [\"option\", \"fallback\"];\n return [\"left\", \"right\"];\n}\n\nfunction operatorHasField(operator: KaladaBinaryCstNode[\"operator\"]): boolean {\n return ![\"in\", \"xor\", \"??\"].includes(operator);\n}\n\nfunction dispatchFailure<R extends JsonValue>(\n error: unknown,\n path: readonly (string | number)[],\n state: LowerState<R>,\n fallback: KaladaSourceRange,\n unaryOperand?: \"operand\",\n): LowerFailure {\n if (!(error instanceof DispatchFailure)) return new LowerFailure(invalidDiagnostic(fallback));\n const key = unaryOperand ?? error.operand;\n const diagnosticPath = key === \"operator\" ? [...path, \"operator\"] : [...path, key];\n const range = rangeForPath(state.entries, diagnosticPath, fallback);\n return new LowerFailure(\n diagnostic(\"lower\", error.code, CORE_MESSAGES[error.code], range, diagnosticPath),\n );\n}\n\nfunction coreFailure<R extends JsonValue>(\n problem: KaladaV1Diagnostic,\n state: LowerState<R>,\n): LowerFailure {\n const range = rangeForPath(state.entries, problem.path, state.parsed.document.expression.range);\n return new LowerFailure(diagnostic(\"lower\", problem.code, problem.message, range, problem.path));\n}\n\nfunction syntaxFailure(\n code: \"KALADA_SYNTAX_UNKNOWN_REFERENCE\",\n range: KaladaSourceRange,\n path: readonly (string | number)[],\n): LowerFailure {\n return new LowerFailure(\n diagnostic(\n \"lower\",\n code,\n \"Kalada reference is not present in the lowering environment.\",\n range,\n path,\n ),\n );\n}\n\nfunction invalidDiagnostic(range: KaladaSourceRange = freezeRange(0, 0)): KaladaSyntaxDiagnostic {\n return diagnostic(\n \"lower\",\n \"KALADA_SYNTAX_INVALID_INPUT\",\n \"Kalada syntax input is invalid.\",\n range,\n [],\n );\n}\n\nfunction invalidOutcome<R extends JsonValue>(range?: KaladaSourceRange): KaladaLowerOutcome<R> {\n return deepFreeze({ ok: false, diagnostics: [invalidDiagnostic(range)] });\n}\n\nfunction sourceRange<R extends JsonValue>(state: LowerState<R>, token: number): KaladaSourceRange {\n return state.parsed.document.tokens[token]?.range ?? state.parsed.document.expression.range;\n}\n\nfunction inferenceFor<R extends JsonValue>(\n node: KaladaCstNode,\n state: LowerState<R>,\n): SemanticInference {\n return state.inferred.get(node) ?? { type: \"dynamic\", complete: false };\n}\n\nfunction requireDispatch(inferred: SemanticInference, range: KaladaSourceRange): DispatchResult {\n if (!inferred.complete || !inferred.dispatch) throw new LowerFailure(invalidDiagnostic(range));\n return inferred.dispatch;\n}\n","import type { JsonValue } from \"@kalada/core\";\nimport type { KaladaBinaryOperator, KaladaCstNode, KaladaSourceRange } from \"./cst-types.js\";\nimport { diagnostic } from \"./diagnostics.js\";\nimport { dispatchBinary, dispatchField } from \"./dispatch.js\";\nimport { deepFreeze } from \"./freeze.js\";\nimport { BINARY_OPERATORS } from \"./operators.js\";\nimport { syntaxLimitsFor } from \"./parse.js\";\nimport type {\n KaladaLowerOptions,\n KaladaParseResult,\n KaladaSemanticNodeInfo,\n KaladaSemanticQueryResult,\n KaladaSemanticSupport,\n} from \"./public-types.js\";\nimport { type LowerConfiguration, readLowerConfiguration } from \"./reference-environment.js\";\nimport { analyzeSemantics, type SemanticInference } from \"./semantic-inference.js\";\nimport { projectStaticType, type StaticType } from \"./static-types.js\";\n\nexport function queryKaladaV1Semantics<R extends JsonValue = string>(\n parsed: KaladaParseResult,\n options?: KaladaLowerOptions<R>,\n): KaladaSemanticQueryResult {\n const limits = syntaxLimitsFor(parsed);\n if (limits === null) return invalidQuery();\n const configuration = safeConfiguration(options, limits);\n if (configuration === null) return invalidQuery(parsed.document.expression.range);\n const analysis = analyzeSemantics(parsed, configuration);\n const nodes = analysis.ordered.map((node) =>\n describeNode(node, analysis.inferred.get(node) ?? unknownInference()),\n );\n return deepFreeze({\n nodes,\n diagnostics: analysis.diagnostics,\n incomplete: analysis.incomplete,\n });\n}\n\nfunction safeConfiguration<R extends JsonValue>(\n options: KaladaLowerOptions<R> | undefined,\n limits: NonNullable<ReturnType<typeof syntaxLimitsFor>>,\n): LowerConfiguration<R> | null {\n try {\n return readLowerConfiguration(options, limits);\n } catch {\n return null;\n }\n}\n\nfunction describeNode(node: KaladaCstNode, inference: SemanticInference): KaladaSemanticNodeInfo {\n const type = projectStaticType(inference.type);\n return {\n range: node.range,\n type,\n known: inference.complete && type !== \"dynamic\",\n fieldAccess: {\n plain: fieldSupport(inference, false),\n optional: fieldSupport(inference, true),\n },\n operators: BINARY_OPERATORS.map((operator) => ({\n operator,\n support: operatorSupport(operator, inference),\n })),\n };\n}\n\nfunction fieldSupport(inference: SemanticInference, optional: boolean): KaladaSemanticSupport {\n if (!inference.complete || inference.type === \"dynamic\") return \"conditional\";\n try {\n dispatchField(inference.type, optional);\n return \"supported\";\n } catch {\n return \"unsupported\";\n }\n}\n\nfunction operatorSupport(\n operator: KaladaBinaryOperator,\n left: SemanticInference,\n): KaladaSemanticSupport {\n if (!left.complete) return \"conditional\";\n return dispatchSupport(operator, left.type, \"dynamic\", false);\n}\n\nfunction dispatchSupport(\n operator: KaladaBinaryOperator,\n left: StaticType,\n right: StaticType,\n completeOperands: boolean,\n): KaladaSemanticSupport {\n try {\n dispatchBinary(operator, left, right);\n if (!completeOperands || containsDynamic(left) || containsDynamic(right)) return \"conditional\";\n return \"supported\";\n } catch {\n return left === \"dynamic\" ? \"conditional\" : \"unsupported\";\n }\n}\n\nfunction containsDynamic(type: StaticType): boolean {\n return type === \"dynamic\" || (\"shape\" in type && containsDynamic(type.value));\n}\n\nfunction unknownInference(): SemanticInference {\n return { type: \"dynamic\", complete: false };\n}\n\nfunction invalidQuery(range: KaladaSourceRange = Object.freeze({ start: 0, end: 0 })) {\n return deepFreeze({\n nodes: [],\n diagnostics: [\n diagnostic(\n \"lower\",\n \"KALADA_SYNTAX_INVALID_INPUT\",\n \"Kalada syntax input is invalid.\",\n range,\n [],\n ),\n ],\n incomplete: true,\n });\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kalada/syntax",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Lossless source tooling for the Kalada expression language",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/surikaterna/kalada",
|
|
9
|
+
"directory": "packages/syntax"
|
|
10
|
+
},
|
|
11
|
+
"type": "module",
|
|
12
|
+
"sideEffects": false,
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"README.md"
|
|
16
|
+
],
|
|
17
|
+
"main": "./dist/index.cjs",
|
|
18
|
+
"module": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"import": {
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"default": "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"require": {
|
|
27
|
+
"types": "./dist/index.d.cts",
|
|
28
|
+
"default": "./dist/index.cjs"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"./package.json": "./package.json"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsup",
|
|
35
|
+
"test": "vitest run --config ../../vitest.config.ts src",
|
|
36
|
+
"typecheck": "tsc --noEmit"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@kalada/core": "^0.6.0"
|
|
40
|
+
},
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public"
|
|
43
|
+
},
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=22.0.0"
|
|
46
|
+
}
|
|
47
|
+
}
|