@invinite-org/chartlang-compiler 1.0.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/README.md +3 -0
  3. package/dist/analysis/extractCapabilities.d.ts +5 -1
  4. package/dist/analysis/extractCapabilities.d.ts.map +1 -1
  5. package/dist/analysis/extractCapabilities.js +6 -2
  6. package/dist/analysis/extractCapabilities.js.map +1 -1
  7. package/dist/analysis/extractDependencyGraph.d.ts +160 -0
  8. package/dist/analysis/extractDependencyGraph.d.ts.map +1 -0
  9. package/dist/analysis/extractDependencyGraph.js +690 -0
  10. package/dist/analysis/extractDependencyGraph.js.map +1 -0
  11. package/dist/analysis/extractInputs.d.ts +5 -1
  12. package/dist/analysis/extractInputs.d.ts.map +1 -1
  13. package/dist/analysis/extractInputs.js +6 -2
  14. package/dist/analysis/extractInputs.js.map +1 -1
  15. package/dist/analysis/extractMaxLookback.d.ts +6 -1
  16. package/dist/analysis/extractMaxLookback.d.ts.map +1 -1
  17. package/dist/analysis/extractMaxLookback.js +10 -5
  18. package/dist/analysis/extractMaxLookback.js.map +1 -1
  19. package/dist/analysis/forbiddenConstructs.d.ts +1 -2
  20. package/dist/analysis/forbiddenConstructs.d.ts.map +1 -1
  21. package/dist/analysis/forbiddenConstructs.js +4 -2
  22. package/dist/analysis/forbiddenConstructs.js.map +1 -1
  23. package/dist/analysis/index.d.ts +3 -1
  24. package/dist/analysis/index.d.ts.map +1 -1
  25. package/dist/analysis/index.js +1 -0
  26. package/dist/analysis/index.js.map +1 -1
  27. package/dist/analysis/structuralChecks.d.ts +65 -9
  28. package/dist/analysis/structuralChecks.d.ts.map +1 -1
  29. package/dist/analysis/structuralChecks.js +111 -22
  30. package/dist/analysis/structuralChecks.js.map +1 -1
  31. package/dist/api.d.ts +52 -0
  32. package/dist/api.d.ts.map +1 -1
  33. package/dist/api.js +485 -35
  34. package/dist/api.js.map +1 -1
  35. package/dist/bundle.d.ts +91 -3
  36. package/dist/bundle.d.ts.map +1 -1
  37. package/dist/bundle.js +88 -5
  38. package/dist/bundle.js.map +1 -1
  39. package/dist/dependency/index.d.ts +3 -0
  40. package/dist/dependency/index.d.ts.map +1 -0
  41. package/dist/dependency/index.js +4 -0
  42. package/dist/dependency/index.js.map +1 -0
  43. package/dist/dependency/resolveProducer.d.ts +183 -0
  44. package/dist/dependency/resolveProducer.d.ts.map +1 -0
  45. package/dist/dependency/resolveProducer.js +256 -0
  46. package/dist/dependency/resolveProducer.js.map +1 -0
  47. package/dist/diagnostics.d.ts +6 -2
  48. package/dist/diagnostics.d.ts.map +1 -1
  49. package/dist/diagnostics.js.map +1 -1
  50. package/dist/index.d.ts +3 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +1 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/manifest.d.ts +8 -1
  55. package/dist/manifest.d.ts.map +1 -1
  56. package/dist/manifest.js +27 -0
  57. package/dist/manifest.js.map +1 -1
  58. package/dist/program.d.ts +1 -0
  59. package/dist/program.d.ts.map +1 -1
  60. package/dist/program.js +80 -4
  61. package/dist/program.js.map +1 -1
  62. package/dist/transformers/callsiteIdInjection.d.ts +3 -2
  63. package/dist/transformers/callsiteIdInjection.d.ts.map +1 -1
  64. package/dist/transformers/callsiteIdInjection.js +16 -1
  65. package/dist/transformers/callsiteIdInjection.js.map +1 -1
  66. package/dist/transformers/index.d.ts +2 -0
  67. package/dist/transformers/index.d.ts.map +1 -1
  68. package/dist/transformers/index.js +1 -0
  69. package/dist/transformers/index.js.map +1 -1
  70. package/dist/transformers/plotKindFromCallsite.d.ts +43 -0
  71. package/dist/transformers/plotKindFromCallsite.d.ts.map +1 -0
  72. package/dist/transformers/plotKindFromCallsite.js +103 -0
  73. package/dist/transformers/plotKindFromCallsite.js.map +1 -0
  74. package/dist/transformers/rewriteDependencyAccessors.d.ts +65 -0
  75. package/dist/transformers/rewriteDependencyAccessors.d.ts.map +1 -0
  76. package/dist/transformers/rewriteDependencyAccessors.js +204 -0
  77. package/dist/transformers/rewriteDependencyAccessors.js.map +1 -0
  78. package/dist/typesEmit.d.ts +14 -11
  79. package/dist/typesEmit.d.ts.map +1 -1
  80. package/dist/typesEmit.js +91 -7
  81. package/dist/typesEmit.js.map +1 -1
  82. package/package.json +2 -2
