automerge-rb 0.1.1
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.
- checksums.yaml +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +175 -0
- data/ext/automerge_ext/automerge_ext.c +1805 -0
- data/ext/automerge_ext/extconf.rb +132 -0
- data/lib/automerge/version.rb +6 -0
- data/lib/automerge.rb +110 -0
- data/rust-toolchain.toml +4 -0
- data/vendor/automerge-rust/Cargo.lock +1909 -0
- data/vendor/automerge-rust/Cargo.toml +15 -0
- data/vendor/automerge-rust/automerge/Cargo.toml +78 -0
- data/vendor/automerge-rust/automerge/README.md +5 -0
- data/vendor/automerge-rust/automerge/benches/load_save.rs +102 -0
- data/vendor/automerge-rust/automerge/benches/map.rs +260 -0
- data/vendor/automerge-rust/automerge/benches/range.rs +37 -0
- data/vendor/automerge-rust/automerge/benches/sync.rs +95 -0
- data/vendor/automerge-rust/automerge/examples/README.md +7 -0
- data/vendor/automerge-rust/automerge/examples/quickstart.rs +57 -0
- data/vendor/automerge-rust/automerge/examples/watch.rs +94 -0
- data/vendor/automerge-rust/automerge/fuzz/Cargo.toml +29 -0
- data/vendor/automerge-rust/automerge/fuzz/fuzz_targets/load.rs +37 -0
- data/vendor/automerge-rust/automerge/src/autocommit.rs +1286 -0
- data/vendor/automerge-rust/automerge/src/automerge/current_state.rs +546 -0
- data/vendor/automerge-rust/automerge/src/automerge/tests.rs +2023 -0
- data/vendor/automerge-rust/automerge/src/automerge.rs +2071 -0
- data/vendor/automerge-rust/automerge/src/autoserde.rs +128 -0
- data/vendor/automerge-rust/automerge/src/change.rs +357 -0
- data/vendor/automerge-rust/automerge/src/change_graph.rs +1215 -0
- data/vendor/automerge-rust/automerge/src/change_queue.rs +46 -0
- data/vendor/automerge-rust/automerge/src/clock.rs +206 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/boolean.rs +83 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/delta.rs +148 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/group.rs +138 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/simple.rs +76 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/generic.rs +93 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/key.rs +272 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/obj_id.rs +202 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/opid_list.rs +329 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/raw.rs +38 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/rle.rs +216 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range/value.rs +547 -0
- data/vendor/automerge-rust/automerge/src/columnar/column_range.rs +17 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/boolean.rs +197 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/col_error.rs +88 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/column_decoder.rs +133 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/decodable_impls.rs +175 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/delta.rs +96 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/encodable_impls.rs +200 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/leb128.rs +82 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/properties.rs +178 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/raw.rs +101 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding/rle.rs +239 -0
- data/vendor/automerge-rust/automerge/src/columnar/encoding.rs +67 -0
- data/vendor/automerge-rust/automerge/src/columnar/splice_error.rs +47 -0
- data/vendor/automerge-rust/automerge/src/columnar.rs +14 -0
- data/vendor/automerge-rust/automerge/src/convert.rs +112 -0
- data/vendor/automerge-rust/automerge/src/cursor.rs +296 -0
- data/vendor/automerge-rust/automerge/src/decoding.rs +475 -0
- data/vendor/automerge-rust/automerge/src/error.rs +159 -0
- data/vendor/automerge-rust/automerge/src/exid.rs +238 -0
- data/vendor/automerge-rust/automerge/src/hydrate/list.rs +140 -0
- data/vendor/automerge-rust/automerge/src/hydrate/map.rs +132 -0
- data/vendor/automerge-rust/automerge/src/hydrate/tests.rs +40 -0
- data/vendor/automerge-rust/automerge/src/hydrate/text.rs +89 -0
- data/vendor/automerge-rust/automerge/src/hydrate.rs +368 -0
- data/vendor/automerge-rust/automerge/src/indexed_cache.rs +113 -0
- data/vendor/automerge-rust/automerge/src/iter/doc.rs +603 -0
- data/vendor/automerge-rust/automerge/src/iter/keys.rs +93 -0
- data/vendor/automerge-rust/automerge/src/iter/list_range.rs +433 -0
- data/vendor/automerge-rust/automerge/src/iter/map_range.rs +316 -0
- data/vendor/automerge-rust/automerge/src/iter/spans.rs +601 -0
- data/vendor/automerge-rust/automerge/src/iter/tools.rs +427 -0
- data/vendor/automerge-rust/automerge/src/iter/values.rs +36 -0
- data/vendor/automerge-rust/automerge/src/iter.rs +25 -0
- data/vendor/automerge-rust/automerge/src/legacy/mod.rs +364 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/actor_id.rs +25 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/change_hash.rs +29 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/element_id.rs +27 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/mod.rs +31 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/object_id.rs +36 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op.rs +668 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op_type.rs +26 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/opid.rs +25 -0
- data/vendor/automerge-rust/automerge/src/legacy/serde_impls/scalar_value.rs +63 -0
- data/vendor/automerge-rust/automerge/src/legacy/utility_impls/element_id.rs +66 -0
- data/vendor/automerge-rust/automerge/src/legacy/utility_impls/key.rs +49 -0
- data/vendor/automerge-rust/automerge/src/legacy/utility_impls/mod.rs +4 -0
- data/vendor/automerge-rust/automerge/src/legacy/utility_impls/object_id.rs +74 -0
- data/vendor/automerge-rust/automerge/src/legacy/utility_impls/opid.rs +68 -0
- data/vendor/automerge-rust/automerge/src/lib.rs +315 -0
- data/vendor/automerge-rust/automerge/src/marks.rs +478 -0
- data/vendor/automerge-rust/automerge/src/op_set2/change/batch.rs +2002 -0
- data/vendor/automerge-rust/automerge/src/op_set2/change/collector.rs +974 -0
- data/vendor/automerge-rust/automerge/src/op_set2/change.rs +332 -0
- data/vendor/automerge-rust/automerge/src/op_set2/columns.rs +714 -0
- data/vendor/automerge-rust/automerge/src/op_set2/meta.rs +174 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op.rs +1363 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/elems.rs +43 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/found_op.rs +60 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/index.rs +197 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/insert.rs +179 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/mark_index.rs +292 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/marks.rs +86 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_iter.rs +1295 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_query.rs +82 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/top_op.rs +50 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set/visible.rs +290 -0
- data/vendor/automerge-rust/automerge/src/op_set2/op_set.rs +1793 -0
- data/vendor/automerge-rust/automerge/src/op_set2/parents.rs +133 -0
- data/vendor/automerge-rust/automerge/src/op_set2/skip_list.rs +714 -0
- data/vendor/automerge-rust/automerge/src/op_set2/types.rs +769 -0
- data/vendor/automerge-rust/automerge/src/op_set2.rs +18 -0
- data/vendor/automerge-rust/automerge/src/patches/patch.rs +95 -0
- data/vendor/automerge-rust/automerge/src/patches/patch_builder.rs +382 -0
- data/vendor/automerge-rust/automerge/src/patches/patch_log.rs +584 -0
- data/vendor/automerge-rust/automerge/src/patches.rs +7 -0
- data/vendor/automerge-rust/automerge/src/query/list_state.rs +230 -0
- data/vendor/automerge-rust/automerge/src/query/seek_mark.rs +142 -0
- data/vendor/automerge-rust/automerge/src/read.rs +326 -0
- data/vendor/automerge-rust/automerge/src/sequence_tree.rs +662 -0
- data/vendor/automerge-rust/automerge/src/storage/bundle/builder.rs +942 -0
- data/vendor/automerge-rust/automerge/src/storage/bundle/error.rs +42 -0
- data/vendor/automerge-rust/automerge/src/storage/bundle/meta.rs +23 -0
- data/vendor/automerge-rust/automerge/src/storage/bundle/storage.rs +146 -0
- data/vendor/automerge-rust/automerge/src/storage/bundle.rs +210 -0
- data/vendor/automerge-rust/automerge/src/storage/change/change_actors.rs +311 -0
- data/vendor/automerge-rust/automerge/src/storage/change/change_op_columns.rs +621 -0
- data/vendor/automerge-rust/automerge/src/storage/change/compressed.rs +51 -0
- data/vendor/automerge-rust/automerge/src/storage/change/op_with_change_actors.rs +1 -0
- data/vendor/automerge-rust/automerge/src/storage/change.rs +523 -0
- data/vendor/automerge-rust/automerge/src/storage/chunk.rs +312 -0
- data/vendor/automerge-rust/automerge/src/storage/columns/column.rs +42 -0
- data/vendor/automerge-rust/automerge/src/storage/columns/column_builder.rs +199 -0
- data/vendor/automerge-rust/automerge/src/storage/columns/column_specification.rs +340 -0
- data/vendor/automerge-rust/automerge/src/storage/columns/raw_column.rs +286 -0
- data/vendor/automerge-rust/automerge/src/storage/columns.rs +355 -0
- data/vendor/automerge-rust/automerge/src/storage/document/compression.rs +362 -0
- data/vendor/automerge-rust/automerge/src/storage/document.rs +411 -0
- data/vendor/automerge-rust/automerge/src/storage/load/change_collector.rs +15 -0
- data/vendor/automerge-rust/automerge/src/storage/load.rs +136 -0
- data/vendor/automerge-rust/automerge/src/storage/parse/leb128.rs +302 -0
- data/vendor/automerge-rust/automerge/src/storage/parse.rs +619 -0
- data/vendor/automerge-rust/automerge/src/storage/save/document.rs +27 -0
- data/vendor/automerge-rust/automerge/src/storage.rs +26 -0
- data/vendor/automerge-rust/automerge/src/sync/bloom.rs +161 -0
- data/vendor/automerge-rust/automerge/src/sync/message_builder.rs +118 -0
- data/vendor/automerge-rust/automerge/src/sync/state.rs +214 -0
- data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/bloom.rs +162 -0
- data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/mod.rs +625 -0
- data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/state.rs +120 -0
- data/vendor/automerge-rust/automerge/src/sync.rs +2482 -0
- data/vendor/automerge-rust/automerge/src/text_diff/LICENSE +201 -0
- data/vendor/automerge-rust/automerge/src/text_diff/myers.rs +332 -0
- data/vendor/automerge-rust/automerge/src/text_diff/replace.rs +139 -0
- data/vendor/automerge-rust/automerge/src/text_diff/utils.rs +119 -0
- data/vendor/automerge-rust/automerge/src/text_diff.rs +515 -0
- data/vendor/automerge-rust/automerge/src/text_value.rs +276 -0
- data/vendor/automerge-rust/automerge/src/transaction/commit.rs +34 -0
- data/vendor/automerge-rust/automerge/src/transaction/inner.rs +1403 -0
- data/vendor/automerge-rust/automerge/src/transaction/manual_transaction.rs +147 -0
- data/vendor/automerge-rust/automerge/src/transaction/owned_transaction.rs +266 -0
- data/vendor/automerge-rust/automerge/src/transaction/result.rs +21 -0
- data/vendor/automerge-rust/automerge/src/transaction/transactable.rs +203 -0
- data/vendor/automerge-rust/automerge/src/transaction.rs +513 -0
- data/vendor/automerge-rust/automerge/src/types.rs +749 -0
- data/vendor/automerge-rust/automerge/src/validation.rs +29 -0
- data/vendor/automerge-rust/automerge/src/value.rs +763 -0
- data/vendor/automerge-rust/automerge/tests/batch_insert.rs +1034 -0
- data/vendor/automerge-rust/automerge/tests/block_tests.rs +887 -0
- data/vendor/automerge-rust/automerge/tests/convert_string_to_text.rs +72 -0
- data/vendor/automerge-rust/automerge/tests/diff_marks.rs +1508 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_change.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_doc.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_has_incorrect_meta.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_ok.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_overlong.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_compressed.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_out_of_order.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/action-is-48.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/incorrect_max_op.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/invalid_deflate_stream.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/missing_actor.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/overflow_in_length.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_deps.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_ops.automerge +0 -0
- data/vendor/automerge-rust/automerge/tests/test.rs +2668 -0
- data/vendor/automerge-rust/automerge/tests/test_mark_patches.rs +41 -0
- data/vendor/automerge-rust/automerge/tests/test_save_load_orphans.rs +84 -0
- data/vendor/automerge-rust/automerge/tests/text.rs +1098 -0
- data/vendor/automerge-rust/automerge/tests/text_encoding.rs +640 -0
- data/vendor/automerge-rust/automerge-c/CMakeLists.txt +439 -0
- data/vendor/automerge-rust/automerge-c/Cargo.toml +22 -0
- data/vendor/automerge-rust/automerge-c/README.md +233 -0
- data/vendor/automerge-rust/automerge-c/build.rs +21 -0
- data/vendor/automerge-rust/automerge-c/cbindgen.toml +48 -0
- data/vendor/automerge-rust/automerge-c/cmake/Cargo.toml.in +22 -0
- data/vendor/automerge-rust/automerge-c/cmake/automerge-c-config.cmake.in +99 -0
- data/vendor/automerge-rust/automerge-c/cmake/cbindgen.toml.in +48 -0
- data/vendor/automerge-rust/automerge-c/cmake/config.h.in +58 -0
- data/vendor/automerge-rust/automerge-c/cmake/enum-string-functions-gen.cmake +183 -0
- data/vendor/automerge-rust/automerge-c/cmake/file-regex-replace.cmake +33 -0
- data/vendor/automerge-rust/automerge-c/cmake/file-touch.cmake +35 -0
- data/vendor/automerge-rust/automerge-c/docs/CMakeLists.txt +39 -0
- data/vendor/automerge-rust/automerge-c/docs/img/brandmark.png +0 -0
- data/vendor/automerge-rust/automerge-c/examples/CMakeLists.txt +42 -0
- data/vendor/automerge-rust/automerge-c/examples/README.md +9 -0
- data/vendor/automerge-rust/automerge-c/examples/quickstart.c +131 -0
- data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/result.h +30 -0
- data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack.h +130 -0
- data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack_callback_data.h +53 -0
- data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/string.h +29 -0
- data/vendor/automerge-rust/automerge-c/src/actor_id.rs +193 -0
- data/vendor/automerge-rust/automerge-c/src/byte_span.rs +227 -0
- data/vendor/automerge-rust/automerge-c/src/change.rs +356 -0
- data/vendor/automerge-rust/automerge-c/src/cursor.rs +168 -0
- data/vendor/automerge-rust/automerge-c/src/doc/list.rs +636 -0
- data/vendor/automerge-rust/automerge-c/src/doc/map.rs +556 -0
- data/vendor/automerge-rust/automerge-c/src/doc/mark.rs +296 -0
- data/vendor/automerge-rust/automerge-c/src/doc/utils.rs +46 -0
- data/vendor/automerge-rust/automerge-c/src/doc.rs +1009 -0
- data/vendor/automerge-rust/automerge-c/src/index.rs +84 -0
- data/vendor/automerge-rust/automerge-c/src/item.rs +2177 -0
- data/vendor/automerge-rust/automerge-c/src/items.rs +401 -0
- data/vendor/automerge-rust/automerge-c/src/lib.rs +11 -0
- data/vendor/automerge-rust/automerge-c/src/obj.rs +216 -0
- data/vendor/automerge-rust/automerge-c/src/result.rs +653 -0
- data/vendor/automerge-rust/automerge-c/src/sync/have.rs +42 -0
- data/vendor/automerge-rust/automerge-c/src/sync/message.rs +146 -0
- data/vendor/automerge-rust/automerge-c/src/sync/state.rs +262 -0
- data/vendor/automerge-rust/automerge-c/src/sync.rs +7 -0
- data/vendor/automerge-rust/automerge-c/src/utils/result.c +33 -0
- data/vendor/automerge-rust/automerge-c/src/utils/stack.c +106 -0
- data/vendor/automerge-rust/automerge-c/src/utils/stack_callback_data.c +9 -0
- data/vendor/automerge-rust/automerge-c/src/utils/string.c +46 -0
- data/vendor/automerge-rust/automerge-c/test/CMakeLists.txt +67 -0
- data/vendor/automerge-rust/automerge-c/test/actor_id_tests.c +140 -0
- data/vendor/automerge-rust/automerge-c/test/base_state.c +17 -0
- data/vendor/automerge-rust/automerge-c/test/base_state.h +39 -0
- data/vendor/automerge-rust/automerge-c/test/byte_span_tests.c +119 -0
- data/vendor/automerge-rust/automerge-c/test/cmocka_utils.c +91 -0
- data/vendor/automerge-rust/automerge-c/test/cmocka_utils.h +42 -0
- data/vendor/automerge-rust/automerge-c/test/cursor_tests.c +263 -0
- data/vendor/automerge-rust/automerge-c/test/doc_state.c +27 -0
- data/vendor/automerge-rust/automerge-c/test/doc_state.h +17 -0
- data/vendor/automerge-rust/automerge-c/test/doc_tests.c +335 -0
- data/vendor/automerge-rust/automerge-c/test/enum_string_tests.c +148 -0
- data/vendor/automerge-rust/automerge-c/test/files/brave-ape-49.automerge +0 -0
- data/vendor/automerge-rust/automerge-c/test/item_tests.c +313 -0
- data/vendor/automerge-rust/automerge-c/test/list_tests.c +544 -0
- data/vendor/automerge-rust/automerge-c/test/macro_utils.c +38 -0
- data/vendor/automerge-rust/automerge-c/test/macro_utils.h +23 -0
- data/vendor/automerge-rust/automerge-c/test/main.c +33 -0
- data/vendor/automerge-rust/automerge-c/test/map_tests.c +1610 -0
- data/vendor/automerge-rust/automerge-c/test/mark_tests.c +124 -0
- data/vendor/automerge-rust/automerge-c/test/ported_wasm/basic_tests.c +1642 -0
- data/vendor/automerge-rust/automerge-c/test/ported_wasm/cursor_tests.c +108 -0
- data/vendor/automerge-rust/automerge-c/test/ported_wasm/suite.c +17 -0
- data/vendor/automerge-rust/automerge-c/test/ported_wasm/sync_tests.c +1280 -0
- data/vendor/automerge-rust/automerge-c/test/str_utils.c +15 -0
- data/vendor/automerge-rust/automerge-c/test/str_utils.h +17 -0
- data/vendor/automerge-rust/automerge-test/Cargo.toml +17 -0
- data/vendor/automerge-rust/automerge-test/README.md +3 -0
- data/vendor/automerge-rust/automerge-test/src/lib.rs +487 -0
- data/vendor/automerge-rust/hexane/CHANGELOG.md +34 -0
- data/vendor/automerge-rust/hexane/Cargo.toml +47 -0
- data/vendor/automerge-rust/hexane/README.md +292 -0
- data/vendor/automerge-rust/hexane/RESULTS.txt +20 -0
- data/vendor/automerge-rust/hexane/TODO +18 -0
- data/vendor/automerge-rust/hexane/benches/insert.rs +82 -0
- data/vendor/automerge-rust/hexane/benches/seek.rs +77 -0
- data/vendor/automerge-rust/hexane/benches/splice.rs +82 -0
- data/vendor/automerge-rust/hexane/src/aggregate.rs +288 -0
- data/vendor/automerge-rust/hexane/src/boolean.rs +478 -0
- data/vendor/automerge-rust/hexane/src/columndata.rs +2540 -0
- data/vendor/automerge-rust/hexane/src/cursor.rs +756 -0
- data/vendor/automerge-rust/hexane/src/delta.rs +793 -0
- data/vendor/automerge-rust/hexane/src/encoder.rs +639 -0
- data/vendor/automerge-rust/hexane/src/leb128.rs +82 -0
- data/vendor/automerge-rust/hexane/src/lib.rs +95 -0
- data/vendor/automerge-rust/hexane/src/pack.rs +325 -0
- data/vendor/automerge-rust/hexane/src/raw.rs +314 -0
- data/vendor/automerge-rust/hexane/src/rle.rs +928 -0
- data/vendor/automerge-rust/hexane/src/slab/tree.rs +1373 -0
- data/vendor/automerge-rust/hexane/src/slab/writer.rs +535 -0
- data/vendor/automerge-rust/hexane/src/slab.rs +224 -0
- data/vendor/automerge-rust/hexane/src/test.rs +108 -0
- data/vendor/bundle/ruby/3.3.0/bin/rake +29 -0
- data/vendor/bundle/ruby/3.3.0/bin/rake-compiler +29 -0
- data/vendor/bundle/ruby/3.3.0/bin/rake-compiler-dock +29 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/History.rdoc +1732 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Manifest.txt +32 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/README.rdoc +845 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Rakefile +97 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/design_rationale.rb +54 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/hoe/minitest.rb +30 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/assertions.rb +850 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/autorun.rb +6 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/benchmark.rb +452 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/compress.rb +94 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/error_on_warning.rb +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/expectations.rb +321 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/hell.rb +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/manual_plugins.rb +16 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/mock.rb +327 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/parallel.rb +72 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride.rb +4 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride_plugin.rb +135 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/spec.rb +353 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test.rb +238 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test_task.rb +324 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/unit.rb +42 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest.rb +1250 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/metametameta.rb +150 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_assertions.rb +1677 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_benchmark.rb +137 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_mock.rb +1213 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_reporter.rb +437 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_spec.rb +1159 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test.rb +1374 -0
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test_task.rb +57 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/History.rdoc +2454 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/README.rdoc +155 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/command_line_usage.rdoc +171 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/a.c +6 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/b.c +6 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/main.c +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/glossary.rdoc +42 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/jamis.rb +592 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rake.1 +156 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rakefile.rdoc +635 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rational.rdoc +151 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/exe/rake +27 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/application.rb +847 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/backtrace.rb +25 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/clean.rb +78 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cloneable.rb +17 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cpu_counter.rb +122 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/default_loader.rb +15 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/dsl_definition.rb +196 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/early_time.rb +22 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/core.rb +26 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/string.rb +176 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_creation_task.rb +25 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_list.rb +435 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_task.rb +58 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils.rb +137 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils_ext.rb +135 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_chain.rb +57 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_exception_mixin.rb +17 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/late_time.rb +18 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/linked_list.rb +112 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/loaders/makefile.rb +54 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/multi_task.rb +14 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/options.rb +31 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/packagetask.rb +222 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/phony.rb +16 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/private_reader.rb +21 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/promise.rb +100 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/pseudo_status.rb +30 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_module.rb +67 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_test_loader.rb +27 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/scope.rb +43 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task.rb +434 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_argument_error.rb +8 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_arguments.rb +113 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_manager.rb +333 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/tasklib.rb +12 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/testtask.rb +192 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_history_display.rb +49 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_pool.rb +157 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/trace_output.rb +23 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/version.rb +10 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/win32.rb +17 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake.rb +69 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/rake.gemspec +102 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Gemfile +8 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/History.md +695 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/LICENSE.txt +20 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/README.md +476 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Rakefile +15 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/appveyor.yml +22 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/bin/rake-compiler +24 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/cucumber.yml +4 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/compile.feature +79 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-compile.feature +23 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package-multi.feature +15 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package.feature +14 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-compile.feature +22 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-no-native-compile.feature +33 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-package.feature +24 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/package.feature +40 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/compilation.rb +70 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/cross_compilation.rb +27 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/execution.rb +52 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/folders.rb +32 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/gem.rb +46 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/java_compilation.rb +7 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/env.rb +10 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/file_template_helpers.rb +137 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/generator_helpers.rb +123 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/platform_extension_helpers.rb +27 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/baseextensiontask.rb +90 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/compiler_config.rb +38 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensioncompiler.rb +51 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensiontask.rb +589 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/javaextensiontask.rb +321 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bin/cross-ruby.rake +189 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bootstrap.rake +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/common.rake +10 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/cucumber.rake +23 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/gem.rake +15 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/rspec.rake +9 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CHANGELOG.md +446 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CONTRIBUTING.md +109 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.jruby +79 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.mri.erb +282 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Gemfile +8 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/LICENSE.txt +22 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/README.md +447 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Rakefile +246 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/bin/rake-compiler-dock +18 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/buildkitd.toml +2 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/gem_helper.rb +54 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_i686.rb +18 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_musl_cross.sh +37 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_osxcross.sh +45 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_pkg_config.sh +24 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/parallel_docker_build.rb +169 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0004-Enable-build-of-static-libruby.patch +38 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0005-build-miniruby-first.patch +16 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0006-ruby-4-rubyspec-capiext.patch +16 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/rcd-env.sh +6 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/runas +7 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sigfw.c +45 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_codesign +17 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_vbox +30 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sudoers +1 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/colors.rb +43 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/docker_check.rb +356 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/predefined_user_group.rb +5 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/starter.rb +206 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/version.rb +4 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock.rb +151 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/Dockerfile +66 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/README.md +14 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/binutils-mingw-w64-ignore-check-errors.patch +13 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/gcc-mingw-w64-only-c-c++.patch +13 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/mingw-w64-enable-ucrt.patch +22 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/rake-compiler-dock.gemspec +34 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.alpine +17 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.debian +24 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/fixtures/mig_test_rpc.defs +8 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Gemfile +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Rakefile +97 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RcdTestExtService.java +19 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RubyRcdTest.java +16 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/extconf.rb +111 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.c +65 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.h +11 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/lib/rcd_test.rb +6 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/rcd_test.gemspec +28 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/test/test_basic.rb +49 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_environment_variables.rb +108 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_mig.rb +18 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_parallel_docker_build.rb +95 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_rubygems_plugins.rb +12 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_starter.rb +158 -0
- data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_versions.rb +82 -0
- data/vendor/bundle/ruby/3.3.0/specifications/minitest-5.27.0.gemspec +32 -0
- data/vendor/bundle/ruby/3.3.0/specifications/rake-13.4.2.gemspec +26 -0
- data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-1.3.1.gemspec +33 -0
- data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-dock-1.12.0.gemspec +28 -0
- metadata +584 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
use crate::exid::ExId;
|
|
2
|
+
use crate::patches::PatchLog;
|
|
3
|
+
use crate::ChangeHash;
|
|
4
|
+
use crate::{automerge::Automerge, AutomergeError, PatchLogMismatch};
|
|
5
|
+
|
|
6
|
+
use super::{CommitOptions, TransactionArgs, TransactionInner};
|
|
7
|
+
|
|
8
|
+
/// A transaction on a document.
|
|
9
|
+
/// Transactions group operations into a single change so that no other operations can happen
|
|
10
|
+
/// in-between.
|
|
11
|
+
///
|
|
12
|
+
/// Created from [`Automerge::transaction()`].
|
|
13
|
+
///
|
|
14
|
+
/// ## Drop
|
|
15
|
+
///
|
|
16
|
+
/// This transaction should be manually committed or rolled back. If not done manually then it will
|
|
17
|
+
/// be rolled back when it is dropped. This is to prevent the document being in an unsafe
|
|
18
|
+
/// intermediate state.
|
|
19
|
+
/// This is consistent with [`?`][std::ops::Try] error handling.
|
|
20
|
+
#[derive(Debug)]
|
|
21
|
+
pub struct Transaction<'a> {
|
|
22
|
+
// this is an option so that we can take it during commit and rollback to prevent it being
|
|
23
|
+
// rolled back during drop.
|
|
24
|
+
inner: Option<TransactionInner>,
|
|
25
|
+
patch_log: PatchLog,
|
|
26
|
+
doc: &'a mut Automerge,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
impl<'a> Transaction<'a> {
|
|
30
|
+
pub(crate) fn new(
|
|
31
|
+
doc: &'a mut Automerge,
|
|
32
|
+
args: TransactionArgs,
|
|
33
|
+
mut patch_log: PatchLog,
|
|
34
|
+
) -> Result<Self, PatchLogMismatch> {
|
|
35
|
+
patch_log
|
|
36
|
+
.migrate_actors(&doc.ops().actors)
|
|
37
|
+
.map_err(|_| PatchLogMismatch)?;
|
|
38
|
+
Ok(Self {
|
|
39
|
+
inner: Some(TransactionInner::new(args)),
|
|
40
|
+
doc,
|
|
41
|
+
patch_log,
|
|
42
|
+
})
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/// Get the hash of the change that contains the given opid.
|
|
46
|
+
///
|
|
47
|
+
/// Returns none if the opid:
|
|
48
|
+
/// - is the root object id
|
|
49
|
+
/// - does not exist in this document
|
|
50
|
+
/// - is for an operation in this transaction
|
|
51
|
+
pub fn hash_for_opid(&self, opid: &ExId) -> Option<ChangeHash> {
|
|
52
|
+
self.doc.hash_for_opid(opid)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
impl<'a> Transaction<'a> {
|
|
57
|
+
pub(crate) fn empty(
|
|
58
|
+
doc: &'a mut Automerge,
|
|
59
|
+
args: TransactionArgs,
|
|
60
|
+
opts: CommitOptions,
|
|
61
|
+
) -> ChangeHash {
|
|
62
|
+
TransactionInner::empty(doc, args, opts.message, opts.time)
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
impl Transaction<'_> {
|
|
67
|
+
/// Get the heads of the document before this transaction was started.
|
|
68
|
+
pub fn get_heads(&self) -> Vec<ChangeHash> {
|
|
69
|
+
self.doc.get_heads()
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/// Commit the operations performed in this transaction, returning the hashes corresponding to
|
|
73
|
+
/// the new heads.
|
|
74
|
+
pub fn commit(mut self) -> (Option<ChangeHash>, PatchLog) {
|
|
75
|
+
let tx = self.inner.take().unwrap();
|
|
76
|
+
let hash = tx.commit(self.doc, None, None);
|
|
77
|
+
// TODO - remove this clone
|
|
78
|
+
(hash, self.patch_log.clone())
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/// Commit the operations in this transaction with some options.
|
|
82
|
+
///
|
|
83
|
+
/// ```
|
|
84
|
+
/// # use automerge::transaction::CommitOptions;
|
|
85
|
+
/// # use automerge::transaction::Transactable;
|
|
86
|
+
/// # use automerge::ROOT;
|
|
87
|
+
/// # use automerge::Automerge;
|
|
88
|
+
/// # use automerge::ObjType;
|
|
89
|
+
/// # use std::time::SystemTime;
|
|
90
|
+
/// let mut doc = Automerge::new();
|
|
91
|
+
/// let mut tx = doc.transaction();
|
|
92
|
+
/// tx.put_object(ROOT, "todos", ObjType::List).unwrap();
|
|
93
|
+
/// let now = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap().as_secs() as
|
|
94
|
+
/// i64;
|
|
95
|
+
/// tx.commit_with(CommitOptions::default().with_message("Create todos list").with_time(now));
|
|
96
|
+
/// ```
|
|
97
|
+
pub fn commit_with(mut self, options: CommitOptions) -> (Option<ChangeHash>, PatchLog) {
|
|
98
|
+
let tx = self.inner.take().unwrap();
|
|
99
|
+
let hash = tx.commit(self.doc, options.message, options.time);
|
|
100
|
+
// TODO - remove this clone
|
|
101
|
+
(hash, self.patch_log.clone())
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/// Undo the operations added in this transaction, returning the number of cancelled
|
|
105
|
+
/// operations.
|
|
106
|
+
pub fn rollback(mut self) -> usize {
|
|
107
|
+
self.inner.take().unwrap().rollback(self.doc)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
fn do_tx<F, O>(&mut self, f: F) -> O
|
|
111
|
+
where
|
|
112
|
+
F: FnOnce(&mut TransactionInner, &mut Automerge, &mut PatchLog) -> O,
|
|
113
|
+
{
|
|
114
|
+
let tx = self.inner.as_mut().unwrap();
|
|
115
|
+
f(tx, self.doc, &mut self.patch_log)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
fn get_scope(&self, heads: Option<&[ChangeHash]>) -> Option<crate::types::Clock> {
|
|
119
|
+
if let Some(h) = heads {
|
|
120
|
+
Some(self.doc.clock_at(h))
|
|
121
|
+
} else {
|
|
122
|
+
self.inner.as_ref().and_then(|i| i.get_scope().clone())
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
pub(crate) fn batch_init_root_map(
|
|
127
|
+
&mut self,
|
|
128
|
+
value: &crate::hydrate::Map,
|
|
129
|
+
) -> Result<(), AutomergeError> {
|
|
130
|
+
self.do_tx(move |tx, doc, hist| tx.batch_init_root_map(doc, hist, value))
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
super::impl_read_doc_for_tx!(Transaction<'_>);
|
|
135
|
+
super::impl_transactable_for_tx!(Transaction<'_>);
|
|
136
|
+
|
|
137
|
+
impl Drop for Transaction<'_> {
|
|
138
|
+
/// If a transaction is not commited or rolled back manually then it can leave the document in
|
|
139
|
+
/// an intermediate state.
|
|
140
|
+
/// This defaults to rolling back the transaction to be compatible with [`?`][std::ops::Try]
|
|
141
|
+
/// error returning before reaching a call to [`Self::commit()`].
|
|
142
|
+
fn drop(&mut self) {
|
|
143
|
+
if let Some(txn) = self.inner.take() {
|
|
144
|
+
txn.rollback(self.doc);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
use crate::automerge::Automerge;
|
|
2
|
+
use crate::exid::ExId;
|
|
3
|
+
use crate::patches::PatchLog;
|
|
4
|
+
use crate::{ChangeHash, PatchLogMismatch};
|
|
5
|
+
|
|
6
|
+
use super::{CommitOptions, TransactionInner};
|
|
7
|
+
|
|
8
|
+
/// A transaction that **owns** the `Automerge` document.
|
|
9
|
+
///
|
|
10
|
+
/// Like [`super::Transaction`], this groups operations into a single change. The difference is
|
|
11
|
+
/// ownership: `Transaction<'a>` borrows `&'a mut Automerge`, while `OwnedTransaction` consumes
|
|
12
|
+
/// it, making the type `'static` and `Send`. This is useful when lifetimes cannot be tracked
|
|
13
|
+
/// across an API boundary (e.g. FFI, async runtimes, or storing a transaction in a struct that
|
|
14
|
+
/// must be `'static`).
|
|
15
|
+
///
|
|
16
|
+
/// Created via [`Automerge::into_transaction`](crate::Automerge::into_transaction).
|
|
17
|
+
#[derive(Debug)]
|
|
18
|
+
pub struct OwnedTransaction {
|
|
19
|
+
// This is always `Some` — it's `Option` only because the shared `impl_transactable_for_tx!`
|
|
20
|
+
// macro (also used by `Transaction<'a>`, which needs `Option` for its `Drop` impl) accesses
|
|
21
|
+
// `self.inner` directly and expects it to be an Option<TransactionInner>
|
|
22
|
+
inner: Option<TransactionInner>,
|
|
23
|
+
patch_log: PatchLog,
|
|
24
|
+
doc: Automerge,
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Compile-time assertion that OwnedTransaction is Send.
|
|
28
|
+
const _: () = {
|
|
29
|
+
fn _assert_send<T: Send>() {}
|
|
30
|
+
fn _assert_owned_tx() {
|
|
31
|
+
_assert_send::<OwnedTransaction>()
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
impl OwnedTransaction {
|
|
36
|
+
/// Create a new transaction, consuming the document.
|
|
37
|
+
pub(crate) fn new(
|
|
38
|
+
mut doc: Automerge,
|
|
39
|
+
patch_log: Option<PatchLog>,
|
|
40
|
+
heads: Option<&[ChangeHash]>,
|
|
41
|
+
) -> Result<Self, PatchLogMismatch> {
|
|
42
|
+
let args = doc.transaction_args(heads);
|
|
43
|
+
let mut patch_log = patch_log.unwrap_or_else(PatchLog::inactive);
|
|
44
|
+
patch_log
|
|
45
|
+
.migrate_actors(&doc.ops().actors)
|
|
46
|
+
.map_err(|_| PatchLogMismatch)?;
|
|
47
|
+
Ok(Self {
|
|
48
|
+
inner: Some(TransactionInner::new(args)),
|
|
49
|
+
patch_log,
|
|
50
|
+
doc,
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/// Get the hash of the change that contains the given opid.
|
|
55
|
+
///
|
|
56
|
+
/// Returns none if the opid:
|
|
57
|
+
/// - is the root object id
|
|
58
|
+
/// - does not exist in this document
|
|
59
|
+
/// - is for an operation in this transaction
|
|
60
|
+
pub fn hash_for_opid(&self, opid: &ExId) -> Option<ChangeHash> {
|
|
61
|
+
self.doc.hash_for_opid(opid)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/// Get the heads of the document before this transaction was started.
|
|
65
|
+
pub fn get_heads(&self) -> Vec<ChangeHash> {
|
|
66
|
+
self.doc.get_heads()
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/// Commit the transaction, returning the document, commit hash, and patch log.
|
|
70
|
+
///
|
|
71
|
+
/// Unlike [`super::Transaction::commit`], no `PatchLog` clone is needed — it is moved out.
|
|
72
|
+
pub fn commit(mut self) -> (Automerge, Option<ChangeHash>, PatchLog) {
|
|
73
|
+
let tx = self.inner.take().unwrap();
|
|
74
|
+
let hash = tx.commit(&mut self.doc, None, None);
|
|
75
|
+
(self.doc, hash, self.patch_log)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/// Commit with options.
|
|
79
|
+
pub fn commit_with(
|
|
80
|
+
mut self,
|
|
81
|
+
options: CommitOptions,
|
|
82
|
+
) -> (Automerge, Option<ChangeHash>, PatchLog) {
|
|
83
|
+
let tx = self.inner.take().unwrap();
|
|
84
|
+
let hash = tx.commit(&mut self.doc, options.message, options.time);
|
|
85
|
+
(self.doc, hash, self.patch_log)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/// Rollback the transaction, returning the document and number of cancelled ops.
|
|
89
|
+
pub fn rollback(mut self) -> (Automerge, usize) {
|
|
90
|
+
let cancelled = self.inner.take().unwrap().rollback(&mut self.doc);
|
|
91
|
+
(self.doc, cancelled)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
fn do_tx<F, O>(&mut self, f: F) -> O
|
|
95
|
+
where
|
|
96
|
+
F: FnOnce(&mut TransactionInner, &mut Automerge, &mut PatchLog) -> O,
|
|
97
|
+
{
|
|
98
|
+
let tx = self.inner.as_mut().unwrap();
|
|
99
|
+
f(tx, &mut self.doc, &mut self.patch_log)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
fn get_scope(&self, heads: Option<&[ChangeHash]>) -> Option<crate::types::Clock> {
|
|
103
|
+
if let Some(h) = heads {
|
|
104
|
+
Some(self.doc.clock_at(h))
|
|
105
|
+
} else {
|
|
106
|
+
self.inner.as_ref().and_then(|i| i.get_scope().clone())
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
super::impl_read_doc_for_tx!(OwnedTransaction);
|
|
112
|
+
super::impl_transactable_for_tx!(OwnedTransaction);
|
|
113
|
+
|
|
114
|
+
#[cfg(test)]
|
|
115
|
+
mod tests {
|
|
116
|
+
use crate::transaction::{CommitOptions, Transactable};
|
|
117
|
+
use crate::{Automerge, ObjType, PatchLog, ReadDoc, ROOT};
|
|
118
|
+
|
|
119
|
+
#[test]
|
|
120
|
+
fn put_and_get_roundtrip() {
|
|
121
|
+
let doc = Automerge::new();
|
|
122
|
+
let mut tx = doc.into_transaction(None, None).unwrap();
|
|
123
|
+
tx.put(ROOT, "key", "value").unwrap();
|
|
124
|
+
let (doc, hash, _) = tx.commit();
|
|
125
|
+
assert!(hash.is_some());
|
|
126
|
+
assert_eq!(
|
|
127
|
+
doc.get(ROOT, "key").unwrap().unwrap().0.to_str().unwrap(),
|
|
128
|
+
"value"
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
#[test]
|
|
133
|
+
fn read_during_transaction() {
|
|
134
|
+
let doc = Automerge::new();
|
|
135
|
+
let mut tx = doc.into_transaction(None, None).unwrap();
|
|
136
|
+
tx.put(ROOT, "a", "1").unwrap();
|
|
137
|
+
// ReadDoc works on the transaction itself
|
|
138
|
+
let (val, _) = tx.get(ROOT, "a").unwrap().unwrap();
|
|
139
|
+
assert_eq!(val.to_str().unwrap(), "1");
|
|
140
|
+
tx.commit();
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
#[test]
|
|
144
|
+
fn nested_objects() {
|
|
145
|
+
let doc = Automerge::new();
|
|
146
|
+
let mut tx = doc.into_transaction(None, None).unwrap();
|
|
147
|
+
let list = tx.put_object(ROOT, "items", ObjType::List).unwrap();
|
|
148
|
+
tx.insert(&list, 0, "first").unwrap();
|
|
149
|
+
tx.insert(&list, 1, "second").unwrap();
|
|
150
|
+
let (doc, hash, _) = tx.commit();
|
|
151
|
+
assert!(hash.is_some());
|
|
152
|
+
assert_eq!(doc.length(list), 2);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
#[test]
|
|
156
|
+
fn commit_with_options() {
|
|
157
|
+
let doc = Automerge::new();
|
|
158
|
+
let mut tx = doc.into_transaction(None, None).unwrap();
|
|
159
|
+
tx.put(ROOT, "x", 42).unwrap();
|
|
160
|
+
let (doc, hash, _) = tx.commit_with(CommitOptions::default().with_message("test commit"));
|
|
161
|
+
assert!(hash.is_some());
|
|
162
|
+
let change = doc.get_change_by_hash(&hash.unwrap()).unwrap();
|
|
163
|
+
assert_eq!(change.message().map(|s| s.as_str()), Some("test commit"));
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
#[test]
|
|
167
|
+
fn rollback_discards_ops() {
|
|
168
|
+
let mut doc = Automerge::new();
|
|
169
|
+
{
|
|
170
|
+
let mut tx = doc.transaction();
|
|
171
|
+
tx.put(ROOT, "keep", "yes").unwrap();
|
|
172
|
+
tx.commit();
|
|
173
|
+
}
|
|
174
|
+
let doc = doc.into_transaction(None, None).unwrap();
|
|
175
|
+
// Haven't written anything, just rollback
|
|
176
|
+
let (doc, cancelled) = doc.rollback();
|
|
177
|
+
assert_eq!(cancelled, 0);
|
|
178
|
+
assert_eq!(
|
|
179
|
+
doc.get(ROOT, "keep").unwrap().unwrap().0.to_str().unwrap(),
|
|
180
|
+
"yes"
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
#[test]
|
|
185
|
+
fn rollback_undoes_writes() {
|
|
186
|
+
let doc = Automerge::new();
|
|
187
|
+
let mut tx = doc.into_transaction(None, None).unwrap();
|
|
188
|
+
tx.put(ROOT, "gone", "soon").unwrap();
|
|
189
|
+
let (doc, cancelled) = tx.rollback();
|
|
190
|
+
assert_eq!(cancelled, 1);
|
|
191
|
+
assert!(doc.get(ROOT, "gone").unwrap().is_none());
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
#[test]
|
|
195
|
+
fn owned_transaction_at() {
|
|
196
|
+
let mut doc = Automerge::new();
|
|
197
|
+
|
|
198
|
+
// Make a first change
|
|
199
|
+
let mut tx = doc.transaction();
|
|
200
|
+
tx.put(ROOT, "v", 1).unwrap();
|
|
201
|
+
tx.commit();
|
|
202
|
+
let heads_v1 = doc.get_heads();
|
|
203
|
+
|
|
204
|
+
// Make a second change
|
|
205
|
+
let mut tx = doc.transaction();
|
|
206
|
+
tx.put(ROOT, "v", 2).unwrap();
|
|
207
|
+
tx.commit();
|
|
208
|
+
|
|
209
|
+
// Start an owned transaction isolated at v1 heads
|
|
210
|
+
let mut tx = doc.into_transaction(None, Some(&heads_v1)).unwrap();
|
|
211
|
+
// Should see v=1, not v=2
|
|
212
|
+
let (val, _) = tx.get(ROOT, "v").unwrap().unwrap();
|
|
213
|
+
assert_eq!(val.to_i64().unwrap(), 1);
|
|
214
|
+
|
|
215
|
+
tx.put(ROOT, "from_v1", true).unwrap();
|
|
216
|
+
let (doc, hash, _) = tx.commit();
|
|
217
|
+
assert!(hash.is_some());
|
|
218
|
+
assert!(doc.get(ROOT, "from_v1").unwrap().is_some());
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
#[test]
|
|
222
|
+
fn log_patches() {
|
|
223
|
+
let doc = Automerge::new();
|
|
224
|
+
let mut tx = doc
|
|
225
|
+
.into_transaction(Some(PatchLog::active()), None)
|
|
226
|
+
.unwrap();
|
|
227
|
+
tx.put(ROOT, "patched", "yes").unwrap();
|
|
228
|
+
let (doc, _, mut patch_log) = tx.commit();
|
|
229
|
+
let patches = doc.make_patches(&mut patch_log);
|
|
230
|
+
// We should have at least one patch from the put
|
|
231
|
+
assert!(!patches.is_empty());
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
#[test]
|
|
235
|
+
fn get_heads_returns_pre_tx_heads() {
|
|
236
|
+
let mut doc = Automerge::new();
|
|
237
|
+
let mut tx = doc.transaction();
|
|
238
|
+
tx.put(ROOT, "a", 1).unwrap();
|
|
239
|
+
tx.commit();
|
|
240
|
+
let heads = doc.get_heads();
|
|
241
|
+
|
|
242
|
+
let tx = doc.into_transaction(None, None).unwrap();
|
|
243
|
+
assert_eq!(tx.get_heads(), heads);
|
|
244
|
+
tx.commit();
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
#[test]
|
|
248
|
+
fn pending_ops() {
|
|
249
|
+
let doc = Automerge::new();
|
|
250
|
+
let mut tx = doc.into_transaction(None, None).unwrap();
|
|
251
|
+
assert_eq!(tx.pending_ops(), 0);
|
|
252
|
+
tx.put(ROOT, "a", 1).unwrap();
|
|
253
|
+
assert_eq!(tx.pending_ops(), 1);
|
|
254
|
+
tx.put(ROOT, "b", 2).unwrap();
|
|
255
|
+
assert_eq!(tx.pending_ops(), 2);
|
|
256
|
+
tx.commit();
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
#[test]
|
|
260
|
+
fn empty_commit_returns_none_hash() {
|
|
261
|
+
let doc = Automerge::new();
|
|
262
|
+
let tx = doc.into_transaction(None, None).unwrap();
|
|
263
|
+
let (_, hash, _) = tx.commit();
|
|
264
|
+
assert!(hash.is_none());
|
|
265
|
+
}
|
|
266
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
use crate::patches::PatchLog;
|
|
2
|
+
use crate::ChangeHash;
|
|
3
|
+
|
|
4
|
+
/// The result of a successful, and committed, transaction.
|
|
5
|
+
#[derive(Debug)]
|
|
6
|
+
pub struct Success<O> {
|
|
7
|
+
/// The result of the transaction.
|
|
8
|
+
pub result: O,
|
|
9
|
+
/// The hash of the change, will be `None` if the transaction did not create any operations
|
|
10
|
+
pub hash: Option<ChangeHash>,
|
|
11
|
+
pub patch_log: PatchLog,
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/// The result of a failed, and rolled back, transaction.
|
|
15
|
+
#[derive(Debug)]
|
|
16
|
+
pub struct Failure<E> {
|
|
17
|
+
/// The error returned from the transaction.
|
|
18
|
+
pub error: E,
|
|
19
|
+
/// The number of operations cancelled.
|
|
20
|
+
pub cancelled: usize,
|
|
21
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
use std::borrow::Cow;
|
|
2
|
+
|
|
3
|
+
use crate::exid::ExId;
|
|
4
|
+
use crate::iter::Span;
|
|
5
|
+
use crate::marks::{ExpandMark, Mark, UpdateSpansConfig};
|
|
6
|
+
use crate::{AutomergeError, ChangeHash, ObjType, Prop, ReadDoc, ScalarValue};
|
|
7
|
+
|
|
8
|
+
/// A way of mutating a document within a single change.
|
|
9
|
+
pub trait Transactable: ReadDoc {
|
|
10
|
+
/// Get the number of pending operations in this transaction.
|
|
11
|
+
fn pending_ops(&self) -> usize;
|
|
12
|
+
|
|
13
|
+
/// Set the value of property `P` to value `V` in object `obj`.
|
|
14
|
+
///
|
|
15
|
+
/// # Errors
|
|
16
|
+
///
|
|
17
|
+
/// This will return an error if
|
|
18
|
+
/// - The object does not exist
|
|
19
|
+
/// - The key is the wrong type for the object
|
|
20
|
+
/// - The key does not exist in the object
|
|
21
|
+
fn put<O: AsRef<ExId>, P: Into<Prop>, V: Into<ScalarValue>>(
|
|
22
|
+
&mut self,
|
|
23
|
+
obj: O,
|
|
24
|
+
prop: P,
|
|
25
|
+
value: V,
|
|
26
|
+
) -> Result<(), AutomergeError>;
|
|
27
|
+
|
|
28
|
+
/// Set the value of property `P` to the new object `V` in object `obj`.
|
|
29
|
+
///
|
|
30
|
+
/// # Returns
|
|
31
|
+
///
|
|
32
|
+
/// The id of the object which was created.
|
|
33
|
+
///
|
|
34
|
+
/// # Errors
|
|
35
|
+
///
|
|
36
|
+
/// This will return an error if
|
|
37
|
+
/// - The object does not exist
|
|
38
|
+
/// - The key is the wrong type for the object
|
|
39
|
+
/// - The key does not exist in the object
|
|
40
|
+
fn put_object<O: AsRef<ExId>, P: Into<Prop>>(
|
|
41
|
+
&mut self,
|
|
42
|
+
obj: O,
|
|
43
|
+
prop: P,
|
|
44
|
+
object: ObjType,
|
|
45
|
+
) -> Result<ExId, AutomergeError>;
|
|
46
|
+
|
|
47
|
+
/// Insert a value into a list at the given index.
|
|
48
|
+
fn insert<O: AsRef<ExId>, V: Into<ScalarValue>>(
|
|
49
|
+
&mut self,
|
|
50
|
+
obj: O,
|
|
51
|
+
index: usize,
|
|
52
|
+
value: V,
|
|
53
|
+
) -> Result<(), AutomergeError>;
|
|
54
|
+
|
|
55
|
+
/// Insert an object into a list at the given index.
|
|
56
|
+
fn insert_object<O: AsRef<ExId>>(
|
|
57
|
+
&mut self,
|
|
58
|
+
obj: O,
|
|
59
|
+
index: usize,
|
|
60
|
+
object: ObjType,
|
|
61
|
+
) -> Result<ExId, AutomergeError>;
|
|
62
|
+
|
|
63
|
+
/// Increment the counter at the prop in the object by `value`.
|
|
64
|
+
fn increment<O: AsRef<ExId>, P: Into<Prop>>(
|
|
65
|
+
&mut self,
|
|
66
|
+
obj: O,
|
|
67
|
+
prop: P,
|
|
68
|
+
value: i64,
|
|
69
|
+
) -> Result<(), AutomergeError>;
|
|
70
|
+
|
|
71
|
+
/// Delete the value at prop in the object.
|
|
72
|
+
fn delete<O: AsRef<ExId>, P: Into<Prop>>(
|
|
73
|
+
&mut self,
|
|
74
|
+
obj: O,
|
|
75
|
+
prop: P,
|
|
76
|
+
) -> Result<(), AutomergeError>;
|
|
77
|
+
|
|
78
|
+
/// replace a section of a list. If `del` is positive then N values
|
|
79
|
+
/// are deleted after position `pos` and the new values inserted. If
|
|
80
|
+
/// it is negative then N values are deleted before position `pos` instead.
|
|
81
|
+
///
|
|
82
|
+
/// Values can be scalars or nested objects (maps, lists, text). Scalar
|
|
83
|
+
/// values are inserted directly, while nested objects are created using
|
|
84
|
+
/// batch insertion for efficiency.
|
|
85
|
+
fn splice<O: AsRef<ExId>, V: Into<crate::hydrate::Value>, I: IntoIterator<Item = V>>(
|
|
86
|
+
&mut self,
|
|
87
|
+
obj: O,
|
|
88
|
+
pos: usize,
|
|
89
|
+
del: isize,
|
|
90
|
+
vals: I,
|
|
91
|
+
) -> Result<(), AutomergeError>;
|
|
92
|
+
|
|
93
|
+
/// Like [`Self::splice`] but for text.
|
|
94
|
+
fn splice_text<O: AsRef<ExId>>(
|
|
95
|
+
&mut self,
|
|
96
|
+
obj: O,
|
|
97
|
+
pos: usize,
|
|
98
|
+
del: isize,
|
|
99
|
+
text: &str,
|
|
100
|
+
) -> Result<(), AutomergeError>;
|
|
101
|
+
|
|
102
|
+
/// Mark a sequence
|
|
103
|
+
fn mark<O: AsRef<ExId>>(
|
|
104
|
+
&mut self,
|
|
105
|
+
obj: O,
|
|
106
|
+
mark: Mark,
|
|
107
|
+
expand: ExpandMark,
|
|
108
|
+
) -> Result<(), AutomergeError>;
|
|
109
|
+
|
|
110
|
+
/// Remove a Mark from a sequence
|
|
111
|
+
fn unmark<O: AsRef<ExId>>(
|
|
112
|
+
&mut self,
|
|
113
|
+
obj: O,
|
|
114
|
+
key: &str,
|
|
115
|
+
start: usize,
|
|
116
|
+
end: usize,
|
|
117
|
+
expand: ExpandMark,
|
|
118
|
+
) -> Result<(), AutomergeError>;
|
|
119
|
+
|
|
120
|
+
/// Insert a block marker into the text object `obj` at the given index.
|
|
121
|
+
///
|
|
122
|
+
/// # Returns
|
|
123
|
+
///
|
|
124
|
+
/// The ID of the new block marker. The block marker is a plain old map so you can use all the
|
|
125
|
+
/// normal methods of modifying a map to interact with it.
|
|
126
|
+
fn split_block<O>(&mut self, obj: O, index: usize) -> Result<ExId, AutomergeError>
|
|
127
|
+
where
|
|
128
|
+
O: AsRef<ExId>;
|
|
129
|
+
|
|
130
|
+
/// Delete a block marker at `index` from the text object `obj`.
|
|
131
|
+
fn join_block<O: AsRef<ExId>>(&mut self, text: O, index: usize) -> Result<(), AutomergeError>;
|
|
132
|
+
|
|
133
|
+
/// Replace a block marker at `index` in `obj` with a new marker and return the ID of the new
|
|
134
|
+
/// marker
|
|
135
|
+
fn replace_block<O>(&mut self, text: O, index: usize) -> Result<ExId, AutomergeError>
|
|
136
|
+
where
|
|
137
|
+
O: AsRef<ExId>;
|
|
138
|
+
|
|
139
|
+
/// Update the blocks and text in a text object
|
|
140
|
+
///
|
|
141
|
+
/// This performs a diff against the current state of both the text and the block markers in a
|
|
142
|
+
/// text object and attempts to perform a reasonably minimal set of operations to update the
|
|
143
|
+
/// document to match the new text.
|
|
144
|
+
///
|
|
145
|
+
/// The `config` argument is an [`UpdateSpansConfig`] object which is used to configure how the
|
|
146
|
+
/// [`ExpandMark`] flag will be set for spans which are created as part of the reconciliation
|
|
147
|
+
fn update_spans<O: AsRef<ExId>, I: IntoIterator<Item = Span>>(
|
|
148
|
+
&mut self,
|
|
149
|
+
text: O,
|
|
150
|
+
config: UpdateSpansConfig,
|
|
151
|
+
new_text: I,
|
|
152
|
+
) -> Result<(), AutomergeError>;
|
|
153
|
+
|
|
154
|
+
/// The heads this transaction will be based on
|
|
155
|
+
fn base_heads(&self) -> Vec<ChangeHash>;
|
|
156
|
+
|
|
157
|
+
/// Update the value of a string
|
|
158
|
+
///
|
|
159
|
+
/// This will calculate a diff between the current value and the new value and
|
|
160
|
+
/// then convert that diff into calls to {@link splice}. This will produce results
|
|
161
|
+
/// which don't merge as well as directly capturing the user input actions, but
|
|
162
|
+
/// sometimes it's not possible to capture user input and this is the best you
|
|
163
|
+
/// can do.
|
|
164
|
+
fn update_text<S: AsRef<str>>(&mut self, obj: &ExId, new_text: S)
|
|
165
|
+
-> Result<(), AutomergeError>;
|
|
166
|
+
|
|
167
|
+
fn update_object<O: AsRef<ExId>>(
|
|
168
|
+
&mut self,
|
|
169
|
+
obj: O,
|
|
170
|
+
new_value: &crate::hydrate::Value,
|
|
171
|
+
) -> Result<(), crate::error::UpdateObjectError>;
|
|
172
|
+
|
|
173
|
+
/// Put or insert a nested `hydrate::Value` as a new object tree using
|
|
174
|
+
/// batch operations.
|
|
175
|
+
///
|
|
176
|
+
/// This is much faster than decomposing the value into individual put/insert
|
|
177
|
+
/// operations because it only requires two OpSet splices instead of one per
|
|
178
|
+
/// node.
|
|
179
|
+
///
|
|
180
|
+
/// When `insert` is true and `prop` is a sequence index, the value is
|
|
181
|
+
/// inserted at that index. When false, it overwrites the existing element.
|
|
182
|
+
/// For map keys, `insert` is ignored.
|
|
183
|
+
fn batch_create_object<O: AsRef<ExId>, P: Into<Prop>>(
|
|
184
|
+
&mut self,
|
|
185
|
+
obj: O,
|
|
186
|
+
prop: P,
|
|
187
|
+
value: &crate::hydrate::Value,
|
|
188
|
+
insert: bool,
|
|
189
|
+
) -> Result<ExId, AutomergeError>;
|
|
190
|
+
|
|
191
|
+
/// Overwrite the keys of the root object with the values from `value`
|
|
192
|
+
///
|
|
193
|
+
/// This is useful to initialize an empty document with a large initial
|
|
194
|
+
/// value. Note that existing keys which are not in `value` are left as is
|
|
195
|
+
fn init_root_from_hydrate(&mut self, value: &crate::hydrate::Map)
|
|
196
|
+
-> Result<(), AutomergeError>;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
#[derive(Debug, PartialEq, Clone)]
|
|
200
|
+
pub enum BlockOrText<'a> {
|
|
201
|
+
Block(crate::hydrate::Map),
|
|
202
|
+
Text(Cow<'a, str>),
|
|
203
|
+
}
|