@aster-cloud/aster-lang-ts 1.6.0 → 3.0.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 (424) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/dist/scripts/aster.js +5 -12
  3. package/dist/scripts/aster.js.map +1 -1
  4. package/dist/scripts/emit-classfiles.js +3 -1
  5. package/dist/scripts/emit-classfiles.js.map +1 -1
  6. package/dist/scripts/generate-core-ir-types.d.ts +16 -0
  7. package/dist/scripts/generate-core-ir-types.d.ts.map +1 -0
  8. package/dist/scripts/generate-core-ir-types.js +116 -0
  9. package/dist/scripts/generate-core-ir-types.js.map +1 -0
  10. package/dist/scripts/generate-naming-rules.d.ts +5 -0
  11. package/dist/scripts/generate-naming-rules.d.ts.map +1 -0
  12. package/dist/scripts/generate-naming-rules.js +35 -0
  13. package/dist/scripts/generate-naming-rules.js.map +1 -0
  14. package/dist/scripts/golden.js +1 -1
  15. package/dist/scripts/golden.js.map +1 -1
  16. package/dist/src/ast/ast_visitor.d.ts +27 -27
  17. package/dist/src/ast/ast_visitor.d.ts.map +1 -1
  18. package/dist/src/ast/ast_visitor.js.map +1 -1
  19. package/dist/src/browser/schema.d.ts.map +1 -1
  20. package/dist/src/browser/schema.js +1 -3
  21. package/dist/src/browser/schema.js.map +1 -1
  22. package/dist/src/browser.d.ts +7 -0
  23. package/dist/src/browser.d.ts.map +1 -1
  24. package/dist/src/browser.js +7 -4
  25. package/dist/src/browser.js.map +1 -1
  26. package/dist/src/cli/policy-converter.js +6 -10
  27. package/dist/src/cli/policy-converter.js.map +1 -1
  28. package/dist/src/cli/utils/core-ir-file.d.ts +8 -0
  29. package/dist/src/cli/utils/core-ir-file.d.ts.map +1 -0
  30. package/dist/src/cli/utils/core-ir-file.js +29 -0
  31. package/dist/src/cli/utils/core-ir-file.js.map +1 -0
  32. package/dist/src/cnl-printer.d.ts.map +1 -1
  33. package/dist/src/cnl-printer.js +13 -3
  34. package/dist/src/cnl-printer.js.map +1 -1
  35. package/dist/src/compile-pipeline.d.ts.map +1 -1
  36. package/dist/src/compile-pipeline.js +2 -3
  37. package/dist/src/compile-pipeline.js.map +1 -1
  38. package/dist/src/config/lexicons/diagnostic-overlays.generated.d.ts.map +1 -1
  39. package/dist/src/config/lexicons/diagnostic-overlays.generated.js +18 -6
  40. package/dist/src/config/lexicons/diagnostic-overlays.generated.js.map +1 -1
  41. package/dist/src/config/lexicons/fallback-lexicon.d.ts +1 -1
  42. package/dist/src/config/lexicons/fallback-lexicon.d.ts.map +1 -1
  43. package/dist/src/config/lexicons/fallback-lexicon.js +1 -4
  44. package/dist/src/config/lexicons/fallback-lexicon.js.map +1 -1
  45. package/dist/src/config/lexicons/overlay-loader.d.ts +0 -13
  46. package/dist/src/config/lexicons/overlay-loader.d.ts.map +1 -1
  47. package/dist/src/config/lexicons/overlay-loader.js +0 -18
  48. package/dist/src/config/lexicons/overlay-loader.js.map +1 -1
  49. package/dist/src/config/lexicons/types.d.ts +0 -3
  50. package/dist/src/config/lexicons/types.d.ts.map +1 -1
  51. package/dist/src/config/lexicons/types.js.map +1 -1
  52. package/dist/src/core/canonical-decimal.d.ts +3 -0
  53. package/dist/src/core/canonical-decimal.d.ts.map +1 -0
  54. package/dist/src/core/canonical-decimal.js +19 -0
  55. package/dist/src/core/canonical-decimal.js.map +1 -0
  56. package/dist/src/core/canonical-json.d.ts +59 -0
  57. package/dist/src/core/canonical-json.d.ts.map +1 -0
  58. package/dist/src/core/canonical-json.js +250 -0
  59. package/dist/src/core/canonical-json.js.map +1 -0
  60. package/dist/src/core/core-ir-v2.generated.d.ts +807 -0
  61. package/dist/src/core/core-ir-v2.generated.d.ts.map +1 -0
  62. package/dist/src/core/core-ir-v2.generated.js +6 -0
  63. package/dist/src/core/core-ir-v2.generated.js.map +1 -0
  64. package/dist/src/core/core-ir-v2.schema.generated.d.ts +6 -0
  65. package/dist/src/core/core-ir-v2.schema.generated.d.ts.map +1 -0
  66. package/dist/src/core/core-ir-v2.schema.generated.js +2636 -0
  67. package/dist/src/core/core-ir-v2.schema.generated.js.map +1 -0
  68. package/dist/src/core/core_ir.d.ts +27 -11
  69. package/dist/src/core/core_ir.d.ts.map +1 -1
  70. package/dist/src/core/core_ir.js +118 -63
  71. package/dist/src/core/core_ir.js.map +1 -1
  72. package/dist/src/core/index.d.ts +4 -3
  73. package/dist/src/core/index.d.ts.map +1 -1
  74. package/dist/src/core/index.js +3 -2
  75. package/dist/src/core/index.js.map +1 -1
  76. package/dist/src/core/inferred_fields.d.ts +9 -11
  77. package/dist/src/core/inferred_fields.d.ts.map +1 -1
  78. package/dist/src/core/inferred_fields.js +7 -28
  79. package/dist/src/core/inferred_fields.js.map +1 -1
  80. package/dist/src/core/interpreter.js +16 -35
  81. package/dist/src/core/interpreter.js.map +1 -1
  82. package/dist/src/core/lambda-captures.d.ts +14 -0
  83. package/dist/src/core/lambda-captures.d.ts.map +1 -0
  84. package/dist/src/core/lambda-captures.js +128 -0
  85. package/dist/src/core/lambda-captures.js.map +1 -0
  86. package/dist/src/core/pretty_core.d.ts.map +1 -1
  87. package/dist/src/core/pretty_core.js +6 -10
  88. package/dist/src/core/pretty_core.js.map +1 -1
  89. package/dist/src/core/read-core-ir.d.ts +15 -0
  90. package/dist/src/core/read-core-ir.d.ts.map +1 -0
  91. package/dist/src/core/read-core-ir.js +69 -0
  92. package/dist/src/core/read-core-ir.js.map +1 -0
  93. package/dist/src/core/resolution-mark.d.ts +3 -4
  94. package/dist/src/core/resolution-mark.d.ts.map +1 -1
  95. package/dist/src/core/resolution-mark.js +2 -3
  96. package/dist/src/core/resolution-mark.js.map +1 -1
  97. package/dist/src/core/resolve-typed-references.d.ts.map +1 -1
  98. package/dist/src/core/resolve-typed-references.js +11 -27
  99. package/dist/src/core/resolve-typed-references.js.map +1 -1
  100. package/dist/src/core/serialize-core-ir.d.ts +13 -0
  101. package/dist/src/core/serialize-core-ir.d.ts.map +1 -0
  102. package/dist/src/core/serialize-core-ir.js +125 -0
  103. package/dist/src/core/serialize-core-ir.js.map +1 -0
  104. package/dist/src/core/visitor.d.ts.map +1 -1
  105. package/dist/src/core/visitor.js +4 -1
  106. package/dist/src/core/visitor.js.map +1 -1
  107. package/dist/src/diagnostics/error_codes.d.ts +2 -0
  108. package/dist/src/diagnostics/error_codes.d.ts.map +1 -1
  109. package/dist/src/diagnostics/error_codes.js +16 -0
  110. package/dist/src/diagnostics/error_codes.js.map +1 -1
  111. package/dist/src/effects/declared-effects.d.ts +17 -0
  112. package/dist/src/effects/declared-effects.d.ts.map +1 -0
  113. package/dist/src/effects/declared-effects.js +27 -0
  114. package/dist/src/effects/declared-effects.js.map +1 -0
  115. package/dist/src/effects/effect_inference.d.ts.map +1 -1
  116. package/dist/src/effects/effect_inference.js +14 -10
  117. package/dist/src/effects/effect_inference.js.map +1 -1
  118. package/dist/src/effects/effect_inference_browser.d.ts.map +1 -1
  119. package/dist/src/effects/effect_inference_browser.js +14 -9
  120. package/dist/src/effects/effect_inference_browser.js.map +1 -1
  121. package/dist/src/frontend/keyword-translator.d.ts.map +1 -1
  122. package/dist/src/frontend/keyword-translator.js +3 -0
  123. package/dist/src/frontend/keyword-translator.js.map +1 -1
  124. package/dist/src/frontend/lexer.d.ts.map +1 -1
  125. package/dist/src/frontend/lexer.js +7 -3
  126. package/dist/src/frontend/lexer.js.map +1 -1
  127. package/dist/src/frontend/resolve-declarations.d.ts.map +1 -1
  128. package/dist/src/frontend/resolve-declarations.js +3 -23
  129. package/dist/src/frontend/resolve-declarations.js.map +1 -1
  130. package/dist/src/governance/input-refs.js +5 -8
  131. package/dist/src/governance/input-refs.js.map +1 -1
  132. package/dist/src/index.d.ts +5 -0
  133. package/dist/src/index.d.ts.map +1 -1
  134. package/dist/src/index.js +4 -0
  135. package/dist/src/index.js.map +1 -1
  136. package/dist/src/jvm/emitter.d.ts.map +1 -1
  137. package/dist/src/jvm/emitter.js +20 -29
  138. package/dist/src/jvm/emitter.js.map +1 -1
  139. package/dist/src/lower_to_core.d.ts +2 -19
  140. package/dist/src/lower_to_core.d.ts.map +1 -1
  141. package/dist/src/lower_to_core.js +194 -384
  142. package/dist/src/lower_to_core.js.map +1 -1
  143. package/dist/src/lsp/pii_diagnostics.d.ts.map +1 -1
  144. package/dist/src/lsp/pii_diagnostics.js +3 -8
  145. package/dist/src/lsp/pii_diagnostics.js.map +1 -1
  146. package/dist/src/mapping/mapping-ir.d.ts +3 -3
  147. package/dist/src/mapping/mapping-ir.js +3 -3
  148. package/dist/src/nodeid/node-id-map.d.ts +6 -15
  149. package/dist/src/nodeid/node-id-map.d.ts.map +1 -1
  150. package/dist/src/nodeid/node-id-map.js +6 -15
  151. package/dist/src/nodeid/node-id-map.js.map +1 -1
  152. package/dist/src/parser/constraint-parser.js +25 -6
  153. package/dist/src/parser/constraint-parser.js.map +1 -1
  154. package/dist/src/parser/decl-parser.d.ts.map +1 -1
  155. package/dist/src/parser/decl-parser.js +30 -59
  156. package/dist/src/parser/decl-parser.js.map +1 -1
  157. package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
  158. package/dist/src/parser/expr-stmt-parser.js +17 -10
  159. package/dist/src/parser/expr-stmt-parser.js.map +1 -1
  160. package/dist/src/parser/field-variant-parser.d.ts.map +1 -1
  161. package/dist/src/parser/field-variant-parser.js +9 -3
  162. package/dist/src/parser/field-variant-parser.js.map +1 -1
  163. package/dist/src/parser/naming-rules.d.ts +19 -0
  164. package/dist/src/parser/naming-rules.d.ts.map +1 -0
  165. package/dist/src/parser/naming-rules.generated.d.ts +7 -0
  166. package/dist/src/parser/naming-rules.generated.d.ts.map +1 -0
  167. package/dist/src/parser/naming-rules.generated.js +392 -0
  168. package/dist/src/parser/naming-rules.generated.js.map +1 -0
  169. package/dist/src/parser/naming-rules.js +2 -0
  170. package/dist/src/parser/naming-rules.js.map +1 -0
  171. package/dist/src/parser/parse-issue.d.ts +2 -0
  172. package/dist/src/parser/parse-issue.d.ts.map +1 -1
  173. package/dist/src/parser/parse-issue.js +2 -0
  174. package/dist/src/parser/parse-issue.js.map +1 -1
  175. package/dist/src/parser/type-inference.d.ts +29 -70
  176. package/dist/src/parser/type-inference.d.ts.map +1 -1
  177. package/dist/src/parser/type-inference.js +82 -212
  178. package/dist/src/parser/type-inference.js.map +1 -1
  179. package/dist/src/parser/type-parser.d.ts +1 -1
  180. package/dist/src/parser/type-parser.d.ts.map +1 -1
  181. package/dist/src/parser/type-parser.js +31 -21
  182. package/dist/src/parser/type-parser.js.map +1 -1
  183. package/dist/src/parser.d.ts.map +1 -1
  184. package/dist/src/parser.js +2 -5
  185. package/dist/src/parser.js.map +1 -1
  186. package/dist/src/stability/stability_gate.d.ts +1 -1
  187. package/dist/src/stability/stability_gate.d.ts.map +1 -1
  188. package/dist/src/stability/stability_gate.js +2 -26
  189. package/dist/src/stability/stability_gate.js.map +1 -1
  190. package/dist/src/typecheck/async.d.ts.map +1 -1
  191. package/dist/src/typecheck/async.js +4 -1
  192. package/dist/src/typecheck/async.js.map +1 -1
  193. package/dist/src/typecheck/browser.d.ts.map +1 -1
  194. package/dist/src/typecheck/browser.js +4 -3
  195. package/dist/src/typecheck/browser.js.map +1 -1
  196. package/dist/src/typecheck/capabilities.d.ts.map +1 -1
  197. package/dist/src/typecheck/capabilities.js +3 -2
  198. package/dist/src/typecheck/capabilities.js.map +1 -1
  199. package/dist/src/typecheck/context.d.ts +5 -5
  200. package/dist/src/typecheck/context.d.ts.map +1 -1
  201. package/dist/src/typecheck/context.js.map +1 -1
  202. package/dist/src/typecheck/diagnostics.d.ts +2 -2
  203. package/dist/src/typecheck/diagnostics.d.ts.map +1 -1
  204. package/dist/src/typecheck/diagnostics.js.map +1 -1
  205. package/dist/src/typecheck/effects.js +18 -11
  206. package/dist/src/typecheck/effects.js.map +1 -1
  207. package/dist/src/typecheck/expression.d.ts +4 -4
  208. package/dist/src/typecheck/expression.d.ts.map +1 -1
  209. package/dist/src/typecheck/expression.js +1 -1
  210. package/dist/src/typecheck/expression.js.map +1 -1
  211. package/dist/src/typecheck/generics.d.ts +2 -2
  212. package/dist/src/typecheck/generics.d.ts.map +1 -1
  213. package/dist/src/typecheck/generics.js +23 -12
  214. package/dist/src/typecheck/generics.js.map +1 -1
  215. package/dist/src/typecheck/governance.d.ts +1 -1
  216. package/dist/src/typecheck/governance.d.ts.map +1 -1
  217. package/dist/src/typecheck/governance.js +1 -1
  218. package/dist/src/typecheck/governance.js.map +1 -1
  219. package/dist/src/typecheck/module.d.ts.map +1 -1
  220. package/dist/src/typecheck/module.js +7 -6
  221. package/dist/src/typecheck/module.js.map +1 -1
  222. package/dist/src/typecheck/pattern.d.ts +2 -2
  223. package/dist/src/typecheck/pattern.d.ts.map +1 -1
  224. package/dist/src/typecheck/pattern.js +12 -46
  225. package/dist/src/typecheck/pattern.js.map +1 -1
  226. package/dist/src/typecheck/pure.d.ts +19 -19
  227. package/dist/src/typecheck/pure.d.ts.map +1 -1
  228. package/dist/src/typecheck/pure.js.map +1 -1
  229. package/dist/src/typecheck/statement.d.ts +6 -6
  230. package/dist/src/typecheck/statement.d.ts.map +1 -1
  231. package/dist/src/typecheck/statement.js +17 -20
  232. package/dist/src/typecheck/statement.js.map +1 -1
  233. package/dist/src/typecheck/symbol_table.d.ts +2 -2
  234. package/dist/src/typecheck/symbol_table.d.ts.map +1 -1
  235. package/dist/src/typecheck/symbol_table.js.map +1 -1
  236. package/dist/src/typecheck/type_system.d.ts +4 -4
  237. package/dist/src/typecheck/type_system.d.ts.map +1 -1
  238. package/dist/src/typecheck/type_system.js +1 -1
  239. package/dist/src/typecheck/type_system.js.map +1 -1
  240. package/dist/src/typecheck/workflow.d.ts +3 -3
  241. package/dist/src/typecheck/workflow.d.ts.map +1 -1
  242. package/dist/src/typecheck/workflow.js.map +1 -1
  243. package/dist/src/typecheck-pii.d.ts.map +1 -1
  244. package/dist/src/typecheck-pii.js +2 -13
  245. package/dist/src/typecheck-pii.js.map +1 -1
  246. package/dist/src/types/type-inference.d.ts +1 -13
  247. package/dist/src/types/type-inference.d.ts.map +1 -1
  248. package/dist/src/types/type-inference.js +1 -2
  249. package/dist/src/types/type-inference.js.map +1 -1
  250. package/dist/src/types.d.ts +160 -172
  251. package/dist/src/types.d.ts.map +1 -1
  252. package/dist/src/types.js.map +1 -1
  253. package/dist/src/version.d.ts +3 -3
  254. package/dist/src/version.js +3 -3
  255. package/dist/test/helpers/core-ir-v2.d.ts +5 -0
  256. package/dist/test/helpers/core-ir-v2.d.ts.map +1 -0
  257. package/dist/test/helpers/core-ir-v2.js +123 -0
  258. package/dist/test/helpers/core-ir-v2.js.map +1 -0
  259. package/dist/test/helpers/locales-core-ir.d.ts +7 -0
  260. package/dist/test/helpers/locales-core-ir.d.ts.map +1 -0
  261. package/dist/test/helpers/locales-core-ir.js +15 -0
  262. package/dist/test/helpers/locales-core-ir.js.map +1 -0
  263. package/dist/test/helpers/locales-type-inference.d.ts +6 -0
  264. package/dist/test/helpers/locales-type-inference.d.ts.map +1 -0
  265. package/dist/test/helpers/locales-type-inference.js +14 -0
  266. package/dist/test/helpers/locales-type-inference.js.map +1 -0
  267. package/dist/test/helpers/test-factories.d.ts +5 -5
  268. package/dist/test/helpers/test-factories.d.ts.map +1 -1
  269. package/dist/test/helpers/test-factories.js +9 -8
  270. package/dist/test/helpers/test-factories.js.map +1 -1
  271. package/dist/test/integration/compliance/compliance-smoke.test.js +1 -2
  272. package/dist/test/integration/compliance/compliance-smoke.test.js.map +1 -1
  273. package/dist/test/integration/pipeline/pipeline.test.js +1 -1
  274. package/dist/test/integration/pipeline/pipeline.test.js.map +1 -1
  275. package/dist/test/integration/vocabulary-resolution.test.js +1 -1
  276. package/dist/test/integration/vocabulary-resolution.test.js.map +1 -1
  277. package/dist/test/regression/type-checker-golden.test.js +1 -1
  278. package/dist/test/regression/type-checker-golden.test.js.map +1 -1
  279. package/dist/test/type-checker/pii-propagation.test.js +7 -6
  280. package/dist/test/type-checker/pii-propagation.test.js.map +1 -1
  281. package/dist/test/types/core-ir-v2.test-d.d.ts +28 -0
  282. package/dist/test/types/core-ir-v2.test-d.d.ts.map +1 -0
  283. package/dist/test/types/core-ir-v2.test-d.js +5 -0
  284. package/dist/test/types/core-ir-v2.test-d.js.map +1 -0
  285. package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js +4 -3
  286. package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js.map +1 -1
  287. package/dist/test/unit/canonicalizer/article-declaration-names.test.js +1 -1
  288. package/dist/test/unit/canonicalizer/article-declaration-names.test.js.map +1 -1
  289. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js +2 -1
  290. package/dist/test/unit/canonicalizer/chinese-function-syntax.test.js.map +1 -1
  291. package/dist/test/unit/core/canonical-json.test.d.ts +2 -0
  292. package/dist/test/unit/core/canonical-json.test.d.ts.map +1 -0
  293. package/dist/test/unit/core/canonical-json.test.js +38 -0
  294. package/dist/test/unit/core/canonical-json.test.js.map +1 -0
  295. package/dist/test/unit/core/caseless-pattern-name.test.js +6 -8
  296. package/dist/test/unit/core/caseless-pattern-name.test.js.map +1 -1
  297. package/dist/test/unit/core/core-ir-conformance.test.d.ts +2 -0
  298. package/dist/test/unit/core/core-ir-conformance.test.d.ts.map +1 -0
  299. package/dist/test/unit/core/core-ir-conformance.test.js +39 -0
  300. package/dist/test/unit/core/core-ir-conformance.test.js.map +1 -0
  301. package/dist/test/unit/core/core-ir-schema-parity.test.d.ts +2 -0
  302. package/dist/test/unit/core/core-ir-schema-parity.test.d.ts.map +1 -0
  303. package/dist/test/unit/core/core-ir-schema-parity.test.js +25 -0
  304. package/dist/test/unit/core/core-ir-schema-parity.test.js.map +1 -0
  305. package/dist/test/unit/core/core-ir-v2-outputs.test.d.ts +2 -0
  306. package/dist/test/unit/core/core-ir-v2-outputs.test.d.ts.map +1 -0
  307. package/dist/test/unit/core/core-ir-v2-outputs.test.js +128 -0
  308. package/dist/test/unit/core/core-ir-v2-outputs.test.js.map +1 -0
  309. package/dist/test/unit/core/read-core-ir.test.d.ts +2 -0
  310. package/dist/test/unit/core/read-core-ir.test.d.ts.map +1 -0
  311. package/dist/test/unit/core/read-core-ir.test.js +129 -0
  312. package/dist/test/unit/core/read-core-ir.test.js.map +1 -0
  313. package/dist/test/unit/core/resolve-typed-references.test.js +22 -18
  314. package/dist/test/unit/core/resolve-typed-references.test.js.map +1 -1
  315. package/dist/test/unit/diagnostics/lowering-diagnostics-parity.test.js +5 -5
  316. package/dist/test/unit/diagnostics/lowering-diagnostics-parity.test.js.map +1 -1
  317. package/dist/test/unit/diagnostics/parse-diagnostics-parity.test.js +3 -2
  318. package/dist/test/unit/diagnostics/parse-diagnostics-parity.test.js.map +1 -1
  319. package/dist/test/unit/effect/effect-caps-explicit-only.test.d.ts +2 -0
  320. package/dist/test/unit/effect/effect-caps-explicit-only.test.d.ts.map +1 -0
  321. package/dist/test/unit/effect/effect-caps-explicit-only.test.js +73 -0
  322. package/dist/test/unit/effect/effect-caps-explicit-only.test.js.map +1 -0
  323. package/dist/test/unit/effect/effect-inference.test.js +17 -13
  324. package/dist/test/unit/effect/effect-inference.test.js.map +1 -1
  325. package/dist/test/unit/emitter/emitter.test.js +47 -46
  326. package/dist/test/unit/emitter/emitter.test.js.map +1 -1
  327. package/dist/test/unit/formatter-corpus-roundtrip.test.js +5 -1
  328. package/dist/test/unit/formatter-corpus-roundtrip.test.js.map +1 -1
  329. package/dist/test/unit/formatter-roundtrip.test.js +5 -4
  330. package/dist/test/unit/formatter-roundtrip.test.js.map +1 -1
  331. package/dist/test/unit/frontend/resolve-declarations.test.js +13 -14
  332. package/dist/test/unit/frontend/resolve-declarations.test.js.map +1 -1
  333. package/dist/test/unit/governance/governance-check.test.js +1 -1
  334. package/dist/test/unit/governance/governance-check.test.js.map +1 -1
  335. package/dist/test/unit/governance/input-refs-parity.test.js +1 -1
  336. package/dist/test/unit/governance/input-refs-parity.test.js.map +1 -1
  337. package/dist/test/unit/governance/input-refs.test.js +2 -2
  338. package/dist/test/unit/governance/input-refs.test.js.map +1 -1
  339. package/dist/test/unit/governance/no-profile-ir-unchanged.test.js +6 -6
  340. package/dist/test/unit/governance/no-profile-ir-unchanged.test.js.map +1 -1
  341. package/dist/test/unit/interpreter/interpreter.test.js +23 -21
  342. package/dist/test/unit/interpreter/interpreter.test.js.map +1 -1
  343. package/dist/test/unit/interpreter/scope-writeback.test.js +28 -27
  344. package/dist/test/unit/interpreter/scope-writeback.test.js.map +1 -1
  345. package/dist/test/unit/keyword-aliases.test.js +1 -1
  346. package/dist/test/unit/lambda-capture-parity.test.js +43 -14
  347. package/dist/test/unit/lambda-capture-parity.test.js.map +1 -1
  348. package/dist/test/unit/lexicons/fallback-lexicon.test.d.ts +1 -1
  349. package/dist/test/unit/lexicons/fallback-lexicon.test.js +2 -4
  350. package/dist/test/unit/lexicons/fallback-lexicon.test.js.map +1 -1
  351. package/dist/test/unit/lowering/core-ir-v2.test.d.ts +2 -0
  352. package/dist/test/unit/lowering/core-ir-v2.test.d.ts.map +1 -0
  353. package/dist/test/unit/lowering/core-ir-v2.test.js +253 -0
  354. package/dist/test/unit/lowering/core-ir-v2.test.js.map +1 -0
  355. package/dist/test/unit/lowering/lowering.test.js +19 -14
  356. package/dist/test/unit/lowering/lowering.test.js.map +1 -1
  357. package/dist/test/unit/lsp/pii-diagnostics.test.js +33 -30
  358. package/dist/test/unit/lsp/pii-diagnostics.test.js.map +1 -1
  359. package/dist/test/unit/lsp/utils.test.js +5 -4
  360. package/dist/test/unit/lsp/utils.test.js.map +1 -1
  361. package/dist/test/unit/parser/effect-unknown-name.test.js +7 -7
  362. package/dist/test/unit/parser/effect-unknown-name.test.js.map +1 -1
  363. package/dist/test/unit/parser/entry-annotations.test.js +2 -1
  364. package/dist/test/unit/parser/entry-annotations.test.js.map +1 -1
  365. package/dist/test/unit/parser/func-type.test.js +3 -3
  366. package/dist/test/unit/parser/func-type.test.js.map +1 -1
  367. package/dist/test/unit/parser/governance-sugar.test.js +4 -4
  368. package/dist/test/unit/parser/governance-sugar.test.js.map +1 -1
  369. package/dist/test/unit/parser/inferred-type-anchor.test.d.ts +2 -0
  370. package/dist/test/unit/parser/inferred-type-anchor.test.d.ts.map +1 -0
  371. package/dist/test/unit/parser/inferred-type-anchor.test.js +83 -0
  372. package/dist/test/unit/parser/inferred-type-anchor.test.js.map +1 -0
  373. package/dist/test/unit/parser/naming-rules-parity.test.d.ts +2 -0
  374. package/dist/test/unit/parser/naming-rules-parity.test.d.ts.map +1 -0
  375. package/dist/test/unit/parser/naming-rules-parity.test.js +26 -0
  376. package/dist/test/unit/parser/naming-rules-parity.test.js.map +1 -0
  377. package/dist/test/unit/parser/parser.test.js +11 -32
  378. package/dist/test/unit/parser/parser.test.js.map +1 -1
  379. package/dist/test/unit/parser/type-inference-vectors.test.d.ts +2 -0
  380. package/dist/test/unit/parser/type-inference-vectors.test.d.ts.map +1 -0
  381. package/dist/test/unit/parser/type-inference-vectors.test.js +40 -0
  382. package/dist/test/unit/parser/type-inference-vectors.test.js.map +1 -0
  383. package/dist/test/unit/parser/type-inference.test.d.ts +2 -1
  384. package/dist/test/unit/parser/type-inference.test.d.ts.map +1 -1
  385. package/dist/test/unit/parser/type-inference.test.js +93 -159
  386. package/dist/test/unit/parser/type-inference.test.js.map +1 -1
  387. package/dist/test/unit/regex-guard.test.js +6 -6
  388. package/dist/test/unit/regex-guard.test.js.map +1 -1
  389. package/dist/test/unit/rule-call-checks.test.js +2 -1
  390. package/dist/test/unit/rule-call-checks.test.js.map +1 -1
  391. package/dist/test/unit/typecheck/async-discipline-extended.test.js +11 -10
  392. package/dist/test/unit/typecheck/async-discipline-extended.test.js.map +1 -1
  393. package/dist/test/unit/typecheck/effect-prefix-injection.test.js +3 -2
  394. package/dist/test/unit/typecheck/effect-prefix-injection.test.js.map +1 -1
  395. package/dist/test/unit/typecheck/function-return-inference.test.js +33 -32
  396. package/dist/test/unit/typecheck/function-return-inference.test.js.map +1 -1
  397. package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js +5 -4
  398. package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js.map +1 -1
  399. package/dist/test/unit/typecheck/regression-fixes.test.js +110 -112
  400. package/dist/test/unit/typecheck/regression-fixes.test.js.map +1 -1
  401. package/dist/test/unit/typecheck/symbol-table.test.js +3 -2
  402. package/dist/test/unit/typecheck/symbol-table.test.js.map +1 -1
  403. package/dist/test/unit/typecheck/type-system-extended.test.js +6 -5
  404. package/dist/test/unit/typecheck/type-system-extended.test.js.map +1 -1
  405. package/dist/test/unit/typecheck/type-system.test.js +20 -19
  406. package/dist/test/unit/typecheck/type-system.test.js.map +1 -1
  407. package/dist/test/unit/typecheck/typecheck-advanced.test.js +19 -18
  408. package/dist/test/unit/typecheck/typecheck-advanced.test.js.map +1 -1
  409. package/dist/test/unit/typecheck/untyped-field-dynamic.test.js +6 -4
  410. package/dist/test/unit/typecheck/untyped-field-dynamic.test.js.map +1 -1
  411. package/dist/test/unit/version.test.js +3 -3
  412. package/package.json +4 -3
  413. package/dist/src/config/lexicons/type-inference-rules.d.ts +0 -19
  414. package/dist/src/config/lexicons/type-inference-rules.d.ts.map +0 -1
  415. package/dist/src/config/lexicons/type-inference-rules.js +0 -63
  416. package/dist/src/config/lexicons/type-inference-rules.js.map +0 -1
  417. package/dist/src/core/core_ir_json.d.ts +0 -62
  418. package/dist/src/core/core_ir_json.d.ts.map +0 -1
  419. package/dist/src/core/core_ir_json.js +0 -81
  420. package/dist/src/core/core_ir_json.js.map +0 -1
  421. package/dist/test/unit/core_ir_json/core_ir_json.test.d.ts +0 -2
  422. package/dist/test/unit/core_ir_json/core_ir_json.test.d.ts.map +0 -1
  423. package/dist/test/unit/core_ir_json/core_ir_json.test.js +0 -218
  424. package/dist/test/unit/core_ir_json/core_ir_json.test.js.map +0 -1