@@ -43,6 +43,7 @@ function readScaleAxis(node) {
43
43
  return undefined;
44
44
  }
45
45
  function extractOverrides(argument, kind) {
46
+ let overlay;
46
47
  let maxBarsBack;
47
48
  let format;
48
49
  let precision;
@@ -56,7 +57,13 @@ function extractOverrides(argument, kind) {
56
57
  if (!ts.isIdentifier(propertyName))
57
58
  continue;
58
59
  const initializer = property.initializer;
59
- if (propertyName.text === "maxBarsBack" && kind !== "drawing") {
60
+ if (propertyName.text === "overlay" && kind === "indicator") {
61
+ if (initializer.kind === ts.SyntaxKind.TrueKeyword)
62
+ overlay = true;
63
+ else if (initializer.kind === ts.SyntaxKind.FalseKeyword)
64
+ overlay = false;
65
+ }
66
+ else if (propertyName.text === "maxBarsBack" && kind !== "drawing") {
60
67
  if (ts.isNumericLiteral(initializer))
61
68
  maxBarsBack = Number(initializer.text);
62
69
  }
@@ -79,6 +86,7 @@ function extractOverrides(argument, kind) {
79
86
  }
80
87
  }
81
88
  return Object.freeze({
89
+ ...(overlay === undefined ? {} : { overlay }),
82
90
  ...(maxBarsBack === undefined ? {} : { maxBarsBack }),
83
91
  ...(format === undefined ? {} : { format }),
84
92
  ...(precision === undefined ? {} : { precision }),
@@ -87,22 +95,91 @@ function extractOverrides(argument, kind) {
87
95
  ...(shortName === undefined ? {} : { shortName }),
88
96
  });
89
97
  }
98
+ function defineKindFromCallee(calleeName) {
99
+ if (calleeName === "defineAlert")
100
+ return "alert";
101
+ if (calleeName === "defineAlertCondition")
102
+ return "alertCondition";
103
+ if (calleeName === "defineDrawing")
104
+ return "drawing";
105
+ return "indicator";
106
+ }
107
+ function collectBindings(sourceFile, checker, sourcePath, diagnostics) {
108
+ const bindings = [];
109
+ const defaultAssignments = [];
110
+ for (const statement of sourceFile.statements) {
111
+ if (ts.isExportAssignment(statement) && !statement.isExportEquals) {
112
+ defaultAssignments.push(statement);
113
+ const expression = statement.expression;
114
+ if (!ts.isCallExpression(expression))
115
+ continue;
116
+ const calleeName = resolveCalleeName(expression, checker);
117
+ if (calleeName === null || !DEFINE_CALLS.has(calleeName))
118
+ continue;
119
+ bindings.push(Object.freeze({
120
+ exportKind: "default",
121
+ bindingName: "default",
122
+ defineKind: defineKindFromCallee(calleeName),
123
+ defineCall: expression,
124
+ }));
125
+ continue;
126
+ }
127
+ if (ts.isVariableStatement(statement)) {
128
+ const isExported = (statement.modifiers ?? []).some((m) => m.kind === ts.SyntaxKind.ExportKeyword);
129
+ const declarationList = statement.declarationList;
130
+ const isConst = (declarationList.flags & ts.NodeFlags.Const) === ts.NodeFlags.Const;
131
+ for (const declaration of declarationList.declarations) {
132
+ /* v8 ignore next */
133
+ if (!ts.isIdentifier(declaration.name))
134
+ continue;
135
+ const initializer = declaration.initializer;
136
+ if (initializer === undefined || !ts.isCallExpression(initializer))
137
+ continue;
138
+ const calleeName = resolveCalleeName(initializer, checker);
139
+ if (calleeName === null || !DEFINE_CALLS.has(calleeName))
140
+ continue;
141
+ if (!isConst) {
142
+ diagnostics.push(createDiagnostic({
143
+ severity: "error",
144
+ code: "non-const-define-binding",
145
+ message: `\`${calleeName}(...)\` must be assigned to a \`const\` binding so the compiler can statically resolve it.`,
146
+ file: sourcePath,
147
+ node: declaration,
148
+ sourceFile,
149
+ }));
150
+ continue;
151
+ }
152
+ bindings.push(Object.freeze({
153
+ exportKind: isExported ? "named" : "private",
154
+ bindingName: declaration.name.text,
155
+ defineKind: defineKindFromCallee(calleeName),
156
+ defineCall: initializer,
157
+ }));
158
+ }
159
+ }
160
+ }
161
+ return Object.freeze({ bindings, defaultAssignments });
162
+ }
90
163
  /**
91
164
  * Walk the source file's top-level statements to verify:
92
165
  *
93
- * - A default export exists and is `defineIndicator(...)`,
166
+ * - Exactly one default export exists and is `defineIndicator(...)`,
94
167
  * `defineDrawing(...)`, `defineAlert(...)`, or
95
- * `defineAlertCondition(...)` from
96
- * `@invinite-org/chartlang-core`.
97
- * - The first argument is an object literal carrying `apiVersion: 1`.
168
+ * `defineAlertCondition(...)` from `@invinite-org/chartlang-core`.
169
+ * - Every `define*(...)` call sits on a `const` binding (Phase 7
170
+ * composition pass requires static resolution).
171
+ * - The default export's first argument is an object literal carrying
172
+ * `apiVersion: 1`.
98
173
  *
99
- * On any violation, emits `missing-default-export` or
100
- * `api-version-mismatch`. Returns the discovered script name + kind for
101
- * the manifest assembly step.
174
+ * On any violation, emits `missing-default-export`,
175
+ * `multiple-default-exports`, `non-const-define-binding`, or
176
+ * `api-version-mismatch`. Returns the discovered script name + kind
177
+ * for the manifest assembly step plus the classified `bindings` list
178
+ * the composition pass walks (Phase 7).
102
179
  *
103
180
  * @since 0.1
104
181
  * @example
105
- * // const { diagnostics, name, kind } = runStructuralChecks(
182
+ * // const { diagnostics, name, kind, bindings } = runStructuralChecks(
106
183
  * // sourceFile, checker, "demo.chart.ts",
107
184
  * // );
108
185
  * const fn: typeof runStructuralChecks = runStructuralChecks;
@@ -112,7 +189,25 @@ export function runStructuralChecks(sourceFile, checker, sourcePath) {
112
189
  const diagnostics = [];
113
190
  let name = "";
114
191
  let kind = "indicator";
115
- const exportAssignment = sourceFile.statements.find((statement) => ts.isExportAssignment(statement) && !statement.isExportEquals);
192
+ const { bindings, defaultAssignments } = collectBindings(sourceFile, checker, sourcePath, diagnostics);
193
+ const frozenBindings = Object.freeze(bindings.slice());
194
+ if (defaultAssignments.length > 1) {
195
+ for (let i = 1; i < defaultAssignments.length; i += 1) {
196
+ const extra = defaultAssignments[i];
197
+ /* v8 ignore next */
198
+ if (extra === undefined)
199
+ continue;
200
+ diagnostics.push(createDiagnostic({
201
+ severity: "error",
202
+ code: "multiple-default-exports",
203
+ message: "A `.chart.ts` file may declare at most one `export default define*(...)`; remove the extra default export.",
204
+ file: sourcePath,
205
+ node: extra,
206
+ sourceFile,
207
+ }));
208
+ }
209
+ }
210
+ const exportAssignment = defaultAssignments[0];
116
211
  if (!exportAssignment) {
117
212
  diagnostics.push(createDiagnostic({
118
213
  severity: "error",
@@ -127,6 +222,7 @@ export function runStructuralChecks(sourceFile, checker, sourcePath) {
127
222
  name,
128
223
  kind,
129
224
  overrides: Object.freeze({}),
225
+ bindings: frozenBindings,
130
226
  });
131
227
  }
132
228
  const expression = exportAssignment.expression;
@@ -144,6 +240,7 @@ export function runStructuralChecks(sourceFile, checker, sourcePath) {
144
240
  name,
145
241
  kind,
146
242
  overrides: Object.freeze({}),
243
+ bindings: frozenBindings,
147
244
  });
148
245
  }
