solve-engine 1.0.0-beta.3 → 1.0.0-beta.5

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 (161) hide show
  1. package/dist/{Lexer-y8uY6n6t.d.cts → Lexer-Cfm79Dak.d.cts} +1 -1
  2. package/dist/{Lexer-Dkt7KGaU.d.ts → Lexer-W9MBOP0V.d.ts} +1 -1
  3. package/dist/{PackageRegistry-wUQyVEyw.d.ts → PackageRegistry-CjDt-Jy_.d.ts} +4 -4
  4. package/dist/{PackageRegistry-CblRmrHc.d.cts → PackageRegistry-pHtKythi.d.cts} +4 -4
  5. package/dist/{Parselet-C974vhZG.d.cts → Parselet-Cu0bLSis.d.cts} +1 -1
  6. package/dist/{Parselet-CsmtM3It.d.ts → Parselet-DEdF9I7n.d.ts} +1 -1
  7. package/dist/{Token-DnU2hwFY.d.cts → Token-BzG5G4ja.d.cts} +30 -0
  8. package/dist/{Token-DnU2hwFY.d.ts → Token-BzG5G4ja.d.ts} +30 -0
  9. package/dist/{TokenNormalizer-CqBCrYkR.d.cts → TokenNormalizer-DGVa24Q-.d.cts} +1 -1
  10. package/dist/{TokenNormalizer-B8zmhO5X.d.ts → TokenNormalizer-t_GotBxr.d.ts} +1 -1
  11. package/dist/{chunk-AF5AE52C.js → chunk-2CS6OMZK.js} +7 -6
  12. package/dist/chunk-2CS6OMZK.js.map +1 -0
  13. package/dist/{chunk-XJCMXB2E.cjs → chunk-2MV4HBKC.cjs} +187 -61
  14. package/dist/chunk-2MV4HBKC.cjs.map +1 -0
  15. package/dist/{chunk-WQTTOGXC.cjs → chunk-4AVD7NZW.cjs} +4 -4
  16. package/dist/{chunk-WQTTOGXC.cjs.map → chunk-4AVD7NZW.cjs.map} +1 -1
  17. package/dist/{chunk-HTXVVJRA.cjs → chunk-4CVLFLOB.cjs} +112 -2
  18. package/dist/chunk-4CVLFLOB.cjs.map +1 -0
  19. package/dist/{chunk-ZS6CRJZP.js → chunk-6GCKCWLB.js} +9 -3
  20. package/dist/chunk-6GCKCWLB.js.map +1 -0
  21. package/dist/{chunk-PG2K5BL6.cjs → chunk-73GSBGUU.cjs} +53 -53
  22. package/dist/{chunk-PG2K5BL6.cjs.map → chunk-73GSBGUU.cjs.map} +1 -1
  23. package/dist/{chunk-CGIDYRAX.cjs → chunk-AHCLWAM5.cjs} +18 -10
  24. package/dist/chunk-AHCLWAM5.cjs.map +1 -0
  25. package/dist/{chunk-KVILKGMS.js → chunk-AJA6LUI7.js} +36 -2
  26. package/dist/chunk-AJA6LUI7.js.map +1 -0
  27. package/dist/{chunk-F7G7ZFIZ.cjs → chunk-AZUA3F4I.cjs} +3 -3
  28. package/dist/{chunk-F7G7ZFIZ.cjs.map → chunk-AZUA3F4I.cjs.map} +1 -1
  29. package/dist/{chunk-QWY3VEZN.js → chunk-BAMZT3GL.js} +65 -12
  30. package/dist/chunk-BAMZT3GL.js.map +1 -0
  31. package/dist/{chunk-J73SJHR3.cjs → chunk-BXKJLM5R.cjs} +569 -344
  32. package/dist/chunk-BXKJLM5R.cjs.map +1 -0
  33. package/dist/{chunk-EHAHVROS.cjs → chunk-CLVQBF5C.cjs} +5 -5
  34. package/dist/{chunk-EHAHVROS.cjs.map → chunk-CLVQBF5C.cjs.map} +1 -1
  35. package/dist/{chunk-BOAVE4FC.cjs → chunk-CSG5XVNJ.cjs} +1491 -218
  36. package/dist/chunk-CSG5XVNJ.cjs.map +1 -0
  37. package/dist/{chunk-34RRD7PC.js → chunk-CYFK5SY2.js} +111 -3
  38. package/dist/chunk-CYFK5SY2.js.map +1 -0
  39. package/dist/{chunk-626UW5RU.js → chunk-GPPLSM2Z.js} +61 -2
  40. package/dist/chunk-GPPLSM2Z.js.map +1 -0
  41. package/dist/{chunk-OWXIOHQB.js → chunk-GVWHCL2N.js} +1417 -144
  42. package/dist/chunk-GVWHCL2N.js.map +1 -0
  43. package/dist/{chunk-2R7SVDDB.cjs → chunk-M4F66R4O.cjs} +72 -72
  44. package/dist/{chunk-2R7SVDDB.cjs.map → chunk-M4F66R4O.cjs.map} +1 -1
  45. package/dist/{chunk-LIPPNDBE.js → chunk-M5E34VG5.js} +3 -3
  46. package/dist/{chunk-LIPPNDBE.js.map → chunk-M5E34VG5.js.map} +1 -1
  47. package/dist/{chunk-53B6KDDJ.cjs → chunk-MBNQVDVC.cjs} +38 -3
  48. package/dist/{chunk-53B6KDDJ.cjs.map → chunk-MBNQVDVC.cjs.map} +1 -1
  49. package/dist/{chunk-2A3VOGVG.js → chunk-MEOHSQEH.js} +6 -5
  50. package/dist/chunk-MEOHSQEH.js.map +1 -0
  51. package/dist/{chunk-ZH2PCJ4V.cjs → chunk-MTX2KVU7.cjs} +71 -70
  52. package/dist/chunk-MTX2KVU7.cjs.map +1 -0
  53. package/dist/{chunk-4QADQTWS.js → chunk-MVBEL57Q.js} +242 -17
  54. package/dist/chunk-MVBEL57Q.js.map +1 -0
  55. package/dist/{chunk-QNJ4ACRT.cjs → chunk-NJTXJ5AG.cjs} +37 -15
  56. package/dist/chunk-NJTXJ5AG.cjs.map +1 -0
  57. package/dist/{chunk-EEJSQEHC.cjs → chunk-NZFKROS7.cjs} +26 -20
  58. package/dist/chunk-NZFKROS7.cjs.map +1 -0
  59. package/dist/{chunk-OJ6LW7VQ.js → chunk-OFXOTECC.js} +13 -5
  60. package/dist/chunk-OFXOTECC.js.map +1 -0
  61. package/dist/{chunk-3YNVWKR2.cjs → chunk-OUHT5Z36.cjs} +28 -5
  62. package/dist/chunk-OUHT5Z36.cjs.map +1 -0
  63. package/dist/{chunk-4MG4XKO2.js → chunk-PCPX42KL.js} +38 -3
  64. package/dist/{chunk-4MG4XKO2.js.map → chunk-PCPX42KL.js.map} +1 -1
  65. package/dist/{chunk-6NTVRDQV.cjs → chunk-QDMPOAI7.cjs} +126 -73
  66. package/dist/chunk-QDMPOAI7.cjs.map +1 -0
  67. package/dist/{chunk-FI4WDYSL.cjs → chunk-R24DI24X.cjs} +61 -2
  68. package/dist/chunk-R24DI24X.cjs.map +1 -0
  69. package/dist/{chunk-VM5ZKDLH.js → chunk-SFQWJMKT.js} +5 -5
  70. package/dist/{chunk-VM5ZKDLH.js.map → chunk-SFQWJMKT.js.map} +1 -1
  71. package/dist/{chunk-6BKTCEUP.cjs → chunk-TY3TLZAW.cjs} +36 -2
  72. package/dist/chunk-TY3TLZAW.cjs.map +1 -0
  73. package/dist/{chunk-23MFG6GG.js → chunk-TZLCIJWP.js} +12 -12
  74. package/dist/{chunk-23MFG6GG.js.map → chunk-TZLCIJWP.js.map} +1 -1
  75. package/dist/{chunk-DM3LMRBC.js → chunk-UKPGSAZW.js} +187 -61
  76. package/dist/chunk-UKPGSAZW.js.map +1 -0
  77. package/dist/{chunk-KFRBAXKW.js → chunk-VZH3NOLP.js} +3 -3
  78. package/dist/{chunk-KFRBAXKW.js.map → chunk-VZH3NOLP.js.map} +1 -1
  79. package/dist/{chunk-NH2O2AUR.js → chunk-WC5FFSHB.js} +26 -4
  80. package/dist/chunk-WC5FFSHB.js.map +1 -0
  81. package/dist/{chunk-7J2Q77OH.cjs → chunk-WWOLFXTX.cjs} +11 -10
  82. package/dist/chunk-WWOLFXTX.cjs.map +1 -0
  83. package/dist/{chunk-GOLDJNMZ.js → chunk-XBTEO4OB.js} +28 -5
  84. package/dist/chunk-XBTEO4OB.js.map +1 -0
  85. package/dist/{chunk-EPOXXJBK.js → chunk-YU2CUNFO.js} +3 -3
  86. package/dist/{chunk-EPOXXJBK.js.map → chunk-YU2CUNFO.js.map} +1 -1
  87. package/dist/constants.cjs +4 -4
  88. package/dist/constants.js +1 -1
  89. package/dist/engine.cjs +29 -30
  90. package/dist/engine.d.cts +6 -6
  91. package/dist/engine.d.ts +6 -6
  92. package/dist/engine.js +19 -20
  93. package/dist/format.cjs +7 -8
  94. package/dist/format.cjs.map +1 -1
  95. package/dist/format.js +2 -3
  96. package/dist/format.js.map +1 -1
  97. package/dist/index.cjs +28 -29
  98. package/dist/index.cjs.map +1 -1
  99. package/dist/index.d.cts +6 -6
  100. package/dist/index.d.ts +6 -6
  101. package/dist/index.js +20 -21
  102. package/dist/index.js.map +1 -1
  103. package/dist/language.cjs +12 -12
  104. package/dist/language.d.cts +6 -6
  105. package/dist/language.d.ts +6 -6
  106. package/dist/language.js +5 -5
  107. package/dist/lexer.cjs +19 -19
  108. package/dist/lexer.d.cts +3 -3
  109. package/dist/lexer.d.ts +3 -3
  110. package/dist/lexer.js +7 -7
  111. package/dist/normalizer.cjs +12 -12
  112. package/dist/normalizer.d.cts +3 -3
  113. package/dist/normalizer.d.ts +3 -3
  114. package/dist/normalizer.js +6 -6
  115. package/dist/packages.cjs +36 -37
  116. package/dist/packages.d.cts +5 -5
  117. package/dist/packages.d.ts +5 -5
  118. package/dist/packages.js +13 -14
  119. package/dist/parser.cjs +12 -12
  120. package/dist/parser.d.cts +3 -2
  121. package/dist/parser.d.ts +3 -2
  122. package/dist/parser.js +4 -4
  123. package/dist/resolvers.d.cts +1 -1
  124. package/dist/resolvers.d.ts +1 -1
  125. package/dist/uom.cjs +14 -14
  126. package/dist/uom.d.cts +12 -4
  127. package/dist/uom.d.ts +12 -4
  128. package/dist/uom.js +4 -4
  129. package/dist/vm.cjs +17 -17
  130. package/dist/vm.js +6 -6
  131. package/package.json +1 -1
  132. package/dist/chunk-2A3VOGVG.js.map +0 -1
  133. package/dist/chunk-34RRD7PC.js.map +0 -1
  134. package/dist/chunk-3YNVWKR2.cjs.map +0 -1
  135. package/dist/chunk-4QADQTWS.js.map +0 -1
  136. package/dist/chunk-626UW5RU.js.map +0 -1
  137. package/dist/chunk-6BKTCEUP.cjs.map +0 -1
  138. package/dist/chunk-6NTVRDQV.cjs.map +0 -1
  139. package/dist/chunk-7J2Q77OH.cjs.map +0 -1
  140. package/dist/chunk-AF5AE52C.js.map +0 -1
  141. package/dist/chunk-BOAVE4FC.cjs.map +0 -1
  142. package/dist/chunk-CGIDYRAX.cjs.map +0 -1
  143. package/dist/chunk-DM3LMRBC.js.map +0 -1
  144. package/dist/chunk-EEJSQEHC.cjs.map +0 -1
  145. package/dist/chunk-FI4WDYSL.cjs.map +0 -1
  146. package/dist/chunk-GOLDJNMZ.js.map +0 -1
  147. package/dist/chunk-HTXVVJRA.cjs.map +0 -1
  148. package/dist/chunk-J73SJHR3.cjs.map +0 -1
  149. package/dist/chunk-KVILKGMS.js.map +0 -1
  150. package/dist/chunk-NH2O2AUR.js.map +0 -1
  151. package/dist/chunk-OJ6LW7VQ.js.map +0 -1
  152. package/dist/chunk-OT6OJY7C.cjs +0 -114
  153. package/dist/chunk-OT6OJY7C.cjs.map +0 -1
  154. package/dist/chunk-OWXIOHQB.js.map +0 -1
  155. package/dist/chunk-QNJ4ACRT.cjs.map +0 -1
  156. package/dist/chunk-QWY3VEZN.js.map +0 -1
  157. package/dist/chunk-RFYD5TJE.js +0 -111
  158. package/dist/chunk-RFYD5TJE.js.map +0 -1
  159. package/dist/chunk-XJCMXB2E.cjs.map +0 -1
  160. package/dist/chunk-ZH2PCJ4V.cjs.map +0 -1
  161. package/dist/chunk-ZS6CRJZP.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/PackageRegistry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+PO,IAAM,kBAAN,MAAkD;AAAA,EAAlD,WAAA,GAAA;AACL,IAAA,IAAA,CAAA,KAAA,GAAQ,KAAA;AAAA,EAAA;AAAA,EAER,sBAAA,CAAuB,WAAmB,QAAA,EAAgC;AACxE,IAAA,sBAAA,CAAuB,cAAA,CAAe,WAAW,QAAQ,CAAA;AAAA,EAC3D;AAAA,EAEA,qBAAA,CAAsB,WAAmB,QAAA,EAA+B;AACtE,IAAA,sBAAA,CAAuB,aAAA,CAAc,WAAW,QAAQ,CAAA;AAAA,EAC1D;AAAA,EAEA,uBAAuB,MAAA,EAA+B;AACpD,IAAA,sBAAA,CAAuB,eAAe,MAAM,CAAA;AAAA,EAC9C;AAAA,EAEA,gBAAgB,GAAA,EAA2B;AAMzC,IAAA,6BAAA,CAA8B,GAAG,CAAA;AAEjC,IAAA,IAAI,IAAI,eAAA,EAAiB;AACvB,MAAA,WAAA,CAAY,kBAAA,CAAmB,IAAI,eAAe,CAAA;AAAA,IACpD;AACA,IAAA,IAAI,IAAI,eAAA,EAAiB;AACvB,MAAA,KAAA,MAAW,EAAA,IAAM,IAAI,eAAA,EAAiB;AACpC,QAAA,IAAA,CAAK,sBAAA,CAAuB,EAAA,CAAG,SAAA,EAAW,EAAA,CAAG,QAAQ,CAAA;AAAA,MACvD;AAAA,IACF;AACA,IAAA,IAAI,IAAI,cAAA,EAAgB;AACtB,MAAA,KAAA,MAAW,EAAA,IAAM,IAAI,cAAA,EAAgB;AACnC,QAAA,IAAA,CAAK,qBAAA,CAAsB,EAAA,CAAG,SAAA,EAAW,EAAA,CAAG,QAAQ,CAAA;AAAA,MACtD;AAAA,IACF;AACA,IAAA,IAAI,IAAI,eAAA,EAAiB;AACvB,MAAA,KAAA,MAAW,EAAA,IAAM,IAAI,eAAA,EAAiB;AACpC,QAAA,IAAA,CAAK,uBAAuB,EAAE,CAAA;AAAA,MAChC;AAAA,IACF;AAAA,EAIF;AACF;AAQO,IAAM,eAAA,GAAkB,IAAI,eAAA","file":"index.js","sourcesContent":["import { sharedParseletRegistry } from \"@solve-js/parser/registry/ParseletRegistry\";\nimport { PrefixParselet, InfixParselet } from \"@solve-js/parser/Parselet\";\nimport { Value } from \"@solve-js/vm/Value\";\nimport { IVariableSource } from \"@solve-js/variables/IVariableSource\";\nimport { sharedVariableResolver } from \"@solve-js/variables/VariableResolver\";\nimport { sharedLexer } from \"@solve-js/lexer/Lexer\";\nimport type { LexerVocabulary } from \"@solve-js/lexer/ExpressionLexer\";\nimport type { IAsyncResolver } from \"@solve-js/resolvers/ResolverRegistry\";\nimport type { NormalizerRule } from \"@solve-js/normalizer/NormalizerRule\";\nimport type { TokenCategory } from \"@solve-js/language/TokenCategory\";\nimport type { CompletionItem } from \"@solve-js/language/LanguageService\";\nimport type { LineExecutionContext } from \"@solve-js/vm/VM\";\nimport { assertEngineVersionCompatible } from \"./EngineVersionCompatibility\";\n\n/**\n * Public API for registering plugins with the solve-js engine.\n *\n * All registration goes through this interface, parselets, variable\n * sources, and full packages. The default implementation is\n * {@link PackageRegistry} (singleton via {@link packageRegistry}).\n *\n * @example\n * ```typescript\n * import { packageRegistry } from \"solve-engine\";\n * packageRegistry.registerPackage(myCustomPackage);\n * ```\n */\nexport interface IPackageRegistry {\n /** Register a prefix parselet (e.g., `GE`, `NOW`, `floor`). */\n registerPrefixParselet(tokenType: string, parselet: PrefixParselet): void;\n /** Register an infix parselet (e.g., `+`, `in`, `to`). */\n registerInfixParselet(tokenType: string, parselet: InfixParselet): void;\n /** @deprecated Has no effect. See {@link IEnginePackage.variableSources}. */\n registerVariableSource(source: IVariableSource): void;\n /** Register a complete package (parselets + variable sources). */\n registerPackage(pkg: IEnginePackage): void;\n /** Convenience reference to the Value class for creating typed values. */\n Value: typeof Value;\n}\n\n/**\n * Package descriptor for registering a complete provider with the engine.\n *\n * A package bundles all the pieces needed for a domain-specific provider:\n * lexer plugins for custom token recognition, parselets for Pratt parsing,\n * plugin functions dispatched via CALL_PLUGIN bytecode, variable sources,\n * and optional async resolvers for data that loads asynchronously (e.g.,\n * exchange rates, game prices).\n *\n * @example\n * ```typescript\n * const myPackage: IEnginePackage = {\n * name: \"MyProvider\",\n * lexerVocabulary: myLexerVocabulary,\n * prefixParselets: [{ tokenType: \"MY_FUNC\", parselet: new MyParselet() }],\n * pluginFunctions: [{ index: MY_FN_IDX, handler: myHandler }],\n * asyncResolvers: [myAsyncResolver],\n * };\n * packageRegistry.registerPackage(myPackage);\n * ```\n */\nexport interface IEnginePackage {\n /** Human-readable name for debugging and error attribution. */\n name: string;\n /**\n * Semver range of `solve-engine` versions this package is compatible with\n * (e.g. `\"^0.1.0\"`, `\">=0.1.0 <0.3.0\"`), checked against the engine's own\n * running version ({@link ENGINE_VERSION}, `@solve-js/constants/version`)\n * via `checkEngineVersionCompatibility()`/`assertEngineVersionCompatible()`\n * (`@solve-js/api/EngineVersionCompatibility`) at registration time.\n *\n * Optional, omitted means \"no declared constraint,\" so every package\n * that predates this field (all built-ins, `examples/osrs`) keeps\n * registering exactly as before.\n *\n * Unlike every other compatibility signal in this codebase (e.g.\n * `checkPackageCompatibility()`'s sibling-package collision warnings,\n * which always log and proceed. See `api/PackageCompatibility.ts`), a\n * declared `engineVersion` range the running engine does NOT satisfy is\n * a deliberate, hard REJECTION: `registerPackage()` throws rather than\n * warning. See `ARCHITECTURE.md` §5.3.\n */\n engineVersion?: string;\n /** Optional lexer vocabulary (keywords/operators/units) for recognizing custom tokens (e.g., `GE`, `£`). */\n lexerVocabulary?: LexerVocabulary;\n /** Prefix parselets for this package's custom functions/operators. */\n prefixParselets?: Array<{ tokenType: string; parselet: PrefixParselet }>;\n /** Infix parselets for this package's custom binary operators. */\n infixParselets?: Array<{ tokenType: string; parselet: InfixParselet }>;\n /**\n * Functions dispatched via CALL_PLUGIN bytecode (emitted by this package's\n * parselets with `builder.emitIndex(index)`).\n *\n * Each entry's `index` MUST come from {@link allocatePluginFunctionIndex}\n * (`@solve-js/vm/VMBuiltins`), never hardcode a number. Two packages\n * independently picking the same index would silently overwrite each\n * other's handler in the shared registry.\n *\n * The handler's optional second parameter, `context`, carries the\n * current line's {@link LineExecutionContext} (line number, and, only\n * inside a real document, never `evaluateExpression()`'s single-shot\n * path, closures for reading another line's cached result). Every\n * handler that doesn't need cross-line data can ignore it entirely.\n *\n * @example\n * ```ts\n * const MY_FN_IDX = allocatePluginFunctionIndex();\n * // In a parselet's parse(): builder.emitOpcode(OpCode.CALL_PLUGIN); builder.emitIndex(MY_FN_IDX); builder.emitIndex(argCount);\n * pluginFunctions: [{ index: MY_FN_IDX, handler: myHandler }]\n * ```\n */\n pluginFunctions?: Array<{ index: number; handler: (args: Value[], context?: LineExecutionContext) => Value | Promise<Value> }>;\n /**\n * Named-variable sources.\n *\n * @deprecated Currently has no effect. Sources declared here are registered\n * into the engine's {@link EngineContext} and unregistered again on package\n * removal, but no evaluation path ever calls `VariableResolver.resolve()`, so\n * a variable a source provides is never found. Verified by searching every\n * use of `IVariableSource` outside its own declaration: they are all\n * registration bookkeeping.\n *\n * Declared here rather than deleted because removing a public field is a\n * breaking change and the intended behaviour is worth keeping. Documented as\n * dead so a package author does not spend an afternoon working out why their\n * variables resolve to nothing. To expose a value today, contribute a plugin\n * function through {@link IEnginePackage.pluginFunctions}.\n */\n variableSources?: IVariableSource[];\n /**\n * Async resolvers for this package's domain.\n * When set, the ExpressionEngine runs preflight() before VM execution\n * for each resolver. If async data is needed, a Pending result is\n * returned immediately and the line re-evaluates when the data resolves.\n *\n * Each resolver must have a unique `namespace`, the ResolverRegistry\n * is keyed by namespace. Multiple resolvers let a package handle\n * distinct async operations (e.g., `fetch`, `wait`, `poll`) in\n * separate, focused classes rather than one monolithic preflight().\n */\n asyncResolvers?: IAsyncResolver[];\n /**\n * Multi-word phrases to fuse into single compound tokens.\n * Each key is a space-separated phrase (e.g., \"to the power of\"),\n * each value is the target token type after fusion (e.g., \"CARET\").\n *\n * Registered into the engine's {@link PhraseTrie} for single-pass\n * O(depth) matching, no separate rule scanning per phrase.\n *\n * @example\n * ```ts\n * phrases: {\n * \"to the power of\": \"CARET\",\n * \"abyssal whip\": \"ITEM\",\n * }\n * ```\n */\n phrases?: Record<string, string>;\n /**\n * Normalizer rules for post-lexer token transformation.\n * Applied by the TokenNormalizer between lexing and parsing.\n * For phrase fusion, prefer the declarative {@link phrases} field\n * which uses the faster PhraseTrie. Use this for non-phrase rules\n * like implicit operator insertion.\n */\n normalizerRules?: NormalizerRule[];\n /**\n * Semantic highlight categories for this package's custom token types\n * (introduced via {@link lexerVocabulary} or {@link normalizerRules}), the\n * plugin-facing half of solve-js's editor-agnostic language service (see\n * `language/TokenCategoryMap.ts`). Without an entry here, a package's\n * custom tokens (e.g. a game-item name fused from several identifiers)\n * are still lexed and parsed correctly, but render with no highlight\n * category in any editor integration.\n *\n * @example\n * ```ts\n * tokenCategories: { MY_KEYWORD: \"keyword\", MY_ITEM: \"my-plugin-item\" }\n * ```\n */\n tokenCategories?: Record<string, TokenCategory>;\n /**\n * Completion candidates for this package, the plugin-facing half of\n * solve-js's editor-agnostic completions API\n * (`LanguageService.getCompletions()`). A package's single-word\n * keywords (via {@link lexerVocabulary}) already flow into completions\n * automatically; this field is for candidates that AREN'T lexer\n * keywords, such as a vocabulary of item/entity names. A plain,\n * pre-built list, not a callback, completion candidate lists are\n * meant to be cheap and static within one engine configuration.\n *\n * @example\n * ```ts\n * completionItems: [{ label: \"Abyssal whip\", category: \"my-plugin-item\", detail: \"Item\" }]\n * ```\n */\n completionItems?: CompletionItem[];\n /**\n * Custom `as <name>` converters, the extension point for the\n * Converters package's general `<expr> as <type>` grammar (e.g.\n * `50% as decimal`, `255 as hex`). The built-in converter names\n * (`percent`, `decimal`, `hex`, `fraction`, `multiplier`, `sci`,\n * `binary`, `octal`, ...) dispatch to dedicated fast opcodes; anything\n * else, including any name a third-party package registers here\n * resolves through `OpCode.CALL_AS_CONVERTER` against\n * `vm/VMBuiltins.ts`'s `asConverterRegistry` at runtime. No lexer\n * keyword registration is needed for a custom name: the AS parselet\n * accepts any bare-word token after \"as\" and reads its raw text.\n *\n * Each handler is a pure, synchronous `(value: Value) => Value`, for\n * async conversions (e.g. a live currency-style lookup), use\n * {@link asyncResolvers} instead.\n *\n * @example\n * ```ts\n * asConverters: { roman: (v) => stringValue(toRomanNumeral(v.toNumber())) }\n * ```\n */\n asConverters?: Record<string, (value: Value) => Value>;\n}\n\n/**\n * Default implementation of {@link IPackageRegistry}, the plugin registration API.\n *\n * All registrations delegate to shared singletons (parselet registry,\n * variable resolver, lexer). This ensures that packages registered through\n * any PackageRegistry instance are visible engine-wide.\n *\n * @example\n * ```typescript\n * import { packageRegistry } from \"solve-engine\";\n *\n * // Register a complete provider package\n * packageRegistry.registerPackage({\n * name: \"MyProvider\",\n * prefixParselets: [{ tokenType: \"MY_FUNC\", parselet: new MyParselet() }],\n * });\n * ```\n *\n * @deprecated Register on an engine instead:\n * `engine.registerPackage(pkg)`.\n *\n * This class writes into process-wide singletons, which is incompatible with an\n * engine owning its own registries. Since the introduction of\n * {@link EngineContext}, an engine reads plugin functions, opcode handlers and\n * variable sources from its own context, so a package registered here is not\n * visible to any engine. Parselets and lexer vocabulary registered here reach\n * the shared registries, which an engine also does not read: it builds its own\n * `ParseletRegistry` and its own `Lexer`.\n *\n * In other words this path registers into state nothing evaluates against. It\n * remains exported because removing it is a breaking change, and it is where\n * the singletons that survive are still written from, but it should not be used\n * in new code and will be removed before 1.0 proper.\n */\nexport class PackageRegistry implements IPackageRegistry {\n Value = Value;\n\n registerPrefixParselet(tokenType: string, parselet: PrefixParselet): void {\n sharedParseletRegistry.registerPrefix(tokenType, parselet);\n }\n\n registerInfixParselet(tokenType: string, parselet: InfixParselet): void {\n sharedParseletRegistry.registerInfix(tokenType, parselet);\n }\n\n registerVariableSource(source: IVariableSource): void {\n sharedVariableResolver.registerSource(source);\n }\n\n registerPackage(pkg: IEnginePackage): void {\n // Same hard engine-version gate ExpressionEngine.registerPackage() uses\n // (see its own comment and ARCHITECTURE.md §5.3). This weaker\n // shared-singleton path had no compatibility checking of any kind\n // before this, so without this call the version gate would be\n // trivially bypassable through this entry point.\n assertEngineVersionCompatible(pkg);\n\n if (pkg.lexerVocabulary) {\n sharedLexer.registerVocabulary(pkg.lexerVocabulary);\n }\n if (pkg.prefixParselets) {\n for (const pp of pkg.prefixParselets) {\n this.registerPrefixParselet(pp.tokenType, pp.parselet);\n }\n }\n if (pkg.infixParselets) {\n for (const ip of pkg.infixParselets) {\n this.registerInfixParselet(ip.tokenType, ip.parselet);\n }\n }\n if (pkg.variableSources) {\n for (const vs of pkg.variableSources) {\n this.registerVariableSource(vs);\n }\n }\n // Note: asyncResolvers are NOT registered here, the shared PackageRegistry singleton\n // doesn't have a ResolverRegistry (that lives inside ExpressionEngine).\n // Use ExpressionEngine.registerPackage() directly if you need async resolvers.\n }\n}\n\n/**\n * Singleton PackageRegistry instance, the default plugin registration API.\n *\n * All packages should register through this instance. The underlying registries\n * are shared singletons, so multiple PackageRegistry instances would be redundant.\n */\nexport const packageRegistry = new PackageRegistry();\n"]}
