@elaraai/east 0.0.1-beta.8 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +15 -666
- package/README.md +113 -88
- package/dist/src/analyze.d.ts +3 -0
- package/dist/src/analyze.d.ts.map +1 -1
- package/dist/src/analyze.js +223 -111
- package/dist/src/analyze.js.map +1 -1
- package/dist/src/analyze.spec.d.ts +2 -0
- package/dist/src/analyze.spec.d.ts.map +1 -0
- package/dist/src/analyze.spec.js +445 -0
- package/dist/src/analyze.spec.js.map +1 -0
- package/dist/src/ast.d.ts +54 -35
- package/dist/src/ast.d.ts.map +1 -1
- package/dist/src/ast_to_ir.coerce_to.spec.d.ts +15 -0
- package/dist/src/ast_to_ir.coerce_to.spec.d.ts.map +1 -0
- package/dist/src/ast_to_ir.coerce_to.spec.js +420 -0
- package/dist/src/ast_to_ir.coerce_to.spec.js.map +1 -0
- package/dist/src/ast_to_ir.d.ts +18 -4
- package/dist/src/ast_to_ir.d.ts.map +1 -1
- package/dist/src/ast_to_ir.js +233 -178
- package/dist/src/ast_to_ir.js.map +1 -1
- package/dist/src/builtins.d.ts +1 -1
- package/dist/src/builtins.d.ts.map +1 -1
- package/dist/src/builtins.js +194 -2
- package/dist/src/builtins.js.map +1 -1
- package/dist/src/comparison.d.ts +2 -2
- package/dist/src/comparison.d.ts.map +1 -1
- package/dist/src/comparison.js +115 -40
- package/dist/src/comparison.js.map +1 -1
- package/dist/src/comparison.spec.d.ts +2 -0
- package/dist/src/comparison.spec.d.ts.map +1 -0
- package/dist/src/comparison.spec.js +1200 -0
- package/dist/src/comparison.spec.js.map +1 -0
- package/dist/src/compile.d.ts +31 -9
- package/dist/src/compile.d.ts.map +1 -1
- package/dist/src/compile.js +1048 -548
- package/dist/src/compile.js.map +1 -1
- package/dist/src/containers/matrix.d.ts +15 -0
- package/dist/src/containers/matrix.d.ts.map +1 -0
- package/dist/src/containers/matrix.js +15 -0
- package/dist/src/containers/matrix.js.map +1 -0
- package/dist/src/containers/ref.d.ts.map +1 -1
- package/dist/src/containers/ref.js +1 -1
- package/dist/src/containers/ref.js.map +1 -1
- package/dist/src/containers/sortedmap.spec.d.ts +2 -0
- package/dist/src/containers/sortedmap.spec.d.ts.map +1 -0
- package/dist/src/containers/sortedmap.spec.js +180 -0
- package/dist/src/containers/sortedmap.spec.js.map +1 -0
- package/dist/src/containers/sortedset.spec.d.ts +2 -0
- package/dist/src/containers/sortedset.spec.d.ts.map +1 -0
- package/dist/src/containers/sortedset.spec.js +228 -0
- package/dist/src/containers/sortedset.spec.js.map +1 -0
- package/dist/src/containers/variant.d.ts.map +1 -1
- package/dist/src/containers/variant.js +1 -1
- package/dist/src/containers/variant.js.map +1 -1
- package/dist/src/containers/variant.spec.d.ts +2 -0
- package/dist/src/containers/variant.spec.d.ts.map +1 -0
- package/dist/src/containers/variant.spec.js +217 -0
- package/dist/src/containers/variant.spec.js.map +1 -0
- package/dist/src/datetime_format/parse.spec.d.ts +6 -0
- package/dist/src/datetime_format/parse.spec.d.ts.map +1 -0
- package/dist/src/datetime_format/parse.spec.js +379 -0
- package/dist/src/datetime_format/parse.spec.js.map +1 -0
- package/dist/src/datetime_format/print.spec.d.ts +6 -0
- package/dist/src/datetime_format/print.spec.d.ts.map +1 -0
- package/dist/src/datetime_format/print.spec.js +257 -0
- package/dist/src/datetime_format/print.spec.js.map +1 -0
- package/dist/src/datetime_format/tokenize.spec.d.ts +2 -0
- package/dist/src/datetime_format/tokenize.spec.d.ts.map +1 -0
- package/dist/src/datetime_format/tokenize.spec.js +508 -0
- package/dist/src/datetime_format/tokenize.spec.js.map +1 -0
- package/dist/src/datetime_format/types.d.ts +23 -23
- package/dist/src/default.d.ts.map +1 -1
- package/dist/src/default.js +33 -0
- package/dist/src/default.js.map +1 -1
- package/dist/src/default.spec.d.ts +2 -0
- package/dist/src/default.spec.d.ts.map +1 -0
- package/dist/src/default.spec.js +178 -0
- package/dist/src/default.spec.js.map +1 -0
- package/dist/src/eastir.d.ts +7 -0
- package/dist/src/eastir.d.ts.map +1 -1
- package/dist/src/eastir.js +55 -7
- package/dist/src/eastir.js.map +1 -1
- package/dist/src/error.d.ts +14 -4
- package/dist/src/error.d.ts.map +1 -1
- package/dist/src/error.js +28 -3
- package/dist/src/error.js.map +1 -1
- package/dist/src/example.d.ts +87 -0
- package/dist/src/example.d.ts.map +1 -0
- package/dist/src/example.js +18 -0
- package/dist/src/example.js.map +1 -0
- package/dist/src/expr/array.d.ts +43 -1
- package/dist/src/expr/array.d.ts.map +1 -1
- package/dist/src/expr/array.js +103 -53
- package/dist/src/expr/array.js.map +1 -1
- package/dist/src/expr/ast.d.ts +1 -1
- package/dist/src/expr/ast.d.ts.map +1 -1
- package/dist/src/expr/ast.js +112 -54
- package/dist/src/expr/ast.js.map +1 -1
- package/dist/src/expr/asyncfunction.d.ts.map +1 -1
- package/dist/src/expr/asyncfunction.js +6 -4
- package/dist/src/expr/asyncfunction.js.map +1 -1
- package/dist/src/expr/blob.d.ts +48 -0
- package/dist/src/expr/blob.d.ts.map +1 -1
- package/dist/src/expr/blob.js +63 -8
- package/dist/src/expr/blob.js.map +1 -1
- package/dist/src/expr/block.d.ts +213 -12
- package/dist/src/expr/block.d.ts.map +1 -1
- package/dist/src/expr/block.js +796 -293
- package/dist/src/expr/block.js.map +1 -1
- package/dist/src/expr/boolean.d.ts +44 -0
- package/dist/src/expr/boolean.d.ts.map +1 -1
- package/dist/src/expr/boolean.js +58 -6
- package/dist/src/expr/boolean.js.map +1 -1
- package/dist/src/expr/datetime.d.ts +135 -0
- package/dist/src/expr/datetime.d.ts.map +1 -1
- package/dist/src/expr/datetime.js +184 -34
- package/dist/src/expr/datetime.js.map +1 -1
- package/dist/src/expr/dict.d.ts +47 -2
- package/dist/src/expr/dict.d.ts.map +1 -1
- package/dist/src/expr/dict.js +122 -61
- package/dist/src/expr/dict.js.map +1 -1
- package/dist/src/expr/expr.d.ts +3 -1
- package/dist/src/expr/expr.d.ts.map +1 -1
- package/dist/src/expr/expr.js +4 -3
- package/dist/src/expr/expr.js.map +1 -1
- package/dist/src/expr/float.d.ts +153 -0
- package/dist/src/expr/float.d.ts.map +1 -1
- package/dist/src/expr/float.js +191 -17
- package/dist/src/expr/float.js.map +1 -1
- package/dist/src/expr/function.d.ts +7 -2
- package/dist/src/expr/function.d.ts.map +1 -1
- package/dist/src/expr/function.js +6 -4
- package/dist/src/expr/function.js.map +1 -1
- package/dist/src/expr/index.d.ts +186 -2
- package/dist/src/expr/index.d.ts.map +1 -1
- package/dist/src/expr/index.js +183 -2
- package/dist/src/expr/index.js.map +1 -1
- package/dist/src/expr/integer.d.ts +180 -0
- package/dist/src/expr/integer.d.ts.map +1 -1
- package/dist/src/expr/integer.js +189 -18
- package/dist/src/expr/integer.js.map +1 -1
- package/dist/src/expr/libs/array.js +3 -3
- package/dist/src/expr/libs/array.js.map +1 -1
- package/dist/src/expr/libs/blob.js +3 -3
- package/dist/src/expr/libs/blob.js.map +1 -1
- package/dist/src/expr/libs/dict.js +1 -1
- package/dist/src/expr/libs/dict.js.map +1 -1
- package/dist/src/expr/libs/matrix.d.ts +17 -0
- package/dist/src/expr/libs/matrix.d.ts.map +1 -0
- package/dist/src/expr/libs/matrix.js +60 -0
- package/dist/src/expr/libs/matrix.js.map +1 -0
- package/dist/src/expr/libs/set.js +1 -1
- package/dist/src/expr/libs/set.js.map +1 -1
- package/dist/src/expr/libs/string.d.ts.map +1 -1
- package/dist/src/expr/libs/string.js +2 -1
- package/dist/src/expr/libs/string.js.map +1 -1
- package/dist/src/expr/libs/vector.d.ts +16 -0
- package/dist/src/expr/libs/vector.d.ts.map +1 -0
- package/dist/src/expr/libs/vector.js +44 -0
- package/dist/src/expr/libs/vector.js.map +1 -0
- package/dist/src/expr/matrix.d.ts +109 -0
- package/dist/src/expr/matrix.d.ts.map +1 -0
- package/dist/src/expr/matrix.js +224 -0
- package/dist/src/expr/matrix.js.map +1 -0
- package/dist/src/expr/recursive.d.ts +83 -0
- package/dist/src/expr/recursive.d.ts.map +1 -0
- package/dist/src/expr/recursive.js +99 -0
- package/dist/src/expr/recursive.js.map +1 -0
- package/dist/src/expr/ref.js +5 -5
- package/dist/src/expr/ref.js.map +1 -1
- package/dist/src/expr/set.d.ts +44 -2
- package/dist/src/expr/set.d.ts.map +1 -1
- package/dist/src/expr/set.js +102 -52
- package/dist/src/expr/set.js.map +1 -1
- package/dist/src/expr/string.d.ts +134 -0
- package/dist/src/expr/string.d.ts.map +1 -1
- package/dist/src/expr/string.js +173 -23
- package/dist/src/expr/string.js.map +1 -1
- package/dist/src/expr/struct.d.ts +1 -1
- package/dist/src/expr/struct.d.ts.map +1 -1
- package/dist/src/expr/struct.js +2 -2
- package/dist/src/expr/struct.js.map +1 -1
- package/dist/src/expr/types.d.ts +12 -9
- package/dist/src/expr/types.d.ts.map +1 -1
- package/dist/src/expr/variant.d.ts +108 -11
- package/dist/src/expr/variant.d.ts.map +1 -1
- package/dist/src/expr/variant.js +76 -38
- package/dist/src/expr/variant.js.map +1 -1
- package/dist/src/expr/vector.d.ts +102 -0
- package/dist/src/expr/vector.d.ts.map +1 -0
- package/dist/src/expr/vector.js +202 -0
- package/dist/src/expr/vector.js.map +1 -0
- package/dist/src/fuzz.d.ts +36 -2
- package/dist/src/fuzz.d.ts.map +1 -1
- package/dist/src/fuzz.js +409 -77
- package/dist/src/fuzz.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +12 -2
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +13 -2
- package/dist/src/internal.js.map +1 -1
- package/dist/src/ir.d.ts +1754 -1484
- package/dist/src/ir.d.ts.map +1 -1
- package/dist/src/ir.js +51 -34
- package/dist/src/ir.js.map +1 -1
- package/dist/src/ir.spec.d.ts +2 -0
- package/dist/src/ir.spec.d.ts.map +1 -0
- package/dist/src/ir.spec.js +35 -0
- package/dist/src/ir.spec.js.map +1 -0
- package/dist/src/location.d.ts +56 -17
- package/dist/src/location.d.ts.map +1 -1
- package/dist/src/location.js +226 -29
- package/dist/src/location.js.map +1 -1
- package/dist/src/location.spec.d.ts +2 -0
- package/dist/src/location.spec.d.ts.map +1 -0
- package/dist/src/location.spec.js +102 -0
- package/dist/src/location.spec.js.map +1 -0
- package/dist/src/patch/apply.d.ts +15 -0
- package/dist/src/patch/apply.d.ts.map +1 -0
- package/dist/src/patch/apply.js +352 -0
- package/dist/src/patch/apply.js.map +1 -0
- package/dist/src/patch/compose.d.ts +15 -0
- package/dist/src/patch/compose.d.ts.map +1 -0
- package/dist/src/patch/compose.js +448 -0
- package/dist/src/patch/compose.js.map +1 -0
- package/dist/src/patch/diff.d.ts +15 -0
- package/dist/src/patch/diff.d.ts.map +1 -0
- package/dist/src/patch/diff.js +347 -0
- package/dist/src/patch/diff.js.map +1 -0
- package/dist/src/patch/fuzz.d.ts +73 -0
- package/dist/src/patch/fuzz.d.ts.map +1 -0
- package/dist/src/patch/fuzz.js +159 -0
- package/dist/src/patch/fuzz.js.map +1 -0
- package/dist/src/patch/index.d.ts +32 -0
- package/dist/src/patch/index.d.ts.map +1 -0
- package/dist/src/patch/index.js +48 -0
- package/dist/src/patch/index.js.map +1 -0
- package/dist/src/patch/invert.d.ts +15 -0
- package/dist/src/patch/invert.d.ts.map +1 -0
- package/dist/src/patch/invert.js +284 -0
- package/dist/src/patch/invert.js.map +1 -0
- package/dist/src/patch/merge.d.ts +56 -0
- package/dist/src/patch/merge.d.ts.map +1 -0
- package/dist/src/patch/merge.js +586 -0
- package/dist/src/patch/merge.js.map +1 -0
- package/dist/src/patch/merge.spec.d.ts +2 -0
- package/dist/src/patch/merge.spec.d.ts.map +1 -0
- package/dist/src/patch/merge.spec.js +1139 -0
- package/dist/src/patch/merge.spec.js.map +1 -0
- package/dist/src/patch/patch.spec.d.ts +2 -0
- package/dist/src/patch/patch.spec.d.ts.map +1 -0
- package/dist/src/patch/patch.spec.js +452 -0
- package/dist/src/patch/patch.spec.js.map +1 -0
- package/dist/src/patch/path.d.ts +115 -0
- package/dist/src/patch/path.d.ts.map +1 -0
- package/dist/src/patch/path.js +192 -0
- package/dist/src/patch/path.js.map +1 -0
- package/dist/src/patch/path.spec.d.ts +6 -0
- package/dist/src/patch/path.spec.d.ts.map +1 -0
- package/dist/src/patch/path.spec.js +322 -0
- package/dist/src/patch/path.spec.js.map +1 -0
- package/dist/src/patch/prune.d.ts +77 -0
- package/dist/src/patch/prune.d.ts.map +1 -0
- package/dist/src/patch/prune.js +115 -0
- package/dist/src/patch/prune.js.map +1 -0
- package/dist/src/patch/prune.spec.d.ts +6 -0
- package/dist/src/patch/prune.spec.d.ts.map +1 -0
- package/dist/src/patch/prune.spec.js +473 -0
- package/dist/src/patch/prune.spec.js.map +1 -0
- package/dist/src/patch/type_of_patch.d.ts +25 -0
- package/dist/src/patch/type_of_patch.d.ts.map +1 -0
- package/dist/src/patch/type_of_patch.js +144 -0
- package/dist/src/patch/type_of_patch.js.map +1 -0
- package/dist/src/patch/types.d.ts +220 -0
- package/dist/src/patch/types.d.ts.map +1 -0
- package/dist/src/patch/types.js +62 -0
- package/dist/src/patch/types.js.map +1 -0
- package/dist/src/patch/validate.d.ts +44 -0
- package/dist/src/patch/validate.d.ts.map +1 -0
- package/dist/src/patch/validate.js +190 -0
- package/dist/src/patch/validate.js.map +1 -0
- package/dist/src/patch/validate.spec.d.ts +6 -0
- package/dist/src/patch/validate.spec.d.ts.map +1 -0
- package/dist/src/patch/validate.spec.js +225 -0
- package/dist/src/patch/validate.spec.js.map +1 -0
- package/dist/src/patch/walk.d.ts +121 -0
- package/dist/src/patch/walk.d.ts.map +1 -0
- package/dist/src/patch/walk.js +385 -0
- package/dist/src/patch/walk.js.map +1 -0
- package/dist/src/patch/walk.spec.d.ts +6 -0
- package/dist/src/patch/walk.spec.d.ts.map +1 -0
- package/dist/src/patch/walk.spec.js +621 -0
- package/dist/src/patch/walk.spec.js.map +1 -0
- package/dist/src/platform.d.ts +6 -0
- package/dist/src/platform.d.ts.map +1 -1
- package/dist/src/platform.spec.d.ts +2 -0
- package/dist/src/platform.spec.d.ts.map +1 -0
- package/dist/src/platform.spec.js +330 -0
- package/dist/src/platform.spec.js.map +1 -0
- package/dist/src/serialization/beast.d.ts.map +1 -1
- package/dist/src/serialization/beast.js +12 -0
- package/dist/src/serialization/beast.js.map +1 -1
- package/dist/src/serialization/beast.spec.d.ts +6 -0
- package/dist/src/serialization/beast.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast.spec.js +406 -0
- package/dist/src/serialization/beast.spec.js.map +1 -0
- package/dist/src/serialization/beast2/index.d.ts +50 -0
- package/dist/src/serialization/beast2/index.d.ts.map +1 -0
- package/dist/src/serialization/beast2/index.js +756 -0
- package/dist/src/serialization/beast2/index.js.map +1 -0
- package/dist/src/serialization/beast2/index.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/index.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/index.spec.js +528 -0
- package/dist/src/serialization/beast2/index.spec.js.map +1 -0
- package/dist/src/serialization/beast2/sourcemap-table.d.ts +29 -0
- package/dist/src/serialization/beast2/sourcemap-table.d.ts.map +1 -0
- package/dist/src/serialization/beast2/sourcemap-table.js +82 -0
- package/dist/src/serialization/beast2/sourcemap-table.js.map +1 -0
- package/dist/src/serialization/beast2/string-table.d.ts +16 -0
- package/dist/src/serialization/beast2/string-table.d.ts.map +1 -0
- package/dist/src/serialization/beast2/string-table.js +38 -0
- package/dist/src/serialization/beast2/string-table.js.map +1 -0
- package/dist/src/serialization/beast2/type-table.d.ts +86 -0
- package/dist/src/serialization/beast2/type-table.d.ts.map +1 -0
- package/dist/src/serialization/beast2/type-table.js +618 -0
- package/dist/src/serialization/beast2/type-table.js.map +1 -0
- package/dist/src/serialization/beast2/value-table.d.ts +40 -0
- package/dist/src/serialization/beast2/value-table.d.ts.map +1 -0
- package/dist/src/serialization/beast2/value-table.js +157 -0
- package/dist/src/serialization/beast2/value-table.js.map +1 -0
- package/dist/src/serialization/binary-utils.d.ts +33 -0
- package/dist/src/serialization/binary-utils.d.ts.map +1 -1
- package/dist/src/serialization/binary-utils.js +157 -0
- package/dist/src/serialization/binary-utils.js.map +1 -1
- package/dist/src/serialization/csv.d.ts +17 -17
- package/dist/src/serialization/csv.d.ts.map +1 -1
- package/dist/src/serialization/csv.js +10 -8
- package/dist/src/serialization/csv.js.map +1 -1
- package/dist/src/serialization/csv.spec.d.ts +2 -0
- package/dist/src/serialization/csv.spec.d.ts.map +1 -0
- package/dist/src/serialization/csv.spec.js +556 -0
- package/dist/src/serialization/csv.spec.js.map +1 -0
- package/dist/src/serialization/east-inferred.spec.d.ts +2 -0
- package/dist/src/serialization/east-inferred.spec.d.ts.map +1 -0
- package/dist/src/serialization/east-inferred.spec.js +322 -0
- package/dist/src/serialization/east-inferred.spec.js.map +1 -0
- package/dist/src/serialization/east.d.ts +1 -1
- package/dist/src/serialization/east.d.ts.map +1 -1
- package/dist/src/serialization/east.js +178 -26
- package/dist/src/serialization/east.js.map +1 -1
- package/dist/src/serialization/east.spec.d.ts +2 -0
- package/dist/src/serialization/east.spec.d.ts.map +1 -0
- package/dist/src/serialization/east.spec.js +1548 -0
- package/dist/src/serialization/east.spec.js.map +1 -0
- package/dist/src/serialization/index.d.ts +1 -2
- package/dist/src/serialization/index.d.ts.map +1 -1
- package/dist/src/serialization/index.js +1 -2
- package/dist/src/serialization/index.js.map +1 -1
- package/dist/src/serialization/json.d.ts +1 -1
- package/dist/src/serialization/json.d.ts.map +1 -1
- package/dist/src/serialization/json.js +123 -24
- package/dist/src/serialization/json.js.map +1 -1
- package/dist/src/serialization/json.spec.d.ts +2 -0
- package/dist/src/serialization/json.spec.d.ts.map +1 -0
- package/dist/src/serialization/json.spec.js +1297 -0
- package/dist/src/serialization/json.spec.js.map +1 -0
- package/dist/src/type_of_type.d.ts +72 -35
- package/dist/src/type_of_type.d.ts.map +1 -1
- package/dist/src/type_of_type.is_data.spec.d.ts +6 -0
- package/dist/src/type_of_type.is_data.spec.d.ts.map +1 -0
- package/dist/src/type_of_type.is_data.spec.js +221 -0
- package/dist/src/type_of_type.is_data.spec.js.map +1 -0
- package/dist/src/type_of_type.js +355 -80
- package/dist/src/type_of_type.js.map +1 -1
- package/dist/src/type_of_type.to_etv.spec.d.ts +6 -0
- package/dist/src/type_of_type.to_etv.spec.d.ts.map +1 -0
- package/dist/src/type_of_type.to_etv.spec.js +263 -0
- package/dist/src/type_of_type.to_etv.spec.js.map +1 -0
- package/dist/src/types.d.ts +82 -12
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.error.spec.d.ts +2 -0
- package/dist/src/types.error.spec.d.ts.map +1 -0
- package/dist/src/types.error.spec.js +665 -0
- package/dist/src/types.error.spec.js.map +1 -0
- package/dist/src/types.js +663 -156
- package/dist/src/types.js.map +1 -1
- package/dist/src/types.spec.d.ts +2 -0
- package/dist/src/types.spec.d.ts.map +1 -0
- package/dist/src/types.spec.js +946 -0
- package/dist/src/types.spec.js.map +1 -0
- package/dist/src/walker.d.ts +65 -0
- package/dist/src/walker.d.ts.map +1 -0
- package/dist/src/walker.js +165 -0
- package/dist/src/walker.js.map +1 -0
- package/dist/src/walker.spec.d.ts +6 -0
- package/dist/src/walker.spec.d.ts.map +1 -0
- package/dist/src/walker.spec.js +109 -0
- package/dist/src/walker.spec.js.map +1 -0
- package/package.json +16 -38
- package/dist/src/serialization/beast2-stream.d.ts +0 -38
- package/dist/src/serialization/beast2-stream.d.ts.map +0 -1
- package/dist/src/serialization/beast2-stream.js +0 -670
- package/dist/src/serialization/beast2-stream.js.map +0 -1
- package/dist/src/serialization/beast2.d.ts +0 -41
- package/dist/src/serialization/beast2.d.ts.map +0 -1
- package/dist/src/serialization/beast2.js +0 -495
- package/dist/src/serialization/beast2.js.map +0 -1
package/dist/src/default.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { toEastTypeValue } from "./type_of_type.js";
|
|
6
6
|
import { isVariant, match, variant } from "./containers/variant.js";
|
|
7
7
|
import { ref } from "./containers/ref.js";
|
|
8
|
+
import { matrix } from "./containers/matrix.js";
|
|
8
9
|
export function defaultValue(type) {
|
|
9
10
|
// convert EastTypeValue to EastType if needed
|
|
10
11
|
if (!isVariant(type)) {
|
|
@@ -41,6 +42,22 @@ export function defaultValue(type) {
|
|
|
41
42
|
Recursive: _ => { throw new Error("Cannot create a default value of type .Recursive"); },
|
|
42
43
|
Function: _ => { throw new Error(`Cannot create a default value of type .Function`); },
|
|
43
44
|
AsyncFunction: _ => { throw new Error(`Cannot create a default value of type .AsyncFunction`); },
|
|
45
|
+
Vector: elementType => {
|
|
46
|
+
const et = elementType;
|
|
47
|
+
if (et.type === "Float")
|
|
48
|
+
return new Float64Array(0);
|
|
49
|
+
if (et.type === "Integer")
|
|
50
|
+
return new BigInt64Array(0);
|
|
51
|
+
return new Uint8ClampedArray(0);
|
|
52
|
+
},
|
|
53
|
+
Matrix: elementType => {
|
|
54
|
+
const et = elementType;
|
|
55
|
+
if (et.type === "Float")
|
|
56
|
+
return matrix(new Float64Array(0), 0, 0);
|
|
57
|
+
if (et.type === "Integer")
|
|
58
|
+
return matrix(new BigInt64Array(0), 0, 0);
|
|
59
|
+
return matrix(new Uint8ClampedArray(0), 0, 0);
|
|
60
|
+
},
|
|
44
61
|
});
|
|
45
62
|
}
|
|
46
63
|
export function minimalValue(type) {
|
|
@@ -79,6 +96,22 @@ export function minimalValue(type) {
|
|
|
79
96
|
Recursive: _ => { throw new Error("Cannot create a default value of type .Recursive"); },
|
|
80
97
|
Function: _ => { throw new Error(`Cannot create a default value of type .Function`); },
|
|
81
98
|
AsyncFunction: _ => { throw new Error(`Cannot create a default value of type .AsyncFunction`); },
|
|
99
|
+
Vector: elementType => {
|
|
100
|
+
const et = elementType;
|
|
101
|
+
if (et.type === "Float")
|
|
102
|
+
return new Float64Array(0);
|
|
103
|
+
if (et.type === "Integer")
|
|
104
|
+
return new BigInt64Array(0);
|
|
105
|
+
return new Uint8ClampedArray(0);
|
|
106
|
+
},
|
|
107
|
+
Matrix: elementType => {
|
|
108
|
+
const et = elementType;
|
|
109
|
+
if (et.type === "Float")
|
|
110
|
+
return matrix(new Float64Array(0), 0, 0);
|
|
111
|
+
if (et.type === "Integer")
|
|
112
|
+
return matrix(new BigInt64Array(0), 0, 0);
|
|
113
|
+
return matrix(new Uint8ClampedArray(0), 0, 0);
|
|
114
|
+
},
|
|
82
115
|
});
|
|
83
116
|
}
|
|
84
117
|
//# sourceMappingURL=default.js.map
|
package/dist/src/default.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/default.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAsB,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/default.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.spec.d.ts","sourceRoot":"","sources":["../../src/default.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import { describe, test } from "node:test";
|
|
6
|
+
import assert from "node:assert";
|
|
7
|
+
import { defaultValue, minimalValue } from "./default.js";
|
|
8
|
+
import { NeverType, NullType, BooleanType, IntegerType, FloatType, StringType, DateTimeType, BlobType, ArrayType, SetType, DictType, StructType, VariantType, FunctionType, AsyncFunctionType } from "./types.js";
|
|
9
|
+
describe("defaultValue", () => {
|
|
10
|
+
test("should throw for Never type", () => {
|
|
11
|
+
assert.throws(() => defaultValue(NeverType), /Cannot create a default value of type .Never/);
|
|
12
|
+
});
|
|
13
|
+
test("should return null for Null type", () => {
|
|
14
|
+
assert.strictEqual(defaultValue(NullType), null);
|
|
15
|
+
});
|
|
16
|
+
test("should return false for Boolean type", () => {
|
|
17
|
+
assert.strictEqual(defaultValue(BooleanType), false);
|
|
18
|
+
});
|
|
19
|
+
test("should return 0n for Integer type", () => {
|
|
20
|
+
assert.strictEqual(defaultValue(IntegerType), 0n);
|
|
21
|
+
});
|
|
22
|
+
test("should return 0.0 for Float type", () => {
|
|
23
|
+
assert.strictEqual(defaultValue(FloatType), 0.0);
|
|
24
|
+
});
|
|
25
|
+
test("should return empty string for String type", () => {
|
|
26
|
+
assert.strictEqual(defaultValue(StringType), "");
|
|
27
|
+
});
|
|
28
|
+
test("should return epoch date for DateTime type", () => {
|
|
29
|
+
const result = defaultValue(DateTimeType);
|
|
30
|
+
assert.ok(result instanceof Date);
|
|
31
|
+
assert.strictEqual(result.getTime(), 0);
|
|
32
|
+
});
|
|
33
|
+
test("should return empty Uint8Array for Blob type", () => {
|
|
34
|
+
const result = defaultValue(BlobType);
|
|
35
|
+
assert.ok(result instanceof Uint8Array);
|
|
36
|
+
assert.strictEqual(result.length, 0);
|
|
37
|
+
});
|
|
38
|
+
test("should return empty array for Array type", () => {
|
|
39
|
+
const result = defaultValue(ArrayType(IntegerType));
|
|
40
|
+
assert.ok(Array.isArray(result));
|
|
41
|
+
assert.strictEqual(result.length, 0);
|
|
42
|
+
});
|
|
43
|
+
test("should return empty SortedSet for Set type", () => {
|
|
44
|
+
const result = defaultValue(SetType(IntegerType));
|
|
45
|
+
assert.ok(result instanceof Set);
|
|
46
|
+
assert.strictEqual(result.size, 0);
|
|
47
|
+
});
|
|
48
|
+
test("should return empty SortedMap for Dict type", () => {
|
|
49
|
+
const result = defaultValue(DictType(StringType, IntegerType));
|
|
50
|
+
assert.ok(result instanceof Map);
|
|
51
|
+
assert.strictEqual(result.size, 0);
|
|
52
|
+
});
|
|
53
|
+
test("should return struct with default field values for Struct type", () => {
|
|
54
|
+
const type = StructType({
|
|
55
|
+
name: StringType,
|
|
56
|
+
age: IntegerType,
|
|
57
|
+
active: BooleanType
|
|
58
|
+
});
|
|
59
|
+
const result = defaultValue(type);
|
|
60
|
+
assert.deepStrictEqual(result, {
|
|
61
|
+
name: "",
|
|
62
|
+
age: 0n,
|
|
63
|
+
active: false
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
test("should return nested struct with default values", () => {
|
|
67
|
+
const type = StructType({
|
|
68
|
+
user: StructType({ name: StringType, age: IntegerType }),
|
|
69
|
+
score: FloatType
|
|
70
|
+
});
|
|
71
|
+
const result = defaultValue(type);
|
|
72
|
+
assert.deepStrictEqual(result, {
|
|
73
|
+
user: { name: "", age: 0n },
|
|
74
|
+
score: 0.0
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
test("should return first variant case with default value for Variant type", () => {
|
|
78
|
+
const type = VariantType({
|
|
79
|
+
none: NullType,
|
|
80
|
+
some: IntegerType
|
|
81
|
+
});
|
|
82
|
+
const result = defaultValue(type);
|
|
83
|
+
// Should return the first case (none) with its default value (null)
|
|
84
|
+
assert.strictEqual(result.type, "none");
|
|
85
|
+
assert.strictEqual(result.value, null);
|
|
86
|
+
});
|
|
87
|
+
test("should throw for empty Variant type", () => {
|
|
88
|
+
const type = VariantType({});
|
|
89
|
+
assert.throws(() => defaultValue(type), /Cannot create a value of an empty variant/);
|
|
90
|
+
});
|
|
91
|
+
test("should throw for Function type", () => {
|
|
92
|
+
const type = FunctionType([], NullType);
|
|
93
|
+
assert.throws(() => defaultValue(type), /Cannot create a default value of type .Function/);
|
|
94
|
+
});
|
|
95
|
+
test("should throw for AsyncFunction type", () => {
|
|
96
|
+
const type = AsyncFunctionType([], NullType);
|
|
97
|
+
assert.throws(() => defaultValue(type), /Cannot create a default value of type .AsyncFunction/);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe("minimalValue", () => {
|
|
101
|
+
test("should throw for Never type", () => {
|
|
102
|
+
assert.throws(() => minimalValue(NeverType), /Cannot create a default value of type .Never/);
|
|
103
|
+
});
|
|
104
|
+
test("should return null for Null type", () => {
|
|
105
|
+
assert.strictEqual(minimalValue(NullType), null);
|
|
106
|
+
});
|
|
107
|
+
test("should return false for Boolean type", () => {
|
|
108
|
+
assert.strictEqual(minimalValue(BooleanType), false);
|
|
109
|
+
});
|
|
110
|
+
test("should return 0n for Integer type", () => {
|
|
111
|
+
assert.strictEqual(minimalValue(IntegerType), 0n);
|
|
112
|
+
});
|
|
113
|
+
test("should return 0.0 for Float type", () => {
|
|
114
|
+
assert.strictEqual(minimalValue(FloatType), 0.0);
|
|
115
|
+
});
|
|
116
|
+
test("should return empty string for String type", () => {
|
|
117
|
+
assert.strictEqual(minimalValue(StringType), "");
|
|
118
|
+
});
|
|
119
|
+
test("should return epoch date for DateTime type", () => {
|
|
120
|
+
const result = minimalValue(DateTimeType);
|
|
121
|
+
assert.ok(result instanceof Date);
|
|
122
|
+
assert.strictEqual(result.getTime(), 0);
|
|
123
|
+
});
|
|
124
|
+
test("should return empty Uint8Array for Blob type", () => {
|
|
125
|
+
const result = minimalValue(BlobType);
|
|
126
|
+
assert.ok(result instanceof Uint8Array);
|
|
127
|
+
assert.strictEqual(result.length, 0);
|
|
128
|
+
});
|
|
129
|
+
test("should return empty array for Array type", () => {
|
|
130
|
+
const result = minimalValue(ArrayType(IntegerType));
|
|
131
|
+
assert.ok(Array.isArray(result));
|
|
132
|
+
assert.strictEqual(result.length, 0);
|
|
133
|
+
});
|
|
134
|
+
test("should return empty SortedSet for Set type", () => {
|
|
135
|
+
const result = minimalValue(SetType(StringType));
|
|
136
|
+
assert.ok(result instanceof Set);
|
|
137
|
+
assert.strictEqual(result.size, 0);
|
|
138
|
+
});
|
|
139
|
+
test("should return empty SortedMap for Dict type", () => {
|
|
140
|
+
const result = minimalValue(DictType(IntegerType, StringType));
|
|
141
|
+
assert.ok(result instanceof Map);
|
|
142
|
+
assert.strictEqual(result.size, 0);
|
|
143
|
+
});
|
|
144
|
+
test("should return struct with minimal field values for Struct type", () => {
|
|
145
|
+
const type = StructType({
|
|
146
|
+
x: IntegerType,
|
|
147
|
+
y: FloatType
|
|
148
|
+
});
|
|
149
|
+
const result = minimalValue(type);
|
|
150
|
+
assert.deepStrictEqual(result, {
|
|
151
|
+
x: 0n,
|
|
152
|
+
y: 0.0
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
test("should return first variant case with minimal value for Variant type", () => {
|
|
156
|
+
const type = VariantType({
|
|
157
|
+
a: IntegerType,
|
|
158
|
+
b: StringType
|
|
159
|
+
});
|
|
160
|
+
const result = minimalValue(type);
|
|
161
|
+
// Should return the first case (a) with its default value (0n)
|
|
162
|
+
assert.strictEqual(result.type, "a");
|
|
163
|
+
assert.strictEqual(result.value, 0n);
|
|
164
|
+
});
|
|
165
|
+
test("should throw for empty Variant type", () => {
|
|
166
|
+
const type = VariantType({});
|
|
167
|
+
assert.throws(() => minimalValue(type), /Cannot create a value of an empty variant/);
|
|
168
|
+
});
|
|
169
|
+
test("should throw for Function type", () => {
|
|
170
|
+
const type = FunctionType([IntegerType], StringType);
|
|
171
|
+
assert.throws(() => minimalValue(type), /Cannot create a default value of type .Function/);
|
|
172
|
+
});
|
|
173
|
+
test("should throw for AsyncFunction type", () => {
|
|
174
|
+
const type = AsyncFunctionType([IntegerType], StringType);
|
|
175
|
+
assert.throws(() => minimalValue(type), /Cannot create a default value of type .AsyncFunction/);
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
//# sourceMappingURL=default.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.spec.js","sourceRoot":"","sources":["../../src/default.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/src/eastir.d.ts
CHANGED
|
@@ -5,14 +5,18 @@
|
|
|
5
5
|
import { type ValueTypeOf } from "./types.js";
|
|
6
6
|
import type { AsyncFunctionIR, FunctionIR } from "./ir.js";
|
|
7
7
|
import type { PlatformFunction } from "./platform.js";
|
|
8
|
+
import { type SourceMap } from "./location.js";
|
|
8
9
|
/** A helper class wrapping East's "intermediate representation" (IR) for a free function.
|
|
9
10
|
* The IR can be serialized and saved, or compiled so that the function can be executed.
|
|
10
11
|
*/
|
|
11
12
|
export declare class EastIR<Inputs extends any[], Output extends any> {
|
|
12
13
|
ir: FunctionIR;
|
|
14
|
+
source_map: SourceMap | null;
|
|
13
15
|
constructor(ir: FunctionIR);
|
|
14
16
|
/** Compile the function for execution in JavaScript using a closure-compiler technique.
|
|
15
17
|
* Platform functions must be provided for the function to evaluate.
|
|
18
|
+
*
|
|
19
|
+
* @param platform - Array of platform function implementations
|
|
16
20
|
*/
|
|
17
21
|
compile(platform: PlatformFunction[]): (...inputs: {
|
|
18
22
|
[K in keyof Inputs]: ValueTypeOf<Inputs[K]>;
|
|
@@ -23,10 +27,13 @@ export declare class EastIR<Inputs extends any[], Output extends any> {
|
|
|
23
27
|
*/
|
|
24
28
|
export declare class AsyncEastIR<Inputs extends any[], Output extends any> {
|
|
25
29
|
ir: AsyncFunctionIR;
|
|
30
|
+
source_map: SourceMap | null;
|
|
26
31
|
constructor(ir: AsyncFunctionIR);
|
|
27
32
|
/** Compile the async function for execution in JavaScript using a closure-compiler technique.
|
|
28
33
|
* Platform functions must be provided for the function to evaluate, which may return `Promise`s.
|
|
29
34
|
* The compiled function itself returns a `Promise`.
|
|
35
|
+
*
|
|
36
|
+
* @param platform - Array of platform function implementations
|
|
30
37
|
*/
|
|
31
38
|
compile(platform: PlatformFunction[]): (...inputs: {
|
|
32
39
|
[K in keyof Inputs]: ValueTypeOf<Inputs[K]>;
|
package/dist/src/eastir.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eastir.d.ts","sourceRoot":"","sources":["../../src/eastir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"eastir.d.ts","sourceRoot":"","sources":["../../src/eastir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAEhE;;GAEG;AACH,qBAAa,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,EAAE,MAAM,SAAS,GAAG;IAEvC,EAAE,EAAE,UAAU;IAD1B,UAAU,EAAE,SAAS,GAAG,IAAI,CAAQ;gBACxB,EAAE,EAAE,UAAU;IASjC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE;SAAG,CAAC,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAAE,KAAK,WAAW,CAAC,MAAM,CAAC;CAkD3H;AAED;;GAEG;AACH,qBAAa,WAAW,CAAC,MAAM,SAAS,GAAG,EAAE,EAAE,MAAM,SAAS,GAAG;IAE5C,EAAE,EAAE,eAAe;IAD/B,UAAU,EAAE,SAAS,GAAG,IAAI,CAAQ;gBACxB,EAAE,EAAE,eAAe;IAStC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE;SAAG,CAAC,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAAE,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAiDpI"}
|
package/dist/src/eastir.js
CHANGED
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import {} from "./types.js";
|
|
6
|
-
import { compile_internal, ReturnException } from "./compile.js";
|
|
6
|
+
import { compile_internal, ReturnException, EAST_IR_SYMBOL, EAST_SOURCE_MAP_SYMBOL } from "./compile.js";
|
|
7
7
|
import { analyzeIR } from "./analyze.js";
|
|
8
|
+
import { with_source_map } from "./location.js";
|
|
8
9
|
/** A helper class wrapping East's "intermediate representation" (IR) for a free function.
|
|
9
10
|
* The IR can be serialized and saved, or compiled so that the function can be executed.
|
|
10
11
|
*/
|
|
11
12
|
export class EastIR {
|
|
12
13
|
ir;
|
|
14
|
+
source_map = null;
|
|
13
15
|
constructor(ir) {
|
|
14
16
|
this.ir = ir;
|
|
15
17
|
if (ir.type !== "Function") {
|
|
@@ -21,18 +23,26 @@ export class EastIR {
|
|
|
21
23
|
}
|
|
22
24
|
/** Compile the function for execution in JavaScript using a closure-compiler technique.
|
|
23
25
|
* Platform functions must be provided for the function to evaluate.
|
|
26
|
+
*
|
|
27
|
+
* @param platform - Array of platform function implementations
|
|
24
28
|
*/
|
|
25
29
|
compile(platform) {
|
|
26
30
|
// Analyse the IR
|
|
27
|
-
const analyzed_ir = analyzeIR(this.ir, platform
|
|
31
|
+
const analyzed_ir = analyzeIR(this.ir, platform);
|
|
28
32
|
// compile the function (with no variables in environment)
|
|
29
33
|
const platformFns = Object.fromEntries(platform.map(fn => [fn.name, fn.fn]));
|
|
30
34
|
const asyncPlatformFns = new Set();
|
|
31
|
-
|
|
35
|
+
// compile_internal reads the active SourceMap via get_current_source_map.
|
|
36
|
+
// Activate the map stored on this IR so loc_ids resolve against the map
|
|
37
|
+
// that was populated during East.function() body execution.
|
|
38
|
+
const compile_fn = () => compile_internal(analyzed_ir, {}, platformFns, asyncPlatformFns, platform);
|
|
39
|
+
const compiled_expr = this.source_map
|
|
40
|
+
? with_source_map(this.source_map, compile_fn)
|
|
41
|
+
: compile_fn();
|
|
32
42
|
// instantiate the function (with no environment)
|
|
33
43
|
const instantiated_function = compiled_expr({});
|
|
34
44
|
// Return sync wrapper
|
|
35
|
-
|
|
45
|
+
const wrapper = (...inputs) => {
|
|
36
46
|
try {
|
|
37
47
|
return instantiated_function(...inputs);
|
|
38
48
|
}
|
|
@@ -45,6 +55,22 @@ export class EastIR {
|
|
|
45
55
|
}
|
|
46
56
|
}
|
|
47
57
|
};
|
|
58
|
+
// Attach IR and source map to wrapper for serialization support
|
|
59
|
+
Object.defineProperty(wrapper, EAST_IR_SYMBOL, {
|
|
60
|
+
value: this.ir,
|
|
61
|
+
writable: false,
|
|
62
|
+
enumerable: false,
|
|
63
|
+
configurable: false
|
|
64
|
+
});
|
|
65
|
+
if (this.source_map) {
|
|
66
|
+
Object.defineProperty(wrapper, EAST_SOURCE_MAP_SYMBOL, {
|
|
67
|
+
value: this.source_map,
|
|
68
|
+
writable: false,
|
|
69
|
+
enumerable: false,
|
|
70
|
+
configurable: false
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return wrapper;
|
|
48
74
|
}
|
|
49
75
|
}
|
|
50
76
|
/** A helper class wrapping East's "intermediate representation" (IR) for a free async function.
|
|
@@ -52,6 +78,7 @@ export class EastIR {
|
|
|
52
78
|
*/
|
|
53
79
|
export class AsyncEastIR {
|
|
54
80
|
ir;
|
|
81
|
+
source_map = null;
|
|
55
82
|
constructor(ir) {
|
|
56
83
|
this.ir = ir;
|
|
57
84
|
if (ir.type !== "AsyncFunction") {
|
|
@@ -64,18 +91,23 @@ export class AsyncEastIR {
|
|
|
64
91
|
/** Compile the async function for execution in JavaScript using a closure-compiler technique.
|
|
65
92
|
* Platform functions must be provided for the function to evaluate, which may return `Promise`s.
|
|
66
93
|
* The compiled function itself returns a `Promise`.
|
|
94
|
+
*
|
|
95
|
+
* @param platform - Array of platform function implementations
|
|
67
96
|
*/
|
|
68
97
|
compile(platform) {
|
|
69
98
|
// Analyse the IR
|
|
70
|
-
const analyzed_ir = analyzeIR(this.ir, platform
|
|
99
|
+
const analyzed_ir = analyzeIR(this.ir, platform);
|
|
71
100
|
// compile the function (with no variables in environment)
|
|
72
101
|
const platformFns = Object.fromEntries(platform.map(fn => [fn.name, fn.fn]));
|
|
73
102
|
const asyncPlatformFns = new Set(platform.filter(fn => fn.type === 'async').map(fn => fn.name));
|
|
74
|
-
const
|
|
103
|
+
const compile_fn = () => compile_internal(analyzed_ir, {}, platformFns, asyncPlatformFns, platform);
|
|
104
|
+
const compiled_expr = this.source_map
|
|
105
|
+
? with_source_map(this.source_map, compile_fn)
|
|
106
|
+
: compile_fn();
|
|
75
107
|
// instantiate the function (with no environment)
|
|
76
108
|
const instantiated_function = compiled_expr({});
|
|
77
109
|
// Return async wrapper
|
|
78
|
-
|
|
110
|
+
const wrapper = async (...inputs) => {
|
|
79
111
|
try {
|
|
80
112
|
return await instantiated_function(...inputs);
|
|
81
113
|
}
|
|
@@ -88,6 +120,22 @@ export class AsyncEastIR {
|
|
|
88
120
|
}
|
|
89
121
|
}
|
|
90
122
|
};
|
|
123
|
+
// Attach IR and source map to wrapper for serialization support
|
|
124
|
+
Object.defineProperty(wrapper, EAST_IR_SYMBOL, {
|
|
125
|
+
value: this.ir,
|
|
126
|
+
writable: false,
|
|
127
|
+
enumerable: false,
|
|
128
|
+
configurable: false
|
|
129
|
+
});
|
|
130
|
+
if (this.source_map) {
|
|
131
|
+
Object.defineProperty(wrapper, EAST_SOURCE_MAP_SYMBOL, {
|
|
132
|
+
value: this.source_map,
|
|
133
|
+
writable: false,
|
|
134
|
+
enumerable: false,
|
|
135
|
+
configurable: false
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
return wrapper;
|
|
91
139
|
}
|
|
92
140
|
}
|
|
93
141
|
//# sourceMappingURL=eastir.js.map
|
package/dist/src/eastir.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eastir.js","sourceRoot":"","sources":["../../src/eastir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAoB,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"eastir.js","sourceRoot":"","sources":["../../src/eastir.ts"],"names":[],"mappings":"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"}
|
package/dist/src/error.d.ts
CHANGED
|
@@ -2,12 +2,22 @@
|
|
|
2
2
|
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
3
|
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
|
-
import type {
|
|
5
|
+
import type { Location } from "./location.js";
|
|
6
|
+
/**
|
|
7
|
+
* Internal error for invariant violations in the East compiler/runtime.
|
|
8
|
+
* These indicate bugs in East itself, not user errors.
|
|
9
|
+
*/
|
|
10
|
+
export declare class InternalError extends Error {
|
|
11
|
+
constructor(message: string);
|
|
12
|
+
}
|
|
6
13
|
export declare class EastError extends Error {
|
|
7
|
-
location:
|
|
8
|
-
|
|
14
|
+
location: Location[];
|
|
15
|
+
eastMessage: string;
|
|
16
|
+
constructor(message: string, options?: {
|
|
9
17
|
cause?: any;
|
|
10
|
-
location
|
|
18
|
+
location?: Location[];
|
|
11
19
|
});
|
|
20
|
+
toString(): string;
|
|
21
|
+
get formattedMessage(): string;
|
|
12
22
|
}
|
|
13
23
|
//# sourceMappingURL=error.d.ts.map
|
package/dist/src/error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,SAAU,SAAQ,KAAK;IAC3B,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,GAAG,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAA;KAAO;IAMxE,QAAQ,IAAI,MAAM;IAW3B,IAAI,gBAAgB,IAAI,MAAM,CAE7B;CACF"}
|
package/dist/src/error.js
CHANGED
|
@@ -1,8 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal error for invariant violations in the East compiler/runtime.
|
|
3
|
+
* These indicate bugs in East itself, not user errors.
|
|
4
|
+
*/
|
|
5
|
+
export class InternalError extends Error {
|
|
6
|
+
constructor(message) {
|
|
7
|
+
super(`Internal East error: ${message}`);
|
|
8
|
+
this.name = "InternalError";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
1
11
|
export class EastError extends Error {
|
|
2
12
|
location;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
13
|
+
eastMessage;
|
|
14
|
+
constructor(message, options = {}) {
|
|
15
|
+
super(message, options.cause !== undefined ? { cause: options.cause } : undefined);
|
|
16
|
+
this.eastMessage = message;
|
|
17
|
+
this.location = options.location ?? [];
|
|
18
|
+
}
|
|
19
|
+
toString() {
|
|
20
|
+
// Format matches east-c / east-py: message on one line, innermost-first
|
|
21
|
+
// ` at <file>:<line>:<col>` frames below. Caller typically prefixes the
|
|
22
|
+
// whole thing with `Error: ` when printing to stderr.
|
|
23
|
+
const lines = [this.eastMessage];
|
|
24
|
+
for (const frame of this.location) {
|
|
25
|
+
lines.push(` at ${frame.filename}:${frame.line}:${frame.column}`);
|
|
26
|
+
}
|
|
27
|
+
return lines.join("\n");
|
|
28
|
+
}
|
|
29
|
+
get formattedMessage() {
|
|
30
|
+
return this.toString();
|
|
6
31
|
}
|
|
7
32
|
}
|
|
8
33
|
//# sourceMappingURL=error.js.map
|
package/dist/src/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,SAAU,SAAQ,KAAK;IAC3B,QAAQ,
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IAC3B,QAAQ,CAAa;IACrB,WAAW,CAAS;IAE3B,YAAY,OAAe,EAAE,UAAkD,EAAE;QAC/E,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzC,CAAC;IAEQ,QAAQ;QACf,wEAAwE;QACxE,yEAAyE;QACzE,sDAAsD;QACtD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import type { CallableFunctionExpr } from "./expr/function.js";
|
|
6
|
+
import type { CallableAsyncFunctionExpr } from "./expr/asyncfunction.js";
|
|
7
|
+
import type { SubtypeExprOrValue } from "./expr/types.js";
|
|
8
|
+
import { type EastType } from "./types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Defines an East example — an East function expression with metadata.
|
|
11
|
+
*
|
|
12
|
+
* The `fn` field is an `East.function()` — the exact same thing users write.
|
|
13
|
+
* Tests call it with `inputs` and assert the result equals `returns`.
|
|
14
|
+
* The index generator serializes `fn.toString()` for agent context.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { East, ArrayType, IntegerType } from "@elaraai/east";
|
|
19
|
+
* import { example } from "@elaraai/east";
|
|
20
|
+
*
|
|
21
|
+
* export const pushToArray = example({
|
|
22
|
+
* keywords: ["array", "push", "pushLast", "mutation"],
|
|
23
|
+
* description: "Push items to an array using pushLast",
|
|
24
|
+
* fn: East.function([], ArrayType(IntegerType), ($) => {
|
|
25
|
+
* const a = $.let([], ArrayType(IntegerType));
|
|
26
|
+
* $(a.pushLast(1n));
|
|
27
|
+
* $(a.pushLast(2n));
|
|
28
|
+
* return a;
|
|
29
|
+
* }),
|
|
30
|
+
* inputs: [],
|
|
31
|
+
* returns: [1n, 2n],
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* export const filterArray = example({
|
|
35
|
+
* keywords: ["array", "filter"],
|
|
36
|
+
* description: "Filter array elements greater than a threshold",
|
|
37
|
+
* fn: East.function([ArrayType(IntegerType), IntegerType], ArrayType(IntegerType), ($, items, threshold) => {
|
|
38
|
+
* return items.filter(($, x) => x.greater(threshold));
|
|
39
|
+
* }),
|
|
40
|
+
* inputs: [[1n, 5n, 3n, 8n, 2n], 3n],
|
|
41
|
+
* returns: [5n, 8n],
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export interface ExampleDef<I extends EastType[] = EastType[], O = any> {
|
|
46
|
+
/** Searchable keywords: API names, type names, concepts */
|
|
47
|
+
keywords: string[];
|
|
48
|
+
/** Human-readable description of what this example demonstrates */
|
|
49
|
+
description: string;
|
|
50
|
+
/**
|
|
51
|
+
* The East function expression — an East.function() or East.asyncFunction() call.
|
|
52
|
+
*
|
|
53
|
+
* The return type is erased to `EastType` here (not `O`) so that downstream
|
|
54
|
+
* consumers' `.d.ts` files do not inline the full structure of large recursive
|
|
55
|
+
* return types (e.g. `UIComponentType`). The tests still validate `O` via the
|
|
56
|
+
* `returns` field; runtime call paths only need the IR.
|
|
57
|
+
*/
|
|
58
|
+
fn: CallableFunctionExpr<I, EastType> | CallableAsyncFunctionExpr<I, EastType>;
|
|
59
|
+
/** Default input values for testing */
|
|
60
|
+
inputs: {
|
|
61
|
+
[K in keyof I]: SubtypeExprOrValue<I[K]>;
|
|
62
|
+
};
|
|
63
|
+
/** Expected return value when called with inputs */
|
|
64
|
+
returns?: SubtypeExprOrValue<O>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Strict shape of the input to `example()` — preserves `O` so TS can infer
|
|
68
|
+
* and check `returns` against `fn`'s output type. Internal to this helper.
|
|
69
|
+
*/
|
|
70
|
+
interface ExampleInput<I extends EastType[], O> {
|
|
71
|
+
keywords: string[];
|
|
72
|
+
description: string;
|
|
73
|
+
fn: CallableFunctionExpr<I, O> | CallableAsyncFunctionExpr<I, O>;
|
|
74
|
+
inputs: {
|
|
75
|
+
[K in keyof I]: SubtypeExprOrValue<I[K]>;
|
|
76
|
+
};
|
|
77
|
+
returns?: SubtypeExprOrValue<O>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Creates an example definition. Identity function that provides type checking
|
|
81
|
+
* (`returns` matches `fn`'s output type) and marks the export for index
|
|
82
|
+
* generation. The returned `ExampleDef` erases `O` on `fn` to keep downstream
|
|
83
|
+
* `.d.ts` files compact when `O` is a large recursive type like `UIComponentType`.
|
|
84
|
+
*/
|
|
85
|
+
export declare function example<const I extends any[], O>(def: ExampleInput<I, O>): ExampleDef<I>;
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=example.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../src/example.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG;IAClE,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,EAAE,EAAE,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,yBAAyB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/E,uCAAuC;IACvC,MAAM,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC;IACrD,oDAAoD;IACpD,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,UAAU,YAAY,CAAC,CAAC,SAAS,QAAQ,EAAE,EAAE,CAAC;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC;IACrD,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;CACnC;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,EAC5C,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GACxB,UAAU,CAAC,CAAC,CAAC,CAKf"}
|