@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.
- package/dist/index.js +2227 -29
- package/dist/index.js.map +1 -1
- package/package.json +8 -2
- package/.github/workflows/ci.yml +0 -53
- package/.oxfmtrc.json +0 -16
- package/.oxlintrc.json +0 -183
- package/AGENTS.md +0 -81
- package/asconfig.json +0 -23
- package/benchmarks/fixtures.ts +0 -111
- package/benchmarks/input-fixtures.ts +0 -80
- package/benchmarks/run.ts +0 -913
- package/benchmarks/worker-pool.ts +0 -223
- package/benchmarks/worker.ts +0 -374
- package/scripts/run-all-tests.ts +0 -220
- package/src/compiler/EXPRESSION_SUBSETS.md +0 -228
- package/src/compiler/asc-compiler.ts +0 -315
- package/src/compiler/ast-types.ts +0 -215
- package/src/compiler/build.ts +0 -56
- package/src/compiler/cache.ts +0 -414
- package/src/compiler/code-generators.ts +0 -211
- package/src/compiler/codegen/index.ts +0 -15
- package/src/compiler/codegen/js-marshal.ts +0 -999
- package/src/compiler/codegen/js-validation.ts +0 -243
- package/src/compiler/codegen.ts +0 -19
- package/src/compiler/compile-time-validation.ts +0 -507
- package/src/compiler/cst-visitor.ts +0 -434
- package/src/compiler/errors.ts +0 -227
- package/src/compiler/expression-parser.ts +0 -536
- package/src/compiler/graph.ts +0 -197
- package/src/compiler/index.ts +0 -199
- package/src/compiler/input-validation.ts +0 -33
- package/src/compiler/marshal-gen.ts +0 -21
- package/src/compiler/nodes/context-resolvers.ts +0 -197
- package/src/compiler/nodes/decision-table.ts +0 -507
- package/src/compiler/nodes/decision.ts +0 -292
- package/src/compiler/nodes/expression-compiler.ts +0 -526
- package/src/compiler/nodes/expression.ts +0 -425
- package/src/compiler/nodes/function.ts +0 -316
- package/src/compiler/nodes/input.ts +0 -60
- package/src/compiler/nodes/switch.ts +0 -547
- package/src/compiler/optimizer.ts +0 -948
- package/src/compiler/orchestrator.ts +0 -352
- package/src/compiler/parser.ts +0 -115
- package/src/compiler/result-selection.ts +0 -161
- package/src/compiler/runtime/index.ts +0 -26
- package/src/compiler/runtime-codegen.ts +0 -211
- package/src/compiler/runtime-validation-codegen.ts +0 -294
- package/src/compiler/runtime.ts +0 -452
- package/src/compiler/schema.ts +0 -245
- package/src/compiler/switch-branch-detection.ts +0 -92
- package/src/compiler/types.ts +0 -136
- package/src/compiler/unary-ast-transforms.ts +0 -148
- package/src/compiler/unary-parser.ts +0 -301
- package/src/compiler/unary-transform.ts +0 -161
- package/src/compiler/utils.ts +0 -27
- package/src/compiler/virtual-fs.ts +0 -90
- package/src/compiler/wasm-instantiate.ts +0 -127
- package/src/index.ts +0 -1
- package/src/runtime/arrays.ts +0 -579
- package/src/runtime/context.ts +0 -189
- package/src/runtime/expressions.ts +0 -1811
- package/src/runtime/index.ts +0 -8
- package/src/runtime/memory.ts +0 -607
- package/src/runtime/strings.ts +0 -260
- package/src/runtime/tables.ts +0 -96
- package/src/runtime/tsconfig.json +0 -4
- package/src/runtime/values.ts +0 -209
- package/test-data/README.md +0 -83
- package/test-data/decision-tables/basic/8k.json +0 -87992
- package/test-data/decision-tables/basic/affiliate-commission-calculator.json +0 -228
- package/test-data/decision-tables/basic/airline-loyalty-points-calculations.json +0 -285
- package/test-data/decision-tables/basic/airline-upgrade-eligibility.json +0 -466
- package/test-data/decision-tables/basic/auto-insurance-premium-calculator.json +0 -412
- package/test-data/decision-tables/basic/booking-personalization-system.json +0 -553
- package/test-data/decision-tables/basic/care-team-assignment-system.json +0 -585
- package/test-data/decision-tables/basic/claim-validation-system.json +0 -307
- package/test-data/decision-tables/basic/clinical-lab-result-interpreter.json +0 -433
- package/test-data/decision-tables/basic/clinical-treatment-protocol.json +0 -474
- package/test-data/decision-tables/basic/credit-limit-adjustment.json +0 -479
- package/test-data/decision-tables/basic/customer-eligibility-engine.json +0 -551
- package/test-data/decision-tables/basic/customer-lifetime-value.json +0 -200
- package/test-data/decision-tables/basic/customer-onboarding-kyc-verification.json +0 -611
- package/test-data/decision-tables/basic/customer-service-escalation.json +0 -191
- package/test-data/decision-tables/basic/decision-table-discounts.json +0 -168
- package/test-data/decision-tables/basic/decision-table-shipping.json +0 -398
- package/test-data/decision-tables/basic/delivery-route-optimizer.json +0 -271
- package/test-data/decision-tables/basic/device-compatibility-checker.json +0 -303
- package/test-data/decision-tables/basic/disaster-relief-fund-allocation.json +0 -296
- package/test-data/decision-tables/basic/dynamic-fx-rate-pricing-system.json +0 -237
- package/test-data/decision-tables/basic/dynamic-marketplace-comission-calculator.json +0 -242
- package/test-data/decision-tables/basic/dynamic-shipping-cost-calculator.json +0 -378
- package/test-data/decision-tables/basic/dynamic-tarrif-engine.json +0 -289
- package/test-data/decision-tables/basic/dynamic-ticket-pricing.json +0 -325
- package/test-data/decision-tables/basic/empty-column-with-space.json +0 -100
- package/test-data/decision-tables/basic/empty-column-without-space.json +0 -100
- package/test-data/decision-tables/basic/environment-compliance-assessment.json +0 -386
- package/test-data/decision-tables/basic/expression-table-map.json +0 -313
- package/test-data/decision-tables/basic/flash-sale-eligibility.json +0 -366
- package/test-data/decision-tables/basic/flight-dispatch-decision-system.json +0 -455
- package/test-data/decision-tables/basic/flight-rebooking-fee-calculator.json +0 -406
- package/test-data/decision-tables/basic/government-assistance.json +0 -299
- package/test-data/decision-tables/basic/grant-funding-distribution.json +0 -307
- package/test-data/decision-tables/basic/hazardous-materials-management-system.json +0 -414
- package/test-data/decision-tables/basic/immigration-eligibility-evaluator.json +0 -765
- package/test-data/decision-tables/basic/import-duties-calculator.json +0 -318
- package/test-data/decision-tables/basic/insurance-agent-commission.json +0 -228
- package/test-data/decision-tables/basic/insurance-coverage-calculator.json +0 -362
- package/test-data/decision-tables/basic/insurance-underwriting-risk.json +0 -321
- package/test-data/decision-tables/basic/international-roaming-policy-manager.json +0 -199
- package/test-data/decision-tables/basic/legacy-plan-management.json +0 -434
- package/test-data/decision-tables/basic/marketplace-listing-verification-system.json +0 -334
- package/test-data/decision-tables/basic/medication-dosage-calculator.json +0 -318
- package/test-data/decision-tables/basic/merch-bags.json +0 -171
- package/test-data/decision-tables/basic/municipal-permit-evaluation-system.json +0 -364
- package/test-data/decision-tables/basic/mvno-partner-enablement.json +0 -313
- package/test-data/decision-tables/basic/partner-revenue-sharing.json +0 -244
- package/test-data/decision-tables/basic/payment-routing-and-fee-calculator.json +0 -475
- package/test-data/decision-tables/basic/policy-discount-calculator.json +0 -307
- package/test-data/decision-tables/basic/policy-eligibility-analyzer.json +0 -299
- package/test-data/decision-tables/basic/product-listing-scoring.json +0 -358
- package/test-data/decision-tables/basic/realtime-fraud-detection.json +0 -235
- package/test-data/decision-tables/basic/regional-compliance-manager.json +0 -278
- package/test-data/decision-tables/basic/returns-and-refund-policy.json +0 -366
- package/test-data/decision-tables/basic/returns-processing-system.json +0 -448
- package/test-data/decision-tables/basic/school-district-resource-allocation.json +0 -282
- package/test-data/decision-tables/basic/seat-map-optimization.json +0 -325
- package/test-data/decision-tables/basic/seller-fee-calculator.json +0 -307
- package/test-data/decision-tables/basic/service-level-agreement-enforcement.json +0 -575
- package/test-data/decision-tables/basic/smart-financial-product-matcher.json +0 -249
- package/test-data/decision-tables/basic/supply-chain-risk.json +0 -316
- package/test-data/decision-tables/basic/table-loop.json +0 -93
- package/test-data/decision-tables/basic/table.json +0 -76
- package/test-data/decision-tables/basic/traffic-violation-penalty-calculator.json +0 -436
- package/test-data/decision-tables/basic/transaction-compliance-classifier.json +0 -525
- package/test-data/decision-tables/basic/vehicle-claims-resolution.json +0 -310
- package/test-data/decision-tables/basic/warehouse-storage-location.json +0 -345
- package/test-data/decision-tables/hit-policy-collect/collect-multiple-matches.json +0 -127
- package/test-data/decision-tables/hit-policy-collect/collect-no-match.json +0 -95
- package/test-data/decision-tables/hit-policy-first/first-match.json +0 -103
- package/test-data/decision-tables/hit-policy-first/no-match.json +0 -95
- package/test-data/decision-tables/hit-policy-output-order/output-order-respected.json +0 -94
- package/test-data/decision-tables/hit-policy-output-order/string-output-order.json +0 -94
- package/test-data/decision-tables/hit-policy-priority/priority-respected.json +0 -86
- package/test-data/decision-tables/hit-policy-rule-order/rule-order-respected.json +0 -94
- package/test-data/decision-tables/hit-policy-unique/all-match-error.json +0 -89
- package/test-data/decision-tables/hit-policy-unique/multiple-match-error.json +0 -89
- package/test-data/decision-tables/hit-policy-unique/no-match.json +0 -88
- package/test-data/decision-tables/hit-policy-unique/unique-match.json +0 -99
- package/test-data/expressions/arithmetic/error-cyclic.json +0 -114
- package/test-data/expressions/arithmetic/error-missing-input.json +0 -54
- package/test-data/expressions/arithmetic/error-missing-output.json +0 -54
- package/test-data/expressions/arithmetic/expression-default.json +0 -93
- package/test-data/expressions/arithmetic/expression-fields.json +0 -94
- package/test-data/expressions/arithmetic/expression-loop.json +0 -94
- package/test-data/expressions/arithmetic/expression-passthrough.json +0 -108
- package/test-data/expressions/arithmetic/expression.json +0 -69
- package/test-data/expressions/arithmetic/nested-request.json +0 -125
- package/test-data/expressions/arithmetic/number-function.json +0 -58
- package/test-data/expressions/arithmetic/test-number-functions.json +0 -68
- package/test-data/expressions/functions/all.json +0 -149
- package/test-data/expressions/functions/avg.json +0 -89
- package/test-data/expressions/functions/filter.json +0 -109
- package/test-data/expressions/functions/flat.json +0 -167
- package/test-data/expressions/functions/map-strings.json +0 -65
- package/test-data/expressions/functions/map.json +0 -73
- package/test-data/expressions/functions/reduce.json +0 -49
- package/test-data/expressions/functions/some.json +0 -175
- package/test-data/expressions/functions/sort-strings.json +0 -97
- package/test-data/expressions/functions/sort.json +0 -97
- package/test-data/expressions/logical/logical-and.json +0 -116
- package/test-data/expressions/logical/logical-complex.json +0 -260
- package/test-data/expressions/logical/logical-not.json +0 -111
- package/test-data/expressions/logical/logical-or.json +0 -123
- package/test-data/expressions/string/string-comparison.json +0 -128
- package/test-data/expressions/string/string-concat.json +0 -106
- package/test-data/expressions/string/string-contains.json +0 -125
- package/test-data/expressions/string/string-endsWith.json +0 -113
- package/test-data/expressions/string/string-indexOf.json +0 -131
- package/test-data/expressions/string/string-join.json +0 -92
- package/test-data/expressions/string/string-lower.json +0 -94
- package/test-data/expressions/string/string-replace.json +0 -130
- package/test-data/expressions/string/string-split.json +0 -101
- package/test-data/expressions/string/string-startsWith.json +0 -113
- package/test-data/expressions/string/string-substring.json +0 -138
- package/test-data/expressions/string/string-trim.json +0 -100
- package/test-data/expressions/string/string-upper.json +0 -94
- package/test-data/other/custom.json +0 -51
- package/test-data/other/customer-input-schema.json +0 -34
- package/test-data/other/customer-output-schema.json +0 -34
- package/test-data/other/passthrough.json +0 -31
- package/test-data/sub-decisions/basic/$nodes-child.json +0 -31
- package/test-data/sub-decisions/basic/$nodes-parent.json +0 -49
- package/test-data/sub-decisions/basic/recursive-table1.json +0 -49
- package/test-data/sub-decisions/basic/recursive-table2.json +0 -49
- package/test-data/sub-decisions/complex-multi/approval-decision.json +0 -31
- package/test-data/sub-decisions/complex-multi/complex-dag.json +0 -175
- package/test-data/sub-decisions/complex-multi/credit-check.json +0 -31
- package/test-data/sub-decisions/complex-multi/customer-segmentation.json +0 -31
- package/test-data/sub-decisions/complex-multi/discount-eligibility.json +0 -31
- package/test-data/sub-decisions/complex-multi/eligibility-check.json +0 -31
- package/test-data/sub-decisions/complex-multi/final-offer.json +0 -31
- package/test-data/sub-decisions/complex-multi/income-verification.json +0 -31
- package/test-data/sub-decisions/complex-multi/linear-chain.json +0 -121
- package/test-data/sub-decisions/complex-multi/pricing-calculation.json +0 -31
- package/test-data/sub-decisions/complex-multi/product-eligibility.json +0 -31
- package/test-data/sub-decisions/complex-multi/risk-assessment.json +0 -31
- package/test-data/sub-decisions/complex-multi/shared-validation.json +0 -31
- package/test-data/sub-decisions/complex-multi/validation.json +0 -31
- package/test-data/sub-decisions/diamond/decision-a.json +0 -31
- package/test-data/sub-decisions/diamond/decision-b.json +0 -31
- package/test-data/sub-decisions/diamond/decision-c.json +0 -31
- package/test-data/sub-decisions/diamond/decision-shared.json +0 -31
- package/test-data/sub-decisions/diamond/diamond-pattern.json +0 -109
- package/test-data/sub-decisions/error-propagation/parent-calls-error.json +0 -44
- package/test-data/sub-decisions/error-propagation/sub-decision-with-error.json +0 -60
- package/test-data/switch-nodes/basic/account-dormancy-management.json +0 -245
- package/test-data/switch-nodes/basic/application-risk-assessment.json +0 -474
- package/test-data/switch-nodes/basic/cellular-data-rollover-system.json +0 -281
- package/test-data/switch-nodes/basic/clinical-pathway-selection.json +0 -454
- package/test-data/switch-nodes/basic/insurance-prior-authorization.json +0 -467
- package/test-data/switch-nodes/basic/last-mile-delivery-assignment.json +0 -373
- package/test-data/switch-nodes/basic/loan-approval.json +0 -469
- package/test-data/switch-nodes/basic/multi-switch.json +0 -498
- package/test-data/switch-nodes/basic/online-checkin-eligibility.json +0 -285
- package/test-data/switch-nodes/basic/order-consolidation-system.json +0 -493
- package/test-data/switch-nodes/basic/seller-approval-workflow.json +0 -383
- package/test-data/switch-nodes/basic/set-fee.json +0 -243
- package/test-data/switch-nodes/basic/shipping-carrier-selector.json +0 -379
- package/test-data/switch-nodes/basic/switch-node.json +0 -167
- package/test-data/switch-nodes/basic/switch-performance-2.json +0 -1307
- package/test-data/switch-nodes/basic/switch-performance.json +0 -691
- package/test-data/switch-nodes/basic/tax-exemption.json +0 -295
- package/test-data/switch-nodes/basic/warehouse-cross-docking.json +0 -313
- package/test-data/switch-nodes/default-cases/switch-with-default.json +0 -134
- package/test-data/zen-reference/$nodes-child.json +0 -69
- package/test-data/zen-reference/$nodes-parent.json +0 -34
- package/test-data/zen-reference/8k.json +0 -87992
- package/test-data/zen-reference/credit-analysis.json +0 -324
- package/test-data/zen-reference/custom.json +0 -51
- package/test-data/zen-reference/customer-input-schema.json +0 -34
- package/test-data/zen-reference/customer-output-schema.json +0 -34
- package/test-data/zen-reference/error-cyclic.json +0 -114
- package/test-data/zen-reference/error-missing-input.json +0 -54
- package/test-data/zen-reference/error-missing-output.json +0 -54
- package/test-data/zen-reference/expression.json +0 -69
- package/test-data/zen-reference/function-v2.json +0 -48
- package/test-data/zen-reference/function.json +0 -46
- package/test-data/zen-reference/graphs/account-dormancy-management.json +0 -245
- package/test-data/zen-reference/graphs/affiliate-commission-calculator.json +0 -228
- package/test-data/zen-reference/graphs/airline-loyalty-points-calculations.json +0 -285
- package/test-data/zen-reference/graphs/airline-upgrade-eligibility.json +0 -466
- package/test-data/zen-reference/graphs/aml.json +0 -537
- package/test-data/zen-reference/graphs/application-risk-assessment.json +0 -474
- package/test-data/zen-reference/graphs/auto-insurance-premium-calculator.json +0 -412
- package/test-data/zen-reference/graphs/booking-personalization-system.json +0 -553
- package/test-data/zen-reference/graphs/care-team-assignment-system.json +0 -585
- package/test-data/zen-reference/graphs/cellular-data-rollover-system.json +0 -281
- package/test-data/zen-reference/graphs/claim-validation-system.json +0 -307
- package/test-data/zen-reference/graphs/clinical-lab-result-interpreter.json +0 -433
- package/test-data/zen-reference/graphs/clinical-pathway-selection.json +0 -454
- package/test-data/zen-reference/graphs/clinical-treatment-protocol.json +0 -474
- package/test-data/zen-reference/graphs/company-analysis.json +0 -390
- package/test-data/zen-reference/graphs/credit-limit-adjustment.json +0 -479
- package/test-data/zen-reference/graphs/customer-eligibility-engine.json +0 -551
- package/test-data/zen-reference/graphs/customer-lifetime-value.json +0 -200
- package/test-data/zen-reference/graphs/customer-onboarding-kyc-verification.json +0 -611
- package/test-data/zen-reference/graphs/customer-service-escalation.json +0 -191
- package/test-data/zen-reference/graphs/decision-table-discounts.json +0 -168
- package/test-data/zen-reference/graphs/decision-table-shipping.json +0 -398
- package/test-data/zen-reference/graphs/delivery-route-optimizer.json +0 -271
- package/test-data/zen-reference/graphs/device-compatibility-checker.json +0 -303
- package/test-data/zen-reference/graphs/disaster-relief-fund-allocation.json +0 -296
- package/test-data/zen-reference/graphs/dynamic-fx-rate-pricing-system.json +0 -237
- package/test-data/zen-reference/graphs/dynamic-marketplace-comission-calculator.json +0 -242
- package/test-data/zen-reference/graphs/dynamic-shipping-cost-calculator.json +0 -378
- package/test-data/zen-reference/graphs/dynamic-tarrif-engine.json +0 -289
- package/test-data/zen-reference/graphs/dynamic-ticket-pricing.json +0 -325
- package/test-data/zen-reference/graphs/empty-column-with-space.json +0 -100
- package/test-data/zen-reference/graphs/empty-column-without-space.json +0 -100
- package/test-data/zen-reference/graphs/environment-compliance-assessment.json +0 -386
- package/test-data/zen-reference/graphs/expression-default.json +0 -93
- package/test-data/zen-reference/graphs/expression-fields.json +0 -94
- package/test-data/zen-reference/graphs/expression-loop.json +0 -94
- package/test-data/zen-reference/graphs/expression-passthrough.json +0 -108
- package/test-data/zen-reference/graphs/expression-table-map.json +0 -313
- package/test-data/zen-reference/graphs/flash-sale-eligibility.json +0 -366
- package/test-data/zen-reference/graphs/flight-dispatch-decision-system.json +0 -455
- package/test-data/zen-reference/graphs/flight-rebooking-fee-calculator.json +0 -406
- package/test-data/zen-reference/graphs/government-assistance.json +0 -299
- package/test-data/zen-reference/graphs/grant-funding-distribution.json +0 -307
- package/test-data/zen-reference/graphs/hazardous-materials-management-system.json +0 -414
- package/test-data/zen-reference/graphs/immigration-eligibility-evaluator.json +0 -765
- package/test-data/zen-reference/graphs/import-duties-calculator.json +0 -318
- package/test-data/zen-reference/graphs/insurance-agent-commission.json +0 -228
- package/test-data/zen-reference/graphs/insurance-breakdown.json +0 -421
- package/test-data/zen-reference/graphs/insurance-coverage-calculator.json +0 -362
- package/test-data/zen-reference/graphs/insurance-prior-authorization.json +0 -467
- package/test-data/zen-reference/graphs/insurance-underwriting-risk.json +0 -321
- package/test-data/zen-reference/graphs/international-roaming-policy-manager.json +0 -199
- package/test-data/zen-reference/graphs/last-mile-delivery-assignment.json +0 -373
- package/test-data/zen-reference/graphs/legacy-plan-management.json +0 -434
- package/test-data/zen-reference/graphs/loan-approval.json +0 -469
- package/test-data/zen-reference/graphs/marketplace-listing-verification-system.json +0 -334
- package/test-data/zen-reference/graphs/medication-dosage-calculator.json +0 -318
- package/test-data/zen-reference/graphs/merch-bags.json +0 -171
- package/test-data/zen-reference/graphs/multi-switch.json +0 -498
- package/test-data/zen-reference/graphs/municipal-permit-evaluation-system.json +0 -364
- package/test-data/zen-reference/graphs/mvno-partner-enablement.json +0 -313
- package/test-data/zen-reference/graphs/nested-request.json +0 -125
- package/test-data/zen-reference/graphs/online-checkin-eligibility.json +0 -285
- package/test-data/zen-reference/graphs/order-consolidation-system.json +0 -493
- package/test-data/zen-reference/graphs/partner-revenue-sharing.json +0 -244
- package/test-data/zen-reference/graphs/payment-routing-and-fee-calculator.json +0 -475
- package/test-data/zen-reference/graphs/policy-discount-calculator.json +0 -307
- package/test-data/zen-reference/graphs/policy-eligibility-analyzer.json +0 -299
- package/test-data/zen-reference/graphs/product-listing-scoring.json +0 -358
- package/test-data/zen-reference/graphs/realtime-fraud-detection.json +0 -235
- package/test-data/zen-reference/graphs/regional-compliance-manager.json +0 -278
- package/test-data/zen-reference/graphs/returns-and-refund-policy.json +0 -366
- package/test-data/zen-reference/graphs/returns-processing-system.json +0 -448
- package/test-data/zen-reference/graphs/school-district-resource-allocation.json +0 -282
- package/test-data/zen-reference/graphs/seat-map-optimization.json +0 -325
- package/test-data/zen-reference/graphs/seller-approval-workflow.json +0 -383
- package/test-data/zen-reference/graphs/seller-fee-calculator.json +0 -307
- package/test-data/zen-reference/graphs/service-level-agreement-enforcement.json +0 -575
- package/test-data/zen-reference/graphs/set-fee.json +0 -243
- package/test-data/zen-reference/graphs/shipping-carrier-selector.json +0 -379
- package/test-data/zen-reference/graphs/smart-financial-product-matcher.json +0 -249
- package/test-data/zen-reference/graphs/supply-chain-risk.json +0 -316
- package/test-data/zen-reference/graphs/table-loop.json +0 -93
- package/test-data/zen-reference/graphs/tax-exemption.json +0 -295
- package/test-data/zen-reference/graphs/traffic-violation-penalty-calculator.json +0 -436
- package/test-data/zen-reference/graphs/transaction-compliance-classifier.json +0 -525
- package/test-data/zen-reference/graphs/vehicle-claims-resolution.json +0 -310
- package/test-data/zen-reference/graphs/warehouse-cross-docking.json +0 -313
- package/test-data/zen-reference/graphs/warehouse-storage-location.json +0 -345
- package/test-data/zen-reference/http-function.json +0 -34
- package/test-data/zen-reference/infinite-function.json +0 -46
- package/test-data/zen-reference/js/imports.js +0 -25
- package/test-data/zen-reference/passthrough.json +0 -31
- package/test-data/zen-reference/recursive-table1.json +0 -49
- package/test-data/zen-reference/recursive-table2.json +0 -49
- package/test-data/zen-reference/sleep-function.json +0 -34
- package/test-data/zen-reference/switch-node.json +0 -167
- package/test-data/zen-reference/switch-performance-2.json +0 -1307
- package/test-data/zen-reference/switch-performance.json +0 -691
- package/test-data/zen-reference/table.json +0 -76
- package/tests/helpers/index.ts +0 -73
- package/tests/helpers/mock-context.ts +0 -231
- package/tests/helpers/round-trip.ts +0 -398
- package/tests/helpers/test-harness-comparison.ts +0 -325
- package/tests/helpers/test-harness-wasm.ts +0 -710
- package/tests/helpers/test-harness.ts +0 -28
- package/tests/helpers/wasm-test.ts +0 -659
- package/tests/integration/compilation-errors.test.ts +0 -864
- package/tests/integration/decision-tables.test.ts +0 -531
- package/tests/integration/edge-cases.test.ts +0 -787
- package/tests/integration/expressions.test.ts +0 -513
- package/tests/integration/function-node-integration.test.ts +0 -182
- package/tests/integration/sub-decisions.test.ts +0 -108
- package/tests/integration/switch-nodes.test.ts +0 -399
- package/tests/integration/unary-or-matching.test.ts +0 -53
- package/tests/integration/wasm-data-types.test.ts +0 -398
- package/tests/integration/wasm-errors.test.ts +0 -199
- package/tests/integration/wasm-execution.test.ts +0 -348
- package/tests/integration/wasm-memory.test.ts +0 -228
- package/tests/scripts/analyze-coverage.ts +0 -166
- package/tests/scripts/categorize-tests.ts +0 -396
- package/tests/scripts/coverage-analysis.ts +0 -836
- package/tests/unit/compiler/cache.test.ts +0 -238
- package/tests/unit/compiler/errors.test.ts +0 -316
- package/tests/unit/compiler/graph-scalability.test.ts +0 -510
- package/tests/unit/compiler/graph.test.ts +0 -878
- package/tests/unit/compiler/input-validation.test.ts +0 -447
- package/tests/unit/compiler/logical-and-parser.test.ts +0 -143
- package/tests/unit/compiler/logical-not-parser.test.ts +0 -107
- package/tests/unit/compiler/logical-or-parser.test.ts +0 -236
- package/tests/unit/compiler/marshal-gen/marshal-gen.test.ts +0 -97
- package/tests/unit/compiler/nodes/decision-table.test.ts +0 -103
- package/tests/unit/compiler/nodes/decision.test.ts +0 -182
- package/tests/unit/compiler/nodes/function-compile.test.ts +0 -204
- package/tests/unit/compiler/nodes/function.test.ts +0 -176
- package/tests/unit/compiler/nodes/input.test.ts +0 -30
- package/tests/unit/compiler/nodes/switch.test.ts +0 -127
- package/tests/unit/compiler/optimizer-cache.test.ts +0 -327
- package/tests/unit/compiler/optimizer-implementation.test.ts +0 -625
- package/tests/unit/compiler/parser.test.ts +0 -508
- package/tests/unit/compiler/runtime-error-cleanup.test.ts +0 -426
- package/tests/unit/compiler/runtime-validation.test.ts +0 -303
- package/tests/unit/compiler/runtime.test.ts +0 -221
- package/tests/unit/compiler/schema/schema.test.ts +0 -248
- package/tests/unit/compiler/unary-ast-transforms.test.ts +0 -245
- package/tsconfig.json +0 -27
- package/tsup.config.ts +0 -11
- package/vitest.config.ts +0 -12
|
@@ -1,316 +0,0 @@
|
|
|
1
|
-
import type { CompilationContext } from '../types';
|
|
2
|
-
import { CompilationError, ErrorCode, type SourceLocation } from '../errors';
|
|
3
|
-
import { parse as parseAcorn } from 'acorn';
|
|
4
|
-
import { sanitizeId } from '../utils';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Function node content interface
|
|
8
|
-
*/
|
|
9
|
-
export interface FunctionNodeContent {
|
|
10
|
-
/** The JavaScript source code for the function */
|
|
11
|
-
source: string;
|
|
12
|
-
/** Parsed AST of the function body */
|
|
13
|
-
ast?: any;
|
|
14
|
-
/** Extracted function parameters */
|
|
15
|
-
parameters: string[];
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Extract the source code from a function node content field.
|
|
20
|
-
*
|
|
21
|
-
* Handles both legacy format (plain string) and v2 format (object with source property).
|
|
22
|
-
* TODO: Verify if legacy format still exists in fixtures, update comment accordingly
|
|
23
|
-
*
|
|
24
|
-
* @param content - The content field from a function node
|
|
25
|
-
* @param location - Optional source location for error reporting
|
|
26
|
-
* @returns The JavaScript source code string
|
|
27
|
-
*/
|
|
28
|
-
export function extractFunctionSource(content: any, location?: SourceLocation): string {
|
|
29
|
-
if (content === null || content === undefined) {
|
|
30
|
-
throw new CompilationError(
|
|
31
|
-
'Function node content is missing',
|
|
32
|
-
ErrorCode.INVALID_NODE_STRUCTURE,
|
|
33
|
-
location,
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (typeof content === 'object' && content.source !== undefined) {
|
|
38
|
-
if (typeof content.source !== 'string') {
|
|
39
|
-
throw new CompilationError(
|
|
40
|
-
'Function node content.source must be a string',
|
|
41
|
-
ErrorCode.INVALID_NODE_STRUCTURE,
|
|
42
|
-
{ ...location, field: 'content.source' },
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
return content.source;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (typeof content === 'string') {
|
|
49
|
-
return content;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
throw new CompilationError(
|
|
53
|
-
'Function node content must be either a string or an object with a source property',
|
|
54
|
-
ErrorCode.INVALID_NODE_STRUCTURE,
|
|
55
|
-
{ ...location, field: 'content' },
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Parse JavaScript function code to extract parameters and body.
|
|
61
|
-
*
|
|
62
|
-
* @param source - The JavaScript source code string
|
|
63
|
-
* @param location - Optional source location for error reporting
|
|
64
|
-
* @returns A FunctionNodeContent with extracted information
|
|
65
|
-
*/
|
|
66
|
-
export function parseFunctionCode(source: string, location?: SourceLocation): FunctionNodeContent {
|
|
67
|
-
const content: FunctionNodeContent = {
|
|
68
|
-
source,
|
|
69
|
-
parameters: [],
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
try {
|
|
73
|
-
// Parse the source code using Acorn.
|
|
74
|
-
const ast = parseAcorn(source, {
|
|
75
|
-
ecmaVersion: 'latest',
|
|
76
|
-
sourceType: 'module',
|
|
77
|
-
allowAwaitOutsideFunction: true,
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
content.ast = ast;
|
|
81
|
-
|
|
82
|
-
const functionNode = findExportedFunction(ast);
|
|
83
|
-
|
|
84
|
-
if (functionNode) {
|
|
85
|
-
content.parameters = extractParameters(functionNode);
|
|
86
|
-
}
|
|
87
|
-
} catch (error) {
|
|
88
|
-
// Parse errors in function code should fail compilation immediately with clear error
|
|
89
|
-
// messages, rather than deferring to runtime where the error context would be lost.
|
|
90
|
-
if (error instanceof Error) {
|
|
91
|
-
throw new CompilationError(
|
|
92
|
-
`Failed to parse function code: ${error.message}`,
|
|
93
|
-
ErrorCode.PARSE_ERROR,
|
|
94
|
-
{ ...location, field: 'content.source' },
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
throw error;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return content;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Validate a function node's content structure.
|
|
105
|
-
*
|
|
106
|
-
* @param node - The JDM function node to validate
|
|
107
|
-
* @returns Extracted and validated function node content
|
|
108
|
-
*/
|
|
109
|
-
export function validateFunctionNode(node: {
|
|
110
|
-
id: string;
|
|
111
|
-
name: string;
|
|
112
|
-
content?: any;
|
|
113
|
-
}): FunctionNodeContent {
|
|
114
|
-
const location: SourceLocation = { nodeId: node.id, nodeName: node.name };
|
|
115
|
-
|
|
116
|
-
if (!node.content) {
|
|
117
|
-
throw new CompilationError(
|
|
118
|
-
`Function node "${node.name}" (${node.id}) is missing required content field`,
|
|
119
|
-
ErrorCode.INVALID_NODE_STRUCTURE,
|
|
120
|
-
{ ...location, field: 'content' },
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const source = extractFunctionSource(node.content, location);
|
|
125
|
-
|
|
126
|
-
const parsedContent = parseFunctionCode(source, location);
|
|
127
|
-
|
|
128
|
-
return {
|
|
129
|
-
...parsedContent,
|
|
130
|
-
source,
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Find an exported function in the AST.
|
|
136
|
-
*
|
|
137
|
-
* Looks for patterns like:
|
|
138
|
-
* - `export const handler = (input) => { ... }`
|
|
139
|
-
* - `export function handler(input) { ... }`
|
|
140
|
-
*
|
|
141
|
-
* @param ast - The parsed AST
|
|
142
|
-
* @returns The function declaration or expression, or null if not found
|
|
143
|
-
*/
|
|
144
|
-
function findExportedFunction(ast: any): any {
|
|
145
|
-
if (!ast.body) {
|
|
146
|
-
return null;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
for (const node of ast.body) {
|
|
150
|
-
// Pattern: export function name(...) { ... }
|
|
151
|
-
if (node.type === 'ExportNamedDeclaration' && node.declaration) {
|
|
152
|
-
if (node.declaration.type === 'FunctionDeclaration') {
|
|
153
|
-
return node.declaration;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Pattern: export const/let/var name = (input) => { ... }
|
|
158
|
-
if (node.type === 'ExportNamedDeclaration' && node.declaration) {
|
|
159
|
-
if (node.declaration.type === 'VariableDeclaration') {
|
|
160
|
-
const declarator = node.declaration.declarations[0];
|
|
161
|
-
if (declarator && declarator.init) {
|
|
162
|
-
// Arrow function: (input) => { ... }
|
|
163
|
-
if (declarator.init.type === 'ArrowFunctionExpression') {
|
|
164
|
-
return declarator.init;
|
|
165
|
-
}
|
|
166
|
-
// Regular function: function(input) { ... }
|
|
167
|
-
if (declarator.init.type === 'FunctionExpression') {
|
|
168
|
-
return declarator.init;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// Pattern: export default ...) => { ... }
|
|
175
|
-
if (node.type === 'ExportDefaultDeclaration') {
|
|
176
|
-
if (node.declaration.type === 'FunctionDeclaration') {
|
|
177
|
-
return node.declaration;
|
|
178
|
-
}
|
|
179
|
-
if (node.declaration.type === 'ArrowFunctionExpression') {
|
|
180
|
-
return node.declaration;
|
|
181
|
-
}
|
|
182
|
-
if (node.declaration.type === 'FunctionExpression') {
|
|
183
|
-
return node.declaration;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
return null;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Extract parameter names from a function AST node.
|
|
193
|
-
*
|
|
194
|
-
* @param functionNode - The function AST node
|
|
195
|
-
* @returns Array of parameter names
|
|
196
|
-
*/
|
|
197
|
-
function extractParameters(functionNode: any): string[] {
|
|
198
|
-
if (!functionNode.params || !Array.isArray(functionNode.params)) {
|
|
199
|
-
return [];
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
return functionNode.params
|
|
203
|
-
.map((param: any) => {
|
|
204
|
-
// Simple identifier: input
|
|
205
|
-
if (param.type === 'Identifier') {
|
|
206
|
-
return param.name;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
// Destructuring: { input, context } or [input, context]
|
|
210
|
-
if (param.type === 'ObjectPattern') {
|
|
211
|
-
return param.properties
|
|
212
|
-
.map((prop: any) => prop.key?.name || prop.value?.name)
|
|
213
|
-
.filter(Boolean);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
if (param.type === 'ArrayPattern') {
|
|
217
|
-
return param.elements.map((elem: any) => elem?.name).filter(Boolean);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
return null;
|
|
221
|
-
})
|
|
222
|
-
.flat()
|
|
223
|
-
.filter(Boolean) as string[];
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Compile a function node to AssemblyScript code.
|
|
228
|
-
*
|
|
229
|
-
* This function generates AssemblyScript code that:
|
|
230
|
-
* 1. Reads input parameters from the context
|
|
231
|
-
* 2. Calls the JavaScript bridge function to execute the user's function
|
|
232
|
-
* 3. Converts the return value to the Value type
|
|
233
|
-
*
|
|
234
|
-
* @param node - The JDM function node
|
|
235
|
-
* @param context - The compilation context
|
|
236
|
-
* @returns Generated AssemblyScript code for evaluating the function node
|
|
237
|
-
*/
|
|
238
|
-
export function compileFunctionNode(
|
|
239
|
-
node: {
|
|
240
|
-
id: string;
|
|
241
|
-
name: string;
|
|
242
|
-
content?: any;
|
|
243
|
-
parsedContent?: FunctionNodeContent;
|
|
244
|
-
},
|
|
245
|
-
context: CompilationContext,
|
|
246
|
-
): string {
|
|
247
|
-
const sanitizedId = sanitizeId(node.id);
|
|
248
|
-
|
|
249
|
-
if (!node.parsedContent) {
|
|
250
|
-
throw new CompilationError(
|
|
251
|
-
`Function node "${node.name}" (${node.id}) has not been parsed`,
|
|
252
|
-
ErrorCode.INVALID_NODE_STRUCTURE,
|
|
253
|
-
{ nodeId: node.id, nodeName: node.name, field: 'parsedContent' },
|
|
254
|
-
);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
const { source, parameters } = node.parsedContent;
|
|
258
|
-
|
|
259
|
-
// Store the function source in the compilation context for later retrieval.
|
|
260
|
-
// Function sources must be kept separate from runtime context data to avoid naming conflicts
|
|
261
|
-
// and ensure proper scoping. The prefix prevents collisions with user-defined fields.
|
|
262
|
-
if (!context.functionSources) {
|
|
263
|
-
context.functionSources = new Map();
|
|
264
|
-
}
|
|
265
|
-
context.functionSources.set(sanitizedId, source);
|
|
266
|
-
|
|
267
|
-
// Generate parameter reading and marshaling code
|
|
268
|
-
// Parameters need to be collected into an array for the bridge call
|
|
269
|
-
const paramReads =
|
|
270
|
-
parameters.length > 0
|
|
271
|
-
? parameters
|
|
272
|
-
.map((param) => {
|
|
273
|
-
return ` let ${param} = ctx.get("${param}");`;
|
|
274
|
-
})
|
|
275
|
-
.join('\n')
|
|
276
|
-
: '';
|
|
277
|
-
|
|
278
|
-
const paramArray =
|
|
279
|
-
parameters.length > 0
|
|
280
|
-
? `
|
|
281
|
-
// Create parameter array for JavaScript bridge
|
|
282
|
-
let params = new Array<Value>(0);
|
|
283
|
-
${parameters.map((param) => ` params.push(${param});`).join('\n')}
|
|
284
|
-
`
|
|
285
|
-
: `
|
|
286
|
-
// No parameters
|
|
287
|
-
let params = new Array<Value>(0);
|
|
288
|
-
`;
|
|
289
|
-
|
|
290
|
-
// Generate the main evaluateNode function
|
|
291
|
-
// TODO: Mock execution returns a placeholder result for testing purposes.
|
|
292
|
-
// This allows the compiler to generate valid code and tests to run while the JavaScript
|
|
293
|
-
// function execution bridge is not yet implemented. This will be replaced with actual
|
|
294
|
-
// JavaScript bridge functionality in a future phase
|
|
295
|
-
return `
|
|
296
|
-
export function evaluateNode_${sanitizedId}(ctx: Context): Value {
|
|
297
|
-
// Function node: ${node.name}
|
|
298
|
-
// This node would execute JavaScript code and return the result
|
|
299
|
-
// For now, we return a mock result to allow compilation and testing
|
|
300
|
-
|
|
301
|
-
${paramReads}
|
|
302
|
-
${paramArray}
|
|
303
|
-
// Mock result: return an object indicating function execution
|
|
304
|
-
// This is a placeholder - actual JavaScript execution will be implemented
|
|
305
|
-
// via a JavaScript bridge in the runtime
|
|
306
|
-
let mockResult = new Map<string, Value>();
|
|
307
|
-
mockResult.set("_isFunctionNode", Value.Bool(true));
|
|
308
|
-
mockResult.set("_nodeName", Value.String("${node.name}"));
|
|
309
|
-
${parameters.length > 0 ? parameters.map((param) => ` mockResult.set("_${param}", ${param});`).join('\n') : ''}
|
|
310
|
-
mockResult.set("_output", Value.String("Function execution not yet implemented"));
|
|
311
|
-
|
|
312
|
-
let result = Value.Object(mockResult);
|
|
313
|
-
|
|
314
|
-
return result;
|
|
315
|
-
}`;
|
|
316
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import type { JDMNode } from '../parser';
|
|
2
|
-
import type { CompilationContext, AssemblyScriptCode } from '../types';
|
|
3
|
-
import { sanitizeId } from '../utils';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Compile an input node.
|
|
7
|
-
*
|
|
8
|
-
* Input nodes serve as entry points for the decision model and simply
|
|
9
|
-
* pass through the context data.
|
|
10
|
-
*
|
|
11
|
-
* @param node - The JDM input node
|
|
12
|
-
* @param context - The compilation context
|
|
13
|
-
* @returns Generated AssemblyScript code
|
|
14
|
-
*/
|
|
15
|
-
export function compileInputNode(node: JDMNode, _context: CompilationContext): AssemblyScriptCode {
|
|
16
|
-
const sanitizedId = sanitizeId(node.id);
|
|
17
|
-
return `
|
|
18
|
-
export function evaluateNode_${sanitizedId}(ctx: Context): Value {
|
|
19
|
-
// Input nodes are markers - they trigger evaluation but don't produce output.
|
|
20
|
-
// Null is used as a semantic marker meaning "input processed, no output to add".
|
|
21
|
-
// This distinguishes from actual output values while avoiding undefined/error states.
|
|
22
|
-
return Value.Null();
|
|
23
|
-
}
|
|
24
|
-
`;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Compile an output node.
|
|
29
|
-
*
|
|
30
|
-
* Output nodes mark the end of the decision model and return the final result.
|
|
31
|
-
* They return the accumulated context data from passThrough nodes.
|
|
32
|
-
*
|
|
33
|
-
* @param node - The JDM output node
|
|
34
|
-
* @param context - The compilation context
|
|
35
|
-
* @returns Generated AssemblyScript code
|
|
36
|
-
*/
|
|
37
|
-
export function compileOutputNode(node: JDMNode, _context: CompilationContext): AssemblyScriptCode {
|
|
38
|
-
const sanitizedId = sanitizeId(node.id);
|
|
39
|
-
return `
|
|
40
|
-
export function evaluateNode_${sanitizedId}(ctx: Context): Value {
|
|
41
|
-
// Output nodes return the accumulated context data (passThrough values)
|
|
42
|
-
// Build result from all non-internal context entries
|
|
43
|
-
let __finalResult = new Map<string, Value>();
|
|
44
|
-
const __ctxKeys = ctx.data.keys();
|
|
45
|
-
for (let __i = 0; __i < __ctxKeys.length; __i++) {
|
|
46
|
-
const __key = __ctxKeys[__i];
|
|
47
|
-
// $-prefixed keys are internal namespaces ($nodes, $)
|
|
48
|
-
// # is iteration variable
|
|
49
|
-
// acc is reduce accumulator
|
|
50
|
-
// None should appear in final output - only actual output fields.
|
|
51
|
-
if (!__key.startsWith("$") && __key !== "#" && __key !== "acc") {
|
|
52
|
-
// AssemblyScript has no Map.filter(), so we must iterate and conditionally add keys.
|
|
53
|
-
// This is more verbose but necessary given AS limitations.
|
|
54
|
-
__finalResult.set(__key, ctx.data.get(__key));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return Value.Object(__finalResult);
|
|
58
|
-
}
|
|
59
|
-
`;
|
|
60
|
-
}
|