1
+ {"version":3,"sources":["../src/api/PackageRegistry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+PO,IAAM,kBAAN,MAAkD;AAAA,EAAlD,WAAA,GAAA;AACL,IAAA,IAAA,CAAA,KAAA,GAAQ,KAAA;AAAA,EAAA;AAAA,EAER,sBAAA,CAAuB,WAAmB,QAAA,EAAgC;AACxE,IAAA,sBAAA,CAAuB,cAAA,CAAe,WAAW,QAAQ,CAAA;AAAA,EAC3D;AAAA,EAEA,qBAAA,CAAsB,WAAmB,QAAA,EAA+B;AACtE,IAAA,sBAAA,CAAuB,aAAA,CAAc,WAAW,QAAQ,CAAA;AAAA,EAC1D;AAAA,EAEA,uBAAuB,MAAA,EAA+B;AACpD,IAAA,sBAAA,CAAuB,eAAe,MAAM,CAAA;AAAA,EAC9C;AAAA,EAEA,gBAAgB,GAAA,EAA2B;AAMzC,IAAA,6BAAA,CAA8B,GAAG,CAAA;AAEjC,IAAA,IAAI,IAAI,eAAA,EAAiB;AACvB,MAAA,WAAA,CAAY,kBAAA,CAAmB,IAAI,eAAe,CAAA;AAAA,IACpD;AACA,IAAA,IAAI,IAAI,eAAA,EAAiB;AACvB,MAAA,KAAA,MAAW,EAAA,IAAM,IAAI,eAAA,EAAiB;AACpC,QAAA,IAAA,CAAK,sBAAA,CAAuB,EAAA,CAAG,SAAA,EAAW,EAAA,CAAG,QAAQ,CAAA;AAAA,MACvD;AAAA,IACF;AACA,IAAA,IAAI,IAAI,cAAA,EAAgB;AACtB,MAAA,KAAA,MAAW,EAAA,IAAM,IAAI,cAAA,EAAgB;AACnC,QAAA,IAAA,CAAK,qBAAA,CAAsB,EAAA,CAAG,SAAA,EAAW,EAAA,CAAG,QAAQ,CAAA;AAAA,MACtD;AAAA,IACF;AACA,IAAA,IAAI,IAAI,eAAA,EAAiB;AACvB,MAAA,KAAA,MAAW,EAAA,IAAM,IAAI,eAAA,EAAiB;AACpC,QAAA,IAAA,CAAK,uBAAuB,EAAE,CAAA;AAAA,MAChC;AAAA,IACF;AAAA,EAIF;AACF;AAQO,IAAM,eAAA,GAAkB,IAAI,eAAA","file":"index.js","sourcesContent":["import { sharedParseletRegistry } from \"@solve-js/parser/registry/ParseletRegistry\";\nimport { PrefixParselet, InfixParselet } from \"@solve-js/parser/Parselet\";\nimport { Value } from \"@solve-js/vm/Value\";\nimport { IVariableSource } from \"@solve-js/variables/IVariableSource\";\nimport { sharedVariableResolver } from \"@solve-js/variables/VariableResolver\";\nimport { sharedLexer } from \"@solve-js/lexer/Lexer\";\nimport type { LexerVocabulary } from \"@solve-js/lexer/ExpressionLexer\";\nimport type { IAsyncResolver } from \"@solve-js/resolvers/ResolverRegistry\";\nimport type { NormalizerRule } from \"@solve-js/normalizer/NormalizerRule\";\nimport type { TokenCategory } from \"@solve-js/language/TokenCategory\";\nimport type { CompletionItem } from \"@solve-js/language/LanguageService\";\nimport type { LineExecutionContext } from \"@solve-js/vm/VM\";\nimport { assertEngineVersionCompatible } from \"./EngineVersionCompatibility\";\n\n/**\n * Public API for registering plugins with the solve-js engine.\n *\n * All registration goes through this interface, parselets, variable\n * sources, and full packages. The default implementation is\n * {@link PackageRegistry} (singleton via {@link packageRegistry}).\n *\n * @example\n * ```typescript\n * import { packageRegistry } from \"solve-engine\";\n * packageRegistry.registerPackage(myCustomPackage);\n * ```\n */\nexport interface IPackageRegistry {\n /** Register a prefix parselet (e.g., `GE`, `NOW`, `floor`). */\n registerPrefixParselet(tokenType: string, parselet: PrefixParselet): void;\n /** Register an infix parselet (e.g., `+`, `in`, `to`). */\n registerInfixParselet(tokenType: string, parselet: InfixParselet): void;\n /** @deprecated Has no effect. See {@link IEnginePackage.variableSources}. */\n registerVariableSource(source: IVariableSource): void;\n /** Register a complete package (parselets + variable sources). */\n registerPackage(pkg: IEnginePackage): void;\n /** Convenience reference to the Value class for creating typed values. */\n Value: typeof Value;\n}\n\n/**\n * Package descriptor for registering a complete provider with the engine.\n *\n * A package bundles all the pieces needed for a domain-specific provider:\n * lexer plugins for custom token recognition, parselets for Pratt parsing,\n * plugin functions dispatched via CALL_PLUGIN bytecode, variable sources,\n * and optional async resolvers for data that loads asynchronously (e.g.,\n * exchange rates, game prices).\n *\n * @example\n * ```typescript\n * const myPackage: IEnginePackage = {\n * name: \"MyProvider\",\n * lexerVocabulary: myLexerVocabulary,\n * prefixParselets: [{ tokenType: \"MY_FUNC\", parselet: new MyParselet() }],\n * pluginFunctions: [{ index: MY_FN_IDX, handler: myHandler }],\n * asyncResolvers: [myAsyncResolver],\n * };\n * packageRegistry.registerPackage(myPackage);\n * ```\n */\nexport interface IEnginePackage {\n /** Human-readable name for debugging and error attribution. */\n name: string;\n /**\n * Semver range of `solve-engine` versions this package is compatible with\n * (e.g. `\"^0.1.0\"`, `\">=0.1.0 <0.3.0\"`), checked against the engine's own\n * running version ({@link ENGINE_VERSION}, `@solve-js/constants/version`)\n * via `checkEngineVersionCompatibility()`/`assertEngineVersionCompatible()`\n * (`@solve-js/api/EngineVersionCompatibility`) at registration time.\n *\n * Optional, omitted means \"no declared constraint,\" so every package\n * that predates this field (all built-ins, `examples/osrs`) keeps\n * registering exactly as before.\n *\n * Unlike every other compatibility signal in this codebase (e.g.\n * `checkPackageCompatibility()`'s sibling-package collision warnings,\n * which always log and proceed. See `api/PackageCompatibility.ts`), a\n * declared `engineVersion` range the running engine does NOT satisfy is\n * a deliberate, hard REJECTION: `registerPackage()` throws rather than\n * warning. See `ARCHITECTURE.md` §5.3.\n */\n engineVersion?: string;\n /** Optional lexer vocabulary (keywords/operators/units) for recognizing custom tokens (e.g., `GE`, `£`). */\n lexerVocabulary?: LexerVocabulary;\n /** Prefix parselets for this package's custom functions/operators. */\n prefixParselets?: Array<{ tokenType: string; parselet: PrefixParselet }>;\n /** Infix parselets for this package's custom binary operators. */\n infixParselets?: Array<{ tokenType: string; parselet: InfixParselet }>;\n /**\n * Functions dispatched via CALL_PLUGIN bytecode (emitted by this package's\n * parselets with `builder.emitIndex(index)`).\n *\n * Each entry's `index` MUST come from {@link allocatePluginFunctionIndex}\n * (`@solve-js/vm/VMBuiltins`), never hardcode a number. Two packages\n * independently picking the same index would silently overwrite each\n * other's handler in the shared registry.\n *\n * The handler's optional second parameter, `context`, carries the\n * current line's {@link LineExecutionContext} (line number, and, only\n * inside a real document, never `evaluateExpression()`'s single-shot\n * path, closures for reading another line's cached result). Every\n * handler that doesn't need cross-line data can ignore it entirely.\n *\n * @example\n * ```ts\n * const MY_FN_IDX = allocatePluginFunctionIndex();\n * // In a parselet's parse(): builder.emitOpcode(OpCode.CALL_PLUGIN); builder.emitIndex(MY_FN_IDX); builder.emitIndex(argCount);\n * pluginFunctions: [{ index: MY_FN_IDX, handler: myHandler }]\n * ```\n */\n pluginFunctions?: Array<{ index: number; handler: (args: Value[], context?: LineExecutionContext) => Value | Promise<Value> }>;\n /**\n * Named-variable sources.\n *\n * @deprecated Currently has no effect. Sources declared here are registered\n * into the engine's {@link EngineContext} and unregistered again on package\n * removal, but no evaluation path ever calls `VariableResolver.resolve()`, so\n * a variable a source provides is never found. Verified by searching every\n * use of `IVariableSource` outside its own declaration: they are all\n * registration bookkeeping.\n *\n * Declared here rather than deleted because removing a public field is a\n * breaking change and the intended behaviour is worth keeping. Documented as\n * dead so a package author does not spend an afternoon working out why their\n * variables resolve to nothing. To expose a value today, contribute a plugin\n * function through {@link IEnginePackage.pluginFunctions}.\n */\n variableSources?: IVariableSource[];\n /**\n * Async resolvers for this package's domain.\n * When set, the ExpressionEngine runs preflight() before VM execution\n * for each resolver. If async data is needed, a Pending result is\n * returned immediately and the line re-evaluates when the data resolves.\n *\n * Each resolver must have a unique `namespace`, the ResolverRegistry\n * is keyed by namespace. Multiple resolvers let a package handle\n * distinct async operations (e.g., `fetch`, `wait`, `poll`) in\n * separate, focused classes rather than one monolithic preflight().\n */\n asyncResolvers?: IAsyncResolver[];\n /**\n * Multi-word phrases to fuse into single compound tokens.\n * Each key is a space-separated phrase (e.g., \"to the power of\"),\n * each value is the target token type after fusion (e.g., \"CARET\").\n *\n * Registered into the engine's {@link PhraseTrie} for single-pass\n * O(depth) matching, no separate rule scanning per phrase.\n *\n * @example\n * ```ts\n * phrases: {\n * \"to the power of\": \"CARET\",\n * \"abyssal whip\": \"ITEM\",\n * }\n * ```\n */\n phrases?: Record<string, string>;\n /**\n * Normalizer rules for post-lexer token transformation.\n * Applied by the TokenNormalizer between lexing and parsing.\n * For phrase fusion, prefer the declarative {@link phrases} field\n * which uses the faster PhraseTrie. Use this for non-phrase rules\n * like implicit operator insertion.\n */\n normalizerRules?: NormalizerRule[];\n /**\n * Semantic highlight categories for this package's custom token types\n * (introduced via {@link lexerVocabulary} or {@link normalizerRules}), the\n * plugin-facing half of solve-js's editor-agnostic language service (see\n * `language/TokenCategoryMap.ts`). Without an entry here, a package's\n * custom tokens (e.g. a game-item name fused from several identifiers)\n * are still lexed and parsed correctly, but render with no highlight\n * category in any editor integration.\n *\n * @example\n * ```ts\n * tokenCategories: { MY_KEYWORD: \"keyword\", MY_ITEM: \"my-plugin-item\" }\n * ```\n */\n tokenCategories?: Record<string, TokenCategory>;\n /**\n * Completion candidates for this package, the plugin-facing half of\n * solve-js's editor-agnostic completions API\n * (`LanguageService.getCompletions()`). A package's single-word\n * keywords (via {@link lexerVocabulary}) already flow into completions\n * automatically; this field is for candidates that AREN'T lexer\n * keywords, such as a vocabulary of item/entity names. A plain,\n * pre-built list, not a callback, completion candidate lists are\n * meant to be cheap and static within one engine configuration.\n *\n * @example\n * ```ts\n * completionItems: [{ label: \"Abyssal whip\", category: \"my-plugin-item\", detail: \"Item\" }]\n * ```\n */\n completionItems?: CompletionItem[];\n /**\n * Custom `as <name>` converters, the extension point for the\n * Converters package's general `<expr> as <type>` grammar (e.g.\n * `50% as decimal`, `255 as hex`). The built-in converter names\n * (`percent`, `decimal`, `hex`, `fraction`, `multiplier`, `sci`,\n * `binary`, `octal`, ...) dispatch to dedicated fast opcodes; anything\n * else, including any name a third-party package registers here\n * resolves through `OpCode.CALL_AS_CONVERTER` against\n * `vm/VMBuiltins.ts`'s `asConverterRegistry` at runtime. No lexer\n * keyword registration is needed for a custom name: the AS parselet\n * accepts any bare-word token after \"as\" and reads its raw text.\n *\n * Each handler is a pure, synchronous `(value: Value) => Value`, for\n * async conversions (e.g. a live currency-style lookup), use\n * {@link asyncResolvers} instead.\n *\n * @example\n * ```ts\n * asConverters: { roman: (v) => stringValue(toRomanNumeral(v.toNumber())) }\n * ```\n */\n asConverters?: Record<string, (value: Value) => Value>;\n}\n\n/**\n * Default implementation of {@link IPackageRegistry}, the plugin registration API.\n *\n * All registrations delegate to shared singletons (parselet registry,\n * variable resolver, lexer). This ensures that packages registered through\n * any PackageRegistry instance are visible engine-wide.\n *\n * @example\n * ```typescript\n * import { packageRegistry } from \"solve-engine\";\n *\n * // Register a complete provider package\n * packageRegistry.registerPackage({\n * name: \"MyProvider\",\n * prefixParselets: [{ tokenType: \"MY_FUNC\", parselet: new MyParselet() }],\n * });\n * ```\n *\n * @deprecated Register on an engine instead:\n * `engine.registerPackage(pkg)`.\n *\n * This class writes into process-wide singletons, which is incompatible with an\n * engine owning its own registries. Since the introduction of\n * {@link EngineContext}, an engine reads plugin functions, opcode handlers and\n * variable sources from its own context, so a package registered here is not\n * visible to any engine. Parselets and lexer vocabulary registered here reach\n * the shared registries, which an engine also does not read: it builds its own\n * `ParseletRegistry` and its own `Lexer`.\n *\n * In other words this path registers into state nothing evaluates against. It\n * remains exported because removing it is a breaking change, and it is where\n * the singletons that survive are still written from, but it should not be used\n * in new code and will be removed before 1.0 proper.\n */\nexport class PackageRegistry implements IPackageRegistry {\n Value = Value;\n\n registerPrefixParselet(tokenType: string, parselet: PrefixParselet): void {\n sharedParseletRegistry.registerPrefix(tokenType, parselet);\n }\n\n registerInfixParselet(tokenType: string, parselet: InfixParselet): void {\n sharedParseletRegistry.registerInfix(tokenType, parselet);\n }\n\n registerVariableSource(source: IVariableSource): void {\n sharedVariableResolver.registerSource(source);\n }\n\n registerPackage(pkg: IEnginePackage): void {\n // Same hard engine-version gate ExpressionEngine.registerPackage() uses\n // (see its own comment and ARCHITECTURE.md §5.3). This weaker\n // shared-singleton path had no compatibility checking of any kind\n // before this, so without this call the version gate would be\n // trivially bypassable through this entry point.\n assertEngineVersionCompatible(pkg);\n\n if (pkg.lexerVocabulary) {\n sharedLexer.registerVocabulary(pkg.lexerVocabulary);\n }\n if (pkg.prefixParselets) {\n for (const pp of pkg.prefixParselets) {\n this.registerPrefixParselet(pp.tokenType, pp.parselet);\n }\n }\n if (pkg.infixParselets) {\n for (const ip of pkg.infixParselets) {\n this.registerInfixParselet(ip.tokenType, ip.parselet);\n }\n }\n if (pkg.variableSources) {\n for (const vs of pkg.variableSources) {\n this.registerVariableSource(vs);\n }\n }\n // Note: asyncResolvers are NOT registered here, the shared PackageRegistry singleton\n // doesn't have a ResolverRegistry (that lives inside ExpressionEngine).\n // Use ExpressionEngine.registerPackage() directly if you need async resolvers.\n }\n}\n\n/**\n * Singleton PackageRegistry instance, the default plugin registration API.\n *\n * All packages should register through this instance. The underlying registries\n * are shared singletons, so multiple PackageRegistry instances would be redundant.\n */\nexport const packageRegistry = new PackageRegistry();\n"]}
package/dist/language.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkQNJ4ACRT_cjs = require('./chunk-QNJ4ACRT.cjs');
4
- var chunk6BKTCEUP_cjs = require('./chunk-6BKTCEUP.cjs');
5
- var chunkEHAHVROS_cjs = require('./chunk-EHAHVROS.cjs');
6
- require('./chunk-53B6KDDJ.cjs');
3
+ var chunkNJTXJ5AG_cjs = require('./chunk-NJTXJ5AG.cjs');
4
+ var chunkTY3TLZAW_cjs = require('./chunk-TY3TLZAW.cjs');
5
+ var chunkCLVQBF5C_cjs = require('./chunk-CLVQBF5C.cjs');
6
+ require('./chunk-MBNQVDVC.cjs');
7
7
  require('./chunk-B7LXJ6LC.cjs');
8
8
 
9
9
  // src/language/LanguageService.ts
@@ -125,7 +125,7 @@ var LanguageService = class {
125
125
  offset: token.offset,
126
126
  col: token.col,
127
127
  length: end - token.offset,
128
- category: chunk6BKTCEUP_cjs.getTokenCategory(token.type)
128
+ category: chunkTY3TLZAW_cjs.getTokenCategory(token.type)
129
129
  });