149
246
  const calleeName = resolveCalleeName(expression, checker);
@@ -161,20 +258,10 @@ export function runStructuralChecks(sourceFile, checker, sourcePath) {
161
258
  name,
162
259
  kind,
163
260
  overrides: Object.freeze({}),
261
+ bindings: frozenBindings,
164
262
  });
165
263
  }
166
- if (calleeName === "defineAlert") {
167
- kind = "alert";
168
- }
169
- else if (calleeName === "defineAlertCondition") {
170
- kind = "alertCondition";
171
- }
172
- else if (calleeName === "defineDrawing") {
173
- kind = "drawing";
174
- }
175
- else {
176
- kind = "indicator";
177
- }
264
+ kind = defineKindFromCallee(calleeName);
178
265
  const argument = expression.arguments[0];
179
266
  if (!argument || !ts.isObjectLiteralExpression(argument)) {
180
267
  diagnostics.push(createDiagnostic({
@@ -190,6 +277,7 @@ export function runStructuralChecks(sourceFile, checker, sourcePath) {
190
277
  name,
191
278
  kind,
192
279
  overrides: Object.freeze({}),
280
+ bindings: frozenBindings,
193
281
  });
194
282
  }
195
283
  let apiVersionOk = false;
@@ -238,6 +326,7 @@ export function runStructuralChecks(sourceFile, checker, sourcePath) {
238
326
  name,
239
327
  kind,
240
328
  overrides: extractOverrides(argument, kind),
329
+ bindings: frozenBindings,
241
330
  });
242
331
  }
