@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,161 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unary expression transformation utilities for decision table compilation.
|
|
3
|
-
*
|
|
4
|
-
* In decision tables, expressions are evaluated in a "unary" context where
|
|
5
|
-
* the $ symbol is automatically bound to the input field's value. Since
|
|
6
|
-
* AssemblyScript doesn't support closures, we transform the AST to replace
|
|
7
|
-
* DollarRef nodes with pre-compiled code.
|
|
8
|
-
*
|
|
9
|
-
* This module provides:
|
|
10
|
-
* - InlineCode: A marker type for pre-compiled code in ASTs
|
|
11
|
-
* - replaceDollarRefWithCode: AST transformer for dollar reference substitution
|
|
12
|
-
* - compileExpressionWithInlineCode: Compiler that handles InlineCode nodes
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import type { CompilationContext } from './types';
|
|
16
|
-
import { compileExpression, compileBinaryOpWithValues } from './nodes/expression';
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Special marker type for inline code that should be inserted directly.
|
|
20
|
-
*
|
|
21
|
-
* Used when AST transformation requires embedding already-compiled code.
|
|
22
|
-
* For example, when compiling "$ > 100" where $ refers to a field value,
|
|
23
|
-
* we replace the DollarRef node with an InlineCode node containing the
|
|
24
|
-
* pre-compiled field access code.
|
|
25
|
-
*/
|
|
26
|
-
export interface InlineCode {
|
|
27
|
-
type: 'InlineCode';
|
|
28
|
-
code: string;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Recursively replace DollarRef nodes in an AST with InlineCode nodes
|
|
33
|
-
* containing the pre-compiled field expression.
|
|
34
|
-
*
|
|
35
|
-
* This transformation enables unary expression compilation in AssemblyScript
|
|
36
|
-
* by substituting $ references with actual field access code at compile time.
|
|
37
|
-
*
|
|
38
|
-
* @param ast - The AST node to transform
|
|
39
|
-
* @param compiledField - The pre-compiled code for the field value
|
|
40
|
-
* @returns The transformed AST with InlineCode nodes instead of DollarRef
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* // Original AST for "$ > 100":
|
|
44
|
-
* // { type: "BinaryOp", op: ">", left: { type: "DollarRef" }, right: { type: "NumberLiteral", value: 100 } }
|
|
45
|
-
* //
|
|
46
|
-
* // After transformation with compiledField = 'ctx.get("creditScore")':
|
|
47
|
-
* // { type: "BinaryOp", op: ">", left: { type: "InlineCode", code: 'ctx.get("creditScore")' }, right: { type: "NumberLiteral", value: 100 } }
|
|
48
|
-
*/
|
|
49
|
-
export function replaceDollarRefWithCode(ast: any, compiledField: string): any {
|
|
50
|
-
if (!ast || typeof ast !== 'object') {
|
|
51
|
-
return ast;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// If this is a DollarRef, replace it with InlineCode containing the compiled field
|
|
55
|
-
if (ast.type === 'DollarRef') {
|
|
56
|
-
return { type: 'InlineCode', code: compiledField } as InlineCode;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Recursively transform child nodes
|
|
60
|
-
const result: any = { type: ast.type };
|
|
61
|
-
|
|
62
|
-
for (const key of Object.keys(ast)) {
|
|
63
|
-
if (key === 'type') {
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const value = ast[key];
|
|
68
|
-
if (Array.isArray(value)) {
|
|
69
|
-
result[key] = value.map((item) => replaceDollarRefWithCode(item, compiledField));
|
|
70
|
-
} else if (value && typeof value === 'object') {
|
|
71
|
-
result[key] = replaceDollarRefWithCode(value, compiledField);
|
|
72
|
-
} else {
|
|
73
|
-
result[key] = value;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return result;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Compile an AST that may contain InlineCode nodes.
|
|
82
|
-
*
|
|
83
|
-
* This compiler extends the standard expression compiler to handle InlineCode
|
|
84
|
-
* nodes, which contain pre-compiled code that should be inserted directly.
|
|
85
|
-
* It's used after replaceDollarRefWithCode to compile the transformed AST.
|
|
86
|
-
*
|
|
87
|
-
* @param ast - The AST node to compile (may contain InlineCode nodes)
|
|
88
|
-
* @param context - The compilation context
|
|
89
|
-
* @returns Compiled AssemblyScript code string
|
|
90
|
-
*/
|
|
91
|
-
export function compileExpressionWithInlineCode(ast: any, context: CompilationContext): string {
|
|
92
|
-
// Handle InlineCode nodes specially - just return the pre-compiled code
|
|
93
|
-
if (ast.type === 'InlineCode') {
|
|
94
|
-
return (ast as InlineCode).code;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// For nodes with binary operations
|
|
98
|
-
if (ast.type === 'BinaryOp') {
|
|
99
|
-
const left = compileExpressionWithInlineCode(ast.left, context);
|
|
100
|
-
const right = compileExpressionWithInlineCode(ast.right, context);
|
|
101
|
-
return compileBinaryOpWithValues(ast.op, left, right);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// For unary operations
|
|
105
|
-
if (ast.type === 'UnaryOp') {
|
|
106
|
-
const operand = compileExpressionWithInlineCode(ast.operand, context);
|
|
107
|
-
switch (ast.op) {
|
|
108
|
-
case 'not':
|
|
109
|
-
return `Value.Bool(!(${operand}).asBool())`;
|
|
110
|
-
case '-':
|
|
111
|
-
return `negateValue(${operand})`;
|
|
112
|
-
default:
|
|
113
|
-
throw new Error(`Unknown unary operator: ${ast.op}`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// For function calls, compile args recursively to handle InlineCode
|
|
118
|
-
if (ast.type === 'FunctionCall') {
|
|
119
|
-
const callee = ast.callee;
|
|
120
|
-
if (callee.type === 'Identifier') {
|
|
121
|
-
const args = ast.args.map((arg: any) => compileExpressionWithInlineCode(arg, context));
|
|
122
|
-
const numArgs = args.length;
|
|
123
|
-
|
|
124
|
-
// Use helper functions to create argument arrays
|
|
125
|
-
if (numArgs === 1) {
|
|
126
|
-
return `evaluateFunction("${callee.name}", makeArgs1(${args[0]}))`;
|
|
127
|
-
} else if (numArgs === 2) {
|
|
128
|
-
return `evaluateFunction("${callee.name}", makeArgs2(${args[0]}, ${args[1]}))`;
|
|
129
|
-
} else if (numArgs === 3) {
|
|
130
|
-
return `evaluateFunction("${callee.name}", makeArgs3(${args[0]}, ${args[1]}, ${args[2]}))`;
|
|
131
|
-
} else {
|
|
132
|
-
return `evaluateFunction("${callee.name}", [${args.join(', ')}])`;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
throw new Error('Only direct function calls are supported');
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// For member access
|
|
139
|
-
if (ast.type === 'MemberAccess') {
|
|
140
|
-
const obj = compileExpressionWithInlineCode(ast.object, context);
|
|
141
|
-
return `getProperty(${obj}, "${ast.property}")`;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
// For index access
|
|
145
|
-
if (ast.type === 'IndexAccess') {
|
|
146
|
-
const obj = compileExpressionWithInlineCode(ast.object, context);
|
|
147
|
-
const idx = compileExpressionWithInlineCode(ast.index, context);
|
|
148
|
-
return `getIndex(${obj}, ${idx})`;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// For ternary operations
|
|
152
|
-
if (ast.type === 'TernaryOp') {
|
|
153
|
-
const cond = compileExpressionWithInlineCode(ast.condition, context);
|
|
154
|
-
const cons = compileExpressionWithInlineCode(ast.consequent, context);
|
|
155
|
-
const alt = compileExpressionWithInlineCode(ast.alternate, context);
|
|
156
|
-
return `(${cond}.asBool() ? ${cons} : ${alt})`;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// For other node types, delegate to standard compileExpression
|
|
160
|
-
return compileExpression(ast, context);
|
|
161
|
-
}
|
package/src/compiler/utils.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sanitize an ID for use as an AssemblyScript identifier.
|
|
3
|
-
* Replaces hyphens and other special characters with underscores.
|
|
4
|
-
*
|
|
5
|
-
* @param id - The ID to sanitize
|
|
6
|
-
* @returns A valid AssemblyScript identifier
|
|
7
|
-
*/
|
|
8
|
-
export function sanitizeId(id: string): string {
|
|
9
|
-
// Replace hyphens and other non-alphanumeric characters (except underscores) with underscores
|
|
10
|
-
return id.replace(/[^a-zA-Z0-9_]/g, '_');
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Convert a node name to a camelCase key.
|
|
15
|
-
* Used for wrapping decision table outputs with the node name.
|
|
16
|
-
* Example: "RiskFactors" -> "riskFactors", "DiscountRules" -> "discountRules"
|
|
17
|
-
*
|
|
18
|
-
* @param name - The node name to convert
|
|
19
|
-
* @returns A camelCase key
|
|
20
|
-
*/
|
|
21
|
-
export function nodeNameToKey(name: string): string {
|
|
22
|
-
if (!name || name.length === 0) {
|
|
23
|
-
return name;
|
|
24
|
-
}
|
|
25
|
-
// Lowercase the first character
|
|
26
|
-
return name.charAt(0).toLowerCase() + name.slice(1);
|
|
27
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Virtual filesystem for in-memory AssemblyScript compilation.
|
|
3
|
-
* Manages file mappings for the ASC compiler.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
RUNTIME_VALUES,
|
|
8
|
-
RUNTIME_CONTEXT,
|
|
9
|
-
RUNTIME_EXPRESSIONS,
|
|
10
|
-
RUNTIME_TABLES,
|
|
11
|
-
RUNTIME_MEMORY,
|
|
12
|
-
RUNTIME_STRINGS,
|
|
13
|
-
RUNTIME_ARRAYS,
|
|
14
|
-
} from './runtime/index';
|
|
15
|
-
|
|
16
|
-
/** VirtualFS stores files as string or Uint8Array content */
|
|
17
|
-
export type VirtualFS = Map<string, string | Uint8Array>;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Create a virtual filesystem with runtime libraries and user code.
|
|
21
|
-
* @param code - User's AssemblyScript code to compile
|
|
22
|
-
* @returns Configured virtual filesystem
|
|
23
|
-
*/
|
|
24
|
-
export function createVirtualFS(code: string): VirtualFS {
|
|
25
|
-
const virtualFS: VirtualFS = new Map();
|
|
26
|
-
virtualFS.set('src/runtime/index.ts', code);
|
|
27
|
-
virtualFS.set('src/runtime/values.ts', RUNTIME_VALUES);
|
|
28
|
-
virtualFS.set('src/runtime/context.ts', RUNTIME_CONTEXT);
|
|
29
|
-
virtualFS.set('src/runtime/expressions.ts', RUNTIME_EXPRESSIONS);
|
|
30
|
-
virtualFS.set('src/runtime/tables.ts', RUNTIME_TABLES);
|
|
31
|
-
virtualFS.set('src/runtime/memory.ts', RUNTIME_MEMORY);
|
|
32
|
-
virtualFS.set('src/runtime/strings.ts', RUNTIME_STRINGS);
|
|
33
|
-
virtualFS.set('src/runtime/arrays.ts', RUNTIME_ARRAYS);
|
|
34
|
-
return virtualFS;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Create ASC-compatible file system callbacks.
|
|
39
|
-
* @param virtualFS - The virtual filesystem to use
|
|
40
|
-
* @returns Object with readFile, writeFile, listFiles functions for ASC compiler
|
|
41
|
-
*/
|
|
42
|
-
export function createASCFileSystemCallbacks(virtualFS: VirtualFS) {
|
|
43
|
-
return {
|
|
44
|
-
readFile(name: string, baseDir: string): string | null {
|
|
45
|
-
// Try multiple path variations to find the file
|
|
46
|
-
const possibleKeys = [
|
|
47
|
-
// 'src/runtime/index.ts'
|
|
48
|
-
name,
|
|
49
|
-
// './src/runtime/index.ts' or 'src/runtime/index.ts'
|
|
50
|
-
baseDir ? `${baseDir}/${name}` : name,
|
|
51
|
-
// Remove leading ./
|
|
52
|
-
name.startsWith('./') ? name.slice(2) : name,
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
for (const key of possibleKeys) {
|
|
56
|
-
const content = virtualFS.get(key);
|
|
57
|
-
if (typeof content === 'string') {
|
|
58
|
-
return content;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return null;
|
|
62
|
-
},
|
|
63
|
-
writeFile(name: string, data: Uint8Array | string, baseDir: string): void {
|
|
64
|
-
const key = baseDir ? `${baseDir}/${name}` : name;
|
|
65
|
-
virtualFS.set(key, data);
|
|
66
|
-
},
|
|
67
|
-
listFiles(dirname: string, baseDir: string): string[] | null {
|
|
68
|
-
const prefix = baseDir ? `${baseDir}/${dirname}` : dirname;
|
|
69
|
-
return [...virtualFS.keys()].filter((f) => f.startsWith(prefix));
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Get output files from virtual filesystem after compilation.
|
|
76
|
-
* @param virtualFS - The virtual filesystem
|
|
77
|
-
* @returns Object with binary and wat files (may be undefined if not present)
|
|
78
|
-
*/
|
|
79
|
-
export function getCompilationOutput(virtualFS: VirtualFS): {
|
|
80
|
-
binary: Uint8Array | undefined;
|
|
81
|
-
wat: string | undefined;
|
|
82
|
-
} {
|
|
83
|
-
// The compiler writes to ./output.wasm (with ./ prefix)
|
|
84
|
-
const binary = virtualFS.get('output.wasm') || virtualFS.get('./output.wasm');
|
|
85
|
-
const wat = virtualFS.get('output.wat') || virtualFS.get('./output.wat');
|
|
86
|
-
return {
|
|
87
|
-
binary: binary instanceof Uint8Array ? binary : undefined,
|
|
88
|
-
wat: typeof wat === 'string' ? wat : undefined,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebAssembly module instantiation and runtime support.
|
|
3
|
-
* Handles loading compiled WASM and setting up the host environment.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { CompilationError, ErrorCode } from './errors';
|
|
7
|
-
import { RuntimeError } from './runtime';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Type for WebAssembly exports from compiled AssemblyScript module.
|
|
11
|
-
*/
|
|
12
|
-
export interface WasmExports {
|
|
13
|
-
/** Main evaluation function - takes input pointer, returns output pointer */
|
|
14
|
-
evaluate: (inputPtr: number) => number;
|
|
15
|
-
/** Allocate memory for a new object */
|
|
16
|
-
__new: (size: number, id: number) => number;
|
|
17
|
-
/** Pin an object to prevent garbage collection */
|
|
18
|
-
__pin: (ptr: number) => number;
|
|
19
|
-
/** Unpin a previously pinned object */
|
|
20
|
-
__unpin: (ptr: number) => void;
|
|
21
|
-
/** WebAssembly linear memory */
|
|
22
|
-
memory?: WebAssembly.Memory;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Create the host environment imports for WASM instantiation.
|
|
27
|
-
*
|
|
28
|
-
* This sets up the abort handler and any other host functions
|
|
29
|
-
* required by the AssemblyScript runtime.
|
|
30
|
-
*
|
|
31
|
-
* @returns WebAssembly imports object
|
|
32
|
-
*/
|
|
33
|
-
export function createHostImports(): WebAssembly.Imports {
|
|
34
|
-
return {
|
|
35
|
-
env: {
|
|
36
|
-
abort: (msg: number, file: number, line: number, col: number) => {
|
|
37
|
-
// Log to stderr for debugging (useful for runtime errors in production)
|
|
38
|
-
console.error(`WASM abort at ${file}:${line}:${col}, msg: ${msg}`);
|
|
39
|
-
throw new RuntimeError(`WASM abort at ${file}:${line}:${col}`);
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Validate that required exports exist on the WASM module.
|
|
47
|
-
*
|
|
48
|
-
* @param exports - Raw exports from WebAssembly instance
|
|
49
|
-
* @returns Typed WasmExports object
|
|
50
|
-
* @throws CompilationError if required exports are missing
|
|
51
|
-
*/
|
|
52
|
-
export function validateWasmExports(exports: unknown): WasmExports {
|
|
53
|
-
if (!exports || typeof exports !== 'object') {
|
|
54
|
-
throw new CompilationError(
|
|
55
|
-
'Compiled WASM module has no exports',
|
|
56
|
-
ErrorCode.INVALID_NODE_STRUCTURE,
|
|
57
|
-
{ field: 'wasm.exports' },
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
const wasmExports = exports as WasmExports;
|
|
62
|
-
|
|
63
|
-
if (!wasmExports.evaluate) {
|
|
64
|
-
throw new CompilationError(
|
|
65
|
-
'Compiled WASM module does not export required function: evaluate',
|
|
66
|
-
ErrorCode.INVALID_NODE_STRUCTURE,
|
|
67
|
-
{ field: 'wasm.exports.evaluate' },
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (!wasmExports.__new) {
|
|
72
|
-
throw new CompilationError(
|
|
73
|
-
'Compiled WASM module does not export required function: __new',
|
|
74
|
-
ErrorCode.INVALID_NODE_STRUCTURE,
|
|
75
|
-
{ field: 'wasm.exports.__new' },
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (!wasmExports.memory) {
|
|
80
|
-
throw new CompilationError(
|
|
81
|
-
'Compiled WASM module does not export required function: memory',
|
|
82
|
-
ErrorCode.INVALID_NODE_STRUCTURE,
|
|
83
|
-
{ field: 'wasm.exports.memory' },
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return wasmExports;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Instantiate compiled WASM and return evaluation function.
|
|
92
|
-
*
|
|
93
|
-
* Note: JS <-> WASM serialization is handled by the marshal/unmarshal functions
|
|
94
|
-
* generated by marshal-gen.ts. This function is maintained for backward compatibility.
|
|
95
|
-
*
|
|
96
|
-
* @param binary - Compiled WASM binary
|
|
97
|
-
* @returns Object with an evaluate function (not yet implemented)
|
|
98
|
-
*/
|
|
99
|
-
export async function instantiateWasm(
|
|
100
|
-
binary: Uint8Array,
|
|
101
|
-
): Promise<{ evaluate: (input: object) => object }> {
|
|
102
|
-
// Compile the WASM binary
|
|
103
|
-
const module = await WebAssembly.compile(binary.buffer as ArrayBuffer);
|
|
104
|
-
|
|
105
|
-
// Define the host environment
|
|
106
|
-
const imports = createHostImports();
|
|
107
|
-
|
|
108
|
-
// Instantiate with host environment
|
|
109
|
-
const instance = await WebAssembly.instantiate(module, imports);
|
|
110
|
-
|
|
111
|
-
// Validate exports
|
|
112
|
-
validateWasmExports(instance.exports);
|
|
113
|
-
|
|
114
|
-
return {
|
|
115
|
-
evaluate(_input: object): object {
|
|
116
|
-
// TODO: Implement JS <-> WASM serialization
|
|
117
|
-
// This will use wasmExports.__new to allocate memory, serialize the input object,
|
|
118
|
-
// call evaluate, and deserialize the result back to JavaScript.
|
|
119
|
-
// This functionality will be implemented with schema-driven typed serialization.
|
|
120
|
-
|
|
121
|
-
throw new RuntimeError(
|
|
122
|
-
'JS <-> WASM serialization not yet implemented. ' +
|
|
123
|
-
'This will be implemented with schema-driven typed serialization.',
|
|
124
|
-
);
|
|
125
|
-
},
|
|
126
|
-
};
|
|
127
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './compiler/index';
|