fhirpath-ts 0.2.0 → 0.2.2

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 (83) hide show
  1. package/README.md +12 -5
  2. package/dist/analyzer/analyze-dto.d.ts.map +1 -1
  3. package/dist/analyzer/analyze-dto.js +14 -8
  4. package/dist/analyzer/analyze-dto.js.map +1 -1
  5. package/dist/analyzer/analyze.d.ts +23 -12
  6. package/dist/analyzer/analyze.d.ts.map +1 -1
  7. package/dist/analyzer/analyze.js +138 -46
  8. package/dist/analyzer/analyze.js.map +1 -1
  9. package/dist/analyzer/declarations.d.ts +6 -0
  10. package/dist/analyzer/declarations.d.ts.map +1 -1
  11. package/dist/analyzer/declarations.js +7 -0
  12. package/dist/analyzer/declarations.js.map +1 -1
  13. package/dist/analyzer/expression-policy.d.ts +88 -14
  14. package/dist/analyzer/expression-policy.d.ts.map +1 -1
  15. package/dist/analyzer/expression-policy.js +296 -41
  16. package/dist/analyzer/expression-policy.js.map +1 -1
  17. package/dist/analyzer/operator-rules.d.ts.map +1 -1
  18. package/dist/analyzer/operator-rules.js +7 -6
  19. package/dist/analyzer/operator-rules.js.map +1 -1
  20. package/dist/analyzer/signatures.d.ts +49 -0
  21. package/dist/analyzer/signatures.d.ts.map +1 -1
  22. package/dist/analyzer/signatures.js +76 -31
  23. package/dist/analyzer/signatures.js.map +1 -1
  24. package/dist/analyzer/source-options.d.ts +17 -0
  25. package/dist/analyzer/source-options.d.ts.map +1 -0
  26. package/dist/analyzer/source-options.js +3 -0
  27. package/dist/analyzer/source-options.js.map +1 -0
  28. package/dist/api/dto.d.ts +9 -4
  29. package/dist/api/dto.d.ts.map +1 -1
  30. package/dist/api/dto.js +14 -3
  31. package/dist/api/dto.js.map +1 -1
  32. package/dist/api/strict.d.ts.map +1 -1
  33. package/dist/api/strict.js +8 -3
  34. package/dist/api/strict.js.map +1 -1
  35. package/dist/cli/dto-check.d.ts +9 -0
  36. package/dist/cli/dto-check.d.ts.map +1 -1
  37. package/dist/cli/dto-check.js +49 -6
  38. package/dist/cli/dto-check.js.map +1 -1
  39. package/dist/cli/fhirpath-check.js +161 -31
  40. package/dist/cli/fhirpath-check.js.map +1 -1
  41. package/dist/eslint/index.d.ts.map +1 -1
  42. package/dist/eslint/index.js +13 -8
  43. package/dist/eslint/index.js.map +1 -1
  44. package/dist/r4/generated/resources-data.d.ts +6 -2
  45. package/dist/r4/generated/resources-data.d.ts.map +1 -1
  46. package/dist/r4/generated/resources-data.js +626 -28627
  47. package/dist/r4/generated/resources-data.js.map +1 -1
  48. package/dist/r4/generated/types-data.d.ts +6 -2
  49. package/dist/r4/generated/types-data.d.ts.map +1 -1
  50. package/dist/r4/generated/types-data.js +84 -2204
  51. package/dist/r4/generated/types-data.js.map +1 -1
  52. package/dist/r4/index.d.ts.map +1 -1
  53. package/dist/r4/index.js +10 -4
  54. package/dist/r4/index.js.map +1 -1
  55. package/dist/r4/model-data.d.ts +17 -0
  56. package/dist/r4/model-data.d.ts.map +1 -1
  57. package/dist/r4/model-data.js +118 -1
  58. package/dist/r4/model-data.js.map +1 -1
  59. package/dist/sites/index.d.ts +31 -2
  60. package/dist/sites/index.d.ts.map +1 -1
  61. package/dist/sites/index.js +351 -30
  62. package/dist/sites/index.js.map +1 -1
  63. package/dist/typed/infer.d.ts +2 -0
  64. package/dist/typed/infer.d.ts.map +1 -1
  65. package/package.json +1 -1
  66. package/src/analyzer/analyze-dto.ts +19 -9
  67. package/src/analyzer/analyze.ts +186 -54
  68. package/src/analyzer/declarations.ts +12 -0
  69. package/src/analyzer/expression-policy.ts +423 -47
  70. package/src/analyzer/operator-rules.ts +7 -6
  71. package/src/analyzer/signatures.ts +100 -36
  72. package/src/analyzer/source-options.ts +19 -0
  73. package/src/api/dto.ts +35 -9
  74. package/src/api/strict.ts +8 -3
  75. package/src/cli/dto-check.ts +56 -6
  76. package/src/cli/fhirpath-check.ts +180 -34
  77. package/src/eslint/index.ts +15 -12
  78. package/src/r4/generated/resources-data.ts +624 -28628
  79. package/src/r4/generated/types-data.ts +82 -2205
  80. package/src/r4/index.ts +11 -5
  81. package/src/r4/model-data.ts +127 -0
  82. package/src/sites/index.ts +428 -40
  83. package/src/typed/infer.ts +2 -2
