@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
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import { printIdentifier, TypeWiden, isTypeEqual, NeverType, NullType, BooleanType, IntegerType, FloatType, StringType, DateTimeType, BlobType, ArrayType, SetType, DictType, StructType, VariantType } from "../types.js";
|
|
6
|
+
import { matrix } from "../containers/matrix.js";
|
|
6
7
|
import { compareFor } from "../comparison.js";
|
|
7
8
|
import { SortedMap } from "../containers/sortedmap.js";
|
|
8
9
|
import { SortedSet } from "../containers/sortedset.js";
|
|
@@ -139,7 +140,7 @@ export function decodeEastFor(type) {
|
|
|
139
140
|
}
|
|
140
141
|
};
|
|
141
142
|
}
|
|
142
|
-
export function printFor(type, typeCtx =
|
|
143
|
+
export function printFor(type, typeCtx = new Map()) {
|
|
143
144
|
// Convert EastType to EastTypeValue if necessary
|
|
144
145
|
if (!isVariant(type)) {
|
|
145
146
|
type = toEastTypeValue(type);
|
|
@@ -199,9 +200,7 @@ export function printFor(type, typeCtx = []) {
|
|
|
199
200
|
ctx.currentPath.pop();
|
|
200
201
|
return `&${str}`;
|
|
201
202
|
};
|
|
202
|
-
typeCtx.push(ret);
|
|
203
203
|
value_printer = printFor(type.value, typeCtx);
|
|
204
|
-
typeCtx.pop();
|
|
205
204
|
return ret;
|
|
206
205
|
}
|
|
207
206
|
else if (type.type === "Array") {
|
|
@@ -224,9 +223,7 @@ export function printFor(type, typeCtx = []) {
|
|
|
224
223
|
}
|
|
225
224
|
return `[${parts.join(", ")}]`;
|
|
226
225
|
};
|
|
227
|
-
typeCtx.push(ret);
|
|
228
226
|
value_printer = printFor(type.value, typeCtx);
|
|
229
|
-
typeCtx.pop();
|
|
230
227
|
return ret;
|
|
231
228
|
}
|
|
232
229
|
else if (type.type === "Set") {
|
|
@@ -276,9 +273,7 @@ export function printFor(type, typeCtx = []) {
|
|
|
276
273
|
}
|
|
277
274
|
return `{${parts.join(",")}}`;
|
|
278
275
|
};
|
|
279
|
-
typeCtx.push(ret);
|
|
280
276
|
value_printer = printFor(type.value.value, typeCtx);
|
|
281
|
-
typeCtx.pop();
|
|
282
277
|
return ret;
|
|
283
278
|
}
|
|
284
279
|
else if (type.type === "Struct") {
|
|
@@ -295,11 +290,9 @@ export function printFor(type, typeCtx = []) {
|
|
|
295
290
|
}
|
|
296
291
|
return `(${parts.join(", ")})`;
|
|
297
292
|
};
|
|
298
|
-
typeCtx.push(ret);
|
|
299
293
|
for (const { name: k, type: t } of type.value) {
|
|
300
294
|
field_printers.push([k, printFor(t, typeCtx)]);
|
|
301
295
|
}
|
|
302
|
-
typeCtx.pop();
|
|
303
296
|
return ret;
|
|
304
297
|
}
|
|
305
298
|
else if (type.type === "Variant") {
|
|
@@ -311,7 +304,6 @@ export function printFor(type, typeCtx = []) {
|
|
|
311
304
|
ctx.currentPath.pop();
|
|
312
305
|
return result;
|
|
313
306
|
};
|
|
314
|
-
typeCtx.push(ret);
|
|
315
307
|
for (const { name: k, type: t } of type.value) {
|
|
316
308
|
if (t.type === "Null") {
|
|
317
309
|
const prefix = `.${printIdentifier(k)}`;
|
|
@@ -323,7 +315,6 @@ export function printFor(type, typeCtx = []) {
|
|
|
323
315
|
case_printers[k] = (value, ctx) => prefix + print_data(value, ctx);
|
|
324
316
|
}
|
|
325
317
|
}
|
|
326
|
-
typeCtx.pop();
|
|
327
318
|
return ret;
|
|
328
319
|
}
|
|
329
320
|
else if (type.type === "Function") {
|
|
@@ -334,8 +325,42 @@ export function printFor(type, typeCtx = []) {
|
|
|
334
325
|
// This is just a convenience printer - async functions cannot be serialized/deserialized
|
|
335
326
|
return (_, _ctx) => `async (${type.value.inputs.map((x) => printTypeValue(x)).join(", ")}) => ${printTypeValue(type.value.output)}`;
|
|
336
327
|
}
|
|
328
|
+
else if (type.type === "Vector") {
|
|
329
|
+
const elementPrinter = printFor(type.value, typeCtx);
|
|
330
|
+
const isBoolean = type.value.type === "Boolean";
|
|
331
|
+
return (v, _ctx) => {
|
|
332
|
+
const parts = [];
|
|
333
|
+
for (let i = 0; i < v.length; i++) {
|
|
334
|
+
parts.push(elementPrinter(isBoolean ? v[i] !== 0 : v[i]));
|
|
335
|
+
}
|
|
336
|
+
return `vec[${parts.join(", ")}]`;
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
else if (type.type === "Matrix") {
|
|
340
|
+
const elementPrinter = printFor(type.value, typeCtx);
|
|
341
|
+
const isBoolean = type.value.type === "Boolean";
|
|
342
|
+
return (v, _ctx) => {
|
|
343
|
+
const { data, rows, cols } = v;
|
|
344
|
+
const rowParts = [];
|
|
345
|
+
for (let r = 0; r < rows; r++) {
|
|
346
|
+
const elemParts = [];
|
|
347
|
+
for (let c = 0; c < cols; c++) {
|
|
348
|
+
elemParts.push(elementPrinter(isBoolean ? data[r * cols + c] !== 0 : data[r * cols + c]));
|
|
349
|
+
}
|
|
350
|
+
rowParts.push(`[${elemParts.join(", ")}]`);
|
|
351
|
+
}
|
|
352
|
+
return `mat[${rowParts.join(", ")}]`;
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
else if (type.type === "Recursive" && type.value.type === "wrapper") {
|
|
356
|
+
let inner;
|
|
357
|
+
const ret = (...args) => inner(...args);
|
|
358
|
+
typeCtx.set(type.value.value.id, ret);
|
|
359
|
+
inner = printFor(type.value.value.inner, typeCtx);
|
|
360
|
+
return ret;
|
|
361
|
+
}
|
|
337
362
|
else if (type.type === "Recursive") {
|
|
338
|
-
const ret = typeCtx
|
|
363
|
+
const ret = typeCtx.get(type.value.value);
|
|
339
364
|
if (ret === undefined) {
|
|
340
365
|
throw new Error(`Internal error: Recursive type context not found`);
|
|
341
366
|
}
|
|
@@ -406,7 +431,7 @@ const consumeWhitespace = (input, pos) => {
|
|
|
406
431
|
}
|
|
407
432
|
return pos;
|
|
408
433
|
};
|
|
409
|
-
const createParser = (type, frozen, typeCtx =
|
|
434
|
+
const createParser = (type, frozen, typeCtx = new Map()) => {
|
|
410
435
|
switch (type.type) {
|
|
411
436
|
case "Null":
|
|
412
437
|
return parseNull;
|
|
@@ -438,10 +463,21 @@ const createParser = (type, frozen, typeCtx = []) => {
|
|
|
438
463
|
throw new Error(`Cannot parse .Function`);
|
|
439
464
|
case "AsyncFunction":
|
|
440
465
|
throw new Error(`Cannot parse .AsyncFunction`);
|
|
466
|
+
case "Vector":
|
|
467
|
+
return createVectorParser(type.value, frozen);
|
|
468
|
+
case "Matrix":
|
|
469
|
+
return createMatrixParser(type.value, frozen);
|
|
441
470
|
case "Never":
|
|
442
471
|
return (_input, pos, _ctx) => { throw new ParseError(`Attempted to parse value of type .Never`, pos); };
|
|
443
472
|
case "Recursive":
|
|
444
|
-
|
|
473
|
+
if (type.value.type === "wrapper") {
|
|
474
|
+
let inner;
|
|
475
|
+
const wrapRet = (...args) => inner(...args);
|
|
476
|
+
typeCtx.set(type.value.value.id, wrapRet);
|
|
477
|
+
inner = createParser(type.value.value.inner, frozen, typeCtx);
|
|
478
|
+
return wrapRet;
|
|
479
|
+
}
|
|
480
|
+
const ret = typeCtx.get(type.value.value);
|
|
445
481
|
if (ret === undefined) {
|
|
446
482
|
throw new Error(`Internal error: Recursive type context not found`);
|
|
447
483
|
}
|
|
@@ -456,7 +492,7 @@ const parseInteger = (input, pos, _ctx) => {
|
|
|
456
492
|
throw new ParseError("expected integer, got end of input", pos);
|
|
457
493
|
}
|
|
458
494
|
let start = pos;
|
|
459
|
-
if (input[pos] === '-') {
|
|
495
|
+
if (input[pos] === '-' || input[pos] === '+') {
|
|
460
496
|
pos++;
|
|
461
497
|
}
|
|
462
498
|
let hasDigits = false;
|
|
@@ -471,7 +507,8 @@ const parseInteger = (input, pos, _ctx) => {
|
|
|
471
507
|
const intStr = input.slice(start, pos);
|
|
472
508
|
let value;
|
|
473
509
|
try {
|
|
474
|
-
|
|
510
|
+
// BigInt() rejects a leading '+', so strip it before constructing.
|
|
511
|
+
value = BigInt(intStr[0] === '+' ? intStr.slice(1) : intStr);
|
|
475
512
|
}
|
|
476
513
|
catch {
|
|
477
514
|
// BigInt() throws if the string is invalid (shouldn't happen given our parsing logic)
|
|
@@ -793,9 +830,7 @@ const createRefParser = (value_type, frozen, typeCtx) => {
|
|
|
793
830
|
r.value = value;
|
|
794
831
|
return { value: r, position };
|
|
795
832
|
};
|
|
796
|
-
typeCtx.push(ret);
|
|
797
833
|
valueParser = createParser(value_type, frozen, typeCtx);
|
|
798
|
-
typeCtx.pop();
|
|
799
834
|
return ret;
|
|
800
835
|
};
|
|
801
836
|
const createArrayParser = (value_type, frozen, typeCtx) => {
|
|
@@ -862,9 +897,7 @@ const createArrayParser = (value_type, frozen, typeCtx) => {
|
|
|
862
897
|
elementIndex++;
|
|
863
898
|
}
|
|
864
899
|
};
|
|
865
|
-
typeCtx.push(ret);
|
|
866
900
|
valueParser = createParser(value_type, frozen, typeCtx);
|
|
867
|
-
typeCtx.pop();
|
|
868
901
|
return ret;
|
|
869
902
|
};
|
|
870
903
|
const createSetParser = (key_type, frozen, typeCtx) => {
|
|
@@ -1027,9 +1060,7 @@ const createDictParser = (key_type, value_type, frozen, typeCtx) => {
|
|
|
1027
1060
|
entryIndex++;
|
|
1028
1061
|
}
|
|
1029
1062
|
};
|
|
1030
|
-
typeCtx.push(ret);
|
|
1031
1063
|
valueParser = createParser(value_type, frozen, typeCtx);
|
|
1032
|
-
typeCtx.pop();
|
|
1033
1064
|
return ret;
|
|
1034
1065
|
};
|
|
1035
1066
|
const parseQuotedIdentifier = (input, pos, _ctx) => {
|
|
@@ -1199,11 +1230,9 @@ const createStructParser = (fields, frozen, typeCtx) => {
|
|
|
1199
1230
|
}
|
|
1200
1231
|
return { value: result, position: pos + 1 };
|
|
1201
1232
|
};
|
|
1202
|
-
typeCtx.push(ret);
|
|
1203
1233
|
for (const field of fields) {
|
|
1204
1234
|
fieldParsers.push(createParser(field.type, frozen, typeCtx));
|
|
1205
1235
|
}
|
|
1206
|
-
typeCtx.pop();
|
|
1207
1236
|
return ret;
|
|
1208
1237
|
};
|
|
1209
1238
|
const createVariantParser = (cases, frozen, typeCtx) => {
|
|
@@ -1256,7 +1285,6 @@ const createVariantParser = (cases, frozen, typeCtx) => {
|
|
|
1256
1285
|
ctx.currentPath.pop();
|
|
1257
1286
|
}
|
|
1258
1287
|
};
|
|
1259
|
-
typeCtx.push(ret);
|
|
1260
1288
|
for (const { name, type: caseType } of cases) {
|
|
1261
1289
|
if (caseType.type === 'Null') {
|
|
1262
1290
|
// Special case for null type - the "null" is actually optional
|
|
@@ -1279,9 +1307,133 @@ const createVariantParser = (cases, frozen, typeCtx) => {
|
|
|
1279
1307
|
caseParsers[name] = createParser(caseType, frozen, typeCtx);
|
|
1280
1308
|
}
|
|
1281
1309
|
}
|
|
1282
|
-
typeCtx.pop();
|
|
1283
1310
|
return ret;
|
|
1284
1311
|
};
|
|
1312
|
+
const createVectorParser = (element_type, frozen) => {
|
|
1313
|
+
const elementParser = createParser(element_type, frozen);
|
|
1314
|
+
return (input, pos, _ctx) => {
|
|
1315
|
+
pos = consumeWhitespace(input, pos);
|
|
1316
|
+
if (!input.startsWith('vec[', pos)) {
|
|
1317
|
+
throw new ParseError("expected 'vec[' to start vector", pos);
|
|
1318
|
+
}
|
|
1319
|
+
pos = consumeWhitespace(input, pos + 4);
|
|
1320
|
+
const values = [];
|
|
1321
|
+
// Handle empty vector
|
|
1322
|
+
if (input[pos] === ']') {
|
|
1323
|
+
return { value: _createTypedArray(element_type, values, frozen), position: pos + 1 };
|
|
1324
|
+
}
|
|
1325
|
+
let elementIndex = 0;
|
|
1326
|
+
while (true) {
|
|
1327
|
+
try {
|
|
1328
|
+
const { value: elementValue, position: elementPos } = elementParser(input, pos);
|
|
1329
|
+
values.push(elementValue);
|
|
1330
|
+
pos = consumeWhitespace(input, elementPos);
|
|
1331
|
+
}
|
|
1332
|
+
catch (e) {
|
|
1333
|
+
if (e instanceof ParseError) {
|
|
1334
|
+
const newPath = `[${elementIndex}]` + (e.path ? e.path : '');
|
|
1335
|
+
throw new ParseError(e.message, e.position, newPath);
|
|
1336
|
+
}
|
|
1337
|
+
throw e;
|
|
1338
|
+
}
|
|
1339
|
+
if (input[pos] === ']') {
|
|
1340
|
+
return { value: _createTypedArray(element_type, values, frozen), position: pos + 1 };
|
|
1341
|
+
}
|
|
1342
|
+
if (input[pos] !== ',') {
|
|
1343
|
+
throw new ParseError("expected ',' or ']' after vector element", pos);
|
|
1344
|
+
}
|
|
1345
|
+
pos = consumeWhitespace(input, pos + 1);
|
|
1346
|
+
elementIndex++;
|
|
1347
|
+
}
|
|
1348
|
+
};
|
|
1349
|
+
};
|
|
1350
|
+
const createMatrixParser = (element_type, frozen) => {
|
|
1351
|
+
const elementParser = createParser(element_type, frozen);
|
|
1352
|
+
return (input, pos, _ctx) => {
|
|
1353
|
+
pos = consumeWhitespace(input, pos);
|
|
1354
|
+
if (!input.startsWith('mat[', pos)) {
|
|
1355
|
+
throw new ParseError("expected 'mat[' to start matrix", pos);
|
|
1356
|
+
}
|
|
1357
|
+
pos = consumeWhitespace(input, pos + 4);
|
|
1358
|
+
const rows = [];
|
|
1359
|
+
// Handle empty matrix
|
|
1360
|
+
if (input[pos] === ']') {
|
|
1361
|
+
return { value: matrix(_createTypedArray(element_type, [], frozen), 0, 0), position: pos + 1 };
|
|
1362
|
+
}
|
|
1363
|
+
while (true) {
|
|
1364
|
+
// Parse a row: [elem, elem, ...]
|
|
1365
|
+
pos = consumeWhitespace(input, pos);
|
|
1366
|
+
if (input[pos] !== '[') {
|
|
1367
|
+
throw new ParseError("expected '[' to start matrix row", pos);
|
|
1368
|
+
}
|
|
1369
|
+
pos = consumeWhitespace(input, pos + 1);
|
|
1370
|
+
const row = [];
|
|
1371
|
+
// Handle empty row
|
|
1372
|
+
if (input[pos] !== ']') {
|
|
1373
|
+
let colIndex = 0;
|
|
1374
|
+
while (true) {
|
|
1375
|
+
try {
|
|
1376
|
+
const { value: elementValue, position: elementPos } = elementParser(input, pos);
|
|
1377
|
+
row.push(elementValue);
|
|
1378
|
+
pos = consumeWhitespace(input, elementPos);
|
|
1379
|
+
}
|
|
1380
|
+
catch (e) {
|
|
1381
|
+
if (e instanceof ParseError) {
|
|
1382
|
+
const newPath = `[${rows.length}][${colIndex}]` + (e.path ? e.path : '');
|
|
1383
|
+
throw new ParseError(e.message, e.position, newPath);
|
|
1384
|
+
}
|
|
1385
|
+
throw e;
|
|
1386
|
+
}
|
|
1387
|
+
if (input[pos] === ']') {
|
|
1388
|
+
break;
|
|
1389
|
+
}
|
|
1390
|
+
if (input[pos] !== ',') {
|
|
1391
|
+
throw new ParseError("expected ',' or ']' after matrix element", pos);
|
|
1392
|
+
}
|
|
1393
|
+
pos = consumeWhitespace(input, pos + 1);
|
|
1394
|
+
colIndex++;
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1397
|
+
pos = consumeWhitespace(input, pos + 1); // consume ']'
|
|
1398
|
+
rows.push(row);
|
|
1399
|
+
if (input[pos] === ']') {
|
|
1400
|
+
// Validate all rows have the same number of columns
|
|
1401
|
+
const numCols = rows.length > 0 ? rows[0].length : 0;
|
|
1402
|
+
for (let i = 1; i < rows.length; i++) {
|
|
1403
|
+
if (rows[i].length !== numCols) {
|
|
1404
|
+
throw new ParseError(`matrix row ${i} has ${rows[i].length} columns, expected ${numCols}`, pos);
|
|
1405
|
+
}
|
|
1406
|
+
}
|
|
1407
|
+
const flat = rows.flat();
|
|
1408
|
+
const numRows = rows.length;
|
|
1409
|
+
return { value: matrix(_createTypedArray(element_type, flat, frozen), numRows, numCols), position: pos + 1 };
|
|
1410
|
+
}
|
|
1411
|
+
if (input[pos] !== ',') {
|
|
1412
|
+
throw new ParseError("expected ',' or ']' after matrix row", pos);
|
|
1413
|
+
}
|
|
1414
|
+
pos = consumeWhitespace(input, pos + 1);
|
|
1415
|
+
}
|
|
1416
|
+
};
|
|
1417
|
+
};
|
|
1418
|
+
function _createTypedArray(element_type, values, frozen) {
|
|
1419
|
+
let result;
|
|
1420
|
+
if (element_type.type === "Float") {
|
|
1421
|
+
result = new Float64Array(values);
|
|
1422
|
+
}
|
|
1423
|
+
else if (element_type.type === "Integer") {
|
|
1424
|
+
result = new BigInt64Array(values);
|
|
1425
|
+
}
|
|
1426
|
+
else if (element_type.type === "Boolean") {
|
|
1427
|
+
result = new Uint8ClampedArray(values.map(v => v ? 1 : 0));
|
|
1428
|
+
}
|
|
1429
|
+
else {
|
|
1430
|
+
throw new Error(`Unsupported vector/matrix element type: ${element_type.type}`);
|
|
1431
|
+
}
|
|
1432
|
+
if (frozen) {
|
|
1433
|
+
Object.freeze(result);
|
|
1434
|
+
}
|
|
1435
|
+
return result;
|
|
1436
|
+
}
|
|
1285
1437
|
/**
|
|
1286
1438
|
* Parse an East value and infer its type from the syntax.
|
|
1287
1439
|
*
|