fhirpath-ts 0.0.0-bootstrap.0 → 0.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 (120) hide show
  1. package/README.md +50 -18
  2. package/dist/analyzer/analyze-dto.d.ts +4 -0
  3. package/dist/analyzer/analyze-dto.d.ts.map +1 -1
  4. package/dist/analyzer/analyze-dto.js +12 -14
  5. package/dist/analyzer/analyze-dto.js.map +1 -1
  6. package/dist/analyzer/analyze.d.ts +22 -6
  7. package/dist/analyzer/analyze.d.ts.map +1 -1
  8. package/dist/analyzer/analyze.js +242 -98
  9. package/dist/analyzer/analyze.js.map +1 -1
  10. package/dist/analyzer/declarations.d.ts +26 -0
  11. package/dist/analyzer/declarations.d.ts.map +1 -0
  12. package/dist/analyzer/declarations.js +68 -0
  13. package/dist/analyzer/declarations.js.map +1 -0
  14. package/dist/analyzer/operator-rules.d.ts +127 -0
  15. package/dist/analyzer/operator-rules.d.ts.map +1 -0
  16. package/dist/analyzer/operator-rules.js +70 -0
  17. package/dist/analyzer/operator-rules.js.map +1 -0
  18. package/dist/analyzer/signatures.d.ts +1097 -10
  19. package/dist/analyzer/signatures.d.ts.map +1 -1
  20. package/dist/analyzer/signatures.js +70 -29
  21. package/dist/analyzer/signatures.js.map +1 -1
  22. package/dist/api/compile.d.ts +32 -8
  23. package/dist/api/compile.d.ts.map +1 -1
  24. package/dist/api/compile.js +2 -0
  25. package/dist/api/compile.js.map +1 -1
  26. package/dist/api/engine.d.ts +42 -16
  27. package/dist/api/engine.d.ts.map +1 -1
  28. package/dist/api/engine.js +2 -1
  29. package/dist/api/engine.js.map +1 -1
  30. package/dist/api/project.d.ts +8 -8
  31. package/dist/api/project.d.ts.map +1 -1
  32. package/dist/api/project.js +31 -19
  33. package/dist/api/project.js.map +1 -1
  34. package/dist/api/strict.d.ts +6 -0
  35. package/dist/api/strict.d.ts.map +1 -0
  36. package/dist/api/strict.js +71 -0
  37. package/dist/api/strict.js.map +1 -0
  38. package/dist/api/tagged.d.ts +4 -4
  39. package/dist/api/tagged.d.ts.map +1 -1
  40. package/dist/api/tagged.js.map +1 -1
  41. package/dist/cli/dto-check.js +7 -3
  42. package/dist/cli/dto-check.js.map +1 -1
  43. package/dist/engine/context.d.ts +3 -1
  44. package/dist/engine/context.d.ts.map +1 -1
  45. package/dist/engine/context.js +5 -1
  46. package/dist/engine/context.js.map +1 -1
  47. package/dist/engine/navigation.d.ts.map +1 -1
  48. package/dist/engine/navigation.js +7 -48
  49. package/dist/engine/navigation.js.map +1 -1
  50. package/dist/engine/type-matching.d.ts.map +1 -1
  51. package/dist/engine/type-matching.js +6 -16
  52. package/dist/engine/type-matching.js.map +1 -1
  53. package/dist/index.d.ts +4 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js.map +1 -1
  56. package/dist/parser/parser.d.ts.map +1 -1
  57. package/dist/parser/parser.js +102 -73
  58. package/dist/parser/parser.js.map +1 -1
  59. package/dist/parser/precedence.d.ts +368 -4
  60. package/dist/parser/precedence.d.ts.map +1 -1
  61. package/dist/parser/precedence.js +146 -32
  62. package/dist/parser/precedence.js.map +1 -1
  63. package/dist/r4/generated/type-maps.d.ts +1367 -0
  64. package/dist/r4/generated/type-maps.d.ts.map +1 -1
  65. package/dist/r4/index.d.ts +3 -1
  66. package/dist/r4/index.d.ts.map +1 -1
  67. package/dist/typed/context-maps.d.ts +23 -0
  68. package/dist/typed/context-maps.d.ts.map +1 -0
  69. package/dist/typed/context-maps.js +2 -0
  70. package/dist/typed/context-maps.js.map +1 -0
  71. package/dist/typed/infer.d.ts +99 -229
  72. package/dist/typed/infer.d.ts.map +1 -1
  73. package/dist/typed/infer.js +1 -84
  74. package/dist/typed/infer.js.map +1 -1
  75. package/dist/typed/inference-limits.d.ts +7 -0
  76. package/dist/typed/inference-limits.d.ts.map +1 -0
  77. package/dist/typed/inference-limits.js +6 -0
  78. package/dist/typed/inference-limits.js.map +1 -0
  79. package/dist/typed/metadata-compact.d.ts +189 -0
  80. package/dist/typed/metadata-compact.d.ts.map +1 -0
  81. package/dist/typed/metadata-compact.js +3 -0
  82. package/dist/typed/metadata-compact.js.map +1 -0
  83. package/dist/typed/parser.d.ts +515 -0
  84. package/dist/typed/parser.d.ts.map +1 -0
  85. package/dist/typed/parser.js +2 -0
  86. package/dist/typed/parser.js.map +1 -0
  87. package/dist/values/type-compat.d.ts +8 -0
  88. package/dist/values/type-compat.d.ts.map +1 -1
  89. package/dist/values/type-compat.js +44 -1
  90. package/dist/values/type-compat.js.map +1 -1
  91. package/package.json +20 -1
  92. package/src/analyzer/analyze-dto.ts +21 -17
  93. package/src/analyzer/analyze.ts +335 -109
  94. package/src/analyzer/declarations.ts +120 -0
  95. package/src/analyzer/operator-rules.ts +88 -0
  96. package/src/analyzer/signatures.ts +99 -41
  97. package/src/api/compile.ts +66 -11
  98. package/src/api/engine.ts +97 -33
  99. package/src/api/project.ts +54 -30
  100. package/src/api/strict.ts +112 -0
  101. package/src/api/tagged.ts +5 -5
  102. package/src/cli/dto-check.ts +7 -3
  103. package/src/engine/context.ts +7 -2
  104. package/src/engine/navigation.ts +7 -52
  105. package/src/engine/type-matching.ts +11 -17
  106. package/src/index.ts +25 -2
  107. package/src/parser/parser.ts +106 -74
  108. package/src/parser/precedence.ts +250 -33
  109. package/src/r4/generated/type-maps.ts +1557 -0
  110. package/src/typed/context-maps.ts +41 -0
  111. package/src/typed/infer.ts +157 -425
  112. package/src/typed/inference-limits.ts +9 -0
  113. package/src/typed/metadata-compact.ts +307 -0
  114. package/src/typed/parser.ts +2277 -0
  115. package/src/values/type-compat.ts +48 -1
  116. package/dist/typed/perf-fixture.types.d.ts +0 -136
  117. package/dist/typed/perf-fixture.types.d.ts.map +0 -1
  118. package/dist/typed/perf-fixture.types.js +0 -2
  119. package/dist/typed/perf-fixture.types.js.map +0 -1
  120. package/src/typed/perf-fixture.types.ts +0 -143
