@divmain/jdm-asm 0.2.0 → 0.2.3

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 (395) hide show
  1. package/dist/index.js +2227 -29
  2. package/dist/index.js.map +1 -1
  3. package/package.json +8 -2
  4. package/.github/workflows/ci.yml +0 -53
  5. package/.oxfmtrc.json +0 -16
  6. package/.oxlintrc.json +0 -183
  7. package/AGENTS.md +0 -81
  8. package/asconfig.json +0 -23
  9. package/benchmarks/fixtures.ts +0 -111
  10. package/benchmarks/input-fixtures.ts +0 -80
  11. package/benchmarks/run.ts +0 -913
  12. package/benchmarks/worker-pool.ts +0 -223
  13. package/benchmarks/worker.ts +0 -374
  14. package/scripts/run-all-tests.ts +0 -220
  15. package/src/compiler/EXPRESSION_SUBSETS.md +0 -228
  16. package/src/compiler/asc-compiler.ts +0 -315
  17. package/src/compiler/ast-types.ts +0 -215
  18. package/src/compiler/build.ts +0 -56
  19. package/src/compiler/cache.ts +0 -414
  20. package/src/compiler/code-generators.ts +0 -211
  21. package/src/compiler/codegen/index.ts +0 -15
  22. package/src/compiler/codegen/js-marshal.ts +0 -999
  23. package/src/compiler/codegen/js-validation.ts +0 -243
  24. package/src/compiler/codegen.ts +0 -19
  25. package/src/compiler/compile-time-validation.ts +0 -507
  26. package/src/compiler/cst-visitor.ts +0 -434
  27. package/src/compiler/errors.ts +0 -227
  28. package/src/compiler/expression-parser.ts +0 -536
  29. package/src/compiler/graph.ts +0 -197
  30. package/src/compiler/index.ts +0 -199
  31. package/src/compiler/input-validation.ts +0 -33
  32. package/src/compiler/marshal-gen.ts +0 -21
  33. package/src/compiler/nodes/context-resolvers.ts +0 -197
  34. package/src/compiler/nodes/decision-table.ts +0 -507
  35. package/src/compiler/nodes/decision.ts +0 -292
  36. package/src/compiler/nodes/expression-compiler.ts +0 -526
  37. package/src/compiler/nodes/expression.ts +0 -425
  38. package/src/compiler/nodes/function.ts +0 -316
  39. package/src/compiler/nodes/input.ts +0 -60
  40. package/src/compiler/nodes/switch.ts +0 -547
  41. package/src/compiler/optimizer.ts +0 -948
  42. package/src/compiler/orchestrator.ts +0 -352
  43. package/src/compiler/parser.ts +0 -115
  44. package/src/compiler/result-selection.ts +0 -161
  45. package/src/compiler/runtime/index.ts +0 -26
  46. package/src/compiler/runtime-codegen.ts +0 -211
  47. package/src/compiler/runtime-validation-codegen.ts +0 -294
  48. package/src/compiler/runtime.ts +0 -452
  49. package/src/compiler/schema.ts +0 -245
  50. package/src/compiler/switch-branch-detection.ts +0 -92
  51. package/src/compiler/types.ts +0 -136
  52. package/src/compiler/unary-ast-transforms.ts +0 -148
  53. package/src/compiler/unary-parser.ts +0 -301
  54. package/src/compiler/unary-transform.ts +0 -161
  55. package/src/compiler/utils.ts +0 -27
  56. package/src/compiler/virtual-fs.ts +0 -90
  57. package/src/compiler/wasm-instantiate.ts +0 -127
  58. package/src/index.ts +0 -1
  59. package/src/runtime/arrays.ts +0 -579
  60. package/src/runtime/context.ts +0 -189
  61. package/src/runtime/expressions.ts +0 -1811
  62. package/src/runtime/index.ts +0 -8
  63. package/src/runtime/memory.ts +0 -607
  64. package/src/runtime/strings.ts +0 -260
  65. package/src/runtime/tables.ts +0 -96
  66. package/src/runtime/tsconfig.json +0 -4
  67. package/src/runtime/values.ts +0 -209
  68. package/test-data/README.md +0 -83
  69. package/test-data/decision-tables/basic/8k.json +0 -87992
  70. package/test-data/decision-tables/basic/affiliate-commission-calculator.json +0 -228
  71. package/test-data/decision-tables/basic/airline-loyalty-points-calculations.json +0 -285
  72. package/test-data/decision-tables/basic/airline-upgrade-eligibility.json +0 -466
  73. package/test-data/decision-tables/basic/auto-insurance-premium-calculator.json +0 -412
  74. package/test-data/decision-tables/basic/booking-personalization-system.json +0 -553
  75. package/test-data/decision-tables/basic/care-team-assignment-system.json +0 -585
  76. package/test-data/decision-tables/basic/claim-validation-system.json +0 -307
  77. package/test-data/decision-tables/basic/clinical-lab-result-interpreter.json +0 -433
  78. package/test-data/decision-tables/basic/clinical-treatment-protocol.json +0 -474
  79. package/test-data/decision-tables/basic/credit-limit-adjustment.json +0 -479
  80. package/test-data/decision-tables/basic/customer-eligibility-engine.json +0 -551
  81. package/test-data/decision-tables/basic/customer-lifetime-value.json +0 -200
  82. package/test-data/decision-tables/basic/customer-onboarding-kyc-verification.json +0 -611
  83. package/test-data/decision-tables/basic/customer-service-escalation.json +0 -191
  84. package/test-data/decision-tables/basic/decision-table-discounts.json +0 -168
  85. package/test-data/decision-tables/basic/decision-table-shipping.json +0 -398
  86. package/test-data/decision-tables/basic/delivery-route-optimizer.json +0 -271
  87. package/test-data/decision-tables/basic/device-compatibility-checker.json +0 -303
  88. package/test-data/decision-tables/basic/disaster-relief-fund-allocation.json +0 -296
  89. package/test-data/decision-tables/basic/dynamic-fx-rate-pricing-system.json +0 -237
  90. package/test-data/decision-tables/basic/dynamic-marketplace-comission-calculator.json +0 -242
  91. package/test-data/decision-tables/basic/dynamic-shipping-cost-calculator.json +0 -378
  92. package/test-data/decision-tables/basic/dynamic-tarrif-engine.json +0 -289
  93. package/test-data/decision-tables/basic/dynamic-ticket-pricing.json +0 -325
  94. package/test-data/decision-tables/basic/empty-column-with-space.json +0 -100
  95. package/test-data/decision-tables/basic/empty-column-without-space.json +0 -100
  96. package/test-data/decision-tables/basic/environment-compliance-assessment.json +0 -386
  97. package/test-data/decision-tables/basic/expression-table-map.json +0 -313
  98. package/test-data/decision-tables/basic/flash-sale-eligibility.json +0 -366
  99. package/test-data/decision-tables/basic/flight-dispatch-decision-system.json +0 -455
  100. package/test-data/decision-tables/basic/flight-rebooking-fee-calculator.json +0 -406
  101. package/test-data/decision-tables/basic/government-assistance.json +0 -299
  102. package/test-data/decision-tables/basic/grant-funding-distribution.json +0 -307
  103. package/test-data/decision-tables/basic/hazardous-materials-management-system.json +0 -414
  104. package/test-data/decision-tables/basic/immigration-eligibility-evaluator.json +0 -765
  105. package/test-data/decision-tables/basic/import-duties-calculator.json +0 -318
  106. package/test-data/decision-tables/basic/insurance-agent-commission.json +0 -228
  107. package/test-data/decision-tables/basic/insurance-coverage-calculator.json +0 -362
  108. package/test-data/decision-tables/basic/insurance-underwriting-risk.json +0 -321
  109. package/test-data/decision-tables/basic/international-roaming-policy-manager.json +0 -199
  110. package/test-data/decision-tables/basic/legacy-plan-management.json +0 -434
  111. package/test-data/decision-tables/basic/marketplace-listing-verification-system.json +0 -334
  112. package/test-data/decision-tables/basic/medication-dosage-calculator.json +0 -318
  113. package/test-data/decision-tables/basic/merch-bags.json +0 -171
  114. package/test-data/decision-tables/basic/municipal-permit-evaluation-system.json +0 -364
  115. package/test-data/decision-tables/basic/mvno-partner-enablement.json +0 -313
  116. package/test-data/decision-tables/basic/partner-revenue-sharing.json +0 -244
  117. package/test-data/decision-tables/basic/payment-routing-and-fee-calculator.json +0 -475
  118. package/test-data/decision-tables/basic/policy-discount-calculator.json +0 -307
  119. package/test-data/decision-tables/basic/policy-eligibility-analyzer.json +0 -299
  120. package/test-data/decision-tables/basic/product-listing-scoring.json +0 -358
  121. package/test-data/decision-tables/basic/realtime-fraud-detection.json +0 -235
  122. package/test-data/decision-tables/basic/regional-compliance-manager.json +0 -278
  123. package/test-data/decision-tables/basic/returns-and-refund-policy.json +0 -366
  124. package/test-data/decision-tables/basic/returns-processing-system.json +0 -448
  125. package/test-data/decision-tables/basic/school-district-resource-allocation.json +0 -282
  126. package/test-data/decision-tables/basic/seat-map-optimization.json +0 -325
  127. package/test-data/decision-tables/basic/seller-fee-calculator.json +0 -307
  128. package/test-data/decision-tables/basic/service-level-agreement-enforcement.json +0 -575
  129. package/test-data/decision-tables/basic/smart-financial-product-matcher.json +0 -249
  130. package/test-data/decision-tables/basic/supply-chain-risk.json +0 -316
  131. package/test-data/decision-tables/basic/table-loop.json +0 -93
  132. package/test-data/decision-tables/basic/table.json +0 -76
  133. package/test-data/decision-tables/basic/traffic-violation-penalty-calculator.json +0 -436
  134. package/test-data/decision-tables/basic/transaction-compliance-classifier.json +0 -525
  135. package/test-data/decision-tables/basic/vehicle-claims-resolution.json +0 -310
  136. package/test-data/decision-tables/basic/warehouse-storage-location.json +0 -345
  137. package/test-data/decision-tables/hit-policy-collect/collect-multiple-matches.json +0 -127
  138. package/test-data/decision-tables/hit-policy-collect/collect-no-match.json +0 -95
  139. package/test-data/decision-tables/hit-policy-first/first-match.json +0 -103
  140. package/test-data/decision-tables/hit-policy-first/no-match.json +0 -95
  141. package/test-data/decision-tables/hit-policy-output-order/output-order-respected.json +0 -94
  142. package/test-data/decision-tables/hit-policy-output-order/string-output-order.json +0 -94
  143. package/test-data/decision-tables/hit-policy-priority/priority-respected.json +0 -86
  144. package/test-data/decision-tables/hit-policy-rule-order/rule-order-respected.json +0 -94
  145. package/test-data/decision-tables/hit-policy-unique/all-match-error.json +0 -89
  146. package/test-data/decision-tables/hit-policy-unique/multiple-match-error.json +0 -89
  147. package/test-data/decision-tables/hit-policy-unique/no-match.json +0 -88
  148. package/test-data/decision-tables/hit-policy-unique/unique-match.json +0 -99
  149. package/test-data/expressions/arithmetic/error-cyclic.json +0 -114
  150. package/test-data/expressions/arithmetic/error-missing-input.json +0 -54
  151. package/test-data/expressions/arithmetic/error-missing-output.json +0 -54
  152. package/test-data/expressions/arithmetic/expression-default.json +0 -93
  153. package/test-data/expressions/arithmetic/expression-fields.json +0 -94
  154. package/test-data/expressions/arithmetic/expression-loop.json +0 -94
  155. package/test-data/expressions/arithmetic/expression-passthrough.json +0 -108
  156. package/test-data/expressions/arithmetic/expression.json +0 -69
  157. package/test-data/expressions/arithmetic/nested-request.json +0 -125
  158. package/test-data/expressions/arithmetic/number-function.json +0 -58
  159. package/test-data/expressions/arithmetic/test-number-functions.json +0 -68
  160. package/test-data/expressions/functions/all.json +0 -149
  161. package/test-data/expressions/functions/avg.json +0 -89
  162. package/test-data/expressions/functions/filter.json +0 -109
  163. package/test-data/expressions/functions/flat.json +0 -167
  164. package/test-data/expressions/functions/map-strings.json +0 -65
  165. package/test-data/expressions/functions/map.json +0 -73
  166. package/test-data/expressions/functions/reduce.json +0 -49
  167. package/test-data/expressions/functions/some.json +0 -175
  168. package/test-data/expressions/functions/sort-strings.json +0 -97
  169. package/test-data/expressions/functions/sort.json +0 -97
  170. package/test-data/expressions/logical/logical-and.json +0 -116
  171. package/test-data/expressions/logical/logical-complex.json +0 -260
  172. package/test-data/expressions/logical/logical-not.json +0 -111
  173. package/test-data/expressions/logical/logical-or.json +0 -123
  174. package/test-data/expressions/string/string-comparison.json +0 -128
  175. package/test-data/expressions/string/string-concat.json +0 -106
  176. package/test-data/expressions/string/string-contains.json +0 -125
  177. package/test-data/expressions/string/string-endsWith.json +0 -113
  178. package/test-data/expressions/string/string-indexOf.json +0 -131
  179. package/test-data/expressions/string/string-join.json +0 -92
  180. package/test-data/expressions/string/string-lower.json +0 -94
  181. package/test-data/expressions/string/string-replace.json +0 -130
  182. package/test-data/expressions/string/string-split.json +0 -101
  183. package/test-data/expressions/string/string-startsWith.json +0 -113
  184. package/test-data/expressions/string/string-substring.json +0 -138
  185. package/test-data/expressions/string/string-trim.json +0 -100
  186. package/test-data/expressions/string/string-upper.json +0 -94
  187. package/test-data/other/custom.json +0 -51
  188. package/test-data/other/customer-input-schema.json +0 -34
  189. package/test-data/other/customer-output-schema.json +0 -34
  190. package/test-data/other/passthrough.json +0 -31
  191. package/test-data/sub-decisions/basic/$nodes-child.json +0 -31
  192. package/test-data/sub-decisions/basic/$nodes-parent.json +0 -49
  193. package/test-data/sub-decisions/basic/recursive-table1.json +0 -49
  194. package/test-data/sub-decisions/basic/recursive-table2.json +0 -49
  195. package/test-data/sub-decisions/complex-multi/approval-decision.json +0 -31
  196. package/test-data/sub-decisions/complex-multi/complex-dag.json +0 -175
  197. package/test-data/sub-decisions/complex-multi/credit-check.json +0 -31
  198. package/test-data/sub-decisions/complex-multi/customer-segmentation.json +0 -31
  199. package/test-data/sub-decisions/complex-multi/discount-eligibility.json +0 -31
  200. package/test-data/sub-decisions/complex-multi/eligibility-check.json +0 -31
  201. package/test-data/sub-decisions/complex-multi/final-offer.json +0 -31
  202. package/test-data/sub-decisions/complex-multi/income-verification.json +0 -31
  203. package/test-data/sub-decisions/complex-multi/linear-chain.json +0 -121
  204. package/test-data/sub-decisions/complex-multi/pricing-calculation.json +0 -31
  205. package/test-data/sub-decisions/complex-multi/product-eligibility.json +0 -31
  206. package/test-data/sub-decisions/complex-multi/risk-assessment.json +0 -31
  207. package/test-data/sub-decisions/complex-multi/shared-validation.json +0 -31
  208. package/test-data/sub-decisions/complex-multi/validation.json +0 -31
  209. package/test-data/sub-decisions/diamond/decision-a.json +0 -31
  210. package/test-data/sub-decisions/diamond/decision-b.json +0 -31
  211. package/test-data/sub-decisions/diamond/decision-c.json +0 -31
  212. package/test-data/sub-decisions/diamond/decision-shared.json +0 -31
  213. package/test-data/sub-decisions/diamond/diamond-pattern.json +0 -109
  214. package/test-data/sub-decisions/error-propagation/parent-calls-error.json +0 -44
  215. package/test-data/sub-decisions/error-propagation/sub-decision-with-error.json +0 -60
  216. package/test-data/switch-nodes/basic/account-dormancy-management.json +0 -245
  217. package/test-data/switch-nodes/basic/application-risk-assessment.json +0 -474
  218. package/test-data/switch-nodes/basic/cellular-data-rollover-system.json +0 -281
  219. package/test-data/switch-nodes/basic/clinical-pathway-selection.json +0 -454
  220. package/test-data/switch-nodes/basic/insurance-prior-authorization.json +0 -467
  221. package/test-data/switch-nodes/basic/last-mile-delivery-assignment.json +0 -373
  222. package/test-data/switch-nodes/basic/loan-approval.json +0 -469
  223. package/test-data/switch-nodes/basic/multi-switch.json +0 -498
  224. package/test-data/switch-nodes/basic/online-checkin-eligibility.json +0 -285
  225. package/test-data/switch-nodes/basic/order-consolidation-system.json +0 -493
  226. package/test-data/switch-nodes/basic/seller-approval-workflow.json +0 -383
  227. package/test-data/switch-nodes/basic/set-fee.json +0 -243
  228. package/test-data/switch-nodes/basic/shipping-carrier-selector.json +0 -379
  229. package/test-data/switch-nodes/basic/switch-node.json +0 -167
  230. package/test-data/switch-nodes/basic/switch-performance-2.json +0 -1307
  231. package/test-data/switch-nodes/basic/switch-performance.json +0 -691
  232. package/test-data/switch-nodes/basic/tax-exemption.json +0 -295
  233. package/test-data/switch-nodes/basic/warehouse-cross-docking.json +0 -313
  234. package/test-data/switch-nodes/default-cases/switch-with-default.json +0 -134
  235. package/test-data/zen-reference/$nodes-child.json +0 -69
  236. package/test-data/zen-reference/$nodes-parent.json +0 -34
  237. package/test-data/zen-reference/8k.json +0 -87992
  238. package/test-data/zen-reference/credit-analysis.json +0 -324
  239. package/test-data/zen-reference/custom.json +0 -51
  240. package/test-data/zen-reference/customer-input-schema.json +0 -34
  241. package/test-data/zen-reference/customer-output-schema.json +0 -34
  242. package/test-data/zen-reference/error-cyclic.json +0 -114
  243. package/test-data/zen-reference/error-missing-input.json +0 -54
  244. package/test-data/zen-reference/error-missing-output.json +0 -54
  245. package/test-data/zen-reference/expression.json +0 -69
  246. package/test-data/zen-reference/function-v2.json +0 -48
  247. package/test-data/zen-reference/function.json +0 -46
  248. package/test-data/zen-reference/graphs/account-dormancy-management.json +0 -245
  249. package/test-data/zen-reference/graphs/affiliate-commission-calculator.json +0 -228
  250. package/test-data/zen-reference/graphs/airline-loyalty-points-calculations.json +0 -285
  251. package/test-data/zen-reference/graphs/airline-upgrade-eligibility.json +0 -466
  252. package/test-data/zen-reference/graphs/aml.json +0 -537
  253. package/test-data/zen-reference/graphs/application-risk-assessment.json +0 -474
  254. package/test-data/zen-reference/graphs/auto-insurance-premium-calculator.json +0 -412
  255. package/test-data/zen-reference/graphs/booking-personalization-system.json +0 -553
  256. package/test-data/zen-reference/graphs/care-team-assignment-system.json +0 -585
  257. package/test-data/zen-reference/graphs/cellular-data-rollover-system.json +0 -281
  258. package/test-data/zen-reference/graphs/claim-validation-system.json +0 -307
  259. package/test-data/zen-reference/graphs/clinical-lab-result-interpreter.json +0 -433
  260. package/test-data/zen-reference/graphs/clinical-pathway-selection.json +0 -454
  261. package/test-data/zen-reference/graphs/clinical-treatment-protocol.json +0 -474
  262. package/test-data/zen-reference/graphs/company-analysis.json +0 -390
  263. package/test-data/zen-reference/graphs/credit-limit-adjustment.json +0 -479
  264. package/test-data/zen-reference/graphs/customer-eligibility-engine.json +0 -551
  265. package/test-data/zen-reference/graphs/customer-lifetime-value.json +0 -200
  266. package/test-data/zen-reference/graphs/customer-onboarding-kyc-verification.json +0 -611
  267. package/test-data/zen-reference/graphs/customer-service-escalation.json +0 -191
  268. package/test-data/zen-reference/graphs/decision-table-discounts.json +0 -168
  269. package/test-data/zen-reference/graphs/decision-table-shipping.json +0 -398
  270. package/test-data/zen-reference/graphs/delivery-route-optimizer.json +0 -271
  271. package/test-data/zen-reference/graphs/device-compatibility-checker.json +0 -303
  272. package/test-data/zen-reference/graphs/disaster-relief-fund-allocation.json +0 -296
  273. package/test-data/zen-reference/graphs/dynamic-fx-rate-pricing-system.json +0 -237
  274. package/test-data/zen-reference/graphs/dynamic-marketplace-comission-calculator.json +0 -242
  275. package/test-data/zen-reference/graphs/dynamic-shipping-cost-calculator.json +0 -378
  276. package/test-data/zen-reference/graphs/dynamic-tarrif-engine.json +0 -289
  277. package/test-data/zen-reference/graphs/dynamic-ticket-pricing.json +0 -325
  278. package/test-data/zen-reference/graphs/empty-column-with-space.json +0 -100
  279. package/test-data/zen-reference/graphs/empty-column-without-space.json +0 -100
  280. package/test-data/zen-reference/graphs/environment-compliance-assessment.json +0 -386
  281. package/test-data/zen-reference/graphs/expression-default.json +0 -93
  282. package/test-data/zen-reference/graphs/expression-fields.json +0 -94
  283. package/test-data/zen-reference/graphs/expression-loop.json +0 -94
  284. package/test-data/zen-reference/graphs/expression-passthrough.json +0 -108
  285. package/test-data/zen-reference/graphs/expression-table-map.json +0 -313
  286. package/test-data/zen-reference/graphs/flash-sale-eligibility.json +0 -366
  287. package/test-data/zen-reference/graphs/flight-dispatch-decision-system.json +0 -455
  288. package/test-data/zen-reference/graphs/flight-rebooking-fee-calculator.json +0 -406
  289. package/test-data/zen-reference/graphs/government-assistance.json +0 -299
  290. package/test-data/zen-reference/graphs/grant-funding-distribution.json +0 -307
  291. package/test-data/zen-reference/graphs/hazardous-materials-management-system.json +0 -414
  292. package/test-data/zen-reference/graphs/immigration-eligibility-evaluator.json +0 -765
  293. package/test-data/zen-reference/graphs/import-duties-calculator.json +0 -318
  294. package/test-data/zen-reference/graphs/insurance-agent-commission.json +0 -228
  295. package/test-data/zen-reference/graphs/insurance-breakdown.json +0 -421
  296. package/test-data/zen-reference/graphs/insurance-coverage-calculator.json +0 -362
  297. package/test-data/zen-reference/graphs/insurance-prior-authorization.json +0 -467
  298. package/test-data/zen-reference/graphs/insurance-underwriting-risk.json +0 -321
  299. package/test-data/zen-reference/graphs/international-roaming-policy-manager.json +0 -199
  300. package/test-data/zen-reference/graphs/last-mile-delivery-assignment.json +0 -373
  301. package/test-data/zen-reference/graphs/legacy-plan-management.json +0 -434
  302. package/test-data/zen-reference/graphs/loan-approval.json +0 -469
  303. package/test-data/zen-reference/graphs/marketplace-listing-verification-system.json +0 -334
  304. package/test-data/zen-reference/graphs/medication-dosage-calculator.json +0 -318
  305. package/test-data/zen-reference/graphs/merch-bags.json +0 -171
  306. package/test-data/zen-reference/graphs/multi-switch.json +0 -498
  307. package/test-data/zen-reference/graphs/municipal-permit-evaluation-system.json +0 -364
  308. package/test-data/zen-reference/graphs/mvno-partner-enablement.json +0 -313
  309. package/test-data/zen-reference/graphs/nested-request.json +0 -125
  310. package/test-data/zen-reference/graphs/online-checkin-eligibility.json +0 -285
  311. package/test-data/zen-reference/graphs/order-consolidation-system.json +0 -493
  312. package/test-data/zen-reference/graphs/partner-revenue-sharing.json +0 -244
  313. package/test-data/zen-reference/graphs/payment-routing-and-fee-calculator.json +0 -475
  314. package/test-data/zen-reference/graphs/policy-discount-calculator.json +0 -307
  315. package/test-data/zen-reference/graphs/policy-eligibility-analyzer.json +0 -299
  316. package/test-data/zen-reference/graphs/product-listing-scoring.json +0 -358
  317. package/test-data/zen-reference/graphs/realtime-fraud-detection.json +0 -235
  318. package/test-data/zen-reference/graphs/regional-compliance-manager.json +0 -278
  319. package/test-data/zen-reference/graphs/returns-and-refund-policy.json +0 -366
  320. package/test-data/zen-reference/graphs/returns-processing-system.json +0 -448
  321. package/test-data/zen-reference/graphs/school-district-resource-allocation.json +0 -282
  322. package/test-data/zen-reference/graphs/seat-map-optimization.json +0 -325
  323. package/test-data/zen-reference/graphs/seller-approval-workflow.json +0 -383
  324. package/test-data/zen-reference/graphs/seller-fee-calculator.json +0 -307
  325. package/test-data/zen-reference/graphs/service-level-agreement-enforcement.json +0 -575
  326. package/test-data/zen-reference/graphs/set-fee.json +0 -243
  327. package/test-data/zen-reference/graphs/shipping-carrier-selector.json +0 -379
  328. package/test-data/zen-reference/graphs/smart-financial-product-matcher.json +0 -249
  329. package/test-data/zen-reference/graphs/supply-chain-risk.json +0 -316
  330. package/test-data/zen-reference/graphs/table-loop.json +0 -93
  331. package/test-data/zen-reference/graphs/tax-exemption.json +0 -295
  332. package/test-data/zen-reference/graphs/traffic-violation-penalty-calculator.json +0 -436
  333. package/test-data/zen-reference/graphs/transaction-compliance-classifier.json +0 -525
  334. package/test-data/zen-reference/graphs/vehicle-claims-resolution.json +0 -310
  335. package/test-data/zen-reference/graphs/warehouse-cross-docking.json +0 -313
  336. package/test-data/zen-reference/graphs/warehouse-storage-location.json +0 -345
  337. package/test-data/zen-reference/http-function.json +0 -34
  338. package/test-data/zen-reference/infinite-function.json +0 -46
  339. package/test-data/zen-reference/js/imports.js +0 -25
  340. package/test-data/zen-reference/passthrough.json +0 -31
  341. package/test-data/zen-reference/recursive-table1.json +0 -49
  342. package/test-data/zen-reference/recursive-table2.json +0 -49
  343. package/test-data/zen-reference/sleep-function.json +0 -34
  344. package/test-data/zen-reference/switch-node.json +0 -167
  345. package/test-data/zen-reference/switch-performance-2.json +0 -1307
  346. package/test-data/zen-reference/switch-performance.json +0 -691
  347. package/test-data/zen-reference/table.json +0 -76
  348. package/tests/helpers/index.ts +0 -73
  349. package/tests/helpers/mock-context.ts +0 -231
  350. package/tests/helpers/round-trip.ts +0 -398
  351. package/tests/helpers/test-harness-comparison.ts +0 -325
  352. package/tests/helpers/test-harness-wasm.ts +0 -710
  353. package/tests/helpers/test-harness.ts +0 -28
  354. package/tests/helpers/wasm-test.ts +0 -659
  355. package/tests/integration/compilation-errors.test.ts +0 -864
  356. package/tests/integration/decision-tables.test.ts +0 -531
  357. package/tests/integration/edge-cases.test.ts +0 -787
  358. package/tests/integration/expressions.test.ts +0 -513
  359. package/tests/integration/function-node-integration.test.ts +0 -182
  360. package/tests/integration/sub-decisions.test.ts +0 -108
  361. package/tests/integration/switch-nodes.test.ts +0 -399
  362. package/tests/integration/unary-or-matching.test.ts +0 -53
  363. package/tests/integration/wasm-data-types.test.ts +0 -398
  364. package/tests/integration/wasm-errors.test.ts +0 -199
  365. package/tests/integration/wasm-execution.test.ts +0 -348
  366. package/tests/integration/wasm-memory.test.ts +0 -228
  367. package/tests/scripts/analyze-coverage.ts +0 -166
  368. package/tests/scripts/categorize-tests.ts +0 -396
  369. package/tests/scripts/coverage-analysis.ts +0 -836
  370. package/tests/unit/compiler/cache.test.ts +0 -238
  371. package/tests/unit/compiler/errors.test.ts +0 -316
  372. package/tests/unit/compiler/graph-scalability.test.ts +0 -510
  373. package/tests/unit/compiler/graph.test.ts +0 -878
  374. package/tests/unit/compiler/input-validation.test.ts +0 -447
  375. package/tests/unit/compiler/logical-and-parser.test.ts +0 -143
  376. package/tests/unit/compiler/logical-not-parser.test.ts +0 -107
  377. package/tests/unit/compiler/logical-or-parser.test.ts +0 -236
  378. package/tests/unit/compiler/marshal-gen/marshal-gen.test.ts +0 -97
  379. package/tests/unit/compiler/nodes/decision-table.test.ts +0 -103
  380. package/tests/unit/compiler/nodes/decision.test.ts +0 -182
  381. package/tests/unit/compiler/nodes/function-compile.test.ts +0 -204
  382. package/tests/unit/compiler/nodes/function.test.ts +0 -176
  383. package/tests/unit/compiler/nodes/input.test.ts +0 -30
  384. package/tests/unit/compiler/nodes/switch.test.ts +0 -127
  385. package/tests/unit/compiler/optimizer-cache.test.ts +0 -327
  386. package/tests/unit/compiler/optimizer-implementation.test.ts +0 -625
  387. package/tests/unit/compiler/parser.test.ts +0 -508
  388. package/tests/unit/compiler/runtime-error-cleanup.test.ts +0 -426
  389. package/tests/unit/compiler/runtime-validation.test.ts +0 -303
  390. package/tests/unit/compiler/runtime.test.ts +0 -221
  391. package/tests/unit/compiler/schema/schema.test.ts +0 -248
  392. package/tests/unit/compiler/unary-ast-transforms.test.ts +0 -245
  393. package/tsconfig.json +0 -27
  394. package/tsup.config.ts +0 -11
  395. package/vitest.config.ts +0 -12
