@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
|
@@ -0,0 +1,48 @@
|
|
|
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
|
+
/**
|
|
6
|
+
* Patch system for computing and applying differences between East values.
|
|
7
|
+
*
|
|
8
|
+
* Provides core operations:
|
|
9
|
+
* - `diffFor(type)` — Compute the difference between two values
|
|
10
|
+
* - `applyFor(type)` — Apply a patch to a value
|
|
11
|
+
* - `composeFor(type)` — Combine two sequential patches
|
|
12
|
+
* - `invertFor(type)` — Invert a patch
|
|
13
|
+
*
|
|
14
|
+
* Plus 3-way merge primitives:
|
|
15
|
+
* - `detectConflictsFor(type)` — Identify overlapping leaves between two patches
|
|
16
|
+
* - `mergePatchFor(type)` — Merge two patches; throws on conflict
|
|
17
|
+
* - `mergeWithResolutionsFor(type)` — Merge with caller-supplied conflict resolutions
|
|
18
|
+
*
|
|
19
|
+
* @module
|
|
20
|
+
*/
|
|
21
|
+
// Re-export types for public API
|
|
22
|
+
export { ConflictError, } from "./types.js";
|
|
23
|
+
// Re-export PatchType constructor
|
|
24
|
+
export { PatchType } from "./type_of_patch.js";
|
|
25
|
+
// Re-export merge primitives
|
|
26
|
+
export { mergeFor, detectConflictsFor, mergeWithResolutionsFor, } from "./merge.js";
|
|
27
|
+
// Re-export path utilities — typed segments + bidirectional string conversion
|
|
28
|
+
// for the documented `Conflict.path` format.
|
|
29
|
+
export { field, index, dictKey, variantTag, pathToString, pathFromString, pathDisplay, } from "./path.js";
|
|
30
|
+
// Re-export walk visitor — type-driven traversal of a PatchTypeOf<T> tree
|
|
31
|
+
// with re-diffing of container `replace` ops so consumers see leaf-level
|
|
32
|
+
// changes everywhere.
|
|
33
|
+
export { walkPatch, } from "./walk.js";
|
|
34
|
+
// Re-export prune utility — drop leaves from a patch by path predicate,
|
|
35
|
+
// cascading empty-container collapse up the tree.
|
|
36
|
+
export { prunePatchFor, } from "./prune.js";
|
|
37
|
+
// Promote core patch operations to public — long available via
|
|
38
|
+
// `@elaraai/east/internal`, the diff/apply/compose/invert primitives are
|
|
39
|
+
// stable and useful directly (e.g. for building diff-review UIs).
|
|
40
|
+
export { diffFor } from "./diff.js";
|
|
41
|
+
export { applyFor } from "./apply.js";
|
|
42
|
+
export { composeFor } from "./compose.js";
|
|
43
|
+
export { invertFor } from "./invert.js";
|
|
44
|
+
// `validatePatchFor` — non-throwing variant of apply that returns per-leaf
|
|
45
|
+
// disagreements as data. Sits beside `applyFor` (strict, throws) for UI
|
|
46
|
+
// flows that need to preview a patch's compatibility before commit.
|
|
47
|
+
export { validatePatchFor } from "./validate.js";
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/patch/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH,iCAAiC;AACjC,OAAO,EAIL,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,6BAA6B;AAC7B,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,8EAA8E;AAC9E,6CAA6C;AAC7C,OAAO,EAGL,KAAK,EACL,KAAK,EACL,OAAO,EACP,UAAU,EACV,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,0EAA0E;AAC1E,yEAAyE;AACzE,sBAAsB;AACtB,OAAO,EAIL,SAAS,GACV,MAAM,WAAW,CAAC;AAEnB,wEAAwE;AACxE,kDAAkD;AAClD,OAAO,EAEL,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,+DAA+D;AAC/D,yEAAyE;AACzE,kEAAkE;AAClE,OAAO,EAAE,OAAO,EAAE,MAAS,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAQ,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAO,aAAa,CAAC;AAEzC,2EAA2E;AAC3E,wEAAwE;AACxE,oEAAoE;AACpE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
/**
|
|
6
|
+
* invertFor - Invert a patch.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { type EastTypeValue } from "../type_of_type.js";
|
|
11
|
+
import type { EastType } from "../types.js";
|
|
12
|
+
import { type InvertContext } from "./types.js";
|
|
13
|
+
export declare function invertFor(type: EastTypeValue, ctx?: InvertContext): (patch: any) => any;
|
|
14
|
+
export declare function invertFor<T extends EastType>(type: T): (patch: any) => any;
|
|
15
|
+
//# sourceMappingURL=invert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invert.d.ts","sourceRoot":"","sources":["../../../src/patch/invert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;AACzF,wBAAgB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC"}
|
|
@@ -0,0 +1,284 @@
|
|
|
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
|
+
/**
|
|
6
|
+
* invertFor - Invert a patch.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { toEastTypeValue } from "../type_of_type.js";
|
|
11
|
+
import { isVariant, variant } from "../containers/variant.js";
|
|
12
|
+
import { compareFor } from "../comparison.js";
|
|
13
|
+
import { SortedMap } from "../containers/sortedmap.js";
|
|
14
|
+
import {} from "./types.js";
|
|
15
|
+
export function invertFor(type, ctx = { invert: [], types: [], equal: new Map() }) {
|
|
16
|
+
// Convert to EastTypeValue and use a properly typed variable
|
|
17
|
+
const t = isVariant(type) ? type : toEastTypeValue(type);
|
|
18
|
+
if (t.type === "Never") {
|
|
19
|
+
return (_patch) => {
|
|
20
|
+
throw new Error("Cannot invert patches for type Never");
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
else if (t.type === "Null" ||
|
|
24
|
+
t.type === "Boolean" ||
|
|
25
|
+
t.type === "Integer" ||
|
|
26
|
+
t.type === "Float" ||
|
|
27
|
+
t.type === "String" ||
|
|
28
|
+
t.type === "DateTime" ||
|
|
29
|
+
t.type === "Blob" ||
|
|
30
|
+
t.type === "Vector" ||
|
|
31
|
+
t.type === "Matrix") {
|
|
32
|
+
return (patch) => {
|
|
33
|
+
if (patch.type === "unchanged") {
|
|
34
|
+
return patch;
|
|
35
|
+
}
|
|
36
|
+
else if (patch.type === "replace") {
|
|
37
|
+
return variant("replace", { before: patch.value.after, after: patch.value.before });
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
throw new Error(`Invalid patch type for primitive inversion: ${patch.type}`);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
else if (t.type === "Array") {
|
|
45
|
+
let elementInvert;
|
|
46
|
+
const ret = (patch) => {
|
|
47
|
+
if (patch.type === "unchanged") {
|
|
48
|
+
return patch;
|
|
49
|
+
}
|
|
50
|
+
else if (patch.type === "replace") {
|
|
51
|
+
return variant("replace", { before: patch.value.after, after: patch.value.before });
|
|
52
|
+
}
|
|
53
|
+
else if (patch.type === "patch") {
|
|
54
|
+
const operations = patch.value;
|
|
55
|
+
const inverted = [];
|
|
56
|
+
for (let i = operations.length - 1; i >= 0; i--) {
|
|
57
|
+
const op = operations[i];
|
|
58
|
+
if (op.operation.type === "delete") {
|
|
59
|
+
// Delete becomes insert at same position
|
|
60
|
+
inverted.push({
|
|
61
|
+
key: op.key,
|
|
62
|
+
offset: 0n,
|
|
63
|
+
operation: variant("insert", op.operation.value),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
else if (op.operation.type === "insert") {
|
|
67
|
+
// Insert becomes delete at same position
|
|
68
|
+
inverted.push({
|
|
69
|
+
key: op.key,
|
|
70
|
+
offset: 0n,
|
|
71
|
+
operation: variant("delete", op.operation.value),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
else if (op.operation.type === "update") {
|
|
75
|
+
inverted.push({
|
|
76
|
+
key: op.key,
|
|
77
|
+
offset: 0n,
|
|
78
|
+
operation: variant("update", elementInvert(op.operation.value)),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return variant("patch", inverted);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
throw new Error(`Invalid patch type for array inversion: ${patch.type}`);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
ctx.invert.push(ret);
|
|
89
|
+
ctx.types.push(t);
|
|
90
|
+
elementInvert = invertFor(t.value, ctx);
|
|
91
|
+
ctx.invert.pop();
|
|
92
|
+
ctx.types.pop();
|
|
93
|
+
return ret;
|
|
94
|
+
}
|
|
95
|
+
else if (t.type === "Set") {
|
|
96
|
+
const keyCompare = compareFor(t.value);
|
|
97
|
+
return (patch) => {
|
|
98
|
+
if (patch.type === "unchanged") {
|
|
99
|
+
return patch;
|
|
100
|
+
}
|
|
101
|
+
else if (patch.type === "replace") {
|
|
102
|
+
return variant("replace", { before: patch.value.after, after: patch.value.before });
|
|
103
|
+
}
|
|
104
|
+
else if (patch.type === "patch") {
|
|
105
|
+
const operations = patch.value;
|
|
106
|
+
const inverted = new SortedMap(undefined, keyCompare);
|
|
107
|
+
for (const [key, op] of operations) {
|
|
108
|
+
if (op.type === "delete") {
|
|
109
|
+
inverted.set(key, variant("insert", null));
|
|
110
|
+
}
|
|
111
|
+
else if (op.type === "insert") {
|
|
112
|
+
inverted.set(key, variant("delete", null));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return variant("patch", inverted);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
throw new Error(`Invalid patch type for set inversion: ${patch.type}`);
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
else if (t.type === "Dict") {
|
|
123
|
+
let valueInvert;
|
|
124
|
+
const keyCompare = compareFor(t.value.key);
|
|
125
|
+
const ret = (patch) => {
|
|
126
|
+
if (patch.type === "unchanged") {
|
|
127
|
+
return patch;
|
|
128
|
+
}
|
|
129
|
+
else if (patch.type === "replace") {
|
|
130
|
+
return variant("replace", { before: patch.value.after, after: patch.value.before });
|
|
131
|
+
}
|
|
132
|
+
else if (patch.type === "patch") {
|
|
133
|
+
const operations = patch.value;
|
|
134
|
+
const inverted = new SortedMap(undefined, keyCompare);
|
|
135
|
+
for (const [key, op] of operations) {
|
|
136
|
+
if (op.type === "delete") {
|
|
137
|
+
inverted.set(key, variant("insert", op.value));
|
|
138
|
+
}
|
|
139
|
+
else if (op.type === "insert") {
|
|
140
|
+
inverted.set(key, variant("delete", op.value));
|
|
141
|
+
}
|
|
142
|
+
else if (op.type === "update") {
|
|
143
|
+
inverted.set(key, variant("update", valueInvert(op.value)));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return variant("patch", inverted);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
throw new Error(`Invalid patch type for dict inversion: ${patch.type}`);
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
ctx.invert.push(ret);
|
|
153
|
+
ctx.types.push(t);
|
|
154
|
+
valueInvert = invertFor(t.value.value, ctx);
|
|
155
|
+
ctx.invert.pop();
|
|
156
|
+
ctx.types.pop();
|
|
157
|
+
return ret;
|
|
158
|
+
}
|
|
159
|
+
else if (t.type === "Struct") {
|
|
160
|
+
const fieldInverts = {};
|
|
161
|
+
const ret = (patch) => {
|
|
162
|
+
if (patch.type === "unchanged") {
|
|
163
|
+
return patch;
|
|
164
|
+
}
|
|
165
|
+
else if (patch.type === "replace") {
|
|
166
|
+
return variant("replace", { before: patch.value.after, after: patch.value.before });
|
|
167
|
+
}
|
|
168
|
+
else if (patch.type === "patch") {
|
|
169
|
+
const result = {};
|
|
170
|
+
let allUnchanged = true;
|
|
171
|
+
for (const { name } of t.value) {
|
|
172
|
+
const inverted = fieldInverts[name](patch.value[name]);
|
|
173
|
+
result[name] = inverted;
|
|
174
|
+
if (inverted.type !== "unchanged") {
|
|
175
|
+
allUnchanged = false;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (allUnchanged) {
|
|
179
|
+
return variant("unchanged", null);
|
|
180
|
+
}
|
|
181
|
+
return variant("patch", result);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
throw new Error(`Invalid patch type for struct inversion: ${patch.type}`);
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
ctx.invert.push(ret);
|
|
188
|
+
ctx.types.push(t);
|
|
189
|
+
for (const { name, type: fieldType } of t.value) {
|
|
190
|
+
fieldInverts[name] = invertFor(fieldType, ctx);
|
|
191
|
+
}
|
|
192
|
+
ctx.invert.pop();
|
|
193
|
+
ctx.types.pop();
|
|
194
|
+
return ret;
|
|
195
|
+
}
|
|
196
|
+
else if (t.type === "Variant") {
|
|
197
|
+
const caseInverts = {};
|
|
198
|
+
const ret = (patch) => {
|
|
199
|
+
if (patch.type === "unchanged") {
|
|
200
|
+
return patch;
|
|
201
|
+
}
|
|
202
|
+
else if (patch.type === "replace") {
|
|
203
|
+
return variant("replace", { before: patch.value.after, after: patch.value.before });
|
|
204
|
+
}
|
|
205
|
+
else if (patch.type === "patch") {
|
|
206
|
+
const caseName = patch.value.type;
|
|
207
|
+
const inverted = caseInverts[caseName](patch.value.value);
|
|
208
|
+
if (inverted.type === "unchanged") {
|
|
209
|
+
return variant("unchanged", null);
|
|
210
|
+
}
|
|
211
|
+
return variant("patch", variant(caseName, inverted));
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
throw new Error(`Invalid patch type for variant inversion: ${patch.type}`);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
ctx.invert.push(ret);
|
|
218
|
+
ctx.types.push(t);
|
|
219
|
+
for (const { name, type: caseType } of t.value) {
|
|
220
|
+
caseInverts[name] = invertFor(caseType, ctx);
|
|
221
|
+
}
|
|
222
|
+
ctx.invert.pop();
|
|
223
|
+
ctx.types.pop();
|
|
224
|
+
return ret;
|
|
225
|
+
}
|
|
226
|
+
else if (t.type === "Ref") {
|
|
227
|
+
let innerInvert;
|
|
228
|
+
const ret = (patch) => {
|
|
229
|
+
if (patch.type === "unchanged") {
|
|
230
|
+
return patch;
|
|
231
|
+
}
|
|
232
|
+
else if (patch.type === "replace") {
|
|
233
|
+
return variant("replace", { before: patch.value.after, after: patch.value.before });
|
|
234
|
+
}
|
|
235
|
+
else if (patch.type === "patch") {
|
|
236
|
+
const inverted = innerInvert(patch.value);
|
|
237
|
+
if (inverted.type === "unchanged") {
|
|
238
|
+
return variant("unchanged", null);
|
|
239
|
+
}
|
|
240
|
+
return variant("patch", inverted);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
throw new Error(`Invalid patch type for ref inversion: ${patch.type}`);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
ctx.invert.push(ret);
|
|
247
|
+
ctx.types.push(t);
|
|
248
|
+
innerInvert = invertFor(t.value, ctx);
|
|
249
|
+
ctx.invert.pop();
|
|
250
|
+
ctx.types.pop();
|
|
251
|
+
return ret;
|
|
252
|
+
}
|
|
253
|
+
else if (t.type === "Recursive") {
|
|
254
|
+
// Recursive types use replace-only semantics - only unchanged and replace patches
|
|
255
|
+
return (patch) => {
|
|
256
|
+
if (patch.type === "unchanged") {
|
|
257
|
+
return patch;
|
|
258
|
+
}
|
|
259
|
+
else if (patch.type === "replace") {
|
|
260
|
+
return variant("replace", { before: patch.value.after, after: patch.value.before });
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
throw new Error(`Invalid patch type for recursive type inversion: ${patch.type}`);
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
else if (t.type === "Function" || t.type === "AsyncFunction") {
|
|
268
|
+
return (patch) => {
|
|
269
|
+
if (patch.type === "unchanged") {
|
|
270
|
+
return patch;
|
|
271
|
+
}
|
|
272
|
+
else if (patch.type === "replace") {
|
|
273
|
+
return variant("replace", { before: patch.value.after, after: patch.value.before });
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
throw new Error(`Invalid patch type for function inversion: ${patch.type}`);
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
throw new Error(`Unhandled type in invertFor: ${t.type}`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=invert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invert.js","sourceRoot":"","sources":["../../../src/patch/invert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
/**
|
|
6
|
+
* Patch merge — 3-way merge of two patches against the same base.
|
|
7
|
+
*
|
|
8
|
+
* Given a snapshot S and two patches P_A, P_B both diffed against S, produce
|
|
9
|
+
* a single patch P_merged that captures the intent of both A and B. Where the
|
|
10
|
+
* two patches touch the same leaf with different intents, that is a conflict.
|
|
11
|
+
*
|
|
12
|
+
* Three operation modes:
|
|
13
|
+
* - {@link mergeFor} — throws ConflictError on any conflict
|
|
14
|
+
* - {@link detectConflictsFor} — returns the list of conflicts (no throw)
|
|
15
|
+
* - {@link mergeWithResolutionsFor} — applies caller-supplied per-path
|
|
16
|
+
* resolutions (`keepA` / `keepB` / `manual`); throws if any unresolved
|
|
17
|
+
*
|
|
18
|
+
* @module
|
|
19
|
+
*/
|
|
20
|
+
import { type EastTypeValue } from "../type_of_type.js";
|
|
21
|
+
import type { EastType } from "../types.js";
|
|
22
|
+
import { type MergeContext, type Conflict, type Resolution } from "./types.js";
|
|
23
|
+
/**
|
|
24
|
+
* Build a merge function for a given East type. Returns a closure
|
|
25
|
+
* `(patchA, patchB) => merged`. Throws {@link ConflictError} if any leaf in
|
|
26
|
+
* the two patches conflicts (i.e. both patches touch the same leaf with
|
|
27
|
+
* incompatible operations).
|
|
28
|
+
*
|
|
29
|
+
* For conflict-tolerant merging, use {@link detectConflictsFor} or
|
|
30
|
+
* {@link mergeWithResolutionsFor}.
|
|
31
|
+
*/
|
|
32
|
+
export declare function mergeFor(type: EastTypeValue, ctx?: MergeContext): (a: any, b: any) => any;
|
|
33
|
+
export declare function mergeFor<T extends EastType>(type: T): (a: any, b: any) => any;
|
|
34
|
+
/**
|
|
35
|
+
* Build a function that detects conflicts between two patches without
|
|
36
|
+
* attempting to merge. Pure observation — never throws.
|
|
37
|
+
*
|
|
38
|
+
* Returns the list of {@link Conflict} descriptors, each carrying the
|
|
39
|
+
* dot/bracket-encoded `path` to the conflicting leaf and both `valueA` /
|
|
40
|
+
* `valueB` patch arms at that path.
|
|
41
|
+
*/
|
|
42
|
+
export declare function detectConflictsFor(type: EastTypeValue, ctx?: MergeContext): (a: any, b: any) => Conflict[];
|
|
43
|
+
export declare function detectConflictsFor<T extends EastType>(type: T): (a: any, b: any) => Conflict[];
|
|
44
|
+
/**
|
|
45
|
+
* Build a merge function that consumes caller-supplied per-conflict
|
|
46
|
+
* resolutions. The `resolutions` map is keyed on `Conflict.path` strings; for
|
|
47
|
+
* each conflict, the corresponding {@link Resolution} dictates whether
|
|
48
|
+
* patchA's value, patchB's value, or a manual replacement is used.
|
|
49
|
+
*
|
|
50
|
+
* Throws {@link ConflictError} if any conflict has no matching resolution
|
|
51
|
+
* (or if a `manual` resolution targets a non-leaf where no `before` is
|
|
52
|
+
* available — see `applyResolution` JSDoc in the source).
|
|
53
|
+
*/
|
|
54
|
+
export declare function mergeWithResolutionsFor(type: EastTypeValue, ctx?: MergeContext): (a: any, b: any, resolutions: Map<string, Resolution>) => any;
|
|
55
|
+
export declare function mergeWithResolutionsFor<T extends EastType>(type: T): (a: any, b: any, resolutions: Map<string, Resolution>) => any;
|
|
56
|
+
//# sourceMappingURL=merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/patch/merge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAiB,MAAM,YAAY,CAAC;AAiiB9F;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;AAC3F,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;AAiB/E;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,QAAQ,EAAE,CAAC;AAC5G,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,QAAQ,EAAE,CAAC;AAchG;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,aAAa,EACnB,GAAG,CAAC,EAAE,YAAY,GACjB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,CAAC;AACjE,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,QAAQ,EACxD,IAAI,EAAE,CAAC,GACN,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,CAAC"}
|