130
130
  }
131
131
  return out;
@@ -228,12 +228,12 @@ var LanguageService = class {
228
228
  if (this.staticCompletionCandidates) return this.staticCompletionCandidates;
229
229
  const items = [];
230
230
  for (const [word, tokenType] of Object.entries(this.engine.getLexer().getKeywords())) {
231
- const category = chunk6BKTCEUP_cjs.getTokenCategory(tokenType);
231
+ const category = chunkTY3TLZAW_cjs.getTokenCategory(tokenType);
232
232
  if (!category) continue;
233
233
  items.push({ label: word, category });
234
234
  }
235
- for (const unit of chunkEHAHVROS_cjs.knownUnits) {
236
- items.push({ label: unit, category: "unit", detail: chunkQNJ4ACRT_cjs.getMeasure(unit) });
235
+ for (const unit of chunkCLVQBF5C_cjs.knownUnits) {
236
+ items.push({ label: unit, category: "unit", detail: chunkNJTXJ5AG_cjs.getMeasure(unit) });
237
237
  }
238
238
  items.push(...this.engine.getPackageCompletionItems());
239
239
  this.staticCompletionCandidates = items;
@@ -347,19 +347,19 @@ function completionItemToOption(item) {
347
347
 
348
348
  Object.defineProperty(exports, "UNCATEGORIZED_TOKEN_TYPES", {
349
349
  enumerable: true,
350
- get: function () { return chunk6BKTCEUP_cjs.UNCATEGORIZED_TOKEN_TYPES; }
350
+ get: function () { return chunkTY3TLZAW_cjs.UNCATEGORIZED_TOKEN_TYPES; }
351
351
  });
352
352
  Object.defineProperty(exports, "getTokenCategory", {
353
353
  enumerable: true,
354
- get: function () { return chunk6BKTCEUP_cjs.getTokenCategory; }
354
+ get: function () { return chunkTY3TLZAW_cjs.getTokenCategory; }
355
355
  });
356
356
  Object.defineProperty(exports, "registerTokenCategory", {
357
357
  enumerable: true,
358
- get: function () { return chunk6BKTCEUP_cjs.registerTokenCategory; }
358
+ get: function () { return chunkTY3TLZAW_cjs.registerTokenCategory; }
359
359
  });
360
360
  Object.defineProperty(exports, "unregisterTokenCategory", {
361
361
  enumerable: true,
362
- get: function () { return chunk6BKTCEUP_cjs.unregisterTokenCategory; }
362
+ get: function () { return chunkTY3TLZAW_cjs.unregisterTokenCategory; }
363
363
  });
364
364
  exports.DEFAULT_TOKEN_CLASS_PREFIX = DEFAULT_TOKEN_CLASS_PREFIX;
365
365
  exports.LanguageService = LanguageService;
@@ -1,15 +1,15 @@
1
- import { n as CompletionItem } from './PackageRegistry-CblRmrHc.cjs';
2
- export { o as LanguageService, q as LanguageServiceOptions, S as SemanticToken } from './PackageRegistry-CblRmrHc.cjs';
3
- import { e as TokenCategory } from './Lexer-y8uY6n6t.cjs';
4
- import './Parselet-C974vhZG.cjs';
1
+ import { n as CompletionItem } from './PackageRegistry-pHtKythi.cjs';
2
+ export { o as LanguageService, q as LanguageServiceOptions, S as SemanticToken } from './PackageRegistry-pHtKythi.cjs';
3
+ import { e as TokenCategory } from './Lexer-Cfm79Dak.cjs';
4
+ import './Parselet-Cu0bLSis.cjs';
5
5
  import './BytecodeBuilder-3egMyuDi.cjs';
6
- import './Token-DnU2hwFY.cjs';
6
+ import './Token-BzG5G4ja.cjs';
7
7
  import './pipeline-DPUQt7yL.cjs';
8
8
  import './Value-KtAQNHur.cjs';
9
9
  import './variables.cjs';
10
10
  import './resolvers.cjs';
11
11
  import '@tanstack/query-core';
12
- import './TokenNormalizer-CqBCrYkR.cjs';
12
+ import './TokenNormalizer-DGVa24Q-.cjs';
13
13
  import './ScopeManager-CKfQtl7l.cjs';
14
14
  import './EngineError-DvPSnhZi.cjs';
15
15
  import './Configuration-fVpd-HC-.cjs';
@@ -1,15 +1,15 @@
1
- import { n as CompletionItem } from './PackageRegistry-wUQyVEyw.js';
2
- export { o as LanguageService, q as LanguageServiceOptions, S as SemanticToken } from './PackageRegistry-wUQyVEyw.js';
3
- import { e as TokenCategory } from './Lexer-Dkt7KGaU.js';
4
- import './Parselet-CsmtM3It.js';
1
+ import { n as CompletionItem } from './PackageRegistry-CjDt-Jy_.js';
2
+ export { o as LanguageService, q as LanguageServiceOptions, S as SemanticToken } from './PackageRegistry-CjDt-Jy_.js';
3
+ import { e as TokenCategory } from './Lexer-W9MBOP0V.js';
4
+ import './Parselet-DEdF9I7n.js';
5
5
  import './BytecodeBuilder-3egMyuDi.js';
6
- import './Token-DnU2hwFY.js';
6
+ import './Token-BzG5G4ja.js';
7
7
  import './pipeline-CrsRPmsv.js';
8
8
  import './Value-KtAQNHur.js';
9
9
  import './variables.js';
10
10
  import './resolvers.js';
11
11
  import '@tanstack/query-core';
12
- import './TokenNormalizer-B8zmhO5X.js';
12
+ import './TokenNormalizer-t_GotBxr.js';
13
13
  import './ScopeManager-B5k0nk05.js';
14
14
  import './EngineError-DvPSnhZi.js';
15
15
  import './Configuration-fVpd-HC-.js';
package/dist/language.js CHANGED
@@ -1,8 +1,8 @@
1
- import { getMeasure } from './chunk-NH2O2AUR.js';
2
- import { getTokenCategory } from './chunk-KVILKGMS.js';
3
- export { UNCATEGORIZED_TOKEN_TYPES, getTokenCategory, registerTokenCategory, unregisterTokenCategory } from './chunk-KVILKGMS.js';
4
- import { knownUnits } from './chunk-LIPPNDBE.js';
5
- import './chunk-4MG4XKO2.js';
1
+ import { getMeasure } from './chunk-WC5FFSHB.js';
2
+ import { getTokenCategory } from './chunk-AJA6LUI7.js';
3
+ export { UNCATEGORIZED_TOKEN_TYPES, getTokenCategory, registerTokenCategory, unregisterTokenCategory } from './chunk-AJA6LUI7.js';
4
+ import { knownUnits } from './chunk-M5E34VG5.js';
5
+ import './chunk-PCPX42KL.js';
6
6
  import './chunk-YLJ4XMA6.js';
7
7
 
8
8
  // src/language/LanguageService.ts
package/dist/lexer.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunk7J2Q77OH_cjs = require('./chunk-7J2Q77OH.cjs');
4
- require('./chunk-6BKTCEUP.cjs');
5
- var chunk2R7SVDDB_cjs = require('./chunk-2R7SVDDB.cjs');
6
- var chunkFI4WDYSL_cjs = require('./chunk-FI4WDYSL.cjs');
7
- require('./chunk-3YNVWKR2.cjs');
8
- var chunkEHAHVROS_cjs = require('./chunk-EHAHVROS.cjs');
9
- require('./chunk-53B6KDDJ.cjs');
3
+ var chunkWWOLFXTX_cjs = require('./chunk-WWOLFXTX.cjs');
4
+ require('./chunk-TY3TLZAW.cjs');
5
+ var chunkM4F66R4O_cjs = require('./chunk-M4F66R4O.cjs');
6
+ var chunkR24DI24X_cjs = require('./chunk-R24DI24X.cjs');
7
+ require('./chunk-OUHT5Z36.cjs');
8
+ var chunkCLVQBF5C_cjs = require('./chunk-CLVQBF5C.cjs');
9
+ require('./chunk-MBNQVDVC.cjs');
10
10
  require('./chunk-M4N5GA5Z.cjs');
11
11
  require('./chunk-B7LXJ6LC.cjs');
12
12
 
@@ -14,51 +14,51 @@ require('./chunk-B7LXJ6LC.cjs');
14
14
 
15
15
  Object.defineProperty(exports, "Lexer", {
16
16
  enumerable: true,
17
- get: function () { return chunk7J2Q77OH_cjs.Lexer; }
17
+ get: function () { return chunkWWOLFXTX_cjs.Lexer; }
18
18
  });
19
19
  Object.defineProperty(exports, "LexerState", {
20
20
  enumerable: true,
21
- get: function () { return chunk7J2Q77OH_cjs.LexerState; }
21
+ get: function () { return chunkWWOLFXTX_cjs.LexerState; }
22
22
  });
23
23
  Object.defineProperty(exports, "buildTokenLookup", {
24
24
  enumerable: true,
25
- get: function () { return chunk7J2Q77OH_cjs.buildTokenLookup; }
25
+ get: function () { return chunkWWOLFXTX_cjs.buildTokenLookup; }
26
26
  });
27
27
  Object.defineProperty(exports, "sharedLexer", {
28
28
  enumerable: true,
29
- get: function () { return chunk7J2Q77OH_cjs.sharedLexer; }
29
+ get: function () { return chunkWWOLFXTX_cjs.sharedLexer; }
30
30
  });
31
31
  Object.defineProperty(exports, "ExpressionLexer", {
32
32
  enumerable: true,
33
- get: function () { return chunk2R7SVDDB_cjs.ExpressionLexer; }
33
+ get: function () { return chunkM4F66R4O_cjs.ExpressionLexer; }
34
34
  });
35
35
  Object.defineProperty(exports, "LexerToken", {
36
36
  enumerable: true,
37
- get: function () { return chunk2R7SVDDB_cjs.LexerToken; }
37
+ get: function () { return chunkM4F66R4O_cjs.LexerToken; }
38
38
  });
39
39
  Object.defineProperty(exports, "TokenTypes", {
40
40
  enumerable: true,
41
- get: function () { return chunkFI4WDYSL_cjs.TokenTypes; }
41
+ get: function () { return chunkR24DI24X_cjs.TokenTypes; }
42
42
  });
43
43
  Object.defineProperty(exports, "registerAllTokenTypes", {
44
44
  enumerable: true,
45
- get: function () { return chunkFI4WDYSL_cjs.registerAllTokenTypes; }
45
+ get: function () { return chunkR24DI24X_cjs.registerAllTokenTypes; }
46
46
  });
47
47
  Object.defineProperty(exports, "registerTokenType", {
48
48
  enumerable: true,
49
- get: function () { return chunkFI4WDYSL_cjs.registerTokenType; }
49
+ get: function () { return chunkR24DI24X_cjs.registerTokenType; }
50
50
  });
51
51
  Object.defineProperty(exports, "tokenTypeId", {
52
52
  enumerable: true,
53
- get: function () { return chunkFI4WDYSL_cjs.tokenTypeId; }
53
+ get: function () { return chunkR24DI24X_cjs.tokenTypeId; }
54
54
  });
55
55
  Object.defineProperty(exports, "tokenTypeName", {
56
56
  enumerable: true,
57
- get: function () { return chunkFI4WDYSL_cjs.tokenTypeName; }
57
+ get: function () { return chunkR24DI24X_cjs.tokenTypeName; }
58
58
  });
59
59
  Object.defineProperty(exports, "knownUnits", {
60
60
  enumerable: true,
61
- get: function () { return chunkEHAHVROS_cjs.knownUnits; }
61
+ get: function () { return chunkCLVQBF5C_cjs.knownUnits; }
62
62
  });
63
63
  //# sourceMappingURL=lexer.cjs.map
64
64
  //# sourceMappingURL=lexer.cjs.map
package/dist/lexer.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- import { T as TokenLookup } from './Lexer-y8uY6n6t.cjs';
2
- export { E as ExpressionLexer, I as InlineSolveSpan, L as Lexer, a as LexerState, b as LexerToken, c as LexerVocabulary, d as LineClassification, M as MarkdownLineType, S as ScanLineResult, s as sharedLexer } from './Lexer-y8uY6n6t.cjs';
3
- export { T as Token, a as TokenType, b as TokenTypes, r as registerAllTokenTypes, c as registerTokenType, t as tokenTypeId, d as tokenTypeName } from './Token-DnU2hwFY.cjs';
1
+ import { T as TokenLookup } from './Lexer-Cfm79Dak.cjs';
2
+ export { E as ExpressionLexer, I as InlineSolveSpan, L as Lexer, a as LexerState, b as LexerToken, c as LexerVocabulary, d as LineClassification, M as MarkdownLineType, S as ScanLineResult, s as sharedLexer } from './Lexer-Cfm79Dak.cjs';
3
+ export { T as Token, a as TokenType, b as TokenTypes, r as registerAllTokenTypes, c as registerTokenType, t as tokenTypeId, d as tokenTypeName } from './Token-BzG5G4ja.cjs';
4
4
 
5
5
  /**
6
6
  * The set of unit identifiers the lexer will turn into a UNIT token.
package/dist/lexer.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { T as TokenLookup } from './Lexer-Dkt7KGaU.js';
2
- export { E as ExpressionLexer, I as InlineSolveSpan, L as Lexer, a as LexerState, b as LexerToken, c as LexerVocabulary, d as LineClassification, M as MarkdownLineType, S as ScanLineResult, s as sharedLexer } from './Lexer-Dkt7KGaU.js';
3
- export { T as Token, a as TokenType, b as TokenTypes, r as registerAllTokenTypes, c as registerTokenType, t as tokenTypeId, d as tokenTypeName } from './Token-DnU2hwFY.js';
1
+ import { T as TokenLookup } from './Lexer-W9MBOP0V.js';
2
+ export { E as ExpressionLexer, I as InlineSolveSpan, L as Lexer, a as LexerState, b as LexerToken, c as LexerVocabulary, d as LineClassification, M as MarkdownLineType, S as ScanLineResult, s as sharedLexer } from './Lexer-W9MBOP0V.js';
3
+ export { T as Token, a as TokenType, b as TokenTypes, r as registerAllTokenTypes, c as registerTokenType, t as tokenTypeId, d as tokenTypeName } from './Token-BzG5G4ja.js';
4
4
 
5
5
  /**
6
6
  * The set of unit identifiers the lexer will turn into a UNIT token.
package/dist/lexer.js CHANGED
@@ -1,10 +1,10 @@
1
- export { Lexer, LexerState, buildTokenLookup, sharedLexer } from './chunk-AF5AE52C.js';
2
- import './chunk-KVILKGMS.js';
3
- export { ExpressionLexer, LexerToken } from './chunk-VM5ZKDLH.js';
4
- export { TokenTypes, registerAllTokenTypes, registerTokenType, tokenTypeId, tokenTypeName } from './chunk-626UW5RU.js';
5
- import './chunk-GOLDJNMZ.js';
6
- export { knownUnits } from './chunk-LIPPNDBE.js';
7
- import './chunk-4MG4XKO2.js';
1
+ export { Lexer, LexerState, buildTokenLookup, sharedLexer } from './chunk-2CS6OMZK.js';
2
+ import './chunk-AJA6LUI7.js';
3
+ export { ExpressionLexer, LexerToken } from './chunk-SFQWJMKT.js';
4
+ export { TokenTypes, registerAllTokenTypes, registerTokenType, tokenTypeId, tokenTypeName } from './chunk-GPPLSM2Z.js';
5
+ import './chunk-XBTEO4OB.js';
6
+ export { knownUnits } from './chunk-M5E34VG5.js';
7
+ import './chunk-PCPX42KL.js';
8
8
  import './chunk-6RDSQURE.js';
9
9
  import './chunk-YLJ4XMA6.js';
10
10
  //# sourceMappingURL=lexer.js.map
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  require('./chunk-NGBBNL4K.cjs');
4
- var chunkCGIDYRAX_cjs = require('./chunk-CGIDYRAX.cjs');
5
- require('./chunk-2R7SVDDB.cjs');
6
- require('./chunk-FI4WDYSL.cjs');
7
- require('./chunk-3YNVWKR2.cjs');
8
- require('./chunk-EHAHVROS.cjs');
9
- require('./chunk-53B6KDDJ.cjs');
4
+ var chunkAHCLWAM5_cjs = require('./chunk-AHCLWAM5.cjs');
5
+ require('./chunk-M4F66R4O.cjs');
6
+ require('./chunk-R24DI24X.cjs');
7
+ require('./chunk-OUHT5Z36.cjs');
8
+ require('./chunk-CLVQBF5C.cjs');
9
+ require('./chunk-MBNQVDVC.cjs');
10
10
  require('./chunk-M4N5GA5Z.cjs');
11
11
  require('./chunk-B7LXJ6LC.cjs');
12
12
 
@@ -14,27 +14,27 @@ require('./chunk-B7LXJ6LC.cjs');
14
14
 
15
15
  Object.defineProperty(exports, "BUILTIN_PHRASES", {
16
16
  enumerable: true,
17
- get: function () { return chunkCGIDYRAX_cjs.BUILTIN_PHRASES; }
17
+ get: function () { return chunkAHCLWAM5_cjs.BUILTIN_PHRASES; }
18
18
  });
19
19
  Object.defineProperty(exports, "PhraseTrie", {
20
20
  enumerable: true,
21
- get: function () { return chunkCGIDYRAX_cjs.PhraseTrie; }
21
+ get: function () { return chunkAHCLWAM5_cjs.PhraseTrie; }
22
22
  });
23
23
  Object.defineProperty(exports, "TokenNormalizer", {
24
24
  enumerable: true,
25
- get: function () { return chunkCGIDYRAX_cjs.TokenNormalizer; }
25
+ get: function () { return chunkAHCLWAM5_cjs.TokenNormalizer; }
26
26
  });
27
27
  Object.defineProperty(exports, "createBuiltinNormalizerRules", {
28
28
  enumerable: true,
29
- get: function () { return chunkCGIDYRAX_cjs.createBuiltinNormalizerRules; }
29
+ get: function () { return chunkAHCLWAM5_cjs.createBuiltinNormalizerRules; }
30
30
  });
31
31
  Object.defineProperty(exports, "createFusedToken", {
32
32
  enumerable: true,
33
- get: function () { return chunkCGIDYRAX_cjs.createFusedToken; }
33
+ get: function () { return chunkAHCLWAM5_cjs.createFusedToken; }
34
34
  });
35
35
  Object.defineProperty(exports, "implicitMultiplyRule", {
36
36
  enumerable: true,
37
- get: function () { return chunkCGIDYRAX_cjs.implicitMultiplyRule; }
37
+ get: function () { return chunkAHCLWAM5_cjs.implicitMultiplyRule; }
38
38
  });
39
39
  //# sourceMappingURL=normalizer.cjs.map
40
40
  //# sourceMappingURL=normalizer.cjs.map
@@ -1,6 +1,6 @@
1
- import { N as NormalizerMatch, a as NormalizerRule } from './TokenNormalizer-CqBCrYkR.cjs';
2
- export { b as NormalizerOptions, T as TokenFusion, c as TokenNormalizer, d as createFusedToken } from './TokenNormalizer-CqBCrYkR.cjs';
3
- import { T as Token } from './Token-DnU2hwFY.cjs';
1
+ import { N as NormalizerMatch, a as NormalizerRule } from './TokenNormalizer-DGVa24Q-.cjs';
2
+ export { b as NormalizerOptions, T as TokenFusion, c as TokenNormalizer, d as createFusedToken } from './TokenNormalizer-DGVa24Q-.cjs';
3
+ import { T as Token } from './Token-BzG5G4ja.cjs';
4
4
 
5
5
  /**
6
6
  * PhraseTrie, optimized word-level trie for multi-word phrase fusion.
@@ -1,6 +1,6 @@
1
- import { N as NormalizerMatch, a as NormalizerRule } from './TokenNormalizer-B8zmhO5X.js';
2
- export { b as NormalizerOptions, T as TokenFusion, c as TokenNormalizer, d as createFusedToken } from './TokenNormalizer-B8zmhO5X.js';
3
- import { T as Token } from './Token-DnU2hwFY.js';
1
+ import { N as NormalizerMatch, a as NormalizerRule } from './TokenNormalizer-t_GotBxr.js';
2
+ export { b as NormalizerOptions, T as TokenFusion, c as TokenNormalizer, d as createFusedToken } from './TokenNormalizer-t_GotBxr.js';
3
+ import { T as Token } from './Token-BzG5G4ja.js';
4
4
 
5
5
  /**
6
6
  * PhraseTrie, optimized word-level trie for multi-word phrase fusion.
@@ -1,10 +1,10 @@
1
1
  import './chunk-2RWAXT6O.js';
2
- export { BUILTIN_PHRASES, PhraseTrie, TokenNormalizer, createBuiltinNormalizerRules, createFusedToken, implicitMultiplyRule } from './chunk-OJ6LW7VQ.js';
3
- import './chunk-VM5ZKDLH.js';
4
- import './chunk-626UW5RU.js';
5
- import './chunk-GOLDJNMZ.js';
6
- import './chunk-LIPPNDBE.js';
7
- import './chunk-4MG4XKO2.js';
2
+ export { BUILTIN_PHRASES, PhraseTrie, TokenNormalizer, createBuiltinNormalizerRules, createFusedToken, implicitMultiplyRule } from './chunk-OFXOTECC.js';
3
+ import './chunk-SFQWJMKT.js';
4
+ import './chunk-GPPLSM2Z.js';
5
+ import './chunk-XBTEO4OB.js';
6
+ import './chunk-M5E34VG5.js';
7
+ import './chunk-PCPX42KL.js';
8
8
  import './chunk-6RDSQURE.js';
9
9
  import './chunk-YLJ4XMA6.js';
10
10
  //# sourceMappingURL=normalizer.js.map
package/dist/packages.cjs CHANGED
@@ -1,25 +1,24 @@
1
1
  'use strict';
2
2
 
3
- var chunkBOAVE4FC_cjs = require('./chunk-BOAVE4FC.cjs');
4
- require('./chunk-EEJSQEHC.cjs');
5
- require('./chunk-CGIDYRAX.cjs');
3
+ var chunkCSG5XVNJ_cjs = require('./chunk-CSG5XVNJ.cjs');
4
+ require('./chunk-NZFKROS7.cjs');
5
+ require('./chunk-AHCLWAM5.cjs');
6
6
  require('./chunk-N5YFR4UP.cjs');
7
- require('./chunk-WQTTOGXC.cjs');
7
+ require('./chunk-4AVD7NZW.cjs');
8
8
  require('./chunk-Z2XP767T.cjs');
9
- require('./chunk-J73SJHR3.cjs');
9
+ require('./chunk-BXKJLM5R.cjs');
10
10
  require('./chunk-FEAIOR7N.cjs');
11
- require('./chunk-XJCMXB2E.cjs');
11
+ require('./chunk-2MV4HBKC.cjs');
12
12
  require('./chunk-MZOVP3WI.cjs');
13
13
  require('./chunk-VEKIWQ3F.cjs');
14
- require('./chunk-OT6OJY7C.cjs');
15
- require('./chunk-HTXVVJRA.cjs');
14
+ require('./chunk-4CVLFLOB.cjs');
16
15
  require('./chunk-OC6LTXYS.cjs');
17
- require('./chunk-QNJ4ACRT.cjs');
18
- require('./chunk-2R7SVDDB.cjs');
19
- require('./chunk-FI4WDYSL.cjs');
20
- require('./chunk-3YNVWKR2.cjs');
21
- require('./chunk-EHAHVROS.cjs');
22
- require('./chunk-53B6KDDJ.cjs');
16
+ require('./chunk-NJTXJ5AG.cjs');
17
+ require('./chunk-M4F66R4O.cjs');
18
+ require('./chunk-R24DI24X.cjs');
19
+ require('./chunk-OUHT5Z36.cjs');
20
+ require('./chunk-CLVQBF5C.cjs');
21
+ require('./chunk-MBNQVDVC.cjs');
23
22
  require('./chunk-M4N5GA5Z.cjs');
24
23
  require('./chunk-B7LXJ6LC.cjs');
25
24
 
@@ -27,95 +26,95 @@ require('./chunk-B7LXJ6LC.cjs');
27
26
 
28
27
  Object.defineProperty(exports, "ARITHMETIC_PACKAGE", {
29
28
  enumerable: true,
30
- get: function () { return chunkBOAVE4FC_cjs.ARITHMETIC_PACKAGE; }
29
+ get: function () { return chunkCSG5XVNJ_cjs.ARITHMETIC_PACKAGE; }
31
30
  });
32
31
  Object.defineProperty(exports, "BIGINT_PACKAGE", {
33
32
  enumerable: true,
34
- get: function () { return chunkBOAVE4FC_cjs.BIGINT_PACKAGE; }
33
+ get: function () { return chunkCSG5XVNJ_cjs.BIGINT_PACKAGE; }
35
34
  });
36
35
  Object.defineProperty(exports, "BUILTIN_PACKAGES", {
37
36
  enumerable: true,
38
- get: function () { return chunkBOAVE4FC_cjs.BUILTIN_PACKAGES; }
37
+ get: function () { return chunkCSG5XVNJ_cjs.BUILTIN_PACKAGES; }
39
38
  });
40
39
  Object.defineProperty(exports, "CONDITIONALS_PACKAGE", {
41
40
  enumerable: true,
42
- get: function () { return chunkBOAVE4FC_cjs.CONDITIONALS_PACKAGE; }
41
+ get: function () { return chunkCSG5XVNJ_cjs.CONDITIONALS_PACKAGE; }
43
42
  });
44
43
  Object.defineProperty(exports, "CONVERTERS_PACKAGE", {
45
44
  enumerable: true,
46
- get: function () { return chunkBOAVE4FC_cjs.CONVERTERS_PACKAGE; }
45
+ get: function () { return chunkCSG5XVNJ_cjs.CONVERTERS_PACKAGE; }
47
46
  });
48
47
  Object.defineProperty(exports, "CURRENCY_PACKAGE", {
49
48
  enumerable: true,
50
- get: function () { return chunkBOAVE4FC_cjs.CURRENCY_PACKAGE; }
49
+ get: function () { return chunkCSG5XVNJ_cjs.CURRENCY_PACKAGE; }
51
50
  });
52
51
  Object.defineProperty(exports, "DATETIME_PACKAGE", {
53
52
  enumerable: true,
54
- get: function () { return chunkBOAVE4FC_cjs.DATETIME_PACKAGE; }
53
+ get: function () { return chunkCSG5XVNJ_cjs.DATETIME_PACKAGE; }
55
54
  });
56
55
  Object.defineProperty(exports, "DICE_PACKAGE", {
57
56
  enumerable: true,
58
- get: function () { return chunkBOAVE4FC_cjs.DICE_PACKAGE; }
57
+ get: function () { return chunkCSG5XVNJ_cjs.DICE_PACKAGE; }
59
58
  });
60
59
  Object.defineProperty(exports, "FINANCE_PACKAGE", {
61
60
  enumerable: true,
62
- get: function () { return chunkBOAVE4FC_cjs.FINANCE_PACKAGE; }
61
+ get: function () { return chunkCSG5XVNJ_cjs.FINANCE_PACKAGE; }
63
62
  });
64
63
  Object.defineProperty(exports, "FUNCTION_PACKAGE", {
65
64
  enumerable: true,
66
- get: function () { return chunkBOAVE4FC_cjs.FUNCTION_PACKAGE; }
65
+ get: function () { return chunkCSG5XVNJ_cjs.FUNCTION_PACKAGE; }
67
66
  });
68
67
  Object.defineProperty(exports, "LINES_PACKAGE", {
69
68
  enumerable: true,
70
- get: function () { return chunkBOAVE4FC_cjs.LINES_PACKAGE; }
69
+ get: function () { return chunkCSG5XVNJ_cjs.LINES_PACKAGE; }
71
70
  });
72
71
  Object.defineProperty(exports, "MAPREDUCE_PACKAGE", {
73
72
  enumerable: true,
74
- get: function () { return chunkBOAVE4FC_cjs.MAPREDUCE_PACKAGE; }
73
+ get: function () { return chunkCSG5XVNJ_cjs.MAPREDUCE_PACKAGE; }
75
74
  });
76
75
  Object.defineProperty(exports, "MATHPHRASES_PACKAGE", {
77
76
  enumerable: true,
78
- get: function () { return chunkBOAVE4FC_cjs.MATHPHRASES_PACKAGE; }
77
+ get: function () { return chunkCSG5XVNJ_cjs.MATHPHRASES_PACKAGE; }
79
78
  });
80
79
  Object.defineProperty(exports, "MATRIX_PACKAGE", {
81
80
  enumerable: true,
82
- get: function () { return chunkBOAVE4FC_cjs.MATRIX_PACKAGE; }
81
+ get: function () { return chunkCSG5XVNJ_cjs.MATRIX_PACKAGE; }
83
82
  });
84
83
  Object.defineProperty(exports, "PERCENTAGE_PACKAGE", {
85
84
  enumerable: true,
86
- get: function () { return chunkBOAVE4FC_cjs.PERCENTAGE_PACKAGE; }
85
+ get: function () { return chunkCSG5XVNJ_cjs.PERCENTAGE_PACKAGE; }
87
86
  });
88
87
  Object.defineProperty(exports, "SYMBOLIC_PACKAGE", {
89
88
  enumerable: true,
90
- get: function () { return chunkBOAVE4FC_cjs.SYMBOLIC_PACKAGE; }
89
+ get: function () { return chunkCSG5XVNJ_cjs.SYMBOLIC_PACKAGE; }
91
90
  });
92
91
  Object.defineProperty(exports, "TIME_PACKAGE", {
93
92
  enumerable: true,
94
- get: function () { return chunkBOAVE4FC_cjs.TIME_PACKAGE; }
93
+ get: function () { return chunkCSG5XVNJ_cjs.TIME_PACKAGE; }
95
94
  });
96
95
  Object.defineProperty(exports, "UOM_PACKAGE", {
97
96
  enumerable: true,
98
- get: function () { return chunkBOAVE4FC_cjs.UOM_PACKAGE; }
97
+ get: function () { return chunkCSG5XVNJ_cjs.UOM_PACKAGE; }
99
98
  });
100
99
  Object.defineProperty(exports, "VARIABLES_PACKAGE", {
101
100
  enumerable: true,
102
- get: function () { return chunkBOAVE4FC_cjs.VARIABLES_PACKAGE; }
101
+ get: function () { return chunkCSG5XVNJ_cjs.VARIABLES_PACKAGE; }
103
102
  });
104
103
  Object.defineProperty(exports, "VECTOR_PACKAGE", {
105
104
  enumerable: true,
106
- get: function () { return chunkBOAVE4FC_cjs.VECTOR_PACKAGE; }
105
+ get: function () { return chunkCSG5XVNJ_cjs.VECTOR_PACKAGE; }
107
106
  });
108
107
  Object.defineProperty(exports, "WEATHER_PACKAGE", {
109
108
  enumerable: true,
110
- get: function () { return chunkBOAVE4FC_cjs.WEATHER_PACKAGE; }
109
+ get: function () { return chunkCSG5XVNJ_cjs.WEATHER_PACKAGE; }
111
110
  });
112
111
  Object.defineProperty(exports, "createKnowledgePackage", {
113
112
  enumerable: true,
114
- get: function () { return chunkBOAVE4FC_cjs.createKnowledgePackage; }
113
+ get: function () { return chunkCSG5XVNJ_cjs.createKnowledgePackage; }
115
114
  });
116
115
  Object.defineProperty(exports, "createStocksPackage", {
117
116
  enumerable: true,
118
- get: function () { return chunkBOAVE4FC_cjs.createStocksPackage; }
117
+ get: function () { return chunkCSG5XVNJ_cjs.createStocksPackage; }
119
118
  });
120
119
  //# sourceMappingURL=packages.cjs.map
121
120
  //# sourceMappingURL=packages.cjs.map
@@ -1,14 +1,14 @@
1
- import { I as IEnginePackage } from './PackageRegistry-CblRmrHc.cjs';
2
- import './Parselet-C974vhZG.cjs';
1
+ import { I as IEnginePackage } from './PackageRegistry-pHtKythi.cjs';
2
+ import './Parselet-Cu0bLSis.cjs';
3
3
  import './BytecodeBuilder-3egMyuDi.cjs';
4
- import './Token-DnU2hwFY.cjs';
4
+ import './Token-BzG5G4ja.cjs';
5
5
  import './pipeline-DPUQt7yL.cjs';
6
6
  import './Value-KtAQNHur.cjs';
7
7
  import './variables.cjs';
8
- import './Lexer-y8uY6n6t.cjs';
8
+ import './Lexer-Cfm79Dak.cjs';
9
9
  import './resolvers.cjs';
10
10
  import '@tanstack/query-core';
11
- import './TokenNormalizer-CqBCrYkR.cjs';
11
+ import './TokenNormalizer-DGVa24Q-.cjs';
12
12
  import './ScopeManager-CKfQtl7l.cjs';
13
13
  import './EngineError-DvPSnhZi.cjs';
14
14
  import './Configuration-fVpd-HC-.cjs';
@@ -1,14 +1,14 @@
1
- import { I as IEnginePackage } from './PackageRegistry-wUQyVEyw.js';
2
- import './Parselet-CsmtM3It.js';
1
+ import { I as IEnginePackage } from './PackageRegistry-CjDt-Jy_.js';
2
+ import './Parselet-DEdF9I7n.js';
3
3
  import './BytecodeBuilder-3egMyuDi.js';
4
- import './Token-DnU2hwFY.js';
4
+ import './Token-BzG5G4ja.js';
5
5
  import './pipeline-CrsRPmsv.js';
6
6
  import './Value-KtAQNHur.js';
7
7
  import './variables.js';
8
- import './Lexer-Dkt7KGaU.js';
8
+ import './Lexer-W9MBOP0V.js';
9
9
  import './resolvers.js';
10
10
  import '@tanstack/query-core';
11
- import './TokenNormalizer-B8zmhO5X.js';
11
+ import './TokenNormalizer-t_GotBxr.js';
12
12
  import './ScopeManager-B5k0nk05.js';
13
13
  import './EngineError-DvPSnhZi.js';
14
14
  import './Configuration-fVpd-HC-.js';