243
332
  //# sourceMappingURL=structuralChecks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"structuralChecks.js","sourceRoot":"","sources":["../../src/analysis/structuralChecks.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;AAoDH,SAAS,eAAe,CAAC,IAAmB;IACxC,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,eAAe,CAAC,IAAmB;IACxC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,IACI,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,IAAI,CAAC,IAAI,KAAK,QAAQ;QACtB,IAAI,CAAC,IAAI,KAAK,SAAS;QACvB,IAAI,CAAC,IAAI,KAAK,SAAS,EACzB,CAAC;QACC,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,IAAmB;IACtC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,IACI,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,IAAI,CAAC,IAAI,KAAK,MAAM;QACpB,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,IAAI,CAAC,IAAI,KAAK,KAAK,EACrB,CAAC;QACC,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,gBAAgB,CACrB,QAAoC,EACpC,IAA0D;IAE1D,IAAI,WAA+B,CAAC;IACpC,IAAI,MAA+B,CAAC;IACpC,IAAI,SAA6B,CAAC;IAClC,IAAI,KAA4B,CAAC;IACjC,IAAI,iBAAoD,CAAC;IACzD,IAAI,SAA6B,CAAC;IAElC,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YAAE,SAAS;QACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC;YAAE,SAAS;QAC7C,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACzC,IAAI,YAAY,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC;gBAAE,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5D,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/D,IAAI,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC;gBAAE,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/E,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/D,KAAK,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACnD,iBAAiB,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC3C,IAAI,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC;gBAAE,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC;QACtE,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QACrD,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3C,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QACjD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACjE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;KACpD,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB,CAC/B,UAAyB,EACzB,OAAuB,EACvB,UAAkB;IAElB,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,IAAI,GAAyD,WAAW,CAAC;IAE7E,MAAM,gBAAgB,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAC/C,CAAC,SAAS,EAAoC,EAAE,CAC5C,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CACpE,CAAC;IACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,WAAW,CAAC,IAAI,CACZ,gBAAgB,CAAC;YACb,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EACH,6HAA6H;YACjI,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,UAAU;SACb,CAAC,CACL,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YACvC,IAAI;YACJ,IAAI;YACJ,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;SAC/B,CAAC,CAAC;IACP,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC;IAC/C,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,WAAW,CAAC,IAAI,CACZ,gBAAgB,CAAC;YACb,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EACH,+FAA+F;YACnG,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,UAAU;SACb,CAAC,CACL,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YACvC,IAAI;YACJ,IAAI;YACJ,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;SAC/B,CAAC,CAAC;IACP,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1D,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,WAAW,CAAC,IAAI,CACZ,gBAAgB,CAAC;YACb,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EACH,0GAA0G;YAC9G,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,UAAU;SACb,CAAC,CACL,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YACvC,IAAI;YACJ,IAAI;YACJ,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;SAC/B,CAAC,CAAC;IACP,CAAC;IACD,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;QAC/B,IAAI,GAAG,OAAO,CAAC;IACnB,CAAC;SAAM,IAAI,UAAU,KAAK,sBAAsB,EAAE,CAAC;QAC/C,IAAI,GAAG,gBAAgB,CAAC;IAC5B,CAAC;SAAM,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;QACxC,IAAI,GAAG,SAAS,CAAC;IACrB,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,WAAW,CAAC;IACvB,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,WAAW,CAAC,IAAI,CACZ,gBAAgB,CAAC;YACb,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EACH,qGAAqG;YACzG,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,UAAU;SACb,CAAC,CACL,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YACvC,IAAI;YACJ,IAAI;YACJ,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;SAC/B,CAAC,CAAC;IACP,CAAC;IAED,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YAAE,SAAS;QACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC;YAAE,SAAS;QAC7C,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACrC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;YACzC,IAAI,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrE,YAAY,GAAG,IAAI,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC9C,WAAW,CAAC,IAAI,CACZ,gBAAgB,CAAC;oBACb,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,iBAAiB,KAAK,mKAAmK;oBAClM,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,WAAW;oBACjB,UAAU;iBACb,CAAC,CACL,CAAC;YACN,CAAC;QACL,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;YACzC,IAAI,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;YAC5B,CAAC;QACL,CAAC;IACL,CAAC;IACD,IAAI,CAAC,YAAY,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,WAAW,CAAC,IAAI,CACZ,gBAAgB,CAAC;YACb,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EACH,iJAAiJ;YACrJ,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,QAAQ;YACd,UAAU;SACb,CAAC,CACL,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;QACvC,IAAI;QACJ,IAAI;QACJ,SAAS,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC;KAC9C,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"structuralChecks.js","sourceRoot":"","sources":["../../src/analysis/structuralChecks.ts"],"names":[],"mappings":"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"}
