@invinite-org/chartlang-compiler 1.2.0 → 1.2.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @invinite-org/chartlang-compiler
2
2
 
3
+ ## 1.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 71ea0a5: Inline original TypeScript sources into emitted `.js.map` files (`inlineSources: true`). Published sourcemaps no longer reference missing `../src/*.ts` files, fixing "points to missing source files" warnings in downstream bundlers (e.g. Vite).
8
+ - Updated dependencies [71ea0a5]
9
+ - @invinite-org/chartlang-core@1.1.1
10
+
3
11
  ## 1.2.0
4
12
 
5
13
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"extractAlertConditions.js","sourceRoot":"","sources":["../../src/analysis/extractAlertConditions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractAlertConditions.js","sourceRoot":"","sources":["../../src/analysis/extractAlertConditions.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { AlertConditionDefinition } from \"@invinite-org/chartlang-core\";\nimport ts from \"typescript\";\n\nimport { type CompileDiagnostic, createDiagnostic } from \"../diagnostics.js\";\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\n\n/**\n * Result of extracting `defineAlertCondition({ conditions })` metadata.\n *\n * @since 0.5\n * @stable\n * @example\n * const r: ExtractAlertConditionsResult = {\n * alertConditions: [],\n * diagnostics: [],\n * };\n * void r;\n */\nexport type ExtractAlertConditionsResult = Readonly<{\n alertConditions: ReadonlyArray<AlertConditionDefinition>;\n diagnostics: ReadonlyArray<CompileDiagnostic>;\n}>;\n\ntype ExtractContext = Readonly<{\n sourceFile: ts.SourceFile;\n sourcePath: string;\n diagnostics: CompileDiagnostic[];\n}>;\n\nfunction readPropertyName(name: ts.PropertyName): string | null {\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n return null;\n}\n\nfunction findConditionsInitializer(argument: ts.ObjectLiteralExpression): ts.Expression | null {\n for (const property of argument.properties) {\n if (!ts.isPropertyAssignment(property)) continue;\n if (!ts.isIdentifier(property.name) || property.name.text !== \"conditions\") continue;\n return property.initializer;\n }\n return null;\n}\n\nfunction addNotLiteralDiagnostic(node: ts.Node, context: ExtractContext): void {\n context.diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"alert-condition-not-literal\",\n message: \"defineAlertCondition conditions must be an object literal.\",\n file: context.sourcePath,\n node,\n sourceFile: context.sourceFile,\n }),\n );\n}\n\nfunction addFieldDiagnostic(node: ts.Node, field: string, context: ExtractContext): void {\n context.diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"alert-condition-field-not-literal\",\n message: `defineAlertCondition condition field \"${field}\" must be a string literal.`,\n file: context.sourcePath,\n node,\n sourceFile: context.sourceFile,\n }),\n );\n}\n\nfunction readStringField(\n object: ts.ObjectLiteralExpression,\n field: \"title\" | \"description\" | \"defaultMessage\",\n context: ExtractContext,\n): string | null {\n for (const property of object.properties) {\n if (!ts.isPropertyAssignment(property)) continue;\n if (!ts.isIdentifier(property.name) || property.name.text !== field) continue;\n if (ts.isStringLiteral(property.initializer)) return property.initializer.text;\n addFieldDiagnostic(property.initializer, field, context);\n return null;\n }\n addFieldDiagnostic(object, field, context);\n return null;\n}\n\nfunction readCondition(\n id: string,\n initializer: ts.Expression,\n context: ExtractContext,\n): AlertConditionDefinition | null {\n if (!ts.isObjectLiteralExpression(initializer)) {\n addFieldDiagnostic(initializer, id, context);\n return null;\n }\n const title = readStringField(initializer, \"title\", context);\n const description = readStringField(initializer, \"description\", context);\n const defaultMessage = readStringField(initializer, \"defaultMessage\", context);\n if (title === null || description === null || defaultMessage === null) return null;\n return Object.freeze({ id, title, description, defaultMessage });\n}\n\n/**\n * Extract literal `defineAlertCondition({ conditions: { ... } })`\n * descriptors into manifest-ready metadata. Dynamic condition maps or\n * dynamic descriptor fields produce error diagnostics and are omitted.\n *\n * @since 0.5\n * @stable\n * @example\n * // const r = extractAlertConditions(sourceFile, checker, \"demo.chart.ts\");\n * const fn: typeof extractAlertConditions = extractAlertConditions;\n * void fn;\n */\nexport function extractAlertConditions(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n sourcePath: string = sourceFile.fileName,\n): ExtractAlertConditionsResult {\n const alertConditions: AlertConditionDefinition[] = [];\n const diagnostics: CompileDiagnostic[] = [];\n const context: ExtractContext = { sourceFile, sourcePath, diagnostics };\n\n const visit = (node: ts.Node): void => {\n if (\n ts.isCallExpression(node) &&\n resolveCalleeName(node, checker) === \"defineAlertCondition\"\n ) {\n const argument = node.arguments[0];\n if (argument === undefined || !ts.isObjectLiteralExpression(argument)) {\n addNotLiteralDiagnostic(node, context);\n return;\n }\n const initializer = findConditionsInitializer(argument);\n if (initializer === null || !ts.isObjectLiteralExpression(initializer)) {\n addNotLiteralDiagnostic(initializer ?? argument, context);\n return;\n }\n for (const property of initializer.properties) {\n if (!ts.isPropertyAssignment(property)) continue;\n const id = readPropertyName(property.name);\n if (id === null) {\n addNotLiteralDiagnostic(property.name, context);\n continue;\n }\n const condition = readCondition(id, property.initializer, context);\n if (condition !== null) alertConditions.push(condition);\n }\n }\n ts.forEachChild(node, visit);\n };\n ts.forEachChild(sourceFile, visit);\n\n return Object.freeze({\n alertConditions: Object.freeze(alertConditions.slice()),\n diagnostics: Object.freeze(diagnostics.slice()),\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extractCapabilities.js","sourceRoot":"","sources":["../../src/analysis/extractCapabilities.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIrE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB,CAC/B,UAAyB,EACzB,OAAuB,EACvB,OAA6D,WAAW,EACxE,QAAiB,UAAU;IAE3B,MAAM,YAAY,GAEd;QACA,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,QAAQ;QACf,cAAc,EAAE,iBAAiB;KACpC,CAAC;IACF,MAAM,IAAI,GAAiB,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QAClC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;gBACzB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;QACL,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IACF,KAAK,CAAC,KAAK,CAAC,CAAC;IAEb,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"extractCapabilities.js","sourceRoot":"","sources":["../../src/analysis/extractCapabilities.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIrE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB,CAC/B,UAAyB,EACzB,OAAuB,EACvB,OAA6D,WAAW,EACxE,QAAiB,UAAU;IAE3B,MAAM,YAAY,GAEd;QACA,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,QAAQ;QACf,cAAc,EAAE,iBAAiB;KACpC,CAAC;IACF,MAAM,IAAI,GAAiB,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QAClC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;gBACzB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;QACL,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IACF,KAAK,CAAC,KAAK,CAAC,CAAC;IAEb,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport ts from \"typescript\";\n\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\n\ntype CapabilityId = \"indicators\" | \"drawings\" | \"alerts\" | \"alertConditions\";\n\n/**\n * Derive the manifest `capabilities` array from a script's AST. The seed\n * capability is determined by the structural script `kind`:\n * `defineIndicator` → `\"indicators\"`, `defineDrawing` → `\"drawings\"`,\n * `defineAlert` → `\"alerts\"`. `\"alerts\"` is added in addition whenever the\n * script calls `alert(...)` from `@invinite-org/chartlang-core` —\n * user-shadowed identifiers named `alert` are filtered out via\n * `resolveCalleeName`. The result is deduplicated and sorted for\n * deterministic manifest output.\n *\n * The optional `scope` parameter narrows the walk to a single AST subtree\n * (typically one binding's `defineCall`) so multi-export files can derive\n * per-binding capability sets. Defaults to the whole `sourceFile`.\n *\n * @since 0.1\n * @example\n * // const caps = extractCapabilities(sourceFile, checker, \"indicator\");\n * // caps === [\"alerts\", \"indicators\"]\n * const fn: typeof extractCapabilities = extractCapabilities;\n * void fn;\n */\nexport function extractCapabilities(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n kind: \"indicator\" | \"drawing\" | \"alert\" | \"alertCondition\" = \"indicator\",\n scope: ts.Node = sourceFile,\n): ReadonlyArray<CapabilityId> {\n const SEED_BY_KIND: Readonly<\n Record<\"indicator\" | \"drawing\" | \"alert\" | \"alertCondition\", CapabilityId>\n > = {\n indicator: \"indicators\",\n drawing: \"drawings\",\n alert: \"alerts\",\n alertCondition: \"alertConditions\",\n };\n const seed: CapabilityId = SEED_BY_KIND[kind];\n const found = new Set<CapabilityId>([seed]);\n\n const visit = (node: ts.Node): void => {\n if (ts.isCallExpression(node)) {\n const calleeName = resolveCalleeName(node, checker);\n if (calleeName === \"alert\") {\n found.add(\"alerts\");\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(scope);\n\n const ordered = Array.from(found).sort();\n return Object.freeze(ordered);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extractDependencyGraph.js","sourceRoot":"","sources":["../../src/analysis/extractDependencyGraph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractDependencyGraph.js","sourceRoot":"","sources":["../../src/analysis/extractDependencyGraph.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { JsonValue, OutputDeclaration } from \"@invinite-org/chartlang-core\";\nimport ts from \"typescript\";\n\nimport { type CompileDiagnostic, createDiagnostic } from \"../diagnostics.js\";\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\nimport type { StructuralBindingInfo } from \"./structuralChecks.js\";\n\n/**\n * Producer reference recorded on a consumer-side `const` binding. The\n * same-file variant carries the local binding name; the cross-file\n * variant carries the resolved POSIX path + ES-module export name.\n *\n * @since 0.7\n * @stable\n * @example\n * const r: ProducerRef = { kind: \"same-file\", bindingName: \"baseTrend\" };\n * void r;\n */\nexport type ProducerRef =\n | Readonly<{ kind: \"same-file\"; bindingName: string }>\n | Readonly<{ kind: \"cross-file\"; sourcePath: string; exportName: string }>;\n\n/**\n * One dep-graph edge — consumer binding → producer with the merged\n * effective inputs the bundler needs to fold into the producer's\n * compiled module at emit time.\n *\n * @since 0.7\n * @stable\n * @example\n * declare const dummyOutputs: ReadonlyArray<OutputDeclaration>;\n * const e: DepConsumesEntry = {\n * localId: \"fastTrend\",\n * producerRef: { kind: \"same-file\", bindingName: \"baseTrend\" },\n * outputs: dummyOutputs,\n * effectiveInputs: { length: 20 },\n * };\n * void e;\n */\nexport type DepConsumesEntry = Readonly<{\n readonly localId: string;\n readonly producerRef: ProducerRef;\n readonly outputs: ReadonlyArray<OutputDeclaration>;\n readonly effectiveInputs: Readonly<Record<string, JsonValue>>;\n}>;\n\n/**\n * One exported (drawn) indicator the file declares. `exportName` is\n * `\"default\"` for `export default`, the identifier text otherwise.\n *\n * @since 0.7\n * @stable\n * @example\n * // declare const callExpression: ts.CallExpression;\n * const d: DrawnScript = {\n * exportName: \"default\",\n * bindingName: \"default\",\n * defineCall: undefined as unknown as ts.CallExpression,\n * outputs: [],\n * consumes: [],\n * };\n * void d;\n */\nexport type DrawnScript = Readonly<{\n readonly exportName: string;\n readonly bindingName: string;\n readonly defineCall: ts.CallExpression;\n readonly outputs: ReadonlyArray<OutputDeclaration>;\n readonly consumes: ReadonlyArray<DepConsumesEntry>;\n}>;\n\n/**\n * One private (data-only) dep binding the file declares. `defineCall`\n * is `null` when the dep is a cross-file binding (the AST node lives\n * in the producer's source file).\n *\n * @since 0.7\n * @stable\n * @example\n * const d: PrivateDep = {\n * localId: \"fastTrend\",\n * producerRef: { kind: \"same-file\", bindingName: \"baseTrend\" },\n * effectiveInputs: { length: 20 },\n * defineCall: null,\n * outputs: [],\n * consumes: [],\n * };\n * void d;\n */\nexport type PrivateDep = Readonly<{\n readonly localId: string;\n readonly producerRef: ProducerRef;\n readonly effectiveInputs: Readonly<Record<string, JsonValue>>;\n readonly defineCall: ts.CallExpression | null;\n readonly outputs: ReadonlyArray<OutputDeclaration>;\n readonly consumes: ReadonlyArray<DepConsumesEntry>;\n}>;\n\n/**\n * Producer snapshot returned by `resolveProducer` for cross-file\n * `import X from \"./Y.chart\"` consumer references.\n *\n * @since 0.7\n * @stable\n * @example\n * const snap: ProducerSnapshot = { name: \"trend\", outputs: [], inputs: {} };\n * void snap;\n */\nexport type ProducerSnapshot = Readonly<{\n readonly name: string;\n readonly outputs: ReadonlyArray<OutputDeclaration>;\n readonly inputs: Readonly<Record<string, unknown>>;\n}>;\n\n/**\n * Callback the bundler supplies so the analysis pass can recursively\n * compile sibling `.chart.ts` files. Returns `null` when the producer\n * cannot be resolved (cycle, unknown path, no `defineIndicator(...)`).\n *\n * @since 0.7\n * @stable\n * @example\n * const r: ResolveProducer = () => null;\n * void r;\n */\nexport type ResolveProducer = (sourcePath: string, exportName: string) => ProducerSnapshot | null;\n\n/**\n * The compiled dep-graph artefact returned by `extractDependencyGraph`.\n * `drawn` + `privateDeps` are the indexed binding sets; `diagnostics`\n * is the union of every per-binding diagnostic surfaced during\n * walking + validation.\n *\n * @since 0.7\n * @stable\n * @example\n * const g: DepGraph = { drawn: [], privateDeps: [], diagnostics: [] };\n * void g;\n */\nexport type DepGraph = Readonly<{\n readonly drawn: ReadonlyArray<DrawnScript>;\n readonly privateDeps: ReadonlyArray<PrivateDep>;\n readonly diagnostics: ReadonlyArray<CompileDiagnostic>;\n}>;\n\ntype BindingOutputs = Readonly<{\n readonly outputs: ReadonlyArray<OutputDeclaration>;\n readonly hasUntitledPlot: boolean;\n}>;\n\ntype DepConsumesMutable = {\n localId: string;\n producerRef: ProducerRef;\n outputs: ReadonlyArray<OutputDeclaration>;\n effectiveInputs: Readonly<Record<string, JsonValue>>;\n};\n\n/**\n * Read a JSON-clean literal from a TS expression — number, string,\n * boolean, or null. Returns `undefined` for non-literal expressions\n * (identifiers, computed access, calls, …).\n */\nfunction readJsonLiteral(node: ts.Expression): JsonValue | undefined {\n if (ts.isNumericLiteral(node)) return Number(node.text);\n if (ts.isStringLiteral(node)) return node.text;\n if (node.kind === ts.SyntaxKind.TrueKeyword) return true;\n if (node.kind === ts.SyntaxKind.FalseKeyword) return false;\n if (node.kind === ts.SyntaxKind.NullKeyword) return null;\n return undefined;\n}\n\n/**\n * Read the function body the `compute` property assignment of a\n * `define*({ compute })` call literal points at. Returns `null` when\n * the property is missing or non-function (treat as zero plot calls).\n *\n * Handles both arrow functions (`compute: () => {}`) and method\n * shorthand (`compute() {}`).\n */\nfunction readComputeBody(defineCall: ts.CallExpression): ts.Node | null {\n const arg = defineCall.arguments[0];\n /* v8 ignore next */\n if (arg === undefined || !ts.isObjectLiteralExpression(arg)) return null;\n const computeProperty = arg.properties.find((property) => {\n const name = (property as { name?: ts.PropertyName }).name;\n return name !== undefined && ts.isIdentifier(name) && name.text === \"compute\";\n });\n if (computeProperty === undefined) return null;\n if (ts.isPropertyAssignment(computeProperty)) {\n const initializer = computeProperty.initializer;\n return ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer)\n ? initializer.body\n : null;\n }\n /* v8 ignore start */\n if (ts.isMethodDeclaration(computeProperty)) {\n return computeProperty.body ?? null;\n }\n return null;\n}\n/* v8 ignore stop */\n\n/**\n * Sweep D — extract producer outputs from `plot(value, { title })`\n * calls inside the binding's compute body. Emits\n * `duplicate-output-title` for clashes.\n */\nfunction extractBindingOutputs(\n binding: StructuralBindingInfo,\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n sourcePath: string,\n diagnostics: CompileDiagnostic[],\n): BindingOutputs {\n const body = readComputeBody(binding.defineCall);\n const outputs: OutputDeclaration[] = [];\n const seenTitles = new Set<string>();\n let hasUntitledPlot = false;\n\n /* v8 ignore next 3 */\n if (body === null) {\n return Object.freeze({ outputs: Object.freeze(outputs.slice()), hasUntitledPlot });\n }\n\n const visit = (node: ts.Node): void => {\n if (ts.isCallExpression(node)) {\n const callee = resolveCalleeName(node, checker);\n if (callee === \"plot\") {\n const optsArg = node.arguments[1];\n let title: string | undefined;\n if (optsArg !== undefined && ts.isObjectLiteralExpression(optsArg)) {\n for (const property of optsArg.properties) {\n /* v8 ignore next */\n if (!ts.isPropertyAssignment(property)) continue;\n const propertyName = property.name;\n if (!ts.isIdentifier(propertyName) || propertyName.text !== \"title\") {\n continue;\n }\n const initializer = property.initializer;\n /* v8 ignore next */\n if (!ts.isStringLiteral(initializer)) continue;\n title = initializer.text;\n }\n }\n if (title === undefined) {\n hasUntitledPlot = true;\n } else if (seenTitles.has(title)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"duplicate-output-title\",\n message: `\\`${binding.bindingName}\\` declares two outputs titled \"${title}\". Titles must be unique within a script.`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n } else {\n seenTitles.add(title);\n outputs.push(Object.freeze({ title, kind: \"series-number\" as const }));\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n ts.forEachChild(body, visit);\n return Object.freeze({ outputs: Object.freeze(outputs.slice()), hasUntitledPlot });\n}\n\ntype ChainResolution = Readonly<{\n readonly root: ts.Identifier;\n readonly inputs: Readonly<Record<string, JsonValue>>;\n readonly ok: boolean;\n}>;\n\n/**\n * Sweep B — resolve a `<binding>.withInputs({...}).withInputs({...})`\n * chain back to its rooted identifier and the merged effective-inputs\n * map. Emits `dep-dynamic` / `dep-invalid-input-override` for invalid\n * argument shapes.\n */\nfunction resolveWithInputsChain(\n expression: ts.Expression,\n sourceFile: ts.SourceFile,\n sourcePath: string,\n diagnostics: CompileDiagnostic[],\n): ChainResolution | null {\n type Layer = { args: ts.ObjectLiteralExpression; ok: boolean };\n const layers: Layer[] = [];\n let current: ts.Expression = expression;\n while (ts.isCallExpression(current)) {\n const callee = current.expression;\n /* v8 ignore next 2 */\n if (!ts.isPropertyAccessExpression(callee)) return null;\n if (callee.name.text !== \"withInputs\") return null;\n const arg = current.arguments[0];\n if (arg === undefined || !ts.isObjectLiteralExpression(arg)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message:\n \"`.withInputs(...)` requires an object literal with literal-only property values.\",\n file: sourcePath,\n node: arg ?? /* v8 ignore next */ current,\n sourceFile,\n }),\n );\n layers.unshift({ args: ts.factory.createObjectLiteralExpression([]), ok: false });\n } else {\n layers.unshift({ args: arg, ok: true });\n }\n current = callee.expression;\n }\n /* v8 ignore next */\n if (!ts.isIdentifier(current)) return null;\n\n const merged: Record<string, JsonValue> = {};\n let ok = true;\n for (const layer of layers) {\n if (!layer.ok) {\n ok = false;\n continue;\n }\n for (const property of layer.args.properties) {\n if (!ts.isPropertyAssignment(property)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message:\n \"`.withInputs(...)` requires a plain object literal — no spread, shorthand, or computed keys.\",\n file: sourcePath,\n node: property,\n sourceFile,\n }),\n );\n ok = false;\n continue;\n }\n const key = property.name;\n if (!ts.isIdentifier(key) && !ts.isStringLiteral(key)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message: \"`.withInputs(...)` keys must be identifiers or string literals.\",\n file: sourcePath,\n node: key,\n sourceFile,\n }),\n );\n ok = false;\n continue;\n }\n const literal = readJsonLiteral(property.initializer);\n if (literal === undefined) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message: `\\`.withInputs({ ${key.text}: ... })\\` value must be a JSON literal (number, string, boolean, or null).`,\n file: sourcePath,\n node: property.initializer,\n sourceFile,\n }),\n );\n ok = false;\n continue;\n }\n merged[key.text] = literal;\n }\n }\n return Object.freeze({\n root: current,\n inputs: Object.freeze({ ...merged }),\n ok,\n });\n}\n\n/**\n * Validate an `effectiveInputs` map against the producer's `inputs`\n * schema. Each producer-input descriptor is shaped like\n * `{ kind: \"int\", defaultValue: 14, ... }`. Type-mismatch and unknown\n * keys both emit `dep-invalid-input-override`.\n */\nfunction validateInputOverrides(\n bindingName: string,\n inputs: Readonly<Record<string, JsonValue>>,\n producerInputs: Readonly<Record<string, unknown>>,\n node: ts.Node,\n sourceFile: ts.SourceFile,\n sourcePath: string,\n diagnostics: CompileDiagnostic[],\n): void {\n for (const [key, value] of Object.entries(inputs)) {\n const descriptor = producerInputs[key];\n if (descriptor === undefined) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-invalid-input-override\",\n message: `\\`${bindingName}\\` overrides input \"${key}\" which the producer does not declare.`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n continue;\n }\n const expectedKind =\n typeof descriptor === \"object\" && descriptor !== null && \"kind\" in descriptor\n ? (descriptor as { kind: unknown }).kind\n : undefined;\n if (typeof expectedKind === \"string\") {\n const valueType = describeJsonValueKind(value);\n const expectedType = expectedTypeForKind(expectedKind);\n if (expectedType !== null && expectedType !== valueType) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-invalid-input-override\",\n message: `\\`${bindingName}\\` override for \"${key}\" expects ${expectedType} (producer declared \\`${expectedKind}\\`), received ${valueType}.`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n }\n }\n }\n}\n\nfunction describeJsonValueKind(value: JsonValue): string {\n if (value === null) return \"null\";\n /* v8 ignore next */\n if (Array.isArray(value)) return \"array\";\n return typeof value;\n}\n\nconst KIND_TO_VALUE_TYPE: ReadonlyMap<string, string> = new Map([\n [\"int\", \"number\"],\n [\"float\", \"number\"],\n [\"price\", \"number\"],\n [\"time\", \"number\"],\n [\"string\", \"string\"],\n [\"enum\", \"string\"],\n [\"color\", \"string\"],\n [\"symbol\", \"string\"],\n [\"interval\", \"string\"],\n [\"bool\", \"boolean\"],\n]);\n\nfunction expectedTypeForKind(kind: string): string | null {\n return KIND_TO_VALUE_TYPE.get(kind) ?? null;\n}\n\n/**\n * Walk back from a `<receiver>.output(\"title\")` callee to a same-file\n * binding identifier OR an imported identifier — whichever applies.\n * Returns the underlying identifier or `null` when the receiver is a\n * non-resolvable shape (computed access, call result, etc.).\n */\nfunction resolveOutputReceiverRoot(receiver: ts.Expression): ts.Identifier | null {\n if (ts.isIdentifier(receiver)) return receiver;\n return null;\n}\n\nfunction originIsImport(symbol: ts.Symbol): {\n moduleSpecifier: string;\n exportName: string;\n} | null {\n const declarations = symbol.declarations ?? /* v8 ignore next */ [];\n for (const declaration of declarations) {\n if (ts.isImportClause(declaration)) {\n const importDecl = declaration.parent;\n const specifier = importDecl.moduleSpecifier;\n /* v8 ignore next */\n if (!ts.isStringLiteral(specifier)) continue;\n return { moduleSpecifier: specifier.text, exportName: \"default\" };\n }\n if (ts.isImportSpecifier(declaration)) {\n const importDecl = declaration.parent.parent.parent;\n const specifier = importDecl.moduleSpecifier;\n /* v8 ignore next */\n if (!ts.isStringLiteral(specifier)) continue;\n const exportName = declaration.propertyName?.text ?? declaration.name.text;\n return { moduleSpecifier: specifier.text, exportName };\n }\n }\n return null;\n}\n\ntype ResolvedBinding =\n | Readonly<{ kind: \"same-file\"; binding: StructuralBindingInfo }>\n | Readonly<{\n kind: \"cross-file\";\n sourcePath: string;\n exportName: string;\n snapshot: ProducerSnapshot;\n }>;\n\nfunction resolveBinding(\n identifier: ts.Identifier,\n checker: ts.TypeChecker,\n bindingsByName: ReadonlyMap<string, StructuralBindingInfo>,\n resolveProducer: ResolveProducer,\n): ResolvedBinding | null {\n const sameFile = bindingsByName.get(identifier.text);\n if (sameFile !== undefined) {\n return Object.freeze({ kind: \"same-file\", binding: sameFile });\n }\n const symbol = checker.getSymbolAtLocation(identifier);\n /* v8 ignore next */\n if (symbol === undefined) return null;\n const importOrigin = originIsImport(symbol);\n if (importOrigin === null) return null;\n const snapshot = resolveProducer(importOrigin.moduleSpecifier, importOrigin.exportName);\n if (snapshot === null) return null;\n return Object.freeze({\n kind: \"cross-file\",\n sourcePath: importOrigin.moduleSpecifier,\n exportName: importOrigin.exportName,\n snapshot,\n });\n}\n\n/**\n * Run the dependency-graph analysis pass over a `.chart.ts` source\n * file. Sweeps the AST four times — outputs, withInputs chains,\n * consumer `.output(...)` calls, cycle detection — and returns a\n * frozen `DepGraph` plus the diagnostics surfaced along the way.\n *\n * `resolveProducer` is a caller-supplied callback that the bundler\n * (Task 3) wires to a recursive compile entry point. In Task 2 the\n * pass works against `() => null` for cross-file edges; tests pass\n * mocked snapshots instead.\n *\n * @since 0.7\n * @stable\n * @example\n * // const graph = extractDependencyGraph(sf, checker, \"demo.chart.ts\", bindings, () => null);\n * const fn: typeof extractDependencyGraph = extractDependencyGraph;\n * void fn;\n */\nexport function extractDependencyGraph(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n sourcePath: string,\n structuralBindings: ReadonlyArray<StructuralBindingInfo>,\n resolveProducer: ResolveProducer,\n): DepGraph {\n const diagnostics: CompileDiagnostic[] = [];\n const bindingsByName = new Map<string, StructuralBindingInfo>();\n for (const binding of structuralBindings) {\n if (binding.exportKind === \"default\") continue;\n bindingsByName.set(binding.bindingName, binding);\n }\n\n const outputsByBinding = new Map<string, BindingOutputs>();\n for (const binding of structuralBindings) {\n outputsByBinding.set(\n binding.bindingName,\n extractBindingOutputs(binding, sourceFile, checker, sourcePath, diagnostics),\n );\n }\n\n type BindingEffectiveInputs = Readonly<{\n rootName: string;\n rootBinding: ResolvedBinding | null;\n inputs: Readonly<Record<string, JsonValue>>;\n }>;\n const effectiveInputsByBinding = new Map<string, BindingEffectiveInputs>();\n\n for (const statement of sourceFile.statements) {\n if (!ts.isVariableStatement(statement)) continue;\n for (const declaration of statement.declarationList.declarations) {\n /* v8 ignore next */\n if (!ts.isIdentifier(declaration.name)) continue;\n const initializer = declaration.initializer;\n if (initializer === undefined) continue;\n if (!ts.isCallExpression(initializer)) continue;\n const callee = initializer.expression;\n if (ts.isPropertyAccessExpression(callee) && callee.name.text === \"withInputs\") {\n const chain = resolveWithInputsChain(\n initializer,\n sourceFile,\n sourcePath,\n diagnostics,\n );\n /* v8 ignore next */\n if (chain === null) continue;\n const root = resolveBinding(chain.root, checker, bindingsByName, resolveProducer);\n effectiveInputsByBinding.set(declaration.name.text, {\n rootName: chain.root.text,\n rootBinding: root,\n inputs: chain.inputs,\n });\n if (root !== null && chain.ok) {\n const producerInputs = root.kind === \"cross-file\" ? root.snapshot.inputs : {};\n validateInputOverrides(\n declaration.name.text,\n chain.inputs,\n producerInputs,\n initializer,\n sourceFile,\n sourcePath,\n diagnostics,\n );\n }\n }\n }\n }\n\n const consumesByBinding = new Map<string, DepConsumesMutable[]>();\n for (const binding of structuralBindings) {\n consumesByBinding.set(binding.bindingName, []);\n }\n\n for (const binding of structuralBindings) {\n const body = readComputeBody(binding.defineCall);\n if (body === null) continue;\n const consumerConsumes = consumesByBinding.get(binding.bindingName);\n /* v8 ignore next */\n if (consumerConsumes === undefined) continue;\n const seenLocalIds = new Set<string>();\n const visit = (node: ts.Node): void => {\n if (\n ts.isCallExpression(node) &&\n ts.isPropertyAccessExpression(node.expression) &&\n node.expression.name.text === \"output\"\n ) {\n const arg = node.arguments[0];\n if (arg === undefined || !ts.isStringLiteral(arg)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message:\n \"`<binding>.output(...)` requires a single string-literal argument.\",\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n ts.forEachChild(node, visit);\n return;\n }\n const title = arg.text;\n const root = resolveOutputReceiverRoot(node.expression.expression);\n if (root === null) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message:\n \"`.output(...)` receiver must trace back to a `const`-bound `defineIndicator(...)` result.\",\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n ts.forEachChild(node, visit);\n return;\n }\n const effective = effectiveInputsByBinding.get(root.text);\n let resolvedRootName: string;\n let resolvedRoot: ResolvedBinding | null;\n let effectiveInputs: Readonly<Record<string, JsonValue>>;\n if (effective !== undefined) {\n resolvedRootName = effective.rootName;\n resolvedRoot = effective.rootBinding;\n effectiveInputs = effective.inputs;\n } else {\n resolvedRootName = root.text;\n resolvedRoot = resolveBinding(root, checker, bindingsByName, resolveProducer);\n effectiveInputs = Object.freeze({});\n }\n if (resolvedRoot === null) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message: `\\`.output(\"${title}\")\\` receiver \\`${root.text}\\` does not resolve to a known same-file or imported indicator binding.`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n ts.forEachChild(node, visit);\n return;\n }\n\n const producerOutputs: ReadonlyArray<OutputDeclaration> =\n resolvedRoot.kind === \"same-file\"\n ? (outputsByBinding.get(resolvedRoot.binding.bindingName) as BindingOutputs)\n .outputs\n : resolvedRoot.snapshot.outputs;\n const producerHasUntitled =\n resolvedRoot.kind === \"same-file\" &&\n (outputsByBinding.get(resolvedRoot.binding.bindingName) as BindingOutputs)\n .hasUntitledPlot;\n const titles = new Set(producerOutputs.map((o) => o.title));\n if (!titles.has(title)) {\n if (producerHasUntitled) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-output-not-titled\",\n message: `Producer \\`${resolvedRootName}\\` declares an untitled \\`plot(...)\\` but consumer references \\`.output(\"${title}\")\\`. Title every \\`plot\\` the producer emits or remove the consumer reference.`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n } else {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-unknown-output\",\n message: `Producer \\`${resolvedRootName}\\` does not declare an output titled \"${title}\".`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n }\n ts.forEachChild(node, visit);\n return;\n }\n\n const localId = effective !== undefined ? root.text : root.text;\n if (!seenLocalIds.has(localId)) {\n seenLocalIds.add(localId);\n const producerRef: ProducerRef =\n resolvedRoot.kind === \"same-file\"\n ? Object.freeze({\n kind: \"same-file\",\n bindingName: resolvedRoot.binding.bindingName,\n })\n : Object.freeze({\n kind: \"cross-file\",\n sourcePath: resolvedRoot.sourcePath,\n exportName: resolvedRoot.exportName,\n });\n consumerConsumes.push({\n localId,\n producerRef,\n outputs: producerOutputs,\n effectiveInputs,\n });\n }\n }\n ts.forEachChild(node, visit);\n };\n ts.forEachChild(body, visit);\n }\n\n const sameFileEdges = new Map<string, Set<string>>();\n for (const [bindingName, consumes] of consumesByBinding.entries()) {\n const targets = new Set<string>();\n for (const entry of consumes) {\n if (entry.producerRef.kind === \"same-file\") {\n targets.add(entry.producerRef.bindingName);\n }\n }\n sameFileEdges.set(bindingName, targets);\n }\n const cycles = detectCycles(sameFileEdges);\n for (const cycle of cycles) {\n const path = `${cycle.join(\" -> \")} -> ${cycle[0] ?? /* v8 ignore next */ \"\"}`;\n for (const member of cycle) {\n const binding = structuralBindings.find((b) => b.bindingName === member);\n /* v8 ignore next */\n if (binding === undefined) continue;\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-cycle\",\n message: `Dependency cycle detected: ${path}`,\n file: sourcePath,\n node: binding.defineCall,\n sourceFile,\n }),\n );\n }\n }\n\n const drawn: DrawnScript[] = [];\n const privateDeps: PrivateDep[] = [];\n // First emit any withInputs-derived alias bindings as synthetic\n // private deps so the bundler + runtime can mount one DepRunner\n // per unique alias. The alias has no `defineCall` of its own —\n // its compute body lives on the producer the alias chains off.\n for (const [aliasName, info] of effectiveInputsByBinding.entries()) {\n /* v8 ignore start */\n if (bindingsByName.has(aliasName)) continue;\n if (info.rootBinding === null) continue;\n /* v8 ignore stop */\n const producerRef: ProducerRef =\n info.rootBinding.kind === \"same-file\"\n ? Object.freeze({\n kind: \"same-file\",\n bindingName: info.rootBinding.binding.bindingName,\n })\n : Object.freeze({\n kind: \"cross-file\",\n sourcePath: info.rootBinding.sourcePath,\n exportName: info.rootBinding.exportName,\n });\n const aliasOutputs: ReadonlyArray<OutputDeclaration> =\n info.rootBinding.kind === \"same-file\"\n ? (outputsByBinding.get(info.rootBinding.binding.bindingName) as BindingOutputs)\n .outputs\n : info.rootBinding.snapshot.outputs;\n privateDeps.push(\n Object.freeze({\n localId: aliasName,\n producerRef,\n effectiveInputs: info.inputs,\n defineCall: null,\n outputs: aliasOutputs,\n consumes: Object.freeze([]),\n }),\n );\n }\n for (const binding of structuralBindings) {\n const outputs = (outputsByBinding.get(binding.bindingName) as BindingOutputs).outputs;\n const consumes = (consumesByBinding.get(binding.bindingName) as DepConsumesMutable[]).map(\n (entry) =>\n Object.freeze({\n localId: entry.localId,\n producerRef: entry.producerRef,\n outputs: entry.outputs,\n effectiveInputs: entry.effectiveInputs,\n }),\n );\n const frozenConsumes = Object.freeze(consumes);\n if (binding.exportKind === \"private\") {\n // Private structural bindings are always `const X =\n // defineIndicator(...)` direct calls — withInputs-derived\n // aliases live in `effectiveInputsByBinding` and were\n // already emitted as synthetic private deps above. Hence\n // the alias-via-private-binding branch is structurally\n // unreachable here.\n const producerRef: ProducerRef = Object.freeze({\n kind: \"same-file\",\n bindingName: binding.bindingName,\n });\n privateDeps.push(\n Object.freeze({\n localId: binding.bindingName,\n producerRef,\n effectiveInputs: Object.freeze({}),\n defineCall: binding.defineCall,\n outputs,\n consumes: frozenConsumes,\n }),\n );\n } else {\n drawn.push(\n Object.freeze({\n exportName: binding.exportKind === \"default\" ? \"default\" : binding.bindingName,\n bindingName: binding.bindingName,\n defineCall: binding.defineCall,\n outputs,\n consumes: frozenConsumes,\n }),\n );\n }\n }\n\n return Object.freeze({\n drawn: Object.freeze(drawn.slice()),\n privateDeps: Object.freeze(privateDeps.slice()),\n diagnostics: Object.freeze(diagnostics.slice()),\n });\n}\n\n/**\n * Colour-marking iterative DFS — returns every cycle found in the\n * directed adjacency map. Each cycle is the ordered list of node ids\n * along the back-edge. Used by `extractDependencyGraph` to surface\n * `dep-cycle` diagnostics at every binding in the cycle.\n */\nfunction detectCycles(edges: ReadonlyMap<string, ReadonlySet<string>>): string[][] {\n const WHITE = 0;\n const GREY = 1;\n const BLACK = 2;\n const colour = new Map<string, number>();\n for (const key of edges.keys()) colour.set(key, WHITE);\n\n const cycles: string[][] = [];\n const seenCycles = new Set<string>();\n\n const dfs = (start: string): void => {\n type Frame = { node: string; iter: Iterator<string> };\n const stack: Frame[] = [];\n const pathIndex = new Map<string, number>();\n const pathOrder: string[] = [];\n\n const targets = edges.get(start) ?? /* v8 ignore next */ new Set<string>();\n colour.set(start, GREY);\n pathIndex.set(start, 0);\n pathOrder.push(start);\n stack.push({ node: start, iter: targets[Symbol.iterator]() });\n\n while (stack.length > 0) {\n const top = stack[stack.length - 1];\n /* v8 ignore next */\n if (top === undefined) break;\n const next = top.iter.next();\n if (next.done) {\n colour.set(top.node, BLACK);\n pathIndex.delete(top.node);\n pathOrder.pop();\n stack.pop();\n continue;\n }\n const child = next.value;\n const childColour = colour.get(child) ?? /* v8 ignore next */ WHITE;\n if (childColour === BLACK) continue;\n if (childColour === GREY) {\n const startIdx = pathIndex.get(child);\n /* v8 ignore next */\n if (startIdx === undefined) continue;\n const cycle = pathOrder.slice(startIdx);\n const sortedKey = [...cycle].sort().join(\"|\");\n if (!seenCycles.has(sortedKey)) {\n seenCycles.add(sortedKey);\n cycles.push(cycle);\n }\n continue;\n }\n colour.set(child, GREY);\n pathIndex.set(child, pathOrder.length);\n pathOrder.push(child);\n const childTargets = edges.get(child) ?? /* v8 ignore next */ new Set<string>();\n stack.push({ node: child, iter: childTargets[Symbol.iterator]() });\n }\n };\n\n for (const key of edges.keys()) {\n if (colour.get(key) === WHITE) dfs(key);\n }\n return cycles;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extractInputs.js","sourceRoot":"","sources":["../../src/analysis/extractInputs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractInputs.js","sourceRoot":"","sources":["../../src/analysis/extractInputs.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport ts from \"typescript\";\n\nimport { type CompileDiagnostic, createDiagnostic } from \"../diagnostics.js\";\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\n\nconst DEFINE_CALLS = new Set([\n \"defineIndicator\",\n \"defineAlert\",\n \"defineDrawing\",\n \"defineAlertCondition\",\n]);\n\n/** Names the walker recognises as `input.*` calls. */\nconst INPUT_KINDS = new Set([\n \"int\",\n \"float\",\n \"bool\",\n \"string\",\n \"enum\",\n \"color\",\n \"source\",\n \"time\",\n \"price\",\n \"symbol\",\n \"interval\",\n \"externalSeries\",\n]);\n\n/** Wire-tag mapping — camelCase builder names become kebab-case manifest tags. */\nconst KIND_TO_WIRE: Readonly<Record<string, string>> = Object.freeze({\n int: \"int\",\n float: \"float\",\n bool: \"bool\",\n string: \"string\",\n enum: \"enum\",\n color: \"color\",\n source: \"source\",\n time: \"time\",\n price: \"price\",\n symbol: \"symbol\",\n interval: \"interval\",\n externalSeries: \"external-series\",\n});\n\n/**\n * Frozen, JSON-clean input descriptor extracted from a script's\n * `define*({ inputs })` object.\n *\n * @since 0.4\n * @example\n * const d: ExtractedDescriptor = { kind: \"int\", defaultValue: 14 };\n * void d;\n */\nexport type ExtractedDescriptor = Readonly<Record<string, unknown>>;\n\n/**\n * Result of input extraction. Diagnostics are hard errors when the\n * declaration uses an unknown builder or non-literal descriptor values.\n *\n * @since 0.4\n * @example\n * const r: ExtractInputsResult = {\n * inputs: { length: { kind: \"int\", defaultValue: 14 } },\n * userPickableInterval: false,\n * diagnostics: [],\n * };\n * void r;\n */\nexport type ExtractInputsResult = Readonly<{\n inputs: Readonly<Record<string, ExtractedDescriptor>>;\n userPickableInterval: boolean;\n diagnostics: ReadonlyArray<CompileDiagnostic>;\n}>;\n\n/**\n * Walk a script's AST and serialise every `input.*` call inside\n * `defineIndicator({ inputs: { ... } })`, `defineAlert`, or\n * `defineDrawing` into the manifest's `inputs` record.\n *\n * The optional `scope` parameter narrows the walk to a single AST subtree\n * (typically one binding's `defineCall`) so multi-export files derive\n * per-binding inputs. Defaults to the whole `sourceFile`.\n *\n * @since 0.4\n * @example\n * // const r = extractInputs(sourceFile, checker, \"demo.chart.ts\");\n * // r.inputs.length === { kind: \"int\", defaultValue: 14 };\n * const fn: typeof extractInputs = extractInputs;\n * void fn;\n */\nexport function extractInputs(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n sourcePath: string = sourceFile.fileName,\n scope: ts.Node = sourceFile,\n): ExtractInputsResult {\n const inputs: Record<string, ExtractedDescriptor> = {};\n const diagnostics: CompileDiagnostic[] = [];\n let userPickableInterval = false;\n let intervalCount = 0;\n\n const visit = (node: ts.Node): void => {\n if (ts.isCallExpression(node) && isDefineCall(node, checker)) {\n const inputsObject = readInputsArg(node);\n if (inputsObject !== null) {\n for (const property of inputsObject.properties) {\n if (!ts.isPropertyAssignment(property) || !ts.isIdentifier(property.name)) {\n continue;\n }\n const initializer = property.initializer;\n if (!ts.isCallExpression(initializer)) continue;\n const callee = resolveCalleeName(initializer, checker);\n if (callee === null || !callee.startsWith(\"input.\")) continue;\n\n const kind = callee.slice(\"input.\".length);\n if (!INPUT_KINDS.has(kind)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"unknown-input-kind\",\n message: `input.${kind} is not a recognised input builder`,\n file: sourcePath,\n node: initializer.expression,\n sourceFile,\n }),\n );\n continue;\n }\n\n const wireKind = KIND_TO_WIRE[kind] as string;\n if (wireKind === \"interval\") {\n intervalCount += 1;\n userPickableInterval = true;\n if (intervalCount > 1) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"multiple-input-interval\",\n message: \"Only one input.interval() per script (PLAN §4.5)\",\n file: sourcePath,\n node: initializer.expression,\n sourceFile,\n }),\n );\n }\n }\n\n const descriptor = serialiseDescriptor(wireKind, kind, initializer, {\n sourceFile,\n sourcePath,\n diagnostics,\n });\n if (descriptor !== null) {\n inputs[property.name.text] = descriptor;\n }\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(scope);\n\n return Object.freeze({\n inputs: Object.freeze({ ...inputs }),\n userPickableInterval,\n diagnostics: Object.freeze(diagnostics.slice()),\n });\n}\n\ntype SerialiseContext = Readonly<{\n sourceFile: ts.SourceFile;\n sourcePath: string;\n diagnostics: CompileDiagnostic[];\n}>;\n\nfunction isDefineCall(node: ts.CallExpression, checker: ts.TypeChecker): boolean {\n const calleeName = resolveCalleeName(node, checker);\n return calleeName !== null && DEFINE_CALLS.has(calleeName);\n}\n\nfunction readInputsArg(node: ts.CallExpression): ts.ObjectLiteralExpression | null {\n const argument = node.arguments[0];\n if (argument === undefined || !ts.isObjectLiteralExpression(argument)) return null;\n for (const property of argument.properties) {\n if (!ts.isPropertyAssignment(property)) continue;\n if (!ts.isIdentifier(property.name) || property.name.text !== \"inputs\") continue;\n const initializer = property.initializer;\n if (ts.isObjectLiteralExpression(initializer)) return initializer;\n }\n return null;\n}\n\nfunction serialiseDescriptor(\n wireKind: string,\n builderKind: string,\n call: ts.CallExpression,\n context: SerialiseContext,\n): ExtractedDescriptor | null {\n if (wireKind === \"external-series\") {\n return serialiseExternalSeries(call, context);\n }\n\n const defaultArg = call.arguments[0];\n if (defaultArg === undefined) {\n addDefaultLiteralDiagnostic(builderKind, call.expression, context);\n return null;\n }\n const defaultValue = readLiteral(defaultArg);\n if (defaultValue === undefined || Array.isArray(defaultValue)) {\n addDefaultLiteralDiagnostic(builderKind, defaultArg, context);\n return null;\n }\n\n const descriptor: Record<string, unknown> = {\n kind: wireKind,\n defaultValue,\n };\n\n if (wireKind === \"enum\") {\n const optionsArg = call.arguments[1];\n const options = optionsArg === undefined ? null : readStringArray(optionsArg);\n if (options === null) {\n addDefaultLiteralDiagnostic(builderKind, optionsArg ?? call.expression, context);\n return null;\n }\n descriptor.options = Object.freeze(options.slice());\n copyObjectLiteralFields(call.arguments[2], descriptor, builderKind, context);\n } else {\n copyObjectLiteralFields(call.arguments[1], descriptor, builderKind, context);\n }\n\n return Object.freeze(descriptor);\n}\n\nfunction serialiseExternalSeries(\n call: ts.CallExpression,\n context: SerialiseContext,\n): ExtractedDescriptor | null {\n const arg = call.arguments[0];\n if (arg === undefined || !ts.isObjectLiteralExpression(arg)) {\n addDefaultLiteralDiagnostic(\"externalSeries\", arg ?? call.expression, context);\n return null;\n }\n\n const descriptor: Record<string, unknown> = { kind: \"external-series\" };\n let sawName = false;\n let sawSchema = false;\n\n for (const property of arg.properties) {\n if (ts.isShorthandPropertyAssignment(property) && property.name.text === \"schema\") {\n descriptor.schema = Object.freeze({ kind: \"external-series-schema\" });\n sawSchema = true;\n continue;\n }\n if (!ts.isPropertyAssignment(property)) continue;\n const key = propertyNameText(property.name);\n if (key === null) continue;\n if (key === \"name\") {\n const value = readLiteral(property.initializer);\n if (typeof value !== \"string\") {\n addDefaultLiteralDiagnostic(\"externalSeries\", property.initializer, context);\n return null;\n }\n descriptor.name = value;\n sawName = true;\n } else if (key === \"schema\") {\n descriptor.schema = Object.freeze({ kind: \"external-series-schema\" });\n sawSchema = true;\n } else if (key === \"title\") {\n const value = readLiteral(property.initializer);\n if (typeof value !== \"string\") {\n addDefaultLiteralDiagnostic(\"externalSeries\", property.initializer, context);\n return null;\n }\n descriptor.title = value;\n }\n }\n\n if (!sawName || !sawSchema) {\n addDefaultLiteralDiagnostic(\"externalSeries\", arg, context);\n return null;\n }\n return Object.freeze(descriptor);\n}\n\nfunction copyObjectLiteralFields(\n arg: ts.Expression | undefined,\n descriptor: Record<string, unknown>,\n builderKind: string,\n context: SerialiseContext,\n): void {\n if (arg === undefined) return;\n const unwrapped = unwrapConstAssertion(arg);\n if (!ts.isObjectLiteralExpression(unwrapped)) {\n addDefaultLiteralDiagnostic(builderKind, arg, context);\n return;\n }\n\n for (const property of unwrapped.properties) {\n if (!ts.isPropertyAssignment(property)) continue;\n const key = propertyNameText(property.name);\n if (key === null) continue;\n const value = readLiteral(property.initializer);\n if (value === undefined) {\n addDefaultLiteralDiagnostic(builderKind, property.initializer, context);\n continue;\n }\n descriptor[key] = value;\n }\n}\n\nfunction readLiteral(node: ts.Expression): unknown | undefined {\n const unwrapped = unwrapConstAssertion(node);\n if (ts.isNumericLiteral(unwrapped)) return Number(unwrapped.text);\n if (\n ts.isPrefixUnaryExpression(unwrapped) &&\n (unwrapped.operator === ts.SyntaxKind.MinusToken ||\n unwrapped.operator === ts.SyntaxKind.PlusToken) &&\n ts.isNumericLiteral(unwrapped.operand)\n ) {\n const value = Number(unwrapped.operand.text);\n return unwrapped.operator === ts.SyntaxKind.MinusToken ? -value : value;\n }\n if (ts.isStringLiteral(unwrapped) || ts.isNoSubstitutionTemplateLiteral(unwrapped)) {\n return unwrapped.text;\n }\n if (unwrapped.kind === ts.SyntaxKind.TrueKeyword) return true;\n if (unwrapped.kind === ts.SyntaxKind.FalseKeyword) return false;\n if (ts.isArrayLiteralExpression(unwrapped)) {\n const values: string[] = [];\n for (const element of unwrapped.elements) {\n const literal = readLiteral(element);\n if (typeof literal !== \"string\") return undefined;\n values.push(literal);\n }\n return Object.freeze(values);\n }\n return undefined;\n}\n\nfunction readStringArray(node: ts.Expression): ReadonlyArray<string> | null {\n const value = readLiteral(node);\n if (!Array.isArray(value)) return null;\n return Object.freeze(value.slice());\n}\n\nfunction unwrapConstAssertion(node: ts.Expression): ts.Expression {\n let current = node;\n while (ts.isParenthesizedExpression(current) || ts.isAsExpression(current)) {\n if (ts.isParenthesizedExpression(current)) {\n current = current.expression;\n } else {\n current = current.expression;\n }\n }\n return current;\n}\n\nfunction propertyNameText(name: ts.PropertyName): string | null {\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n return null;\n}\n\nfunction addDefaultLiteralDiagnostic(kind: string, node: ts.Node, context: SerialiseContext): void {\n context.diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"input-default-not-literal\",\n message: `input.${kind} default must be a literal (number / string / boolean), not a variable reference`,\n file: context.sourcePath,\n node,\n sourceFile: context.sourceFile,\n }),\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extractMaxLookback.js","sourceRoot":"","sources":["../../src/analysis/extractMaxLookback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractMaxLookback.js","sourceRoot":"","sources":["../../src/analysis/extractMaxLookback.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport ts from \"typescript\";\n\nimport { type CompileDiagnostic, createDiagnostic } from \"../diagnostics.js\";\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\n\nconst OHLCV_FIELDS = new Set([\"close\", \"open\", \"high\", \"low\", \"volume\", \"time\"]);\n\n/**\n * Maximum literal lookback `N` discovered across every series read in the\n * source plus the inferred `seriesCapacities` record. `dynamicFallback`\n * captures the §6.6 contract: any non-literal series index contributes\n * `5000` so the runtime can size its ring buffers safely.\n *\n * @since 0.1\n * @example\n * const r: ExtractMaxLookbackResult = {\n * maxLookback: 20,\n * seriesCapacities: {},\n * diagnostics: [],\n * };\n * void r;\n */\nexport type ExtractMaxLookbackResult = Readonly<{\n maxLookback: number;\n seriesCapacities: Readonly<Record<string, number>>;\n diagnostics: ReadonlyArray<CompileDiagnostic>;\n}>;\n\n/**\n * Walk the source file's `ElementAccessExpression` nodes and infer\n * `maxLookback` plus any `dynamicFallback` capacity from non-literal index\n * reads on Phase-1 series shapes: `bar.<ohlcv>[N]`, `ta.<name>(...)[N]`,\n * and identifier-bound series variables (`const e = ta.ema(...); e[N];`).\n *\n * The optional `scope` parameter narrows both the series-variable\n * collection and the lookback walk to a single AST subtree (typically\n * one binding's `defineCall`) so multi-export files derive per-binding\n * `maxLookback` values. Defaults to the whole `sourceFile`.\n *\n * @since 0.1\n * @example\n * // const { maxLookback, seriesCapacities, diagnostics } =\n * // extractMaxLookback(sourceFile, checker, \"demo.chart.ts\");\n * const fn: typeof extractMaxLookback = extractMaxLookback;\n * void fn;\n */\nexport function extractMaxLookback(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n sourcePath: string,\n scope: ts.Node = sourceFile,\n): ExtractMaxLookbackResult {\n let maxLookback = 0;\n const seriesCapacities: Record<string, number> = {};\n const diagnostics: CompileDiagnostic[] = [];\n\n const seriesVarNames = collectSeriesVarNames(scope, checker);\n\n const visit = (node: ts.Node): void => {\n if (ts.isElementAccessExpression(node)) {\n if (isSeriesShapedAccess(node, checker, seriesVarNames)) {\n const argument = node.argumentExpression;\n if (ts.isNumericLiteral(argument)) {\n const n = Number(argument.text);\n if (Number.isFinite(n) && n > maxLookback) maxLookback = n;\n } else {\n diagnostics.push(\n createDiagnostic({\n severity: \"warning\",\n code: \"dynamic-series-index\",\n message:\n \"Non-literal series index — runtime will use the 5000-slot dynamic fallback buffer.\",\n file: sourcePath,\n node: argument,\n sourceFile,\n }),\n );\n seriesCapacities.dynamicFallback = 5000;\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(scope);\n\n return Object.freeze({\n maxLookback,\n seriesCapacities: Object.freeze({ ...seriesCapacities }),\n diagnostics: Object.freeze(diagnostics.slice()),\n });\n}\n\nfunction collectSeriesVarNames(scope: ts.Node, checker: ts.TypeChecker): ReadonlySet<string> {\n const names = new Set<string>();\n const visit = (node: ts.Node): void => {\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name)) {\n const initializer = node.initializer;\n if (initializer && ts.isCallExpression(initializer)) {\n const calleeName = resolveCalleeName(initializer, checker);\n if (calleeName?.startsWith(\"ta.\")) {\n names.add(node.name.text);\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(scope);\n return names;\n}\n\nfunction isSeriesShapedAccess(\n node: ts.ElementAccessExpression,\n checker: ts.TypeChecker,\n seriesVarNames: ReadonlySet<string>,\n): boolean {\n const expression = node.expression;\n if (ts.isPropertyAccessExpression(expression)) {\n if (OHLCV_FIELDS.has(expression.name.text)) return true;\n }\n if (ts.isCallExpression(expression)) {\n const calleeName = resolveCalleeName(expression, checker);\n if (calleeName?.startsWith(\"ta.\")) return true;\n }\n if (ts.isIdentifier(expression)) {\n if (seriesVarNames.has(expression.text)) return true;\n }\n return false;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extractRequestedIntervals.js","sourceRoot":"","sources":["../../src/analysis/extractRequestedIntervals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractRequestedIntervals.js","sourceRoot":"","sources":["../../src/analysis/extractRequestedIntervals.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport ts from \"typescript\";\n\nimport { type CompileDiagnostic, createDiagnostic } from \"../diagnostics.js\";\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\nimport type { ExtractedDescriptor } from \"./extractInputs.js\";\n\n/**\n * Walk a script's AST and collect every static `interval` argument to\n * `request.security({ interval: ... })` and `request.lowerTf(...)`. Dynamic\n * arguments emit `request-security-interval-not-literal` (for `request.security`)\n * or `request-lower-tf-interval-not-literal` (for `request.lowerTf`) and are\n * excluded.\n *\n * @since 0.4\n * @example\n * // const intervals = extractRequestedIntervals(sf, checker, inputs, diagnostics);\n * // intervals === [\"1D\", \"5m\"];\n * const fn: typeof extractRequestedIntervals = extractRequestedIntervals;\n * void fn;\n */\nexport function extractRequestedIntervals(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n inputs: Readonly<Record<string, ExtractedDescriptor>>,\n diagnostics: CompileDiagnostic[],\n sourcePath: string = sourceFile.fileName,\n): ReadonlyArray<string> {\n const intervals = new Set<string>();\n\n const visit = (node: ts.Node): void => {\n if (ts.isCallExpression(node)) {\n const calleeName = resolveCalleeName(node, checker);\n if (calleeName === \"request.security\" || calleeName === \"request.lowerTf\") {\n readRequestInterval(\n node,\n calleeName,\n sourceFile,\n sourcePath,\n inputs,\n diagnostics,\n intervals,\n );\n }\n }\n ts.forEachChild(node, visit);\n };\n\n ts.forEachChild(sourceFile, visit);\n return Object.freeze(Array.from(intervals).sort());\n}\n\nfunction readRequestInterval(\n call: ts.CallExpression,\n calleeName: \"request.security\" | \"request.lowerTf\",\n sourceFile: ts.SourceFile,\n sourcePath: string,\n inputs: Readonly<Record<string, ExtractedDescriptor>>,\n diagnostics: CompileDiagnostic[],\n intervals: Set<string>,\n): void {\n const opts = call.arguments[0];\n if (opts === undefined || !ts.isObjectLiteralExpression(opts)) return;\n const intervalProperty = opts.properties\n .filter(ts.isPropertyAssignment)\n .find((property) => ts.isIdentifier(property.name) && property.name.text === \"interval\");\n if (intervalProperty === undefined) return;\n\n const initializer = intervalProperty.initializer;\n if (ts.isStringLiteral(initializer)) {\n intervals.add(initializer.text);\n return;\n }\n\n const enumOptions = getInputsEnumOptions(initializer, inputs);\n if (enumOptions !== null) {\n for (const option of enumOptions) intervals.add(option);\n return;\n }\n\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code:\n calleeName === \"request.lowerTf\"\n ? \"request-lower-tf-interval-not-literal\"\n : \"request-security-interval-not-literal\",\n message: `${calleeName}({ interval }) must be a string literal or input.enum value`,\n file: sourcePath,\n node: initializer,\n sourceFile,\n }),\n );\n}\n\nfunction getInputsEnumOptions(\n expr: ts.Expression,\n inputs: Readonly<Record<string, ExtractedDescriptor>>,\n): ReadonlyArray<string> | null {\n if (\n !ts.isPropertyAccessExpression(expr) ||\n !ts.isIdentifier(expr.expression) ||\n expr.expression.text !== \"inputs\"\n ) {\n return null;\n }\n const descriptor = inputs[expr.name.text];\n if (descriptor === undefined || descriptor.kind !== \"enum\") return null;\n const options = descriptor.options;\n if (!Array.isArray(options)) return null;\n const strings: string[] = [];\n for (const option of options) {\n if (typeof option !== \"string\") return null;\n strings.push(option);\n }\n return Object.freeze(strings);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extractRequiresIntervals.js","sourceRoot":"","sources":["../../src/analysis/extractRequiresIntervals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractRequiresIntervals.js","sourceRoot":"","sources":["../../src/analysis/extractRequiresIntervals.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAA0B,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IACzB,iBAAiB;IACjB,aAAa;IACb,eAAe;IACf,sBAAsB;CACzB,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB,CACpC,UAAyB,EACzB,OAAuB,EACvB,WAAgC,EAChC,aAAqB,UAAU,CAAC,QAAQ;IAExC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QAClC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAC3D,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAChF,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,YAAY,CAAC,IAAuB,EAAE,OAAuB;IAClE,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,UAAU,KAAK,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,qBAAqB,CAC1B,IAAuB,EACvB,UAAyB,EACzB,UAAkB,EAClB,WAAgC,EAChC,SAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC;QAAE,OAAO;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU;SAC3B,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC;SAC/B,IAAI,CACD,CAAC,SAAS,EAAE,EAAE,CACV,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,mBAAmB,CACrF,CAAC;IACN,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO;IAEnC,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrD,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACzE,OAAO;IACX,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAClB,IAAa,EACb,UAAyB,EACzB,UAAkB,EAClB,WAAgC;IAEhC,WAAW,CAAC,IAAI,CACZ,gBAAgB,CAAC;QACb,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,gCAAgC;QACtC,OAAO,EAAE,8EAA8E;QACvF,IAAI,EAAE,UAAU;QAChB,IAAI;QACJ,UAAU;KACb,CAAC,CACL,CAAC;AACN,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport ts from \"typescript\";\n\nimport { type CompileDiagnostic, createDiagnostic } from \"../diagnostics.js\";\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\n\nconst DEFINE_CALLS = new Set([\n \"defineIndicator\",\n \"defineAlert\",\n \"defineDrawing\",\n \"defineAlertCondition\",\n]);\n\n/**\n * Walk a script's default define call and collect a static\n * `requiresIntervals: [\"...\"]` array. Non-string entries emit\n * `requires-intervals-not-literal` and are excluded from the result.\n *\n * @since 0.4\n * @example\n * // const intervals = extractRequiresIntervals(sf, checker, diagnostics);\n * // intervals === [\"1D\", \"1W\"];\n * const fn: typeof extractRequiresIntervals = extractRequiresIntervals;\n * void fn;\n */\nexport function extractRequiresIntervals(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n diagnostics: CompileDiagnostic[],\n sourcePath: string = sourceFile.fileName,\n): ReadonlyArray<string> {\n const intervals = new Set<string>();\n\n const visit = (node: ts.Node): void => {\n if (ts.isCallExpression(node) && isDefineCall(node, checker)) {\n readRequiresIntervals(node, sourceFile, sourcePath, diagnostics, intervals);\n }\n ts.forEachChild(node, visit);\n };\n\n ts.forEachChild(sourceFile, visit);\n return Object.freeze(Array.from(intervals).sort());\n}\n\nfunction isDefineCall(node: ts.CallExpression, checker: ts.TypeChecker): boolean {\n const calleeName = resolveCalleeName(node, checker);\n return calleeName !== null && DEFINE_CALLS.has(calleeName);\n}\n\nfunction readRequiresIntervals(\n call: ts.CallExpression,\n sourceFile: ts.SourceFile,\n sourcePath: string,\n diagnostics: CompileDiagnostic[],\n intervals: Set<string>,\n): void {\n const opts = call.arguments[0];\n if (opts === undefined || !ts.isObjectLiteralExpression(opts)) return;\n const property = opts.properties\n .filter(ts.isPropertyAssignment)\n .find(\n (candidate) =>\n ts.isIdentifier(candidate.name) && candidate.name.text === \"requiresIntervals\",\n );\n if (property === undefined) return;\n\n if (!ts.isArrayLiteralExpression(property.initializer)) {\n addDiagnostic(property.initializer, sourceFile, sourcePath, diagnostics);\n return;\n }\n\n for (const element of property.initializer.elements) {\n if (ts.isStringLiteral(element)) {\n intervals.add(element.text);\n } else {\n addDiagnostic(element, sourceFile, sourcePath, diagnostics);\n }\n }\n}\n\nfunction addDiagnostic(\n node: ts.Node,\n sourceFile: ts.SourceFile,\n sourcePath: string,\n diagnostics: CompileDiagnostic[],\n): void {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"requires-intervals-not-literal\",\n message: \"defineIndicator({ requiresIntervals }) must be a static string-literal array\",\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"forbiddenConstructs.js","sourceRoot":"","sources":["../../src/analysis/forbiddenConstructs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forbiddenConstructs.js","sourceRoot":"","sources":["../../src/analysis/forbiddenConstructs.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport ts from \"typescript\";\n\nimport { type CompileDiagnostic, createDiagnostic } from \"../diagnostics.js\";\n\nconst HOSTILE_GLOBAL_NAMES = new Set([\n \"fetch\",\n \"setTimeout\",\n \"setInterval\",\n \"queueMicrotask\",\n \"Promise\",\n \"requestAnimationFrame\",\n \"Date\",\n \"eval\",\n \"require\",\n // Phase 7 — the indicator-composition rewriter synthesises calls to\n // this helper; user scripts must not name-collide with the slot.\n \"__chartlang_depOutput\",\n]);\n\nconst COMPARISON_OPS = new Set<ts.SyntaxKind>([\n ts.SyntaxKind.LessThanToken,\n ts.SyntaxKind.LessThanEqualsToken,\n ts.SyntaxKind.GreaterThanToken,\n ts.SyntaxKind.GreaterThanEqualsToken,\n]);\n\n/**\n * Walk the source file and emit a diagnostic for every forbidden construct:\n *\n * - `while` / `do-while` / `for-of` / `for-in` / unbounded `for` →\n * `unbounded-loop`.\n * - Self-recursive function declaration → `recursion-not-allowed`.\n * - References to hostile globals (`Math.random`, `Date.*`, `fetch`,\n * `setTimeout`, `setInterval`, `queueMicrotask`, `Promise`,\n * `requestAnimationFrame`), plus `require(...)`, dynamic `import(...)`,\n * `eval(...)`, `new Function(...)` → `hostile-global`.\n *\n * @since 0.1\n * @example\n * // const diagnostics = runForbiddenConstructs(sourceFile, \"demo.chart.ts\");\n * const fn: typeof runForbiddenConstructs = runForbiddenConstructs;\n * void fn;\n */\nexport function runForbiddenConstructs(\n sourceFile: ts.SourceFile,\n sourcePath: string,\n): ReadonlyArray<CompileDiagnostic> {\n const diagnostics: CompileDiagnostic[] = [];\n\n function emit(\n node: ts.Node,\n code: \"unbounded-loop\" | \"recursion-not-allowed\" | \"hostile-global\",\n message: string,\n ): void {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code,\n message,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n }\n\n function checkForStatement(node: ts.ForStatement): boolean {\n const init = node.initializer;\n const condition = node.condition;\n const incrementor = node.incrementor;\n if (!init || !condition || !incrementor) return false;\n if (!ts.isVariableDeclarationList(init)) return false;\n if (init.declarations.length !== 1) return false;\n const declaration = init.declarations[0];\n if (!declaration || !ts.isIdentifier(declaration.name)) return false;\n const initializer = declaration.initializer;\n if (!initializer || !ts.isNumericLiteral(initializer)) return false;\n if (!ts.isBinaryExpression(condition)) return false;\n if (!COMPARISON_OPS.has(condition.operatorToken.kind)) return false;\n if (!ts.isNumericLiteral(condition.right)) return false;\n if (!ts.isIdentifier(condition.left)) return false;\n if (condition.left.text !== declaration.name.text) return false;\n if (!ts.isPostfixUnaryExpression(incrementor)) return false;\n if (!ts.isIdentifier(incrementor.operand)) return false;\n if (incrementor.operand.text !== declaration.name.text) return false;\n return true;\n }\n\n function isInsideAncestor(node: ts.Node, predicate: (parent: ts.Node) => boolean): boolean {\n let current: ts.Node | undefined = node.parent;\n while (current) {\n if (predicate(current)) return true;\n current = current.parent;\n }\n return false;\n }\n\n function isDeclarationName(parent: ts.Node, node: ts.Identifier): boolean {\n const named = parent as { readonly name?: ts.Node };\n if (named.name !== node) return false;\n return (\n ts.isFunctionDeclaration(parent) ||\n ts.isFunctionExpression(parent) ||\n ts.isClassDeclaration(parent) ||\n ts.isClassExpression(parent) ||\n ts.isVariableDeclaration(parent) ||\n ts.isParameter(parent) ||\n ts.isInterfaceDeclaration(parent) ||\n ts.isTypeAliasDeclaration(parent) ||\n ts.isEnumDeclaration(parent) ||\n ts.isModuleDeclaration(parent)\n );\n }\n\n function enclosingFunctionName(node: ts.Node): string | null {\n let current: ts.Node | undefined = node.parent;\n while (current) {\n if (ts.isFunctionDeclaration(current) && current.name) {\n return current.name.text;\n }\n if (ts.isVariableDeclaration(current) && ts.isIdentifier(current.name)) {\n const initializer = current.initializer;\n if (\n initializer &&\n (ts.isFunctionExpression(initializer) || ts.isArrowFunction(initializer))\n ) {\n return current.name.text;\n }\n }\n current = current.parent;\n }\n return null;\n }\n\n const visit = (node: ts.Node): void => {\n if (ts.isWhileStatement(node)) {\n emit(node, \"unbounded-loop\", \"`while` loops are not allowed.\");\n } else if (ts.isDoStatement(node)) {\n emit(node, \"unbounded-loop\", \"`do…while` loops are not allowed.\");\n } else if (ts.isForOfStatement(node)) {\n emit(node, \"unbounded-loop\", \"`for…of` loops are not allowed in Phase 1.\");\n } else if (ts.isForInStatement(node)) {\n emit(node, \"unbounded-loop\", \"`for…in` loops are not allowed.\");\n } else if (ts.isForStatement(node)) {\n if (!checkForStatement(node)) {\n emit(\n node,\n \"unbounded-loop\",\n \"`for` loops must use literal numeric bounds: for (let i = <num>; i </<= <num>; i++).\",\n );\n }\n } else if (ts.isCallExpression(node)) {\n const expression = node.expression;\n if (ts.isIdentifier(expression)) {\n if (expression.text === \"eval\") {\n emit(node, \"hostile-global\", \"`eval` is not allowed.\");\n } else if (expression.text === \"require\") {\n emit(node, \"hostile-global\", \"`require` is not allowed.\");\n }\n } else if (expression.kind === ts.SyntaxKind.ImportKeyword) {\n emit(node, \"hostile-global\", \"Dynamic `import()` is not allowed.\");\n }\n const functionName = enclosingFunctionName(node);\n if (\n functionName !== null &&\n ts.isIdentifier(expression) &&\n expression.text === functionName\n ) {\n emit(\n node,\n \"recursion-not-allowed\",\n `Self-recursive call to \\`${functionName}\\` is not allowed.`,\n );\n }\n } else if (ts.isNewExpression(node)) {\n const expression = node.expression;\n if (ts.isIdentifier(expression) && expression.text === \"Function\") {\n emit(node, \"hostile-global\", \"`new Function(...)` is not allowed.\");\n }\n } else if (ts.isPropertyAccessExpression(node)) {\n const objectName = node.expression;\n if (ts.isIdentifier(objectName) && objectName.text === \"Math\") {\n if (node.name.text === \"random\") {\n emit(node, \"hostile-global\", \"`Math.random` is not allowed.\");\n }\n } else if (ts.isIdentifier(objectName) && objectName.text === \"Date\") {\n emit(node, \"hostile-global\", \"`Date.*` is not allowed.\");\n }\n } else if (ts.isIdentifier(node)) {\n if (!HOSTILE_GLOBAL_NAMES.has(node.text)) {\n ts.forEachChild(node, visit);\n return;\n }\n const parent = node.parent;\n if (parent && isDeclarationName(parent, node)) {\n ts.forEachChild(node, visit);\n return;\n }\n if (\n parent &&\n (ts.isPropertyAccessExpression(parent) ||\n ts.isPropertyAssignment(parent) ||\n ts.isPropertySignature(parent) ||\n ts.isBindingElement(parent) ||\n ts.isImportSpecifier(parent) ||\n ts.isExportSpecifier(parent))\n ) {\n ts.forEachChild(node, visit);\n return;\n }\n const isInsideTypeContext = isInsideAncestor(\n node,\n (ancestor) => ts.isTypeNode(ancestor) || ts.isTypeReferenceNode(ancestor),\n );\n if (isInsideTypeContext) {\n ts.forEachChild(node, visit);\n return;\n }\n emit(node, \"hostile-global\", `\\`${node.text}\\` is not allowed.`);\n }\n ts.forEachChild(node, visit);\n };\n\n ts.forEachChild(sourceFile, visit);\n\n return Object.freeze(diagnostics.slice());\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nexport { runStructuralChecks } from \"./structuralChecks.js\";\nexport type { StructuralBindingInfo, StructuralCheckResult } from \"./structuralChecks.js\";\nexport { runForbiddenConstructs } from \"./forbiddenConstructs.js\";\nexport { runStatefulCallInLoop } from \"./statefulCallInLoop.js\";\nexport { extractCapabilities } from \"./extractCapabilities.js\";\nexport { extractMaxLookback } from \"./extractMaxLookback.js\";\nexport type { ExtractMaxLookbackResult } from \"./extractMaxLookback.js\";\nexport { extractInputs } from \"./extractInputs.js\";\nexport type { ExtractedDescriptor, ExtractInputsResult } from \"./extractInputs.js\";\nexport { extractRequestedIntervals } from \"./extractRequestedIntervals.js\";\nexport { validateLowerTfIntervals } from \"./validateLowerTfIntervals.js\";\nexport { extractRequiresIntervals } from \"./extractRequiresIntervals.js\";\nexport { extractAlertConditions } from \"./extractAlertConditions.js\";\nexport type { ExtractAlertConditionsResult } from \"./extractAlertConditions.js\";\nexport { extractDependencyGraph } from \"./extractDependencyGraph.js\";\nexport type {\n DepConsumesEntry,\n DepGraph,\n DrawnScript,\n PrivateDep,\n ProducerRef,\n ProducerSnapshot,\n ResolveProducer,\n} from \"./extractDependencyGraph.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"statefulCallInLoop.js","sourceRoot":"","sources":["../../src/analysis/statefulCallInLoop.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAG/D,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAA0B,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,qBAAqB,CACjC,UAAyB,EACzB,OAAuB,EACvB,UAAkB,EAClB,cAA2D;IAE3D,MAAM,WAAW,GAAwB,EAAE,CAAC;IAE5C,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QAClC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,UAAU,KAAK,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnB,WAAW,CAAC,IAAI,CACZ,gBAAgB,CAAC;wBACb,QAAQ,EAAE,OAAO;wBACjB,IAAI,EAAE,2BAA2B;wBACjC,OAAO,EAAE,wBAAwB,UAAU,oCAAoC;wBAC/E,IAAI,EAAE,UAAU;wBAChB,IAAI;wBACJ,UAAU;qBACb,CAAC,CACL,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC7B,IAAI,OAAO,GAAwB,IAAI,CAAC,MAAM,CAAC;IAC/C,OAAO,OAAO,EAAE,CAAC;QACb,IACI,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;YAC1B,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC5B,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC5B,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC5B,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAC3B,CAAC;YACC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"statefulCallInLoop.js","sourceRoot":"","sources":["../../src/analysis/statefulCallInLoop.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAG/D,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAA0B,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,qBAAqB,CACjC,UAAyB,EACzB,OAAuB,EACvB,UAAkB,EAClB,cAA2D;IAE3D,MAAM,WAAW,GAAwB,EAAE,CAAC;IAE5C,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QAClC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,UAAU,KAAK,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnB,WAAW,CAAC,IAAI,CACZ,gBAAgB,CAAC;wBACb,QAAQ,EAAE,OAAO;wBACjB,IAAI,EAAE,2BAA2B;wBACjC,OAAO,EAAE,wBAAwB,UAAU,oCAAoC;wBAC/E,IAAI,EAAE,UAAU;wBAChB,IAAI;wBACJ,UAAU;qBACb,CAAC,CACL,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC7B,IAAI,OAAO,GAAwB,IAAI,CAAC,MAAM,CAAC;IAC/C,OAAO,OAAO,EAAE,CAAC;QACb,IACI,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;YAC1B,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC5B,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC5B,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC5B,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAC3B,CAAC;YACC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { StatefulPrimitiveEntry } from \"@invinite-org/chartlang-core\";\nimport ts from \"typescript\";\n\nimport { type CompileDiagnostic, createDiagnostic } from \"../diagnostics.js\";\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\n\n/**\n * Walk the source file and flag every stateful primitive call that sits\n * inside any loop kind (`for`, `for-of`, `for-in`, `while`, `do-while`).\n * Mirrors Pine's identical restriction: a stateful call inside a loop would\n * receive one slot id per iteration, silently corrupting per-call state.\n * `slot: false` entries (e.g. `ta.nz`) are flagged too — they're stateless\n * but Pine still forbids them in loops, and the diagnostic message stays\n * the same.\n *\n * The walk runs on the **original** AST (positions match the user's source).\n * Loop ancestry detection uses `node.parent` directly — the source file is\n * created with `setParentNodes: true` so `.parent` is populated.\n *\n * @since 0.1\n * @example\n * // const diagnostics = runStatefulCallInLoop(\n * // sourceFile, checker, \"demo.chart.ts\", STATEFUL_PRIMITIVES_BY_NAME,\n * // );\n * const fn: typeof runStatefulCallInLoop = runStatefulCallInLoop;\n * void fn;\n */\nexport function runStatefulCallInLoop(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n sourcePath: string,\n statefulByName: ReadonlyMap<string, StatefulPrimitiveEntry>,\n): ReadonlyArray<CompileDiagnostic> {\n const diagnostics: CompileDiagnostic[] = [];\n\n const visit = (node: ts.Node): void => {\n if (ts.isCallExpression(node)) {\n const calleeName = resolveCalleeName(node, checker);\n if (calleeName !== null && statefulByName.has(calleeName)) {\n if (insideLoop(node)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"stateful-call-inside-loop\",\n message: `Stateful primitive \\`${calleeName}\\` cannot be called inside a loop.`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n\n ts.forEachChild(sourceFile, visit);\n return Object.freeze(diagnostics.slice());\n}\n\nfunction insideLoop(node: ts.Node): boolean {\n let current: ts.Node | undefined = node.parent;\n while (current) {\n if (\n ts.isForStatement(current) ||\n ts.isForOfStatement(current) ||\n ts.isForInStatement(current) ||\n ts.isWhileStatement(current) ||\n ts.isDoStatement(current)\n ) {\n return true;\n }\n current = current.parent;\n }\n return false;\n}\n"]}