@@ -0,0 +1,250 @@
1
+ /**
2
+ * Canonical JSON 序列化(ADR 0030 附录 A.2;Core IR v2 规范字节,ADR 0055 §5)。
3
+ *
4
+ * 从 aster-cloud `src/lib/canonical-json.ts` 移植,与 core `aster.core.canonical.CanonicalJson`
5
+ * 字节一致,由 test/unit/core/canonical-json.test.ts 用 core `CanonicalJsonParityTest` 的同一份
6
+ * golden 夹具守护。与 cloud 原件的唯一差别:不含 `canonicalHash`(它依赖 `node:crypto`,
7
+ * 本模块要进浏览器入口);需要哈希的调用方按 `sha256(CANONICALIZATION_VERSION + "\n" + canonicalJson(v))` 自行计算。
8
+ *
9
+ * 以下为 cloud 原件的说明——
10
+ *
11
+ * 决策级持久层的 `canonicalInputHash` / `canonicalOutputHash` / `traceHash` 都基于本模块:
12
+ * 只有在**确定性的** canonical 形式下逐字节比对才有意义(否则 key 顺序 / Decimal 表示 /
13
+ * null 处理的差异会污染 old↔new toolchain 的漂移判定,把无害差异误报成 regression)。
14
+ *
15
+ * 设计铁律(ADR 附录 A.2):
16
+ * - object key 按 Unicode code point 升序;array 保序。
17
+ * - `null` 显式输出;**missing ≠ null**;不丢空对象 / 空数组 / false / 0 / ""。
18
+ * - string 原值不做 trim / case-fold。
19
+ * - number 须 finite;NaN / Infinity 拒绝(NON_CANONICAL_NUMBER)。
20
+ * - Decimal **类型感知**:仅当 typeCtx 声明某路径为 Decimal 时才做 decimal canonical
21
+ * (无 exponent / 无前导 + / 无无意义前导零 / 无 trailing zero / `-0`→`0` / 整数无 `.0`)。
22
+ * - JSON `1` ≠ string `"1"`(不全局转换数字字符串)。
23
+ *
24
+ * 纯模块:无 Node-only API 依赖,无 DB / 网络 / 环境读取。
25
+ */
26
+ /** 当前 canonical 算法版本,写进 hash 前缀 + Execution.canonicalizationVersion。变更算法必 bump。 */
27
+ export const CANONICALIZATION_VERSION = 'aster-canonical-json/v1';
28
+ /**
29
+ * Decimal 展开的资源上限(防大指数 DoS / RangeError)。金融金额远在此范围内,
30
+ * 超限统一报 DECIMAL_TOO_LARGE 而非非受控异常(Codex 审查 L1#3)。
31
+ */
32
+ const MAX_DECIMAL_DIGITS = 4096;
33
+ const MAX_DECIMAL_EXPONENT = 4096;
34
+ export class CanonicalJsonError extends Error {
35
+ reason;
36
+ path;
37
+ constructor(reason, message,
38
+ /** 出错值所在的 JSON 路径(如 `input.amount`),便于诊断。 */
39
+ path) {
40
+ super(`${reason} at ${path}: ${message}`);
41
+ this.reason = reason;
42
+ this.path = path;
43
+ this.name = 'CanonicalJsonError';
44
+ }
45
+ }
46
+ /** 把具体 array 下标路径归一为 `[]` 通配,用于 typeCtx 匹配。 */
47
+ function normalizePathForMatch(path) {
48
+ return path.replace(/\[\d+\]/g, '[]');
49
+ }
50
+ function isDecimalPath(path, ctx) {
51
+ if (!ctx)
52
+ return false;
53
+ return ctx.decimalPaths.has(normalizePathForMatch(path));
54
+ }
55
+ /**
56
+ * 规范化 JSON string(TS 侧用 JSON.stringify 转义;code point 保序,不做业务变换)。
57
+ *
58
+ * ★Java parity 注意(Codex L1#2):本实现的转义策略 = JS `JSON.stringify`(短转义 \n\t 等 /
59
+ * U+0000..001F / 不转义 `/` / 不转义 U+2028 U+2029 / lone surrogate 输出 \udxxx)。Java 权威
60
+ * 侧**不能**依赖 Jackson/Gson 默认转义自动对齐——须实现逐 code point 的 canonical string writer
61
+ * 复刻此策略,并由 TS↔Java golden fixture 固化(发布前 parity gate,见 ADR 0030 附录 A)。
62
+ * 此处不声明「已跨实现保证」,只声明「TS 侧策略确定」。
63
+ */
64
+ function canonicalString(value) {
65
+ return JSON.stringify(value);
66
+ }
67
+ /**
68
+ * 规范化普通 JSON number(非 Decimal 路径)——★双引擎地基铁律:**只允许 safe integer**。
69
+ *
70
+ * 原因(Codex 审查 L1#1/L4):JS `Number#toString()` 与 Java `Double.toString()` 对同一
71
+ * IEEE-754 浮点(如 `1e21`/`0.1`/`1e-7`)产生**不同字符串表示** → 双引擎 hash 不一致,
72
+ * 直接打穿「回放不误报漂移」的地基。金融决策里所有小数/金额本就应走 Decimal(string 承载 +
73
+ * typeCtx),用 IEEE-754 float 表示金额是错误姿势。故非 Decimal number 强制 safe integer,
74
+ * 小数一律要求走 Decimal 路径(否则报 NON_INTEGER_NUMBER,调用方须补 typeCtx 声明)。
75
+ */
76
+ function canonicalNumber(value, path) {
77
+ if (!Number.isFinite(value)) {
78
+ throw new CanonicalJsonError('NON_CANONICAL_NUMBER', `number 非 finite: ${value}`, path);
79
+ }
80
+ // -0 归一为 0(ADR:-0→0)。safe integer 范围内 -0 === 0,toString 即 "0"。
81
+ const normalized = value === 0 ? 0 : value;
82
+ if (!Number.isSafeInteger(normalized)) {
83
+ throw new CanonicalJsonError('NON_INTEGER_NUMBER', `非 Decimal number 只允许 safe integer(小数/超范围须走 Decimal string + typeCtx 声明): ${value}`, path);
84
+ }
85
+ // safe integer 的 toString 跨引擎一致(十进制整数无表示歧义)。
86
+ return normalized.toString();
87
+ }
88
+ /**
89
+ * 规范化 Decimal 值(decimal canonical form):
90
+ * 无 exponent / 无前导 `+` / 无无意义前导零 / 无 trailing zero / `-0`→`0` / 整数无 `.0`。
91
+ * 接受 string(推荐,避免精度损失)或 number(会先转 string)。
92
+ */
93
+ function canonicalDecimal(raw, path) {
94
+ // Decimal number 入参先转其整数字符串(number 已受 safe-integer 约束时才可能到这;
95
+ // 但 Decimal 路径的 number 允许非整数——用 JS 表示转字符串后再规范化)。
96
+ // string 入参:★不 trim(与「string 不 trim」铁律一致,Codex L1#4)——含空白即非法。
97
+ let s;
98
+ if (typeof raw === 'number') {
99
+ // ★Decimal 路径也只接受 safe integer number(Codex 复审 #1 闭环):非整数 JS number
100
+ // 走 Number#toString() 会重新引入跨引擎表示/精度隐患。精确 Decimal 必须以 string 承载。
101
+ if (!Number.isFinite(raw)) {
102
+ throw new CanonicalJsonError('NON_CANONICAL_NUMBER', `Decimal number 非 finite: ${raw}`, path);
103
+ }
104
+ if (!Number.isSafeInteger(raw === 0 ? 0 : raw)) {
105
+ throw new CanonicalJsonError('NON_INTEGER_NUMBER', `Decimal 路径的 number 只允许 safe integer;精确小数须以 string 承载(避免 IEEE-754 精度损失): ${raw}`, path);
106
+ }
107
+ s = (raw === 0 ? 0 : raw).toString();
108
+ }
109
+ else {
110
+ s = raw;
111
+ }
112
+ // 允许可选符号 + 整数部分 + 可选小数部分 + 可选指数(无前后空白)。
113
+ const m = /^([+-]?)(\d+)(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/.exec(s);
114
+ if (!m) {
115
+ throw new CanonicalJsonError('NON_CANONICAL_NUMBER', `Decimal 格式非法: ${JSON.stringify(raw)}`, path);
116
+ }
117
+ const sign = m[1] === '-' ? '-' : '';
118
+ let intPart = m[2] ?? '0';
119
+ let fracPart = m[3] ?? '';
120
+ const expStr = m[4] ?? '0';
121
+ // 资源上限:拒绝大指数 / 超长数字串(防 DoS / RangeError,Codex L1#3)。
122
+ if (expStr.length > 10) {
123
+ throw new CanonicalJsonError('DECIMAL_TOO_LARGE', `Decimal 指数过大: ${expStr}`, path);
124
+ }
125
+ const exp = parseInt(expStr, 10);
126
+ if (Math.abs(exp) > MAX_DECIMAL_EXPONENT) {
127
+ throw new CanonicalJsonError('DECIMAL_TOO_LARGE', `Decimal 指数超限(${exp} > ±${MAX_DECIMAL_EXPONENT})`, path);
128
+ }
129
+ // 展开指数:把 int.frac 视为无小数点的数字串,用 exp 决定小数点位置。
130
+ let digits = intPart + fracPart;
131
+ let pointPos = intPart.length + exp; // 小数点在 digits 中的位置(从左数)。
132
+ // 展开后总位数上限(防 1e4096 类构造出超长串)。
133
+ const expandedLen = pointPos <= 0
134
+ ? (1 - pointPos) + digits.length
135
+ : Math.max(pointPos, digits.length);
136
+ if (expandedLen > MAX_DECIMAL_DIGITS) {
137
+ throw new CanonicalJsonError('DECIMAL_TOO_LARGE', `Decimal 展开位数超限(${expandedLen} > ${MAX_DECIMAL_DIGITS})`, path);
138
+ }
139
+ if (pointPos <= 0) {
140
+ digits = '0'.repeat(1 - pointPos) + digits;
141
+ pointPos = 1;
142
+ }
143
+ if (pointPos >= digits.length) {
144
+ digits = digits + '0'.repeat(pointPos - digits.length);
145
+ }
146
+ intPart = digits.slice(0, pointPos);
147
+ fracPart = digits.slice(pointPos);
148
+ // 去无意义前导零(保留至少一位)。
149
+ intPart = intPart.replace(/^0+(?=\d)/, '');
150
+ // 去 trailing zero。
151
+ fracPart = fracPart.replace(/0+$/, '');
152
+ const body = fracPart.length > 0 ? `${intPart}.${fracPart}` : intPart;
153
+ // -0 归一为 0。
154
+ if (sign === '-' && /^0(?:\.0*)?$/.test(body)) {
155
+ return intPart; // "0"
156
+ }
157
+ return sign + body;
158
+ }
159
+ function canonicalizeValue(value, path, ctx) {
160
+ if (value === null)
161
+ return 'null';
162
+ const t = typeof value;
163
+ if (t === 'boolean')
164
+ return value ? 'true' : 'false';
165
+ if (t === 'number') {
166
+ if (isDecimalPath(path, ctx)) {
167
+ return canonicalDecimal(value, path);
168
+ }
169
+ return canonicalNumber(value, path);
170
+ }
171
+ if (t === 'string') {
172
+ if (isDecimalPath(path, ctx)) {
173
+ // Decimal 路径上的 string 承载精确值 → decimal canonical。
174
+ return canonicalDecimal(value, path);
175
+ }
176
+ return canonicalString(value);
177
+ }
178
+ if (Array.isArray(value)) {
179
+ // array 保序;元素路径用 `[i]`(typeCtx 匹配时归一为 `[]`)。
180
+ // ★拒绝 sparse array holes(Codex L2):map 会跳过 hole 产生非法/歧义 canonical,
181
+ // 用显式 `i in value` 检测,hole 直接 UNSUPPORTED_VALUE。
182
+ const parts = [];
183
+ for (let i = 0; i < value.length; i++) {
184
+ // own-property 检测(非 `i in value`,后者会把原型链索引当存在,Codex 复审 #3)。
185
+ if (!Object.prototype.hasOwnProperty.call(value, i)) {
186
+ throw new CanonicalJsonError('UNSUPPORTED_VALUE', `sparse array hole at index ${i}`, `${path}[${i}]`);
187
+ }
188
+ parts.push(canonicalizeValue(value[i], `${path}[${i}]`, ctx));
189
+ }
190
+ return `[${parts.join(',')}]`;
191
+ }
192
+ if (t === 'object') {
193
+ // ★只接受 plain object(Codex L2):Date/Map/Set/RegExp 等 typeof 也是 object,
194
+ // Object.keys 为空会被静默 canonical 成 `{}`,吞掉语义差异 → 显式拒绝非 plain object。
195
+ if (!isPlainObject(value)) {
196
+ throw new CanonicalJsonError('UNSUPPORTED_VALUE', `非 plain object(Date/Map/Set/RegExp/class 实例等不支持,须先转纯 JSON): ${Object.prototype.toString.call(value)}`, path);
197
+ }
198
+ // object key 按 Unicode code point 升序(含代理对,见 compareByCodePoint)。
199
+ const obj = value;
200
+ const keys = Object.keys(obj).sort(compareByCodePoint);
201
+ const parts = keys.map((k) => {
202
+ // 路径用 `.` 连接(与 typeCtx decimalPaths 写法一致,如 `applicants[].income`)。
203
+ // ★已知限制(Codex L3):JSON key 含 `.` 或 `[` 时路径会与 typeCtx 语法歧义。
204
+ // M1 缓解:Decimal 字段路径应从 schema/typed 模型自动导出(非手写散落),金融 input
205
+ // 字段名不含 `.`/`[`。含特殊字符 key 的子孙退化为普通处理——普通 number 走 safe-integer
206
+ // 铁律、string 保原值,不会静默精度漂移。M2 改 tokenized path array 彻底消歧义。
207
+ const childPath = path === '' ? k : `${path}.${k}`;
208
+ // value 显式输出(missing≠null:只有实际存在的 key 才输出)。
209
+ return `${canonicalString(k)}:${canonicalizeValue(obj[k], childPath, ctx)}`;
210
+ });
211
+ return `{${parts.join(',')}}`;
212
+ }
213
+ // undefined / function / symbol / bigint 等非 JSON 值。
214
+ throw new CanonicalJsonError('UNSUPPORTED_VALUE', `不支持的值类型: ${t}`, path);
215
+ }
216
+ /**
217
+ * 判断是否 plain object(对象字面量 / `Object.create(null)`),排除 Date/Map/Set/RegExp/
218
+ * class 实例等——它们 typeof 也是 'object' 但非纯 JSON 容器(Codex L2)。
219
+ */
220
+ function isPlainObject(value) {
221
+ if (value === null || typeof value !== 'object')
222
+ return false;
223
+ const proto = Object.getPrototypeOf(value);
224
+ return proto === Object.prototype || proto === null;
225
+ }
226
+ /** 按 Unicode code point 比较(正确处理代理对,避免 code unit 序在补充平面字符上的偏差)。 */
227
+ export function compareByCodePoint(a, b) {
228
+ const ai = Array.from(a);
229
+ const bi = Array.from(b);
230
+ const n = Math.min(ai.length, bi.length);
231
+ for (let i = 0; i < n; i++) {
232
+ const ca = ai[i].codePointAt(0);
233
+ const cb = bi[i].codePointAt(0);
234
+ if (ca !== cb)
235
+ return ca - cb;
236
+ }
237
+ return ai.length - bi.length;
238
+ }
239
+ /**
240
+ * 把任意 JSON 值序列化为 canonical 字符串(确定性、跨实现可复现)。
241
+ * @throws CanonicalJsonError 遇到 NaN/Infinity/非法 Decimal/非 JSON 值。
242
+ */
243
+ export function canonicalJson(value, ctx) {
244
+ return canonicalizeValue(value, '', ctx);
245
+ }
246
+ /** 便捷构造 typeCtx(从 Decimal 路径数组)。 */
247
+ export function decimalTypeContext(decimalPaths) {
248
+ return { decimalPaths: new Set(decimalPaths.map(normalizePathForMatch)) };
249
+ }
250
+ //# sourceMappingURL=canonical-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../../../src/core/canonical-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AASlE;;;GAGG;AACH,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAEzB;IAGA;IAJlB,YACkB,MAA4B,EAC5C,OAAe;IACf,6CAA6C;IAC7B,IAAY;QAE5B,KAAK,CAAC,GAAG,MAAM,OAAO,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QAL1B,WAAM,GAAN,MAAM,CAAsB;QAG5B,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAeD,+CAA+C;AAC/C,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,GAAqC;IACxE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,KAAa,EAAE,IAAY;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,oBAAoB,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IACD,+DAA+D;IAC/D,MAAM,UAAU,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,kBAAkB,CAC1B,oBAAoB,EACpB,4EAA4E,KAAK,EAAE,EACnF,IAAI,CACL,CAAC;IACJ,CAAC;IACD,6CAA6C;IAC7C,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,GAAoB,EAAE,IAAY;IAC1D,6DAA6D;IAC7D,iDAAiD;IACjD,8DAA8D;IAC9D,IAAI,CAAS,CAAC;IACd,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,oEAAoE;QACpE,gEAAgE;QAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,4BAA4B,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,kBAAkB,CAC1B,oBAAoB,EACpB,2EAA2E,GAAG,EAAE,EAChF,IAAI,CACL,CAAC;QACJ,CAAC;QACD,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,GAAG,CAAC;IACV,CAAC;IAED,wCAAwC;IACxC,MAAM,CAAC,GAAG,+CAA+C,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,iBAAiB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAC1B,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAE3B,qDAAqD;IACrD,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,EAAE,iBAAiB,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,oBAAoB,EAAE,CAAC;QACzC,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,EAAE,gBAAgB,GAAG,OAAO,oBAAoB,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7G,CAAC;IAED,4CAA4C;IAC5C,IAAI,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAChC,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,yBAAyB;IAE9D,8BAA8B;IAC9B,MAAM,WAAW,GAAG,QAAQ,IAAI,CAAC;QAC/B,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM;QAChC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,WAAW,GAAG,kBAAkB,EAAE,CAAC;QACrC,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,EAAE,kBAAkB,WAAW,MAAM,kBAAkB,GAAG,EAAE,IAAI,CAAC,CAAC;IACpH,CAAC;IAED,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC;QAC3C,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAElC,mBAAmB;IACnB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3C,mBAAmB;IACnB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEvC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACtE,YAAY;IACZ,IAAI,IAAI,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,OAAO,OAAO,CAAC,CAAC,MAAM;IACxB,CAAC;IACD,OAAO,IAAI,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAc,EACd,IAAY,EACZ,GAAqC;IAErC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAElC,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC;IAEvB,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAErD,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,IAAI,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,gBAAgB,CAAC,KAAe,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,eAAe,CAAC,KAAe,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,IAAI,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7B,iDAAiD;YACjD,OAAO,gBAAgB,CAAC,KAAe,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,eAAe,CAAC,KAAe,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,6CAA6C;QAC7C,mEAAmE;QACnE,iDAAiD;QACjD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,4DAA4D;YAC5D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,EAAE,8BAA8B,CAAC,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YACxG,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,sEAAsE;QACtE,mEAAmE;QACnE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,kBAAkB,CAC1B,mBAAmB,EACnB,+DAA+D,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EACtG,IAAI,CACL,CAAC;QACJ,CAAC;QACD,iEAAiE;QACjE,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3B,mEAAmE;YACnE,2DAA2D;YAC3D,2DAA2D;YAC3D,+DAA+D;YAC/D,0DAA0D;YAC1D,MAAM,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;YACnD,4CAA4C;YAC5C,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;QAC9E,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,CAAC;IAED,oDAAoD;IACpD,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACtD,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,kBAAkB,CAAC,CAAS,EAAE,CAAS;IACrD,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QAClC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QAClC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,GAA0B;IACtE,OAAO,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,kBAAkB,CAAC,YAA+B;IAChE,OAAO,EAAE,YAAY,EAAE,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC;AAC5E,CAAC"}