@@ -1,315 +0,0 @@
1
- /**
2
- * AssemblyScript compilation to WebAssembly.
3
- * Handles compiler invocation, optimization levels, and memory configuration.
4
- */
5
-
6
- import * as fs from 'fs';
7
- import * as path from 'path';
8
- import type { CompilerOptions } from './types';
9
- import { CompilationError, ErrorCode } from './errors';
10
- import { createVirtualFS, createASCFileSystemCallbacks, getCompilationOutput } from './virtual-fs';
11
-
12
- // ============================================================================
13
- // Compilation Thresholds and Memory Constants
14
- // ============================================================================
15
-
16
- /**
17
- * Threshold for determining if a module is "large" (40KB of source code).
18
- *
19
- * Empirically determined based on decision table compilation patterns:
20
- * - Tables with 1000+ rules generate >40KB of code
21
- * - These create deeply nested if/else chains that stress the optimizer
22
- * - Larger modules need more initial memory to avoid runtime growth overhead
23
- *
24
- * Large modules require:
25
- * 1. More initial memory pages (16 vs 4) for string allocations
26
- * 2. Lower optimization level (O2 vs O3) to avoid stack overflow in Binaryen
27
- * 3. Skipping WAT generation to avoid O(n²) memory complexity
28
- */
29
- const LARGE_MODULE_THRESHOLD_BYTES = 40000;
30
-
31
- /**
32
- * Threshold for "very large" modules (1MB of source code).
33
- * These modules skip optimization entirely to avoid Binaryen crashes.
34
- */
35
- const VERY_LARGE_MODULE_THRESHOLD_BYTES = 1_000_000;
36
-
37
- // Normal module memory configuration (for modules < 40KB)
38
- /** Initial memory pages for normal modules (256KB total) */
39
- const NORMAL_MODULE_INITIAL_PAGES = 4;
40
- /** Maximum memory pages for normal modules (1MB total) */
41
- const NORMAL_MODULE_MAX_PAGES = 16;
42
-
43
- // Large module memory configuration (for modules >= 40KB)
44
- /** Initial memory pages for large modules (1MB total) */
45
- const LARGE_MODULE_INITIAL_PAGES = 16;
46
- /** Maximum memory pages for large modules (16MB total) */
47
- const LARGE_MODULE_MAX_PAGES = 256;
48
-
49
- /**
50
- * Compilation settings based on code size.
51
- * Large modules need different optimization and memory settings.
52
- */
53
- export interface CompilationSettings {
54
- /** Whether the module is considered large (>40KB) */
55
- isLargeModule: boolean;
56
- /** Initial WebAssembly memory pages (64KB each) */
57
- initialMemoryPages: number;
58
- /** Maximum WebAssembly memory pages */
59
- maxMemoryPages: number;
60
- /** Binaryen optimization level (0-3) */
61
- optimizeLevel: number;
62
- /** Binaryen shrink level (0-2) */
63
- shrinkLevel: number;
64
- /** Whether to generate WAT text format */
65
- generateWat: boolean;
66
- }
67
-
68
- /**
69
- * Determine compilation settings based on code size.
70
- *
71
- * Memory pages are 64KB each (WASM_PAGE_SIZE_BYTES). Large modules need more
72
- * initial memory to avoid runtime allocation overhead during string operations
73
- * and table lookups.
74
- * - Normal modules: NORMAL_MODULE_INITIAL_PAGES (256KB), max NORMAL_MODULE_MAX_PAGES (1MB)
75
- * - Large modules: LARGE_MODULE_INITIAL_PAGES (1MB), max LARGE_MODULE_MAX_PAGES (16MB)
76
- *
77
- * Large modules (>LARGE_MODULE_THRESHOLD_BYTES) need more memory because:
78
- * (1) decision tables generate many string allocations during lookup,
79
- * (2) each string requires heap allocation at runtime, and
80
- * (3) insufficient initial memory causes frequent growth operations which are slow.
81
- *
82
- * Optimization levels scaled by module size because:
83
- * (1) Binaryen's optimizer recursively traverses deeply nested if/else chains,
84
- * (2) decision tables with 1000+ rules create nesting depth that exceeds stack limits at O3,
85
- * (3) O2 uses iterative algorithms that handle deep nesting,
86
- * (4) very large modules (>1MB) disable optimization entirely to avoid 10+ minute compile times.
87
- *
88
- * WAT generation skipped for large modules because Binaryen's text emitter has O(n²)
89
- * memory complexity and crashes with OOM on modules >LARGE_MODULE_THRESHOLD_BYTES source.
90
- *
91
- * @param codeLength - Length of the AssemblyScript source code
92
- * @returns Compilation settings appropriate for the code size
93
- */
94
- export function getCompilationSettings(codeLength: number): CompilationSettings {
95
- const isLargeModule = codeLength > LARGE_MODULE_THRESHOLD_BYTES;
96
- const isVeryLargeModule = codeLength > VERY_LARGE_MODULE_THRESHOLD_BYTES;
97
-
98
- let optimizeLevel: number;
99
- let shrinkLevel: number;
100
-
101
- if (isVeryLargeModule) {
102
- // Very large module (>1MB source) - skip optimization to avoid Binaryen crash
103
- optimizeLevel = 0;
104
- shrinkLevel = 0;
105
- } else if (isLargeModule) {
106
- // Medium-large module (40KB-1MB) - use moderate optimization
107
- optimizeLevel = 2;
108
- shrinkLevel = 1;
109
- } else {
110
- // Small module (<40KB) - use full optimization
111
- optimizeLevel = 3;
112
- shrinkLevel = 2;
113
- }
114
-
115
- return {
116
- isLargeModule,
117
- initialMemoryPages: isLargeModule ? LARGE_MODULE_INITIAL_PAGES : NORMAL_MODULE_INITIAL_PAGES,
118
- maxMemoryPages: isLargeModule ? LARGE_MODULE_MAX_PAGES : NORMAL_MODULE_MAX_PAGES,
119
- optimizeLevel,
120
- shrinkLevel,
121
- generateWat: !isLargeModule,
122
- };
123
- }
124
-
125
- /**
126
- * Create a secure temporary debug file with restricted permissions.
127
- *
128
- * Creates a temporary directory with a random name and writes the code to a file
129
- * with 0o600 permissions (owner read/write only).
130
- *
131
- * This function only writes files if a debug output path is provided via options
132
- * or the JDM_ASM_DEBUG_OUTPUT environment variable.
133
- *
134
- * @param code - The code content to write
135
- * @param basePath - Base directory for debug output (from options or env var)
136
- * @param suffix - Optional suffix for the filename (e.g., "-no-binary")
137
- * @returns Path to the created debug file, or null if debug output is disabled or write fails
138
- */
139
- function createSecureDebugFile(
140
- code: string,
141
- basePath: string | undefined,
142
- suffix = '',
143
- ): string | null {
144
- // Only write debug files if explicitly requested
145
- if (!basePath) {
146
- return null;
147
- }
148
-
149
- try {
150
- // Create a secure temporary directory with random name
151
- const tmpDir = fs.mkdtempSync(path.join(basePath, 'jdm-asm-debug-'));
152
-
153
- // Create debug file path
154
- const debugFile = path.join(tmpDir, `assembly-debug${suffix}.ts`);
155
-
156
- // Write file with restricted permissions (owner read/write only)
157
- fs.writeFileSync(debugFile, code, { mode: 0o600 });
158
-
159
- return debugFile;
160
- } catch (error) {
161
- // Debug output is best-effort: warn but don't break compilation
162
- const errorMsg = error instanceof Error ? error.message : String(error);
163
- console.warn(`[jdm-asm] Warning: Failed to write debug output to ${basePath}: ${errorMsg}`);
164
- return null;
165
- }
166
- }
167
-
168
- /**
169
- * Build compiler arguments based on options and settings.
170
- *
171
- * @param options - User-provided compiler options
172
- * @param settings - Size-based compilation settings
173
- * @returns Array of command-line arguments for the ASC compiler
174
- */
175
- export function buildCompilerArgs(
176
- options: CompilerOptions,
177
- settings: CompilationSettings,
178
- ): string[] {
179
- const args = [
180
- 'src/runtime/index.ts',
181
- '--outFile',
182
- 'output.wasm',
183
- '--runtime',
184
- 'incremental', // Use incremental GC runtime for memory reuse across evaluations
185
- '--exportRuntime', // Export __new, __pin, __collect, etc.
186
- '--initialMemory',
187
- String(settings.initialMemoryPages),
188
- '--maximumMemory',
189
- String(settings.maxMemoryPages),
190
- ];
191
-
192
- // Only generate WAT for smaller modules (large ones crash Binaryen's text emitter)
193
- if (settings.generateWat) {
194
- args.push('--textFile', 'output.wat');
195
- }
196
-
197
- // Add optimization flags if requested
198
- if (options.optimize) {
199
- if (settings.optimizeLevel > 0) {
200
- args.push('--optimize');
201
- }
202
- args.push('--optimizeLevel', String(settings.optimizeLevel));
203
- args.push('--shrinkLevel', String(settings.shrinkLevel));
204
- }
205
-
206
- // Add debug flags if requested
207
- if (options.debug) {
208
- args.push('--debug', '--sourceMap');
209
- }
210
-
211
- // Disable assertions in production (non-debug) mode
212
- if (!options.debug) {
213
- args.push('--noAssert');
214
- }
215
-
216
- return args;
217
- }
218
-
219
- /**
220
- * Compile AssemblyScript code to WebAssembly.
221
- *
222
- * This function uses the AssemblyScript compiler to generate WASM from
223
- * the generated AssemblyScript source code using a virtual filesystem.
224
- *
225
- * **Filesystem Side Effects:**
226
- * If `options.debugOutputPath` is set or the `JDM_ASM_DEBUG_OUTPUT` environment
227
- * variable is defined, compilation failures will write the generated AssemblyScript
228
- * code to disk for debugging. Files are written to secure temporary directories
229
- * with restricted permissions (0o600) and are NOT automatically cleaned up.
230
- *
231
- * Note: This is the internal compilation function without caching.
232
- * Use compileAssemblyScript() from build.ts for cached compilation.
233
- *
234
- * @param code - The AssemblyScript source code to compile
235
- * @param options - Compiler options (optimize, debug, debugOutputPath, etc.)
236
- * @returns An object with the compiled binary and WAT text
237
- */
238
- export async function compileAssemblyScriptInternal(
239
- code: string,
240
- options: CompilerOptions,
241
- ): Promise<{ binary: Uint8Array; wat: string }> {
242
- // Import the AssemblyScript compiler
243
- const ascModule = await import('assemblyscript/asc');
244
-
245
- // Determine debug output path: explicit option takes precedence over environment variable
246
- const debugOutputPath = options.debugOutputPath ?? process.env.JDM_ASM_DEBUG_OUTPUT;
247
-
248
- // Save generated code before compilation so it's available for debugging even if
249
- // compilation crashes the process (Binaryen can segfault on malformed input).
250
- // Only write if debug output is explicitly enabled.
251
- const debugFile = createSecureDebugFile(code, debugOutputPath);
252
-
253
- // Set up virtual filesystem
254
- const virtualFS = createVirtualFS(code);
255
-
256
- // Get size-based compilation settings
257
- const settings = getCompilationSettings(code.length);
258
-
259
- // Build compiler arguments
260
- const compilerArgs = buildCompilerArgs(options, settings);
261
-
262
- // Get filesystem callbacks for ASC
263
- const fsCallbacks = createASCFileSystemCallbacks(virtualFS);
264
-
265
- // Create an in-memory stderr stream
266
- let stderrOutput = '';
267
- const stderrStream = ascModule.createMemoryStream((chunk: Uint8Array | string) => {
268
- stderrOutput += typeof chunk === 'string' ? chunk : new TextDecoder().decode(chunk);
269
- });
270
-
271
- // Compile using the asc compiler with virtual filesystem
272
- const { error } = await ascModule.main(compilerArgs, {
273
- ...fsCallbacks,
274
- stderr: stderrStream,
275
- });
276
-
277
- // Check for compilation errors
278
- if (error) {
279
- const debugFileInfo = debugFile
280
- ? `\n\nGenerated code saved to ${debugFile}`
281
- : '\n\n(Set debugOutputPath option or JDM_ASM_DEBUG_OUTPUT env var to save generated code for debugging)';
282
-
283
- throw new CompilationError(
284
- `AssemblyScript compilation failed:\n${stderrOutput || error.message}${debugFileInfo}`,
285
- ErrorCode.PARSE_ERROR,
286
- { field: 'assemblyScript' },
287
- { stderrOutput },
288
- );
289
- }
290
-
291
- // Get output from virtual filesystem
292
- const output = getCompilationOutput(virtualFS);
293
-
294
- if (!output.binary) {
295
- const noBinaryDebugFile = createSecureDebugFile(code, debugOutputPath, '-no-binary');
296
- stderrOutput = stderrOutput || '(no stderr output)';
297
- const files = [...virtualFS.keys()].join(', ');
298
-
299
- const debugFileInfo = noBinaryDebugFile
300
- ? `\nGenerated code saved to ${noBinaryDebugFile}`
301
- : '\n(Set debugOutputPath option or JDM_ASM_DEBUG_OUTPUT env var to save generated code for debugging)';
302
-
303
- throw new CompilationError(
304
- `Compilation produced no WASM binary output.\nCompiler stderr: ${stderrOutput}\nFiles in virtualFS: ${files}${debugFileInfo}`,
305
- ErrorCode.PARSE_ERROR,
306
- { field: 'assemblyScript' },
307
- { stderrOutput, virtualFSFiles: files },
308
- );
309
- }
310
-
311
- return {
312
- binary: output.binary,
313
- wat: output.wat ?? '',
314
- };
315
- }
@@ -1,215 +0,0 @@
1
- /**
2
- * Union type of all expression AST nodes.
3
- */
4
- export type ExpressionAST =
5
- | NumberLiteral
6
- | StringLiteral
7
- | BooleanLiteral
8
- | NullLiteral
9
- | Identifier
10
- | DollarRef
11
- | HashRef
12
- | BinaryOp
13
- | UnaryOp
14
- | TernaryOp
15
- | MemberAccess
16
- | IndexAccess
17
- | FunctionCall
18
- | Interval
19
- | TemplateLiteral
20
- | ArrayLiteral
21
- | ObjectLiteral;
22
-
23
- export interface NumberLiteral {
24
- type: 'NumberLiteral';
25
- value: number;
26
- }
27
-
28
- export interface StringLiteral {
29
- type: 'StringLiteral';
30
- value: string;
31
- }
32
-
33
- export interface BooleanLiteral {
34
- type: 'BooleanLiteral';
35
- value: boolean;
36
- }
37
-
38
- export interface NullLiteral {
39
- type: 'NullLiteral';
40
- }
41
-
42
- export interface Identifier {
43
- type: 'Identifier';
44
- name: string;
45
- }
46
-
47
- /**
48
- * Dollar reference - used in unary mode to refer to the current value.
49
- * Represents `$` in decision table cell expressions.
50
- */
51
- export interface DollarRef {
52
- type: 'DollarRef';
53
- }
54
-
55
- /**
56
- * Hash reference - used in higher-order functions to refer to current element.
57
- * Represents `#` in expressions like `filter(items, # > 5)`.
58
- */
59
- export interface HashRef {
60
- type: 'HashRef';
61
- }
62
-
63
- export interface BinaryOp {
64
- type: 'BinaryOp';
65
- op: BinaryOperator;
66
- left: ExpressionAST;
67
- right: ExpressionAST;
68
- }
69
-
70
- export type BinaryOperator =
71
- // Arithmetic
72
- | '+'
73
- | '-'
74
- | '*'
75
- | '/'
76
- | '%'
77
- | '^'
78
- // Comparison
79
- | '=='
80
- | '!='
81
- | '<'
82
- | '>'
83
- | '<='
84
- | '>='
85
- // Logical
86
- | 'and'
87
- | 'or'
88
- | '??'
89
- // Membership
90
- | 'in'
91
- | 'not in';
92
-
93
- export interface UnaryOp {
94
- type: 'UnaryOp';
95
- op: UnaryOperator;
96
- operand: ExpressionAST;
97
- }
98
-
99
- export type UnaryOperator = 'not' | '-';
100
-
101
- export interface TernaryOp {
102
- type: 'TernaryOp';
103
- condition: ExpressionAST;
104
- consequent: ExpressionAST;
105
- alternate: ExpressionAST;
106
- }
107
-
108
- export interface MemberAccess {
109
- type: 'MemberAccess';
110
- object: ExpressionAST;
111
- property: string;
112
- }
113
-
114
- export interface IndexAccess {
115
- type: 'IndexAccess';
116
- object: ExpressionAST;
117
- index: ExpressionAST;
118
- }
119
-
120
- export interface FunctionCall {
121
- type: 'FunctionCall';
122
- callee: ExpressionAST;
123
- args: ExpressionAST[];
124
- }
125
-
126
- export interface Interval {
127
- type: 'Interval';
128
- start: ExpressionAST;
129
- end: ExpressionAST;
130
- startInclusive: boolean;
131
- endInclusive: boolean;
132
- }
133
-
134
- export interface TemplateLiteral {
135
- type: 'TemplateLiteral';
136
- parts: Array<{ text: string } | { expr: ExpressionAST }>;
137
- }
138
-
139
- export interface ArrayLiteral {
140
- type: 'ArrayLiteral';
141
- elements: ExpressionAST[];
142
- }
143
-
144
- export interface ObjectLiteral {
145
- type: 'ObjectLiteral';
146
- properties: Array<{ key: string; value: ExpressionAST }>;
147
- }
148
-
149
- export function isNumberLiteral(node: ExpressionAST): node is NumberLiteral {
150
- return node.type === 'NumberLiteral';
151
- }
152
-
153
- export function isStringLiteral(node: ExpressionAST): node is StringLiteral {
154
- return node.type === 'StringLiteral';
155
- }
156
-
157
- export function isBooleanLiteral(node: ExpressionAST): node is BooleanLiteral {
158
- return node.type === 'BooleanLiteral';
159
- }
160
-
161
- export function isNullLiteral(node: ExpressionAST): node is NullLiteral {
162
- return node.type === 'NullLiteral';
163
- }
164
-
165
- export function isIdentifier(node: ExpressionAST): node is Identifier {
166
- return node.type === 'Identifier';
167
- }
168
-
169
- export function isDollarRef(node: ExpressionAST): node is DollarRef {
170
- return node.type === 'DollarRef';
171
- }
172
-
173
- export function isHashRef(node: ExpressionAST): node is HashRef {
174
- return node.type === 'HashRef';
175
- }
176
-
177
- export function isBinaryOp(node: ExpressionAST): node is BinaryOp {
178
- return node.type === 'BinaryOp';
179
- }
180
-
181
- export function isUnaryOp(node: ExpressionAST): node is UnaryOp {
182
- return node.type === 'UnaryOp';
183
- }
184
-
185
- export function isTernaryOp(node: ExpressionAST): node is TernaryOp {
186
- return node.type === 'TernaryOp';
187
- }
188
-
189
- export function isMemberAccess(node: ExpressionAST): node is MemberAccess {
190
- return node.type === 'MemberAccess';
191
- }
192
-
193
- export function isIndexAccess(node: ExpressionAST): node is IndexAccess {
194
- return node.type === 'IndexAccess';
195
- }
196
-
197
- export function isFunctionCall(node: ExpressionAST): node is FunctionCall {
198
- return node.type === 'FunctionCall';
199
- }
200
-
201
- export function isInterval(node: ExpressionAST): node is Interval {
202
- return node.type === 'Interval';
203
- }
204
-
205
- export function isTemplateLiteral(node: ExpressionAST): node is TemplateLiteral {
206
- return node.type === 'TemplateLiteral';
207
- }
208
-
209
- export function isArrayLiteral(node: ExpressionAST): node is ArrayLiteral {
210
- return node.type === 'ArrayLiteral';
211
- }
212
-
213
- export function isObjectLiteral(node: ExpressionAST): node is ObjectLiteral {
214
- return node.type === 'ObjectLiteral';
215
- }
@@ -1,56 +0,0 @@
1
- /**
2
- * Compile AssemblyScript code to WebAssembly.
3
- *
4
- * This module provides the main entry point for WASM compilation with caching.
5
- * Implementation details are delegated to specialized modules:
6
- * - virtual-fs.ts: Virtual filesystem for in-memory ASC compilation
7
- * - asc-compiler.ts: AssemblyScript compiler invocation and configuration
8
- * - wasm-instantiate.ts: WASM module instantiation and host environment
9
- */
10
-
11
- import type { CompilerOptions } from './types';
12
- import { computeCacheKey, readCacheFromDisk, writeCacheToDisk, isCacheEnabled } from './cache';
13
- import { compileAssemblyScriptInternal } from './asc-compiler';
14
-
15
- // Re-export for backward compatibility
16
- export { instantiateWasm } from './wasm-instantiate';
17
-
18
- /**
19
- * Compile AssemblyScript code to WebAssembly.
20
- *
21
- * This function uses the AssemblyScript compiler to generate WASM from
22
- * the generated AssemblyScript source code using a virtual filesystem.
23
- *
24
- * Supports disk-based caching to avoid redundant compilations.
25
- * Cache is keyed on: AssemblyScript code + runtime libraries + compiler options.
26
- *
27
- * **Filesystem Side Effects:**
28
- * - Compilation may read/write cache files (unless disabled via JDM_ASM_NO_CACHE=1)
29
- * - If `options.debugOutputPath` is set or `JDM_ASM_DEBUG_OUTPUT` env var is defined,
30
- * compilation failures will write debug files to disk (see CompilerOptions.debugOutputPath)
31
- *
32
- * @param code - The AssemblyScript source code to compile
33
- * @param options - Compiler options (optimize, debug, debugOutputPath, etc.)
34
- * @returns An object with the compiled binary and WAT text
35
- */
36
- export async function compileAssemblyScript(
37
- code: string,
38
- options: CompilerOptions,
39
- ): Promise<{ binary: Uint8Array; wat: string }> {
40
- // Check cache first (unless disabled)
41
- if (isCacheEnabled()) {
42
- const cacheKey = computeCacheKey(code, options);
43
- const cached = readCacheFromDisk(cacheKey);
44
- if (cached) {
45
- return cached;
46
- }
47
-
48
- // Compile and cache the result
49
- const result = await compileAssemblyScriptInternal(code, options);
50
- writeCacheToDisk(cacheKey, result);
51
- return result;
52
- }
53
-
54
- // Cache disabled, compile directly
55
- return compileAssemblyScriptInternal(code, options);
56
- }