package/dist/api.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { IntervalDescriptor, ScriptManifest } from "@invinite-org/chartlang-core";
2
2
  import ts from "typescript";
3
+ import { type ResolveCrossFileProducer } from "./dependency/index.js";
3
4
  import type { CompileDiagnostic } from "./diagnostics.js";
4
5
  /**
5
6
  * Options accepted by `transformAndAnalyse`. `sourcePath` is the
@@ -8,6 +9,12 @@ import type { CompileDiagnostic } from "./diagnostics.js";
8
9
  * `Capabilities.intervals` set used by the `lower-tf-not-lower` validation —
9
10
  * when omitted the lower-timeframe ordering check is skipped.
10
11
  *
12
+ * `resolveProducer` is the sync §22.10 indicator-composition snapshot
13
+ * lookup; `compile` builds this from the pre-resolved cross-file
14
+ * `ProducerCompiled` snapshots before invoking the transform pass. When
15
+ * omitted (e.g. direct unit-test calls), cross-file dep edges resolve to
16
+ * `null` and the analysis pass treats them as unresolvable.
17
+ *
11
18
  * @since 0.1
12
19
  * @example
13
20
  * const opts: TransformAndAnalyseOptions = { sourcePath: "demo.chart.ts" };
@@ -15,6 +22,14 @@ import type { CompileDiagnostic } from "./diagnostics.js";
15
22
  export type TransformAndAnalyseOptions = Readonly<{
16
23
  sourcePath: string;
17
24
  declaredIntervals?: ReadonlyArray<IntervalDescriptor>;
25
+ resolveProducer?: (moduleSpecifier: string, exportName: string) => Readonly<{
26
+ readonly name: string;
27
+ readonly outputs: ReadonlyArray<{
28
+ readonly title: string;
29
+ readonly kind: string;
30
+ }>;
31
+ readonly inputs: Readonly<Record<string, unknown>>;
32
+ }> | null;
18
33
  }>;
19
34
  /**
20
35
  * Result of `transformAndAnalyse`. `transformed` is the AST after callsite
@@ -22,6 +37,12 @@ export type TransformAndAnalyseOptions = Readonly<{
22
37
  * `ScriptManifest`; `diagnostics` is the flat list of every diagnostic
23
38
  * emitted by any pass (errors abort the rewrite, warnings flow through).
24
39
  *
40
+ * `siblings` is populated only for §22.10 multi-export indicator-composition
41
+ * files (files with more than one drawn `defineIndicator(...)` binding) —
42
+ * it carries every named-export manifest in source order. Single-script
43
+ * files omit the field entirely so existing snapshot assertions stay
44
+ * byte-identical.
45
+ *
25
46
  * @since 0.1
26
47
  * @example
27
48
  * // const { transformed, manifest, diagnostics } =
@@ -37,6 +58,7 @@ export type TransformAndAnalyseResult = Readonly<{
37
58
  transformed: ts.SourceFile;
38
59
  manifest: ScriptManifest;
39
60
  diagnostics: ReadonlyArray<CompileDiagnostic>;
61
+ siblings?: ReadonlyArray<ScriptManifest>;
40
62
  }>;
41
63
  /**
42
64
  * Run the Phase-1 compiler pipeline against an in-memory script source.
@@ -85,6 +107,36 @@ export type CompileOptions = Readonly<{
85
107
  minify?: boolean;
86
108
  target?: "es2022";
87
109
  declaredIntervals?: ReadonlyArray<IntervalDescriptor>;
110
+ /**
111
+ * Cross-file `.chart.ts` resolver. When undefined, `compile` builds
112
+ * a default per-call resolver rooted at the file's directory.
113
+ * `compileProject` shares one resolver across every file so the
114
+ * inline-once invariant holds (a producer referenced by N consumers
115
+ * compiles exactly once per project compile).
116
+ *
117
+ * @since 0.7
118
+ */
119
+ resolveProducer?: ResolveCrossFileProducer;
120
+ /**
121
+ * Absolute path the cross-file resolver should treat as the project
122
+ * root. Defaults to the directory of `sourcePath`'s absolute
123
+ * resolution. Imports resolving outside this tree return `null`.
124
+ *
125
+ * @since 0.7
126
+ */
127
+ rootDir?: string;
128
+ /**
129
+ * Bare specifier → self-contained ESM source map the bundler resolves
130
+ * in-memory instead of from disk. Lets a host run `compile` where the
131
+ * workspace `@invinite-org/chartlang-*` packages are not installed as
132
+ * resolvable node_modules — e.g. a bundled serverless function, where
133
+ * the packages were inlined into the host bundle rather than shipped
134
+ * to the function filesystem. Each value must have no remaining bare
135
+ * imports (pre-bundle the package before passing it).
136
+ *
137
+ * @since 1.1
138
+ */
139
+ inMemoryModules?: Readonly<Record<string, string>>;
88
140
  }>;
89
141
  /**
90
142
  * Options accepted by `compileFile`. Extends `CompileOptions` with a `write`
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,MAAM,YAAY,CAAC;AAe5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAO1D;;;;;;;;;;GAUG;AACH,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACzD,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC7C,WAAW,EAAE,EAAE,CAAC,UAAU,CAAC;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;CACjD,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,0BAA0B,GACjC,yBAAyB,CAkH3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IAClC,UAAU,EAAE,CAAC,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,iBAAiB,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACzD,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAC3C,QAAQ,CAAC;IACL,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEP;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACnC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;gBAE3C,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC;CAU5D;AAOD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAuC3F;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcjF;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CA4BjG;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA+BvE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,cAAc,GACrB,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAYxC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}