@@ -1,19 +1,7 @@
1
1
  import { FhirPathTypeError } from "../errors.js";
2
- import { resolveByInput, unsatisfiedInput } from "../values/type-compat.js";
2
+ import { resolveByInput, SYSTEM_TYPE_LOCAL_NAMES, unsatisfiedInput, } from "../values/type-compat.js";
3
3
  import { OBJECT_TYPE, typeLocalName } from "../values/typed-value.js";
4
- const SYSTEM_LOCAL_NAMES = new Set([
5
- 'Any',
6
- 'Boolean',
7
- 'String',
8
- 'Integer',
9
- 'Long',
10
- 'Decimal',
11
- 'Date',
12
- 'DateTime',
13
- 'Time',
14
- 'Quantity',
15
- ]);
16
- const SYSTEM_LOCAL_NAMES_LOWER = new Set([...SYSTEM_LOCAL_NAMES].map(name => name.toLowerCase()));
4
+ const SYSTEM_LOCAL_NAMES_LOWER = new Set([...SYSTEM_TYPE_LOCAL_NAMES].map(name => name.toLowerCase()));
17
5
  /** True when an unqualified name may mean a System primitive and requires exact `as`/`ofType` matching. */
18
6
  function isSystemAmbiguousName(name) {
19
7
  return SYSTEM_LOCAL_NAMES_LOWER.has(name.toLowerCase());
@@ -100,13 +88,15 @@ function* focusTypes(input) {
100
88
  /** True when a single-part type name resolves in the model or the System namespace. */
101
89
  export function isKnownTypeName(context, parts) {
102
90
  if (parts.length === 2) {
103
- return parts[0] === 'System' ? SYSTEM_LOCAL_NAMES.has(parts[1]) : parts[0] === context.model?.namespace;
91
+ return parts[0] === 'System'
92
+ ? SYSTEM_TYPE_LOCAL_NAMES.has(parts[1])
93
+ : parts[0] === context.model?.namespace;
104
94
  }
105
95
  const name = parts[0];
106
96
  if (context.model?.resolveType(name) !== undefined) {
107
97
  return true;
108
98
  }
109
- return SYSTEM_LOCAL_NAMES.has(name);
99
+ return SYSTEM_TYPE_LOCAL_NAMES.has(name);
110
100
  }
111
101
  function matchesSystemType(item, name) {
112
102
  if (name === 'Any') {
@@ -1 +1 @@
1
- {"version":3,"file":"type-matching.js","sourceRoot":"","sources":["../../src/engine/type-matching.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-matching.js","sourceRoot":"","sources":["../../src/engine/type-matching.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  export type { CustomFunctionSignature, ValueArgSpec } from './analyzer/signatures.ts';
2
2
  export type { BundleLike } from './api/bundle.ts';
3
- export type { AnyExpression, CustomFunction, EvaluateOptions, OverloadedCustomFunction, SingleCustomFunction, } from './api/compile.ts';
3
+ export type { AnyExpression, CompiledExpressionResult, CustomFunction, Declaring, EvaluateOptions, InferredExpressionResult, OverloadedCustomFunction, SingleCustomFunction, } from './api/compile.ts';
4
4
  export { compile, CompiledExpression, DEFAULT_PARSE_CACHE_SIZE } from './api/compile.ts';
5
5
  export type { ConstraintCheckResult, ConstraintIssue, FhirConstraint, OperationOutcome } from './api/constraints.ts';
6
6
  export type { ColumnTypeMismatch, DtoBase, DtoClass, DtoEnv, DtoInstance, DtoOptions, DtoRow } from './api/dto.ts';
7
7
  export { column, criteria, defineDto } from './api/dto.ts';
8
- export type { EngineInput, EngineOptions, TypedEvaluateOptions } from './api/engine.ts';
8
+ export type { EngineExpression, EngineInput, EngineInputRoot, EngineOptions, EngineProjection, EngineProjectionContext, EngineResult, TypedEvaluateOptions, } from './api/engine.ts';
9
9
  export { BoundExpression, FhirPathEngine, recordEngines } from './api/engine.ts';
10
10
  export { evaluate } from './api/evaluate.ts';
11
11
  export type { ColumnOptions, ColumnResult, Projection, ProjectionColumn, ProjectionColumns } from './api/project.ts';
@@ -17,7 +17,8 @@ export type { ElementInfo, ModelProvider } from './model/provider.ts';
17
17
  export type { AstNode } from './parser/ast.ts';
18
18
  export { parse } from './parser/parser.ts';
19
19
  export { printExpression } from './parser/printer.ts';
20
- export type { FhirpathInput, FhirpathResult, FhirpathResultIn, FhirTypeName } from './typed/infer.ts';
20
+ export type { EmptyContextMap } from './typed/context-maps.ts';
21
+ export type { EmptyFhirpathTypeContext, FhirpathFunctionDeclaration, FhirpathInput, FhirpathResult, FhirpathResultIn, FhirpathTypeContext, FhirpathTypeDeclaration, FhirpathTypeDeclarations, FhirTypeName, } from './typed/infer.ts';
21
22
  export { Temporal } from './values/datetime.ts';
22
23
  export { Decimal } from './values/decimal.ts';
23
24
  export type { ValueKind } from './values/type-compat.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACrF,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EACV,aAAa,EACb,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AACxF,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACpH,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAClH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC1D,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACvF,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC1E,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACzG,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACrE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACrF,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EACV,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,SAAS,EACT,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AACxF,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACpH,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAClH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC1D,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC1E,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACzG,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACrE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,YAAY,EACV,wBAAwB,EACxB,2BAA2B,EAC3B,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,YAAY,GACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAGxF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE1D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG1C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGzG,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAGxF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAW1D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG1C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGzG,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAarD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAgD,MAAM,UAAU,CAAA;AAuTrF,2GAA2G;AAC3G,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7C"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAgD,MAAM,UAAU,CAAA;AAuVrF,2GAA2G;AAC3G,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7C"}
@@ -4,10 +4,9 @@
4
4
  import { FhirPathSyntaxError } from "../errors.js";
5
5
  import { tokenize } from "../lexer/lexer.js";
6
6
  import { CALENDAR_DURATION_UNITS } from "../lexer/tokens.js";
7
- import { BindingPower, INFIX_BINDING_POWER } from "./precedence.js";
7
+ import { INFIX_PARSELETS, PREFIX_PARSELETS } from "./precedence.js";
8
8
  /** Keywords the grammar also accepts as element names, e.g. `'abc'.contains('b')`. */
9
9
  const KEYWORDS_USABLE_AS_IDENTIFIERS = new Set(['as', 'contains', 'in', 'is']);
10
- const TYPE_OPERATORS = new Set(['is', 'as']);
11
10
  /**
12
11
  * Nesting far beyond anything a real expression uses. Without a cap, adversarial
13
12
  * input like ((((…)))) overflows the call stack as a native RangeError instead of
@@ -39,13 +38,12 @@ class Parser {
39
38
  let left = this.parsePrefix();
40
39
  for (;;) {
41
40
  const token = this.peek();
42
- const key = token.kind === 'operator' || token.kind === 'punct' || token.kind === 'keyword' ? token.text : '';
43
- const bindingPower = INFIX_BINDING_POWER[key];
44
- if (bindingPower === undefined || bindingPower <= minBindingPower) {
41
+ const parselet = this.infixParselet(token);
42
+ if (parselet === undefined || parselet.bindingPower <= minBindingPower) {
45
43
  return left;
46
44
  }
47
45
  this.advance();
48
- left = this.parseInfix(left, token, bindingPower);
46
+ left = this.parseInfix(left, token, parselet);
49
47
  }
50
48
  }
51
49
  finally {
@@ -54,9 +52,28 @@ class Parser {
54
52
  }
55
53
  parsePrefix() {
56
54
  const token = this.peek();
55
+ const parselet = this.prefixParselet(token);
56
+ if (parselet === undefined) {
57
+ throw this.error(token.kind === 'end' ? 'Unexpected end of expression' : `Unexpected '${token.text}'`, token);
58
+ }
59
+ switch (parselet.reducer) {
60
+ case 'identifier':
61
+ this.advance();
62
+ return parselet.tokenKind === 'variable'
63
+ ? { kind: 'special', name: token.value, span: token.span }
64
+ : { kind: 'identifier', name: token.value, span: token.span };
65
+ case 'literal':
66
+ return this.parseLiteral(token);
67
+ case 'unary':
68
+ return this.parseUnary(token, parselet);
69
+ case 'group':
70
+ case 'empty':
71
+ case 'external':
72
+ return this.parsePunctPrefix(token, parselet);
73
+ }
74
+ }
75
+ parseLiteral(token) {
57
76
  switch (token.kind) {
58
- case 'end':
59
- throw this.error('Unexpected end of expression', token);
60
77
  case 'number':
61
78
  return this.parseNumberOrQuantity();
62
79
  case 'string':
@@ -71,42 +88,17 @@ class Parser {
71
88
  case 'time':
72
89
  this.advance();
73
90
  return { kind: 'time', text: token.value, span: token.span };
74
- case 'specialVariable':
75
- this.advance();
76
- return { kind: 'special', name: token.value, span: token.span };
77
- case 'identifier':
78
- case 'delimitedIdentifier':
79
- this.advance();
80
- return { kind: 'identifier', name: token.value, span: token.span };
81
91
  case 'keyword':
82
- return this.parseKeywordPrefix(token);
83
- case 'operator':
84
- return this.parseUnary(token);
85
- case 'punct':
86
- return this.parsePunctPrefix(token);
87
- /* v8 ignore start -- exhaustive fallback, every token kind has a case above */
92
+ this.advance();
93
+ return { kind: 'boolean', value: token.text === 'true', span: token.span };
94
+ /* v8 ignore next -- prefixTokenKind admits only literal token kinds here */
88
95
  default:
89
- throw this.error(`Unexpected '${token.text}'`, token);
90
- /* v8 ignore stop */
96
+ throw new Error(`Invalid literal parselet for '${token.text}'`);
91
97
  }
92
98
  }
93
- parseKeywordPrefix(token) {
94
- if (token.text === 'true' || token.text === 'false') {
95
- this.advance();
96
- return { kind: 'boolean', value: token.text === 'true', span: token.span };
97
- }
98
- if (KEYWORDS_USABLE_AS_IDENTIFIERS.has(token.text)) {
99
- this.advance();
100
- return { kind: 'identifier', name: token.value, span: token.span };
101
- }
102
- throw this.error(`Unexpected '${token.text}'`, token);
103
- }
104
- parseUnary(token) {
105
- if (token.text !== '+' && token.text !== '-') {
106
- throw this.error(`Unexpected '${token.text}'`, token);
107
- }
99
+ parseUnary(token, parselet) {
108
100
  this.advance();
109
- const operand = this.parseExpression(BindingPower.Unary);
101
+ const operand = this.parseExpression(parselet.bindingPower);
110
102
  return {
111
103
  kind: 'unary',
112
104
  operator: token.text,
@@ -114,21 +106,21 @@ class Parser {
114
106
  span: this.spanBetween(token.span, operand.span),
115
107
  };
116
108
  }
117
- parsePunctPrefix(token) {
118
- switch (token.text) {
119
- case '(': {
109
+ parsePunctPrefix(token, parselet) {
110
+ switch (parselet.reducer) {
111
+ case 'group': {
120
112
  this.advance();
121
113
  const inner = this.parseExpression(0);
122
114
  this.expect(')');
123
115
  this.parenthesized.add(inner);
124
116
  return inner;
125
117
  }
126
- case '{': {
118
+ case 'empty': {
127
119
  this.advance();
128
120
  const close = this.expect('}');
129
121
  return { kind: 'null', span: this.spanBetween(token.span, close.span) };
130
122
  }
131
- case '%': {
123
+ case 'external': {
132
124
  this.advance();
133
125
  const name = this.peek();
134
126
  if (name.kind !== 'identifier' && name.kind !== 'delimitedIdentifier' && name.kind !== 'string') {
@@ -137,8 +129,6 @@ class Parser {
137
129
  this.advance();
138
130
  return { kind: 'external', name: name.value, span: this.spanBetween(token.span, name.span) };
139
131
  }
140
- default:
141
- throw this.error(`Unexpected '${token.text}'`, token);
142
132
  }
143
133
  }
144
134
  parseNumberOrQuantity() {
@@ -171,40 +161,52 @@ class Parser {
171
161
  }
172
162
  return { kind: 'number', text: token.value, isDecimal: token.value.includes('.'), span: token.span };
173
163
  }
174
- parseInfix(left, token, bindingPower) {
175
- switch (token.text) {
176
- case '.':
164
+ parseInfix(left, token, parselet) {
165
+ switch (parselet.reducer) {
166
+ case 'dot':
177
167
  return this.parseDot(left);
178
- case '[': {
168
+ case 'indexer': {
179
169
  const index = this.parseExpression(0);
180
170
  const close = this.expect(']');
181
171
  return { kind: 'indexer', target: left, index, span: this.spanBetween(left.span, close.span) };
182
172
  }
183
- case '(':
173
+ case 'call':
184
174
  return this.parseCall(left);
185
- default:
186
- break;
187
- }
188
- if (TYPE_OPERATORS.has(token.text)) {
189
- const type = this.parseTypeSpecifier();
190
- return {
191
- kind: 'typeOp',
192
- operator: token.text,
193
- operand: left,
194
- type,
195
- span: this.spanBetween(left.span, type.span),
196
- };
175
+ case 'type': {
176
+ const type = this.parseTypeSpecifier();
177
+ return {
178
+ kind: 'typeOp',
179
+ operator: token.text,
180
+ operand: left,
181
+ type,
182
+ span: this.spanBetween(left.span, type.span),
183
+ };
184
+ }
185
+ case 'binary': {
186
+ const right = this.parseExpression(parselet.bindingPower);
187
+ return {
188
+ kind: 'binary',
189
+ operator: token.text,
190
+ left,
191
+ right,
192
+ span: this.spanBetween(left.span, right.span),
193
+ };
194
+ }
197
195
  }
198
- // All FHIRPath binary operators are left-associative, so the right side
199
- // parses at this operator's own binding power.
200
- const right = this.parseExpression(bindingPower);
201
- return {
202
- kind: 'binary',
203
- operator: token.text,
204
- left,
205
- right,
206
- span: this.spanBetween(left.span, right.span),
207
- };
196
+ }
197
+ infixParselet(token) {
198
+ if (token.kind !== 'operator' && token.kind !== 'keyword' && token.kind !== 'punct')
199
+ return undefined;
200
+ const parselet = INFIX_PARSELETS[token.text];
201
+ return parselet?.tokenKind === token.kind ? parselet : undefined;
202
+ }
203
+ prefixParselet(token) {
204
+ const tokenKind = prefixTokenKind(token);
205
+ if (tokenKind === undefined)
206
+ return undefined;
207
+ const key = tokenKind === 'operator' || tokenKind === 'punct' ? token.text : tokenKind;
208
+ const parselet = PREFIX_PARSELETS[key];
209
+ return parselet?.tokenKind === tokenKind ? parselet : undefined;
208
210
  }
209
211
  /**
210
212
  * After `.`, only an element name, function call, or special variable may follow.
@@ -292,6 +294,33 @@ class Parser {
292
294
  return { start: start.start, end: end.end, line: start.line, column: start.column };
293
295
  }
294
296
  }
297
+ function prefixTokenKind(token) {
298
+ switch (token.kind) {
299
+ case 'identifier':
300
+ case 'delimitedIdentifier':
301
+ return 'identifier';
302
+ case 'number':
303
+ case 'string':
304
+ case 'date':
305
+ case 'dateTime':
306
+ case 'time':
307
+ return 'literal';
308
+ case 'specialVariable':
309
+ return 'variable';
310
+ case 'operator':
311
+ return 'operator';
312
+ case 'punct':
313
+ return 'punct';
314
+ case 'keyword':
315
+ return token.text === 'true' || token.text === 'false'
316
+ ? 'literal'
317
+ : KEYWORDS_USABLE_AS_IDENTIFIERS.has(token.text)
318
+ ? 'identifier'
319
+ : undefined;
320
+ case 'end':
321
+ return undefined;
322
+ }
323
+ }
295
324
  /** Parse a FHIRPath expression into its AST. Throws `FhirPathSyntaxError` with a position on bad input. */
296
325
  export function parse(source) {
297
326
  return new Parser(source).parse();
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+CAA+C;AAC/C,oFAAoF;AACpF,OAAO,EAAE,mBAAmB,EAAmB,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,uBAAuB,EAAc,MAAM,oBAAoB,CAAA;AAExE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,sFAAsF;AACtF,MAAM,8BAA8B,GAAwB,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAEnG,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAEjE;;;;GAIG;AACH,MAAM,SAAS,GAAG,GAAG,CAAA;AAErB,MAAM,MAAM;IACO,MAAM,CAAS;IACxB,GAAG,GAAG,CAAC,CAAA;IACP,KAAK,GAAG,CAAC,CAAA;IACjB,4FAA4F;IAC3E,aAAa,GAAG,IAAI,OAAO,EAAW,CAAA;IAEvD,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAED,KAAK;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC5B,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,IAAI,oBAAoB,EAAE,QAAQ,CAAC,CAAA;QAC9E,CAAC;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,eAAe,CAAC,eAAuB;QAC7C,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,8BAA8B,SAAS,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACjF,CAAC;QACD,IAAI,CAAC;YACH,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;YAC7B,SAAS,CAAC;gBACR,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;gBACzB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC7G,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;gBAC7C,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,eAAe,EAAE,CAAC;oBAClE,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;YACnD,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,KAAK,EAAE,CAAA;QACd,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACzB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,KAAK;gBACR,MAAM,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAA;YACzD,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAA;YACrC,KAAK,QAAQ;gBACX,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;YACjE,KAAK,MAAM;gBACT,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;YAC9D,KAAK,UAAU;gBACb,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;YAClE,KAAK,MAAM;gBACT,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;YAC9D,KAAK,iBAAiB;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,KAAmC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;YAC/F,KAAK,YAAY,CAAC;YAClB,KAAK,qBAAqB;gBACxB,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;YACpE,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACvC,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAC/B,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;YACrC,+EAA+E;YAC/E;gBACE,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAA;YACvD,oBAAoB;QACtB,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,KAAY;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACpD,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;QAC5E,CAAC;QACD,IAAI,8BAA8B,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;QACpE,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAA;IACvD,CAAC;IAEO,UAAU,CAAC,KAAY;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAA;QACvD,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QACxD,OAAO;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,KAAK,CAAC,IAAqB;YACrC,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;SACjD,CAAA;IACH,CAAC;IAEO,gBAAgB,CAAC,KAAY;QACnC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;gBACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAChB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBAC7B,OAAO,KAAK,CAAA;YACd,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;YACzE,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;gBACxB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAChG,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAA;gBACnD,CAAC;gBACD,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;YAC9F,CAAC;YACD;gBACE,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACzB,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,uCAAuC;YACvC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;QAC7G,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;aAC9C,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1E,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;aAC9C,CAAA;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;IACtG,CAAC;IAEO,UAAU,CAAC,IAAa,EAAE,KAAY,EAAE,YAAoB;QAClE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC5B,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;gBACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC9B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;YAChG,CAAC;YACD,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAC7B;gBACE,MAAK;QACT,CAAC;QACD,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACtC,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK,CAAC,IAAmB;gBACnC,OAAO,EAAE,IAAI;gBACb,IAAI;gBACJ,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;aAC7C,CAAA;QACH,CAAC;QACD,wEAAwE;QACxE,+CAA+C;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QAChD,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK,CAAC,IAAsB;YACtC,IAAI;YACJ,KAAK;YACL,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;SAC9C,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,QAAQ,CAAC,IAAa;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACzB,IAAI,KAAc,CAAA;QAClB,IACE,KAAK,CAAC,IAAI,KAAK,YAAY;YAC3B,KAAK,CAAC,IAAI,KAAK,qBAAqB;YACpC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,EAC7E,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,KAAK,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;YACnE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC7D,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,KAAK,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,KAAmC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;QAChG,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,KAAK,CAAC,wDAAwD,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAA;QAChG,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;IACpF,CAAC;IAEO,SAAS,CAAC,MAAe;QAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACzD,CAAC;QACD,MAAM,IAAI,GAAc,EAAE,CAAA;QAC1B,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;YAClC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBAChE,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;IACnG,CAAC;IAEO,kBAAkB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACnC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC3B,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAA;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAChE,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;YAClC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACtB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAA;QACjB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAA;IAC3D,CAAC;IAEO,cAAc;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACxE,MAAM,IAAI,CAAC,KAAK,CAAC,8BAA8B,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAA;QACtE,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,IAAI;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAU,CAAA;IACvC,CAAC;IAEO,OAAO;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAU,CAAA;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACf,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,MAAM,CAAC,IAAY;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,WAAW,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAA;QACjH,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,KAAK,CAAC,OAAe,EAAE,KAAY;QACzC,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IACrD,CAAC;IAEO,WAAW,CAAC,KAAiB,EAAE,GAAe;QACpD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAA;IACrF,CAAC;CACF;AAED,2GAA2G;AAC3G,MAAM,UAAU,KAAK,CAAC,MAAc;IAClC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;AACnC,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}