@divmain/jdm-asm 0.2.1 → 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,211 +0,0 @@
1
- // src/compiler/runtime-codegen.ts
2
- // Compile-time code generation utilities for loading generated marshaling and validation code
3
-
4
- import { CompilationError, ErrorCode } from './errors';
5
-
6
- /**
7
- * Type definitions for marshal and unmarshal functions.
8
- */
9
- export type MarshalFn = (data: Record<string, unknown>, memory: WebAssembly.Memory) => number;
10
-
11
- export type UnmarshalFn = (ptr: number, memory: WebAssembly.Memory) => Record<string, unknown>;
12
-
13
- export type ValidateFn = (data: unknown) => void;
14
-
15
- /**
16
- * Load generated marshaling code as executable functions.
17
- *
18
- * @internal This function uses Function constructor to execute generated code.
19
- * The code is generated by the compiler and is trusted, but users should be
20
- * aware that this executes arbitrary JavaScript in the current context.
21
- *
22
- * @param code - The generated marshaling code
23
- * @returns Object with marshal and unmarshal functions
24
- */
25
- export function loadGeneratedMarshaling(code: string): {
26
- marshal: MarshalFn;
27
- unmarshal: UnmarshalFn;
28
- } {
29
- // Create a function from the generated code
30
-
31
- // We use string replacement instead of ES module loading because: (1) generated code
32
- // uses ES6 exports which Function() doesn't support, (2) avoiding eval() for security,
33
- // (3) provides isolated scope for generated code. Convert export syntax to regular functions.
34
- const cleanedCode = code
35
- .replace(/^export function marshalInput/gm, 'function marshalInputHelper')
36
- .replace(/^export function unmarshalOutput/gm, 'function unmarshalOutputHelper')
37
- .replace(/^export const SCHEMA_HASH/gm, 'const SCHEMA_HASH')
38
- .replace(/^export const INPUT_FIXED_SIZE/gm, 'const INPUT_FIXED_SIZE')
39
- .replace(/^export const OUTPUT_FIXED_SIZE/gm, 'const OUTPUT_FIXED_SIZE')
40
- .replace(/^export function writeString/gm, 'function writeStringHelper')
41
- .replace(/^export function readString/gm, 'function readStringHelper')
42
- .replace(/^export function writeArray/gm, 'function writeArrayHelper')
43
- .replace(/^export function readArray/gm, 'function readArrayHelper')
44
- .replace(/^export function calculateInputSize/gm, 'function calculateInputSizeHelper');
45
-
46
- // Helper function to extract nested values
47
- const helperCode = `
48
- function getNestedValue(obj, path) {
49
- const parts = path.split('.');
50
- let current = obj;
51
- for (const part of parts) {
52
- if (current == null) return undefined;
53
- if (typeof current !== 'object') return undefined;
54
- current = current[part];
55
- }
56
- return current;
57
- }
58
- `;
59
-
60
- // Type for the raw 3-argument marshal function
61
- type RawMarshalFn = (
62
- data: Record<string, unknown>,
63
- memory: WebAssembly.Memory,
64
- allocate: (size: number) => number,
65
- ) => number;
66
-
67
- const module: { marshalInput?: RawMarshalFn; unmarshalOutput?: UnmarshalFn } = {};
68
-
69
- const setupFn = new Function(
70
- 'module',
71
- helperCode +
72
- cleanedCode +
73
- `
74
- module.marshalInput = marshalInputHelper;
75
- module.unmarshalOutput = unmarshalOutputHelper;
76
- `,
77
- );
78
-
79
- setupFn(module);
80
-
81
- if (!module.marshalInput || !module.unmarshalOutput) {
82
- throw new CompilationError(
83
- 'Generated marshaling code did not export required functions',
84
- ErrorCode.INVALID_NODE_STRUCTURE,
85
- { field: 'marshalCode' },
86
- );
87
- }
88
-
89
- // Create a 2-argument wrapper that provides an internal allocator
90
- // The allocator starts at 192KB to avoid collision with:
91
- // - AssemblyScript static data (0 - ~50KB)
92
- // - AssemblyScript runtime heap (~50KB - ~192KB, grows during evaluation)
93
- // This matches the memory layout expected by the WASM module.
94
- const rawMarshal = module.marshalInput;
95
- const INPUT_BUFFER_START = 192 * 1024; // 192KB
96
- const REQUIRED_MEMORY = 768 * 1024; // 768KB minimum to fit input + output buffers
97
-
98
- const wrappedMarshal: MarshalFn = (data, memory) => {
99
- // Ensure memory is large enough for the expected layout
100
- if (memory.buffer.byteLength < REQUIRED_MEMORY) {
101
- const pagesNeeded = Math.ceil((REQUIRED_MEMORY - memory.buffer.byteLength) / 65536);
102
- memory.grow(pagesNeeded);
103
- }
104
-
105
- // Simple bump allocator starting at 192KB (after AS runtime heap region)
106
- let heapOffset = INPUT_BUFFER_START;
107
- const allocate = (size: number): number => {
108
- const ptr = heapOffset;
109
- heapOffset += size;
110
- // Grow memory if needed
111
- if (heapOffset > memory.buffer.byteLength) {
112
- const pagesNeeded = Math.ceil((heapOffset - memory.buffer.byteLength) / 65536);
113
- memory.grow(pagesNeeded);
114
- }
115
- return ptr;
116
- };
117
- return rawMarshal(data, memory, allocate);
118
- };
119
-
120
- return {
121
- marshal: wrappedMarshal,
122
- unmarshal: module.unmarshalOutput,
123
- };
124
- }
125
-
126
- // Cache TypeCompiler to avoid repeated dynamic imports
127
- let cachedTypeCompiler: unknown = null;
128
-
129
- /**
130
- * Load generated validation code as executable function.
131
- *
132
- * @param code - The generated validation code
133
- * @returns Validation function
134
- */
135
- export async function loadGeneratedValidation(code: string): Promise<ValidateFn> {
136
- // The generated validation code uses ES6 import/export syntax and TypeScript syntax
137
- // We need to:
138
- // 1. Strip import statements
139
- // 2. Strip TypeScript type annotations
140
- // 3. Convert exports to regular function/class definitions
141
- // 4. Pass TypeCompiler as a dependency
142
- // 5. Return the validateInput function
143
-
144
- let cleanedCode = code;
145
-
146
- // Remove import statements
147
- const importRegex = /^import\s+.*from\s+['"].*['"];?\s*$/gm;
148
- cleanedCode = cleanedCode.replace(importRegex, '');
149
-
150
- // Strip TypeScript parameter type annotations
151
- // Matches: function foo(param: Type, other: Type)
152
- cleanedCode = cleanedCode.replace(/(\w+)\s*:\s*\w+(?:<[^>]+>)?(?=[,)])/g, '$1');
153
-
154
- // Strip TypeScript "asserts" return type annotations
155
- // Matches: ): asserts data is Type {
156
- cleanedCode = cleanedCode.replace(/\):\s+asserts\s+\w+\s+is\s+\w+\s*(<[^>]+>)?\s*\{/g, ') {');
157
-
158
- // Strip TypeScript class property modifiers
159
- // Matches: public readonly errors: Type {
160
- cleanedCode = cleanedCode.replace(/public\s+readonly\s+/g, '');
161
- cleanedCode = cleanedCode.replace(/public\s+/g, '');
162
-
163
- // Strip generic type annotations from Array
164
- // Matches: Array<{...}> and Array<Type>
165
- cleanedCode = cleanedCode.replace(/Array<([^>]+)>/g, 'Array');
166
-
167
- // Strip TSchema type reference (from @sinclair/typebox)
168
- cleanedCode = cleanedCode.replace(/:\s*TSchema/g, '');
169
-
170
- // Convert exports to regular definitions
171
- cleanedCode = cleanedCode
172
- .replace(/^export function validateInput/gm, 'function validateInput')
173
- .replace(/^export class ValidationError/gm, 'class ValidationError')
174
- .replace(/^export function checkInput/gm, 'function checkInput');
175
-
176
- // Import TypeCompiler dynamically (cached for performance)
177
- if (!cachedTypeCompiler) {
178
- const module = await import('@sinclair/typebox/compiler');
179
- cachedTypeCompiler = module.TypeCompiler;
180
- }
181
- const TypeCompiler = cachedTypeCompiler;
182
-
183
- // Create a module object to hold the validator (no type annotation for Function context)
184
- const module: any = {};
185
-
186
- const setupFn = new Function(
187
- 'TypeCompiler',
188
- 'module',
189
- `
190
- ${cleanedCode}
191
- module.validateInput = validateInput;
192
- `,
193
- );
194
-
195
- setupFn(TypeCompiler, module);
196
-
197
- if (!module.validateInput) {
198
- throw new CompilationError(
199
- 'Generated validation code did not export validateInput function',
200
- ErrorCode.INVALID_NODE_STRUCTURE,
201
- { field: 'validationCode' },
202
- );
203
- }
204
-
205
- return module.validateInput;
206
- }
207
-
208
- /**
209
- * Re-export validation code generation functions from marshal-gen
210
- */
211
- export { generateValidationCode } from './marshal-gen';
@@ -1,294 +0,0 @@
1
- /**
2
- * Runtime validation code generation for decision models.
3
- *
4
- * This module provides functions that generate or perform validation code
5
- * that executes at runtime. These functions validate actual data against
6
- * schemas when the decision is evaluated.
7
- *
8
- * For compile-time static analysis (checking references exist, etc.),
9
- * see compile-time-validation.ts.
10
- */
11
-
12
- import type { FlattenedLayout } from './types';
13
-
14
- /**
15
- * Validation error containing field path, expected type, and actual value.
16
- */
17
- export interface ValidationError {
18
- /** The field path (e.g., "customer.age") */
19
- path: string;
20
- /** Error message describing the issue */
21
- message: string;
22
- /** The expected type */
23
- expected?: string;
24
- /** The actual value that failed validation */
25
- actual?: unknown;
26
- }
27
-
28
- /**
29
- * Result of runtime validation.
30
- */
31
- export interface ValidationResult {
32
- /** Whether validation passed */
33
- valid: boolean;
34
- /** Array of validation errors (empty if valid) */
35
- errors: ValidationError[];
36
- }
37
-
38
- /**
39
- * Validate runtime input data against the input schema.
40
- *
41
- * This function checks that all required input fields from the schema
42
- * are present in the provided input data AND that they have correct types.
43
- * It returns a list of validation errors including missing fields and
44
- * type mismatches.
45
- *
46
- * Security note: This validation prevents malformed input with wrong types
47
- * (string instead of number, object instead of array) from being marshaled
48
- * to WASM, which could cause runtime errors or unexpected behavior.
49
- *
50
- * @param inputData - Runtime input data as a JavaScript object
51
- * @param inputLayout - Flattened layout from the input schema
52
- * @returns Array of missing/invalid input field paths (empty if all valid)
53
- */
54
- export function validateRuntimeInputs(
55
- inputData: Record<string, any>,
56
- inputLayout: FlattenedLayout,
57
- ): string[] {
58
- const result = validateRuntimeInputsDetailed(inputData, inputLayout);
59
- // Return just the paths for backwards compatibility
60
- return result.errors.map((e) => e.path);
61
- }
62
-
63
- /**
64
- * Validate runtime input data with detailed error information.
65
- *
66
- * This function performs comprehensive validation including:
67
- * - Presence checking: All required fields must be present
68
- * - Type checking: Values must match expected types
69
- * - Range checking: Numbers must be finite (not NaN/Infinity unless intended)
70
- *
71
- * @param inputData - Runtime input data as a JavaScript object
72
- * @param inputLayout - Flattened layout from the input schema
73
- * @returns Detailed validation result with errors
74
- */
75
- export function validateRuntimeInputsDetailed(
76
- inputData: Record<string, any>,
77
- inputLayout: FlattenedLayout,
78
- ): ValidationResult {
79
- const errors: ValidationError[] = [];
80
-
81
- for (const field of inputLayout.fields) {
82
- const path = field.path;
83
- const parts = path.split('.');
84
-
85
- let current: any = inputData;
86
- let exists = true;
87
-
88
- // Navigate to the nested value
89
- for (const part of parts) {
90
- if (current === null || current === undefined || current[part] === undefined) {
91
- exists = false;
92
- break;
93
- }
94
- current = current[part];
95
- }
96
-
97
- if (!exists) {
98
- errors.push({
99
- path,
100
- message: 'Required field is missing',
101
- expected: field.type,
102
- actual: undefined,
103
- });
104
- continue;
105
- }
106
-
107
- // Now check type
108
- const typeError = validateFieldType(current, field.type, path);
109
- if (typeError) {
110
- errors.push(typeError);
111
- }
112
- }
113
-
114
- return {
115
- valid: errors.length === 0,
116
- errors,
117
- };
118
- }
119
-
120
- /**
121
- * Validate that a value matches the expected field type.
122
- *
123
- * @param value - The actual value to validate
124
- * @param expectedType - The expected type from the schema
125
- * @param path - The field path for error reporting
126
- * @returns ValidationError if type mismatch, null if valid
127
- */
128
- function validateFieldType(
129
- value: unknown,
130
- expectedType: 'f64' | 'i32' | 'i64' | 'bool' | 'string' | 'array',
131
- path: string,
132
- ): ValidationError | null {
133
- const actualType = typeof value;
134
-
135
- switch (expectedType) {
136
- case 'f64':
137
- case 'i32':
138
- case 'i64': {
139
- // Check for number type
140
- if (actualType !== 'number' && actualType !== 'bigint') {
141
- return {
142
- path,
143
- message: `Expected ${expectedType} (number), got ${actualType}`,
144
- expected: expectedType,
145
- actual: value,
146
- };
147
- }
148
-
149
- // For number types, also check for NaN
150
- if (actualType === 'number' && Number.isNaN(value)) {
151
- return {
152
- path,
153
- message: `Invalid number: NaN is not allowed`,
154
- expected: expectedType,
155
- actual: value,
156
- };
157
- }
158
-
159
- // For integer types, check that the value is actually an integer
160
- if (expectedType === 'i32' || expectedType === 'i64') {
161
- if (actualType === 'number' && !Number.isInteger(value)) {
162
- return {
163
- path,
164
- message: `Expected integer, got floating-point number`,
165
- expected: expectedType,
166
- actual: value,
167
- };
168
- }
169
- }
170
- break;
171
- }
172
-
173
- case 'bool': {
174
- if (actualType !== 'boolean') {
175
- return {
176
- path,
177
- message: `Expected boolean, got ${actualType}`,
178
- expected: 'boolean',
179
- actual: value,
180
- };
181
- }
182
- break;
183
- }
184
-
185
- case 'string': {
186
- if (actualType !== 'string') {
187
- return {
188
- path,
189
- message: `Expected string, got ${actualType}`,
190
- expected: 'string',
191
- actual: value,
192
- };
193
- }
194
- break;
195
- }
196
-
197
- case 'array': {
198
- if (!Array.isArray(value)) {
199
- return {
200
- path,
201
- message: `Expected array, got ${actualType}`,
202
- expected: 'array',
203
- actual: value,
204
- };
205
- }
206
- break;
207
- }
208
-
209
- default: {
210
- // Unknown type - this shouldn't happen with a valid schema
211
- // but we'll accept any value for forward compatibility
212
- break;
213
- }
214
- }
215
-
216
- return null;
217
- }
218
-
219
- /**
220
- * Validate runtime output data against the output schema.
221
- *
222
- * This function checks that all required output fields from the schema
223
- * are present in the provided output data AND that they have correct types.
224
- * It returns a list of validation errors including missing fields and
225
- * type mismatches.
226
- *
227
- * @param outputData - Runtime output data as a JavaScript object
228
- * @param outputLayout - Flattened layout from the output schema
229
- * @returns Array of missing/invalid output field paths (empty if all valid)
230
- */
231
- export function validateRuntimeOutputs(
232
- outputData: Record<string, any>,
233
- outputLayout: FlattenedLayout,
234
- ): string[] {
235
- const result = validateRuntimeOutputsDetailed(outputData, outputLayout);
236
- return result.errors.map((e) => e.path);
237
- }
238
-
239
- /**
240
- * Validate runtime output data with detailed error information.
241
- *
242
- * This function performs comprehensive validation including:
243
- * - Presence checking: All required output fields must be present
244
- * - Type checking: Values must match expected types
245
- *
246
- * @param outputData - Runtime output data as a JavaScript object
247
- * @param outputLayout - Flattened layout from the output schema
248
- * @returns Detailed validation result with errors
249
- */
250
- export function validateRuntimeOutputsDetailed(
251
- outputData: Record<string, any>,
252
- outputLayout: FlattenedLayout,
253
- ): ValidationResult {
254
- const errors: ValidationError[] = [];
255
-
256
- for (const field of outputLayout.fields) {
257
- const path = field.path;
258
- const parts = path.split('.');
259
-
260
- // Allows objects to be built incrementally (e.g., output.customer.name and
261
- // output.customer.age) instead of requiring the entire object at once.
262
- let current: any = outputData;
263
- let exists = true;
264
-
265
- for (const part of parts) {
266
- if (current === null || current === undefined || current[part] === undefined) {
267
- exists = false;
268
- break;
269
- }
270
- current = current[part];
271
- }
272
-
273
- if (!exists) {
274
- errors.push({
275
- path,
276
- message: 'Required output field is missing',
277
- expected: field.type,
278
- actual: undefined,
279
- });
280
- continue;
281
- }
282
-
283
- // Now check type
284
- const typeError = validateFieldType(current, field.type, path);
285
- if (typeError) {
286
- errors.push(typeError);
287
- }
288
- }
289
-
290
- return {
291
- valid: errors.length === 0,
292
- errors,
293
- };
294
- }