@@ -1,23 +1,43 @@
1
- import { CALL_SITES, columnFunctionDeclaration, constructsEngine, declaredColumnOverloads, DTO_BASE_NAME, dtoRootsOf, expressionEntries, isCheckedCall, isCheckedTag, isForeignModule, rootOf, siteContext, TAG_NAME, } from "../analyzer/expression-policy.js";
1
+ import { CALL_SITES, callExpressionCandidates, columnFunctionDeclaration, constructsEngine, declaredColumnOverloads, DTO_BASE_NAME, dtoRootsOf, ENGINE_CLASS_NAME, isCheckedCall, isCheckedTag, isForeignModule, rootOf, TAG_NAME, } from "../analyzer/expression-policy.js";
2
2
  /**
3
3
  * Creates a finder for the calls and tags in `CALL_SITES`. DTO fields include a
4
4
  * root type when the class declares one, and each column is exposed as a local
5
5
  * function declaration. Dynamic expressions are skipped.
6
6
  */
7
- export function createSiteFinder(ts) {
7
+ export function createSiteScanner(ts, program) {
8
+ const checker = program?.getTypeChecker();
9
+ const engineSymbolsByOptions = new Map();
8
10
  /** How the shared shape extractor reads TypeScript AST nodes. */
9
11
  const tsAst = {
10
12
  string: node => (ts.isStringLiteralLike(node) ? { node, expression: node.text } : undefined),
11
13
  boolean: node => node.kind === ts.SyntaxKind.TrueKeyword ? true : node.kind === ts.SyntaxKind.FalseKeyword ? false : undefined,
12
14
  properties: node => ts.isObjectLiteralExpression(node)
13
- ? node.properties
14
- .filter(ts.isPropertyAssignment)
15
- .map(property => ({ name: propertyKeyName(property.name), value: property.initializer }))
15
+ ? node.properties.flatMap(property => {
16
+ if (ts.isPropertyAssignment(property)) {
17
+ return [{ name: propertyKeyName(property.name), value: property.initializer }];
18
+ }
19
+ if (ts.isShorthandPropertyAssignment(property)) {
20
+ return [{ name: property.name.text, value: property.name }];
21
+ }
22
+ if (ts.isSpreadAssignment(property)) {
23
+ return [{ name: undefined, value: property.expression, spread: true }];
24
+ }
25
+ // Methods and accessors create enumerable own properties too. Their
26
+ // values are dynamic to source analysis, but their names still make
27
+ // env/vars scopes complete when every key is known.
28
+ return 'name' in property ? [{ name: propertyKeyName(property.name), value: property }] : [];
29
+ })
16
30
  : undefined,
17
31
  elements: node => (ts.isArrayLiteralExpression(node) ? [...node.elements] : undefined),
18
32
  };
19
- /** Statically-known property key (`path` in `{ path: ... }` or `{ 'path': ... }`), undefined when computed. */
33
+ /**
34
+ * Statically-known property key: `path` in `{ path: ... }`, `{ 'path': ... }`,
35
+ * or `{ ['path']: ... }`; undefined for other computed keys.
36
+ */
20
37
  function propertyKeyName(name) {
38
+ if (ts.isComputedPropertyName(name)) {
39
+ return ts.isStringLiteral(name.expression) ? name.expression.text : undefined;
40
+ }
21
41
  return ts.isIdentifier(name) || ts.isStringLiteral(name) ? name.text : undefined;
22
42
  }
23
43
  /** The name of the field a `@column(...)` decorator belongs to. */
@@ -56,7 +76,7 @@ export function createSiteFinder(ts) {
56
76
  return heritage;
57
77
  }
58
78
  /** Collects imports, engine locals, rebound names, and DTO class roots before extracting sites. */
59
- function collectFile(source, options) {
79
+ function collectFile(source, options, engineSymbols) {
60
80
  const foreign = new Set();
61
81
  const trusted = new Set();
62
82
  const rebound = new Set();
@@ -97,13 +117,23 @@ export function createSiteFinder(ts) {
97
117
  const set = constructsEngine(node.initializer.expression.text, bindings) ? trusted : rebound;
98
118
  set.add(node.name.text);
99
119
  }
120
+ else if (ts.isIdentifier(node.name) && isEngineExpression(node.name, engineSymbols)) {
121
+ trusted.add(node.name.text);
122
+ foreign.delete(node.name.text);
123
+ }
100
124
  else {
101
125
  // Catch clauses reach here too: `catch (r4)` is a VariableDeclaration.
102
126
  addBindingNames(node.name, rebound);
103
127
  }
104
128
  }
105
129
  else if (ts.isParameter(node)) {
106
- addBindingNames(node.name, rebound);
130
+ if (ts.isIdentifier(node.name) && isEngineExpression(node.name, engineSymbols)) {
131
+ trusted.add(node.name.text);
132
+ foreign.delete(node.name.text);
133
+ }
134
+ else {
135
+ addBindingNames(node.name, rebound);
136
+ }
107
137
  }
108
138
  else if ((ts.isFunctionDeclaration(node) ||
109
139
  ts.isFunctionExpression(node) ||
@@ -117,6 +147,108 @@ export function createSiteFinder(ts) {
117
147
  collectLocals(source);
118
148
  return { bindings, dtoRoots: dtoRootsOf([...heritage.values()]), heritage };
119
149
  }
150
+ /** Package engine declarations reached through a real `fhirpath-ts` import. */
151
+ function collectTrustedEngineSymbols(options) {
152
+ const symbols = new Set();
153
+ if (checker === undefined || program === undefined) {
154
+ return symbols;
155
+ }
156
+ const resolvedSymbol = (initial) => {
157
+ let symbol = initial;
158
+ const seen = new Set();
159
+ while (symbol !== undefined && (symbol.flags & ts.SymbolFlags.Alias) !== 0 && !seen.has(symbol)) {
160
+ seen.add(symbol);
161
+ symbol = checker.getAliasedSymbol(symbol);
162
+ }
163
+ return symbol;
164
+ };
165
+ const resolved = (node) => resolvedSymbol(checker.getSymbolAtLocation(node));
166
+ for (const source of program.getSourceFiles()) {
167
+ for (const statement of source.statements) {
168
+ if (!ts.isImportDeclaration(statement) ||
169
+ !ts.isStringLiteral(statement.moduleSpecifier) ||
170
+ isForeignModule(statement.moduleSpecifier.text, options)) {
171
+ continue;
172
+ }
173
+ const bindings = statement.importClause?.namedBindings;
174
+ if (bindings === undefined) {
175
+ continue;
176
+ }
177
+ if (ts.isNamedImports(bindings)) {
178
+ for (const element of bindings.elements) {
179
+ if ((element.propertyName ?? element.name).text === ENGINE_CLASS_NAME) {
180
+ const symbol = resolved(element.name);
181
+ if (symbol !== undefined) {
182
+ symbols.add(symbol);
183
+ }
184
+ }
185
+ }
186
+ continue;
187
+ }
188
+ const module = resolved(bindings.name);
189
+ const symbol = module === undefined
190
+ ? undefined
191
+ : checker.getExportsOfModule(module).find(entry => entry.name === ENGINE_CLASS_NAME);
192
+ if (symbol !== undefined) {
193
+ symbols.add(resolvedSymbol(symbol) ?? symbol);
194
+ }
195
+ }
196
+ }
197
+ return symbols;
198
+ }
199
+ function engineSymbolsFor(options) {
200
+ const key = JSON.stringify({ packages: options.packages, localImports: options.localImports === true });
201
+ const cached = engineSymbolsByOptions.get(key);
202
+ if (cached !== undefined) {
203
+ return cached;
204
+ }
205
+ const symbols = collectTrustedEngineSymbols(options);
206
+ engineSymbolsByOptions.set(key, symbols);
207
+ return symbols;
208
+ }
209
+ /** Whether TypeScript resolved an expression to this package's engine class. */
210
+ function isEngineExpression(node, engineSymbols) {
211
+ if (checker === undefined || engineSymbols.size === 0 || node.getSourceFile().isDeclarationFile) {
212
+ return false;
213
+ }
214
+ const hasEngineSymbol = (type, seen) => {
215
+ if (seen.has(type)) {
216
+ return false;
217
+ }
218
+ seen.add(type);
219
+ if (type.isUnion()) {
220
+ return type.types.length > 0 && type.types.every(member => hasEngineSymbol(member, new Set(seen)));
221
+ }
222
+ if (type.isIntersection()) {
223
+ return type.types.some(member => hasEngineSymbol(member, new Set(seen)));
224
+ }
225
+ const symbol = type.aliasSymbol ?? type.getSymbol();
226
+ if (symbol !== undefined && engineSymbols.has(symbol)) {
227
+ return true;
228
+ }
229
+ const constraint = checker.getBaseConstraintOfType(type);
230
+ if (constraint !== undefined && constraint !== type && hasEngineSymbol(constraint, seen)) {
231
+ return true;
232
+ }
233
+ if ((type.flags & ts.TypeFlags.Object) === 0) {
234
+ return false;
235
+ }
236
+ const object = type;
237
+ if ((object.objectFlags & (ts.ObjectFlags.Class | ts.ObjectFlags.Interface | ts.ObjectFlags.Reference)) === 0) {
238
+ return false;
239
+ }
240
+ return checker.getBaseTypes(type).some(base => hasEngineSymbol(base, seen));
241
+ };
242
+ return hasEngineSymbol(checker.getTypeAtLocation(node), new Set());
243
+ }
244
+ /** An unresolved receiver may still be an engine; a resolved non-engine is not our call site. */
245
+ function shouldReportUnrecognized(node) {
246
+ if (checker === undefined || node.getSourceFile().isDeclarationFile) {
247
+ return true;
248
+ }
249
+ const flags = checker.getTypeAtLocation(node).flags;
250
+ return (flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown)) !== 0;
251
+ }
120
252
  /** Add every identifier a binding name declares (`x`, `{ r4 }`, `[a, ...rest]`). */
121
253
  function addBindingNames(name, into) {
122
254
  if (ts.isIdentifier(name)) {
@@ -149,10 +281,116 @@ export function createSiteFinder(ts) {
149
281
  }
150
282
  return ts.isIdentifier(current) ? current.text : undefined;
151
283
  }
152
- return function findExpressionSites(sourceText, fileName, options = {}) {
153
- const source = ts.createSourceFile(fileName, sourceText, ts.ScriptTarget.Latest, true);
154
- const { bindings, dtoRoots, heritage } = collectFile(source, options);
284
+ /** Strips source wrappers that keep an expression's runtime identity. */
285
+ function unwrapped(node) {
286
+ let current = node;
287
+ while (current !== undefined &&
288
+ (ts.isParenthesizedExpression(current) ||
289
+ ts.isAsExpression(current) ||
290
+ ts.isSatisfiesExpression(current) ||
291
+ ts.isTypeAssertionExpression(current) ||
292
+ ts.isNonNullExpression(current))) {
293
+ current = current.expression;
294
+ }
295
+ return current;
296
+ }
297
+ /** Class bindings made reachable by one immutable initializer or default export. */
298
+ function bindingTargets(node) {
299
+ const target = unwrapped(node);
300
+ if (target === undefined) {
301
+ return [];
302
+ }
303
+ if (ts.isIdentifier(target)) {
304
+ return [target.text];
305
+ }
306
+ if (!ts.isClassExpression(target)) {
307
+ return [];
308
+ }
309
+ // A class expression's own name is scoped to its body, not a reference to a
310
+ // same-named top-level class. Only its base can expose another declaration.
311
+ const { baseName } = heritageOf(target);
312
+ return baseName === undefined ? [] : [baseName];
313
+ }
314
+ /**
315
+ * The module's exported names, plus what each top-level `const` binding stands
316
+ * for: `export const Row = ProblemRow` makes the loader enumerate `Row`, so
317
+ * `ProblemRow` is reachable through it — directly, through an alias chain, or
318
+ * as the base of an exported anonymous class expression.
319
+ */
320
+ function moduleBindings(source) {
321
+ const exported = new Set();
322
+ const aliases = new Map();
323
+ const addAlias = (from, to) => {
324
+ const edges = aliases.get(from);
325
+ if (edges === undefined) {
326
+ aliases.set(from, [to]);
327
+ }
328
+ else {
329
+ edges.push(to);
330
+ }
331
+ };
332
+ const isExported = (statement) => (ts.canHaveModifiers(statement) ? (ts.getModifiers(statement) ?? []) : []).some(modifier => modifier.kind === ts.SyntaxKind.ExportKeyword);
333
+ for (const statement of source.statements) {
334
+ if (ts.isClassDeclaration(statement) && isExported(statement)) {
335
+ if (statement.name !== undefined) {
336
+ exported.add(statement.name.text);
337
+ }
338
+ else {
339
+ // `export default class extends Base {}`: the loader gets the class,
340
+ // so its base is reachable even though neither has a bound name here.
341
+ const base = heritageOf(statement).baseName;
342
+ if (base !== undefined) {
343
+ exported.add(base);
344
+ }
345
+ }
346
+ }
347
+ else if (ts.isVariableStatement(statement)) {
348
+ const immutable = (statement.declarationList.flags & ts.NodeFlags.Const) !== 0;
349
+ for (const declaration of statement.declarationList.declarations) {
350
+ if (!ts.isIdentifier(declaration.name)) {
351
+ continue;
352
+ }
353
+ const name = declaration.name.text;
354
+ if (isExported(statement)) {
355
+ exported.add(name);
356
+ }
357
+ if (immutable) {
358
+ for (const target of bindingTargets(declaration.initializer)) {
359
+ addAlias(name, target);
360
+ }
361
+ }
362
+ }
363
+ }
364
+ else if (ts.isExportDeclaration(statement) &&
365
+ statement.moduleSpecifier === undefined &&
366
+ statement.isTypeOnly === false &&
367
+ statement.exportClause !== undefined) {
368
+ if (ts.isNamedExports(statement.exportClause)) {
369
+ for (const element of statement.exportClause.elements) {
370
+ if (!element.isTypeOnly) {
371
+ exported.add((element.propertyName ?? element.name).text);
372
+ }
373
+ }
374
+ }
375
+ }
376
+ else if (ts.isExportAssignment(statement)) {
377
+ for (const target of bindingTargets(statement.expression)) {
378
+ exported.add(target);
379
+ }
380
+ }
381
+ }
382
+ return { exported, aliases };
383
+ }
384
+ return function scanExpressionSites(sourceText, fileName, options = {}) {
385
+ const programSource = program?.getSourceFile(fileName);
386
+ const source = programSource !== undefined && programSource.text === sourceText
387
+ ? programSource
388
+ : ts.createSourceFile(fileName, sourceText, ts.ScriptTarget.Latest, true);
389
+ const engineSymbols = engineSymbolsFor(options);
390
+ const { bindings, dtoRoots, heritage } = collectFile(source, options, engineSymbols);
155
391
  const sites = [];
392
+ const skipped = [];
393
+ const decoratedClasses = new Set();
156
394
  const functions = {};
157
395
  // A site points at the first character inside the quote/backtick (node start
158
396
  // + 1), so fhirpath-check can add a diagnostic's span offsets directly. The
@@ -168,38 +406,121 @@ export function createSiteFinder(ts) {
168
406
  ...context,
169
407
  });
170
408
  };
171
- const visit = (node, classRoot) => {
172
- if (ts.isTaggedTemplateExpression(node) &&
173
- nameOf(node.tag) === TAG_NAME &&
174
- isCheckedTag(receiverRoot(node.tag), bindings)) {
175
- if (ts.isNoSubstitutionTemplateLiteral(node.template)) {
409
+ const skip = (node, reason, message) => {
410
+ const { line, character } = source.getLineAndCharacterOfPosition(node.getStart(source));
411
+ skipped.push({ reason, message, line: line + 1, column: character + 1 });
412
+ };
413
+ const visit = (node, classRoot, enclosingClass) => {
414
+ if (ts.isTaggedTemplateExpression(node) && nameOf(node.tag) === TAG_NAME) {
415
+ if (!isCheckedTag(receiverRoot(node.tag), bindings)) {
416
+ if (shouldReportUnrecognized(node.tag)) {
417
+ skip(node.tag, 'unrecognized-receiver', 'FHIRPath tag not analyzed: its binding is not from fhirpath-ts');
418
+ }
419
+ }
420
+ else if (ts.isNoSubstitutionTemplateLiteral(node.template)) {
176
421
  record(node.template.text, node.template);
177
422
  }
423
+ else {
424
+ skip(node.template, 'dynamic-expression', 'FHIRPath template not analyzed: substitutions make it dynamic');
425
+ }
178
426
  }
179
427
  else if (ts.isCallExpression(node)) {
180
428
  const callee = nameOf(node.expression);
181
429
  const policy = callee === undefined ? undefined : CALL_SITES.get(callee);
182
430
  const argument = policy && node.arguments[policy.argIndex];
183
- if (callee !== undefined &&
184
- policy !== undefined &&
185
- argument !== undefined &&
186
- isCheckedCall(policy, callee, receiverRoot(node.expression), bindings)) {
187
- const declares = policy.declaresField;
188
- const field = declares === undefined ? undefined : decoratedFieldName(node);
189
- if (declares !== undefined && field !== undefined) {
190
- functions[field] = declaredColumnOverloads(functions[field], columnFunctionDeclaration(declares, node.arguments[1], tsAst, classRoot));
431
+ if (callee !== undefined && policy !== undefined && argument !== undefined) {
432
+ const typedEngineReceiver = ts.isPropertyAccessExpression(node.expression) &&
433
+ isEngineExpression(node.expression.expression, engineSymbols);
434
+ const checked = isCheckedCall(policy, callee, receiverRoot(node.expression), bindings, {
435
+ ...(typedEngineReceiver && { engine: true }),
436
+ });
437
+ if (!checked) {
438
+ const receiver = receiverRoot(node.expression);
439
+ const receiverExpression = ts.isPropertyAccessExpression(node.expression)
440
+ ? node.expression.expression
441
+ : node.expression;
442
+ if (shouldReportUnrecognized(receiverExpression)) {
443
+ skip(node.expression, 'unrecognized-receiver', `${callee}(...) expression not analyzed: ${receiver === undefined
444
+ ? `binding '${callee}' is not recognized as fhirpath-ts`
445
+ : `receiver '${receiver}' is not recognized as a FhirPathEngine`}`);
446
+ }
191
447
  }
192
- const context = siteContext(policy, index => node.arguments[index], classRoot, tsAst);
193
- for (const entry of expressionEntries(argument, policy.shape, tsAst)) {
194
- record(entry.expression, entry.node, context);
448
+ else {
449
+ const declares = policy.declaresField;
450
+ const field = declares === undefined ? undefined : decoratedFieldName(node);
451
+ if (declares !== undefined && field !== undefined) {
452
+ if (enclosingClass !== undefined) {
453
+ decoratedClasses.add(enclosingClass);
454
+ }
455
+ functions[field] = declaredColumnOverloads(functions[field], columnFunctionDeclaration(declares, node.arguments[1], tsAst, classRoot));
456
+ }
457
+ for (const candidate of callExpressionCandidates(policy, index => node.arguments[index], classRoot, tsAst)) {
458
+ if (candidate.uncheckable === 'dynamic-vars') {
459
+ skip(candidate.node, 'dynamic-expression', `${callee}(...) var expressions not analyzed: their final names, values, or order are dynamic`);
460
+ }
461
+ else if (candidate.expression === undefined) {
462
+ skip(candidate.node, 'dynamic-expression', candidate.source === 'option-var'
463
+ ? `${callee}(...) var expression not analyzed: it is not a string literal`
464
+ : `${callee}(...) expression not analyzed: it is not a string literal`);
465
+ }
466
+ else {
467
+ record(candidate.expression, candidate.node, candidate.context);
468
+ }
469
+ }
195
470
  }
196
471
  }
197
472
  }
198
473
  const nested = ts.isClassLike(node) ? rootOf(heritage.get(node), dtoRoots) : classRoot;
199
- ts.forEachChild(node, child => visit(child, nested));
474
+ const nestedClass = ts.isClassLike(node) ? node : enclosingClass;
475
+ ts.forEachChild(node, child => visit(child, nested, nestedClass));
476
+ };
477
+ visit(source, undefined, undefined);
478
+ const { exported, aliases } = moduleBindings(source);
479
+ const classByName = new Map([...heritage.entries()].flatMap(([node, value]) => ts.isClassLike(node) && value.name !== undefined ? [[value.name, value]] : []));
480
+ // From every exported binding, follow alias and extends edges: what the
481
+ // loader enumerates under any name makes every class behind it analyzable.
482
+ const reachesExport = (name) => {
483
+ const seen = new Set();
484
+ const frontier = [...exported];
485
+ while (frontier.length > 0) {
486
+ const current = frontier.pop();
487
+ if (current === name) {
488
+ return true;
489
+ }
490
+ if (seen.has(current)) {
491
+ continue;
492
+ }
493
+ seen.add(current);
494
+ const base = classByName.get(current)?.baseName;
495
+ if (base !== undefined) {
496
+ frontier.push(base);
497
+ }
498
+ frontier.push(...(aliases.get(current) ?? []));
499
+ }
500
+ return false;
501
+ };
502
+ const dtoDeclarations = [...decoratedClasses].flatMap(node => {
503
+ const nameNode = node.name;
504
+ // Runtime module discovery can only miss top-level module-local classes.
505
+ // A class inside a factory is reached through whatever class the factory
506
+ // returns, rather than as a module export with its source name.
507
+ if (nameNode === undefined || node.parent !== source) {
508
+ return [];
509
+ }
510
+ const name = nameNode.text;
511
+ const { line, character } = source.getLineAndCharacterOfPosition(nameNode.getStart(source));
512
+ return [{ name, line: line + 1, column: character + 1, loadable: reachesExport(name) }];
513
+ });
514
+ return {
515
+ sites: Object.keys(functions).length === 0 ? sites : sites.map(site => ({ ...site, functions })),
516
+ skipped,
517
+ dtoDeclarations,
200
518
  };
201
- visit(source, undefined);
202
- return Object.keys(functions).length === 0 ? sites : sites.map(site => ({ ...site, functions }));
203
519
  };
204
520
  }
521
+ /** Creates the compatibility finder that returns only expressions successfully extracted. */
522
+ export function createSiteFinder(ts, program) {
523
+ const scan = createSiteScanner(ts, program);
524
+ return (sourceText, fileName, options) => scan(sourceText, fileName, options).sites;
525
+ }
205
526
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sites/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sites/index.ts"],"names":[],"mappings":"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"}
@@ -19,11 +19,13 @@ export type FhirpathFunctionDeclaration = {
19
19
  readonly signature?: {
20
20
  readonly input?: {
21
21
  readonly types?: readonly string[];
22
+ readonly ordered?: boolean;
22
23
  };
23
24
  readonly args?: readonly string[];
24
25
  readonly result?: {
25
26
  readonly types?: readonly string[];
26
27
  readonly single?: boolean;
28
+ readonly ordered?: boolean;
27
29
  };
28
30
  };
29
31
  readonly expression?: string | {
@@ -1 +1 @@
1
- {"version":3,"file":"infer.d.ts","sourceRoot":"","sources":["../../src/typed/infer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"infer.d.ts","sourceRoot":"","sources":["../../src/typed/infer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fhirpath-ts",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "TypeScript-native FHIRPath engine with compile-time type inference and a spec §11 static analyzer.",
5
5
  "keywords": [
6
6
  "fhirpath",
@@ -11,7 +11,7 @@ import {
11
11
  type DeclaredFunction,
12
12
  type DeclaredVariable,
13
13
  } from './analyze.ts'
14
- import { analyzerEnvironmentVariables, analyzerVariables } from './declarations.ts'
14
+ import { analyzerEnvironmentVariables, analyzerVariables, PROJECT_ROW_VARIABLES } from './declarations.ts'
15
15
 
16
16
  /** One `analyzeDto` finding: an analyzer diagnostic plus the class member it came from. */
17
17
  export interface DtoDiagnostic extends AnalyzerDiagnostic {
@@ -96,15 +96,17 @@ export function analyzeDto(dto: DtoClass, options?: AnalyzeDtoOptions): DtoDiagn
96
96
  const definition = dtoDefinition(dto)
97
97
  const context = contextOf(options)
98
98
  const inputType = context.inputType ?? definition.fhirType
99
- const declared: Record<string, DeclaredVariable> = {
100
- rowIndex: { types: ['System.Integer'], single: true },
101
- rowTotal: { types: ['System.Integer'], single: true },
102
- }
103
- for (const name of [...Object.keys(definition.env ?? {}), ...(definition.callerEnv ?? [])]) {
99
+ const declared: Record<string, DeclaredVariable> = { ...PROJECT_ROW_VARIABLES }
100
+ for (const name of [...Object.keys(definition.env ?? {}), ...definition.callerEnvNames]) {
104
101
  declared[bareEnvironmentName(name)] = {}
105
102
  }
103
+ Object.assign(declared, analyzerVariables(undefined, definition.callerEnvTypes))
106
104
  const diagnostics: DtoDiagnostic[] = []
107
- const analyze = (member: string, expression: string, column?: ColumnSpec): void => {
105
+ const analyze = (
106
+ member: string,
107
+ expression: string,
108
+ column?: ColumnSpec
109
+ ): { types: string[] | undefined; single: boolean | undefined; ordered: boolean | undefined } => {
108
110
  const perExpression: AnalyzeOptions = {
109
111
  ...context,
110
112
  ...(inputType !== undefined && { inputType }),
@@ -126,12 +128,20 @@ export function analyzeDto(dto: DtoClass, options?: AnalyzeDtoOptions): DtoDiagn
126
128
  span: { start: 0, end: expression.length, line: 1, column: 1 },
127
129
  })
128
130
  }
131
+ return result
129
132
  }
130
133
  for (const [name, value] of Object.entries(definition.vars ?? {})) {
131
134
  const source = typeof value === 'string' ? value : sourceOf(value)
132
135
  if (source !== undefined) {
133
- // A var declares no type, so there is nothing to cross-check against.
134
- analyze(`vars.${bareEnvironmentName(name)}`, source)
136
+ // A var has no declared result to cross-check, but its inferred result is
137
+ // the input state for later vars and columns.
138
+ const result = analyze(`vars.${bareEnvironmentName(name)}`, source)
139
+ declared[bareEnvironmentName(name)] = {
140
+ ...(result.types !== undefined && { types: result.types }),
141
+ ...(result.single !== undefined && { single: result.single }),
142
+ ...(result.ordered !== undefined && { ordered: result.ordered }),
143
+ }
144
+ continue
135
145
  }
136
146
  declared[bareEnvironmentName(name)] = {}
137
147
  }