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,146 @@
|
|
|
1
|
+
use automerge as am;
|
|
2
|
+
use std::cell::RefCell;
|
|
3
|
+
use std::collections::BTreeMap;
|
|
4
|
+
|
|
5
|
+
use crate::change::AMchange;
|
|
6
|
+
use crate::result::{to_result, AMresult};
|
|
7
|
+
use crate::sync::have::AMsyncHave;
|
|
8
|
+
|
|
9
|
+
macro_rules! to_sync_message {
|
|
10
|
+
($handle:expr) => {{
|
|
11
|
+
let handle = $handle.as_ref();
|
|
12
|
+
match handle {
|
|
13
|
+
Some(b) => b,
|
|
14
|
+
None => return AMresult::error("Invalid `AMsyncMessage*`").into(),
|
|
15
|
+
}
|
|
16
|
+
}};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
pub(crate) use to_sync_message;
|
|
20
|
+
|
|
21
|
+
/// \struct AMsyncMessage
|
|
22
|
+
/// \installed_headerfile
|
|
23
|
+
/// \brief A synchronization message for a peer.
|
|
24
|
+
#[derive(PartialEq)]
|
|
25
|
+
pub struct AMsyncMessage {
|
|
26
|
+
body: am::sync::Message,
|
|
27
|
+
changes_storage: RefCell<BTreeMap<usize, AMchange>>,
|
|
28
|
+
haves_storage: RefCell<BTreeMap<usize, AMsyncHave>>,
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
impl AMsyncMessage {
|
|
32
|
+
pub fn new(message: am::sync::Message) -> Self {
|
|
33
|
+
Self {
|
|
34
|
+
body: message,
|
|
35
|
+
changes_storage: RefCell::new(BTreeMap::new()),
|
|
36
|
+
haves_storage: RefCell::new(BTreeMap::new()),
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
impl AsRef<am::sync::Message> for AMsyncMessage {
|
|
42
|
+
fn as_ref(&self) -> &am::sync::Message {
|
|
43
|
+
&self.body
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/// \memberof AMsyncMessage
|
|
48
|
+
/// \brief Decodes an array of bytes into a synchronization message.
|
|
49
|
+
///
|
|
50
|
+
/// \param[in] src A pointer to an array of bytes.
|
|
51
|
+
/// \param[in] count The count of bytes to decode from the array pointed to by
|
|
52
|
+
/// \p src.
|
|
53
|
+
/// \return A pointer to an `AMresult` struct with `AM_VAL_TYPE_SYNC_MESSAGE` item.
|
|
54
|
+
/// \pre \p src `!= NULL`
|
|
55
|
+
/// \pre `sizeof(`\p src `) > 0`
|
|
56
|
+
/// \pre \p count `<= sizeof(`\p src `)`
|
|
57
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
58
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
59
|
+
/// \internal
|
|
60
|
+
///
|
|
61
|
+
/// # Safety
|
|
62
|
+
/// src must be a byte array of length `>= count`
|
|
63
|
+
#[no_mangle]
|
|
64
|
+
pub unsafe extern "C" fn AMsyncMessageDecode(src: *const u8, count: usize) -> *mut AMresult {
|
|
65
|
+
let data = std::slice::from_raw_parts(src, count);
|
|
66
|
+
to_result(am::sync::Message::decode(data))
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/// \memberof AMsyncMessage
|
|
70
|
+
/// \brief Encodes a synchronization message as an array of bytes.
|
|
71
|
+
///
|
|
72
|
+
/// \param[in] sync_message A pointer to an `AMsyncMessage` struct.
|
|
73
|
+
/// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_BYTES` item.
|
|
74
|
+
/// \pre \p sync_message `!= NULL`
|
|
75
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
76
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
77
|
+
/// \internal
|
|
78
|
+
///
|
|
79
|
+
/// # Safety
|
|
80
|
+
/// sync_message must be a valid pointer to an AMsyncMessage
|
|
81
|
+
#[no_mangle]
|
|
82
|
+
pub unsafe extern "C" fn AMsyncMessageEncode(sync_message: *const AMsyncMessage) -> *mut AMresult {
|
|
83
|
+
let sync_message = to_sync_message!(sync_message);
|
|
84
|
+
to_result(sync_message.as_ref().clone().encode())
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/// \memberof AMsyncMessage
|
|
88
|
+
/// \brief Gets a summary of the changes that the sender already has.
|
|
89
|
+
///
|
|
90
|
+
/// \param[in] sync_message A pointer to an `AMsyncMessage` struct.
|
|
91
|
+
/// \return A pointer to an `AMresult` struct with `AM_SYNC_HAVE` items.
|
|
92
|
+
/// \pre \p sync_message `!= NULL`
|
|
93
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
94
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
95
|
+
/// \internal
|
|
96
|
+
///
|
|
97
|
+
/// # Safety
|
|
98
|
+
/// sync_message must be a valid pointer to an AMsyncMessage
|
|
99
|
+
#[no_mangle]
|
|
100
|
+
pub unsafe extern "C" fn AMsyncMessageHaves(sync_message: *const AMsyncMessage) -> *mut AMresult {
|
|
101
|
+
to_result(match sync_message.as_ref() {
|
|
102
|
+
Some(sync_message) => sync_message.as_ref().have.as_slice(),
|
|
103
|
+
None => Default::default(),
|
|
104
|
+
})
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/// \memberof AMsyncMessage
|
|
108
|
+
/// \brief Gets the heads of the sender.
|
|
109
|
+
///
|
|
110
|
+
/// \param[in] sync_message A pointer to an `AMsyncMessage` struct.
|
|
111
|
+
/// \return A pointer to an `AMresult` struct with `AM_VAL_TYPE_CHANGE_HASH` items.
|
|
112
|
+
/// \pre \p sync_message `!= NULL`
|
|
113
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
114
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
115
|
+
/// \internal
|
|
116
|
+
///
|
|
117
|
+
/// # Safety
|
|
118
|
+
/// sync_message must be a valid pointer to an AMsyncMessage
|
|
119
|
+
#[no_mangle]
|
|
120
|
+
pub unsafe extern "C" fn AMsyncMessageHeads(sync_message: *const AMsyncMessage) -> *mut AMresult {
|
|
121
|
+
to_result(match sync_message.as_ref() {
|
|
122
|
+
Some(sync_message) => sync_message.as_ref().heads.as_slice(),
|
|
123
|
+
None => Default::default(),
|
|
124
|
+
})
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/// \memberof AMsyncMessage
|
|
128
|
+
/// \brief Gets the hashes of any changes that are being explicitly requested
|
|
129
|
+
/// by the recipient.
|
|
130
|
+
///
|
|
131
|
+
/// \param[in] sync_message A pointer to an `AMsyncMessage` struct.
|
|
132
|
+
/// \return A pointer to an `AMresult` struct with `AM_VAL_TYPE_CHANGE_HASH` items.
|
|
133
|
+
/// \pre \p sync_message `!= NULL`
|
|
134
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
135
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
136
|
+
/// \internal
|
|
137
|
+
///
|
|
138
|
+
/// # Safety
|
|
139
|
+
/// sync_message must be a valid pointer to an AMsyncMessage
|
|
140
|
+
#[no_mangle]
|
|
141
|
+
pub unsafe extern "C" fn AMsyncMessageNeeds(sync_message: *const AMsyncMessage) -> *mut AMresult {
|
|
142
|
+
to_result(match sync_message.as_ref() {
|
|
143
|
+
Some(sync_message) => sync_message.as_ref().need.as_slice(),
|
|
144
|
+
None => Default::default(),
|
|
145
|
+
})
|
|
146
|
+
}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
use automerge as am;
|
|
2
|
+
use std::cell::RefCell;
|
|
3
|
+
use std::collections::BTreeMap;
|
|
4
|
+
|
|
5
|
+
use crate::result::{to_result, AMresult};
|
|
6
|
+
use crate::sync::have::AMsyncHave;
|
|
7
|
+
|
|
8
|
+
macro_rules! to_sync_state {
|
|
9
|
+
($handle:expr) => {{
|
|
10
|
+
let handle = $handle.as_ref();
|
|
11
|
+
match handle {
|
|
12
|
+
Some(b) => b,
|
|
13
|
+
None => return AMresult::error("Invalid `AMsyncState*`").into(),
|
|
14
|
+
}
|
|
15
|
+
}};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
pub(crate) use to_sync_state;
|
|
19
|
+
|
|
20
|
+
/// \struct AMsyncState
|
|
21
|
+
/// \installed_headerfile
|
|
22
|
+
/// \brief The state of synchronization with a peer.
|
|
23
|
+
#[derive(Eq, PartialEq)]
|
|
24
|
+
pub struct AMsyncState {
|
|
25
|
+
body: am::sync::State,
|
|
26
|
+
their_haves_storage: RefCell<BTreeMap<usize, AMsyncHave>>,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
impl AMsyncState {
|
|
30
|
+
pub fn new(state: am::sync::State) -> Self {
|
|
31
|
+
Self {
|
|
32
|
+
body: state,
|
|
33
|
+
their_haves_storage: RefCell::new(BTreeMap::new()),
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
impl AsMut<am::sync::State> for AMsyncState {
|
|
39
|
+
fn as_mut(&mut self) -> &mut am::sync::State {
|
|
40
|
+
&mut self.body
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
impl AsRef<am::sync::State> for AMsyncState {
|
|
45
|
+
fn as_ref(&self) -> &am::sync::State {
|
|
46
|
+
&self.body
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
impl From<AMsyncState> for *mut AMsyncState {
|
|
51
|
+
fn from(b: AMsyncState) -> Self {
|
|
52
|
+
Box::into_raw(Box::new(b))
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/// \memberof AMsyncState
|
|
57
|
+
/// \brief Decodes an array of bytes into a synchronization state.
|
|
58
|
+
///
|
|
59
|
+
/// \param[in] src A pointer to an array of bytes.
|
|
60
|
+
/// \param[in] count The count of bytes to decode from the array pointed to by
|
|
61
|
+
/// \p src.
|
|
62
|
+
/// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_SYNC_STATE` item.
|
|
63
|
+
/// \pre \p src `!= NULL`
|
|
64
|
+
/// \pre `sizeof(`\p src `) > 0`
|
|
65
|
+
/// \pre \p count `<= sizeof(`\p src `)`
|
|
66
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
67
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
68
|
+
/// \internal
|
|
69
|
+
///
|
|
70
|
+
/// # Safety
|
|
71
|
+
/// src must be a byte array of length `>= count`
|
|
72
|
+
#[no_mangle]
|
|
73
|
+
pub unsafe extern "C" fn AMsyncStateDecode(src: *const u8, count: usize) -> *mut AMresult {
|
|
74
|
+
let data = std::slice::from_raw_parts(src, count);
|
|
75
|
+
to_result(am::sync::State::decode(data))
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/// \memberof AMsyncState
|
|
79
|
+
/// \brief Encodes a synchronization state as an array of bytes.
|
|
80
|
+
///
|
|
81
|
+
/// \param[in] sync_state A pointer to an `AMsyncState` struct.
|
|
82
|
+
/// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_BYTE_SPAN` item.
|
|
83
|
+
/// \pre \p sync_state `!= NULL`
|
|
84
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
85
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
86
|
+
/// \internal
|
|
87
|
+
///
|
|
88
|
+
/// # Safety
|
|
89
|
+
/// sync_state must be a valid pointer to an AMsyncState
|
|
90
|
+
#[no_mangle]
|
|
91
|
+
pub unsafe extern "C" fn AMsyncStateEncode(sync_state: *const AMsyncState) -> *mut AMresult {
|
|
92
|
+
let sync_state = to_sync_state!(sync_state);
|
|
93
|
+
to_result(sync_state.as_ref().encode())
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/// \memberof AMsyncState
|
|
97
|
+
/// \brief Tests the equality of two synchronization states.
|
|
98
|
+
///
|
|
99
|
+
/// \param[in] sync_state1 A pointer to an `AMsyncState` struct.
|
|
100
|
+
/// \param[in] sync_state2 A pointer to an `AMsyncState` struct.
|
|
101
|
+
/// \return `true` if \p sync_state1 `==` \p sync_state2 and `false` otherwise.
|
|
102
|
+
/// \pre \p sync_state1 `!= NULL`
|
|
103
|
+
/// \pre \p sync_state2 `!= NULL`
|
|
104
|
+
/// \post `!(`\p sync_state1 `&&` \p sync_state2 `) -> false`
|
|
105
|
+
/// \internal
|
|
106
|
+
///
|
|
107
|
+
/// #Safety
|
|
108
|
+
/// sync_state1 must be a valid pointer to an AMsyncState
|
|
109
|
+
/// sync_state2 must be a valid pointer to an AMsyncState
|
|
110
|
+
#[no_mangle]
|
|
111
|
+
pub unsafe extern "C" fn AMsyncStateEqual(
|
|
112
|
+
sync_state1: *const AMsyncState,
|
|
113
|
+
sync_state2: *const AMsyncState,
|
|
114
|
+
) -> bool {
|
|
115
|
+
match (sync_state1.as_ref(), sync_state2.as_ref()) {
|
|
116
|
+
(Some(sync_state1), Some(sync_state2)) => sync_state1.as_ref() == sync_state2.as_ref(),
|
|
117
|
+
(None, None) | (None, Some(_)) | (Some(_), None) => false,
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/// \memberof AMsyncState
|
|
122
|
+
/// \brief Allocates a new synchronization state and initializes it from
|
|
123
|
+
/// default values.
|
|
124
|
+
///
|
|
125
|
+
/// \return A pointer to an `AMresult` struct with an `AM_VAL_TYPE_SYNC_STATE` item.
|
|
126
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
127
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
128
|
+
#[no_mangle]
|
|
129
|
+
pub extern "C" fn AMsyncStateInit() -> *mut AMresult {
|
|
130
|
+
to_result(am::sync::State::new())
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/// \memberof AMsyncState
|
|
134
|
+
/// \brief Gets the heads that are shared by both peers.
|
|
135
|
+
///
|
|
136
|
+
/// \param[in] sync_state A pointer to an `AMsyncState` struct.
|
|
137
|
+
/// \return A pointer to an `AMresult` struct with `AM_VAL_TYPE_CHANGE_HASH` items.
|
|
138
|
+
/// \pre \p sync_state `!= NULL`
|
|
139
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
140
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
141
|
+
/// \internal
|
|
142
|
+
///
|
|
143
|
+
/// # Safety
|
|
144
|
+
/// sync_state must be a valid pointer to an AMsyncState
|
|
145
|
+
#[no_mangle]
|
|
146
|
+
pub unsafe extern "C" fn AMsyncStateSharedHeads(sync_state: *const AMsyncState) -> *mut AMresult {
|
|
147
|
+
let sync_state = to_sync_state!(sync_state);
|
|
148
|
+
to_result(sync_state.as_ref().shared_heads.as_slice())
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/// \memberof AMsyncState
|
|
152
|
+
/// \brief Gets the heads that were last sent by this peer.
|
|
153
|
+
///
|
|
154
|
+
/// \param[in] sync_state A pointer to an `AMsyncState` struct.
|
|
155
|
+
/// \return A pointer to an `AMresult` struct with `AM_VAL_TYPE_CHANGE_HASH` items.
|
|
156
|
+
/// \pre \p sync_state `!= NULL`
|
|
157
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
158
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
159
|
+
/// \internal
|
|
160
|
+
///
|
|
161
|
+
/// # Safety
|
|
162
|
+
/// sync_state must be a valid pointer to an AMsyncState
|
|
163
|
+
#[no_mangle]
|
|
164
|
+
pub unsafe extern "C" fn AMsyncStateLastSentHeads(sync_state: *const AMsyncState) -> *mut AMresult {
|
|
165
|
+
let sync_state = to_sync_state!(sync_state);
|
|
166
|
+
to_result(sync_state.as_ref().last_sent_heads.as_slice())
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/// \memberof AMsyncState
|
|
170
|
+
/// \brief Gets a summary of the changes that the other peer already has.
|
|
171
|
+
///
|
|
172
|
+
/// \param[in] sync_state A pointer to an `AMsyncState` struct.
|
|
173
|
+
/// \param[out] has_value A pointer to a boolean flag that is set to `true` if
|
|
174
|
+
/// the returned `AMitems` struct is relevant, `false` otherwise.
|
|
175
|
+
/// \return A pointer to an `AMresult` struct with `AM_VAL_TYPE_SYNC_HAVE` items.
|
|
176
|
+
/// \pre \p sync_state `!= NULL`
|
|
177
|
+
/// \pre \p has_value `!= NULL`
|
|
178
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
179
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
180
|
+
/// \internal
|
|
181
|
+
///
|
|
182
|
+
/// # Safety
|
|
183
|
+
/// sync_state must be a valid pointer to an AMsyncState
|
|
184
|
+
/// has_value must be a valid pointer to a bool.
|
|
185
|
+
#[no_mangle]
|
|
186
|
+
pub unsafe extern "C" fn AMsyncStateTheirHaves(
|
|
187
|
+
sync_state: *const AMsyncState,
|
|
188
|
+
has_value: *mut bool,
|
|
189
|
+
) -> *mut AMresult {
|
|
190
|
+
if let Some(sync_state) = sync_state.as_ref() {
|
|
191
|
+
if let Some(haves) = &sync_state.as_ref().their_have {
|
|
192
|
+
*has_value = true;
|
|
193
|
+
return to_result(haves.as_slice());
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
*has_value = false;
|
|
197
|
+
to_result(Vec::<am::sync::Have>::new())
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/// \memberof AMsyncState
|
|
201
|
+
/// \brief Gets the heads that were sent by the other peer.
|
|
202
|
+
///
|
|
203
|
+
/// \param[in] sync_state A pointer to an `AMsyncState` struct.
|
|
204
|
+
/// \param[out] has_value A pointer to a boolean flag that is set to `true` if
|
|
205
|
+
/// the returned `AMitems` struct is relevant, `false`
|
|
206
|
+
/// otherwise.
|
|
207
|
+
/// \return A pointer to an `AMresult` struct with `AM_VAL_TYPE_CHANGE_HASH` items.
|
|
208
|
+
/// \pre \p sync_state `!= NULL`
|
|
209
|
+
/// \pre \p has_value `!= NULL`
|
|
210
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
211
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
212
|
+
/// \internal
|
|
213
|
+
///
|
|
214
|
+
/// # Safety
|
|
215
|
+
/// sync_state must be a valid pointer to an AMsyncState
|
|
216
|
+
/// has_value must be a valid pointer to a bool
|
|
217
|
+
#[no_mangle]
|
|
218
|
+
pub unsafe extern "C" fn AMsyncStateTheirHeads(
|
|
219
|
+
sync_state: *const AMsyncState,
|
|
220
|
+
has_value: *mut bool,
|
|
221
|
+
) -> *mut AMresult {
|
|
222
|
+
if let Some(sync_state) = sync_state.as_ref() {
|
|
223
|
+
if let Some(change_hashes) = &sync_state.as_ref().their_heads {
|
|
224
|
+
*has_value = true;
|
|
225
|
+
return to_result(change_hashes.as_slice());
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
*has_value = false;
|
|
229
|
+
to_result(Vec::<am::ChangeHash>::new())
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/// \memberof AMsyncState
|
|
233
|
+
/// \brief Gets the needs that were sent by the other peer.
|
|
234
|
+
///
|
|
235
|
+
/// \param[in] sync_state A pointer to an `AMsyncState` struct.
|
|
236
|
+
/// \param[out] has_value A pointer to a boolean flag that is set to `true` if
|
|
237
|
+
/// the returned `AMitems` struct is relevant, `false`
|
|
238
|
+
/// otherwise.
|
|
239
|
+
/// \return A pointer to an `AMresult` struct with `AM_VAL_TYPE_CHANGE_HASH` items.
|
|
240
|
+
/// \pre \p sync_state `!= NULL`
|
|
241
|
+
/// \pre \p has_value `!= NULL`
|
|
242
|
+
/// \warning The returned `AMresult` struct pointer must be passed to
|
|
243
|
+
/// `AMresultFree()` in order to avoid a memory leak.
|
|
244
|
+
/// \internal
|
|
245
|
+
///
|
|
246
|
+
/// # Safety
|
|
247
|
+
/// sync_state must be a valid pointer to an AMsyncState
|
|
248
|
+
/// has_value must be a valid pointer to a bool
|
|
249
|
+
#[no_mangle]
|
|
250
|
+
pub unsafe extern "C" fn AMsyncStateTheirNeeds(
|
|
251
|
+
sync_state: *const AMsyncState,
|
|
252
|
+
has_value: *mut bool,
|
|
253
|
+
) -> *mut AMresult {
|
|
254
|
+
if let Some(sync_state) = sync_state.as_ref() {
|
|
255
|
+
if let Some(change_hashes) = &sync_state.as_ref().their_need {
|
|
256
|
+
*has_value = true;
|
|
257
|
+
return to_result(change_hashes.as_slice());
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
*has_value = false;
|
|
261
|
+
to_result(Vec::<am::ChangeHash>::new())
|
|
262
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#include <stdarg.h>
|
|
2
|
+
|
|
3
|
+
#include <automerge-c/utils/result.h>
|
|
4
|
+
|
|
5
|
+
AMresult* AMresultFrom(int count, ...) {
|
|
6
|
+
AMresult* result = NULL;
|
|
7
|
+
bool is_ok = true;
|
|
8
|
+
va_list args;
|
|
9
|
+
va_start(args, count);
|
|
10
|
+
for (int i = 0; i != count; ++i) {
|
|
11
|
+
AMresult* src = va_arg(args, AMresult*);
|
|
12
|
+
AMresult* dest = result;
|
|
13
|
+
is_ok = (AMresultStatus(src) == AM_STATUS_OK);
|
|
14
|
+
if (is_ok) {
|
|
15
|
+
if (dest) {
|
|
16
|
+
result = AMresultCat(dest, src);
|
|
17
|
+
is_ok = (AMresultStatus(result) == AM_STATUS_OK);
|
|
18
|
+
AMresultFree(dest);
|
|
19
|
+
AMresultFree(src);
|
|
20
|
+
} else {
|
|
21
|
+
result = src;
|
|
22
|
+
}
|
|
23
|
+
} else {
|
|
24
|
+
AMresultFree(src);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
va_end(args);
|
|
28
|
+
if (!is_ok) {
|
|
29
|
+
AMresultFree(result);
|
|
30
|
+
result = NULL;
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#include <stdio.h>
|
|
2
|
+
#include <stdlib.h>
|
|
3
|
+
|
|
4
|
+
#include <automerge-c/utils/stack.h>
|
|
5
|
+
#include <automerge-c/utils/string.h>
|
|
6
|
+
|
|
7
|
+
void AMstackFree(AMstack** stack) {
|
|
8
|
+
if (stack) {
|
|
9
|
+
while (*stack) {
|
|
10
|
+
AMresultFree(AMstackPop(stack, NULL));
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
AMresult* AMstackPop(AMstack** stack, const AMresult* result) {
|
|
16
|
+
if (!stack) {
|
|
17
|
+
return NULL;
|
|
18
|
+
}
|
|
19
|
+
AMstack** prev = stack;
|
|
20
|
+
if (result) {
|
|
21
|
+
while (*prev && ((*prev)->result != result)) {
|
|
22
|
+
*prev = (*prev)->prev;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (!*prev) {
|
|
26
|
+
return NULL;
|
|
27
|
+
}
|
|
28
|
+
AMstack* target = *prev;
|
|
29
|
+
*prev = target->prev;
|
|
30
|
+
AMresult* popped = target->result;
|
|
31
|
+
free(target);
|
|
32
|
+
return popped;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
AMresult* AMstackResult(AMstack** stack, AMresult* result, AMstackCallback callback, void* data) {
|
|
36
|
+
if (!stack) {
|
|
37
|
+
if (callback) {
|
|
38
|
+
/* Create a local stack so that the callback can still examine the
|
|
39
|
+
* result. */
|
|
40
|
+
AMstack node = {.result = result, .prev = NULL};
|
|
41
|
+
AMstack* stack = &node;
|
|
42
|
+
callback(&stack, data);
|
|
43
|
+
} else {
|
|
44
|
+
/* \note There is no reason to call this function when both the
|
|
45
|
+
* stack and the callback are null. */
|
|
46
|
+
fprintf(stderr, "ERROR: NULL AMstackCallback!\n");
|
|
47
|
+
}
|
|
48
|
+
/* \note Nothing can be returned without a stack regardless of
|
|
49
|
+
* whether or not the callback validated the result. */
|
|
50
|
+
AMresultFree(result);
|
|
51
|
+
return NULL;
|
|
52
|
+
}
|
|
53
|
+
/* Always push the result onto the stack, even if it's null, so that the
|
|
54
|
+
* callback can examine it. */
|
|
55
|
+
AMstack* next = calloc(1, sizeof(AMstack));
|
|
56
|
+
*next = (AMstack){.result = result, .prev = *stack};
|
|
57
|
+
AMstack* top = next;
|
|
58
|
+
*stack = top;
|
|
59
|
+
if (callback) {
|
|
60
|
+
if (!callback(stack, data)) {
|
|
61
|
+
/* The result didn't pass the callback's examination. */
|
|
62
|
+
return NULL;
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
/* Report an obvious error. */
|
|
66
|
+
if (result) {
|
|
67
|
+
AMbyteSpan const err_msg = AMresultError(result);
|
|
68
|
+
if (err_msg.src && err_msg.count) {
|
|
69
|
+
/* \note The callback may be null because the result is supposed
|
|
70
|
+
* to be examined externally so return it despite an
|
|
71
|
+
* error. */
|
|
72
|
+
char* const cstr = AMstrdup(err_msg, NULL);
|
|
73
|
+
fprintf(stderr, "WARNING: %s.\n", cstr);
|
|
74
|
+
free(cstr);
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
/* \note There's no reason to call this function when both the
|
|
78
|
+
* result and the callback are null. */
|
|
79
|
+
fprintf(stderr, "ERROR: NULL AMresult*!\n");
|
|
80
|
+
return NULL;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
AMitem* AMstackItem(AMstack** stack, AMresult* result, AMstackCallback callback, void* data) {
|
|
87
|
+
AMitems items = AMstackItems(stack, result, callback, data);
|
|
88
|
+
return AMitemsNext(&items, 1);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
AMitems AMstackItems(AMstack** stack, AMresult* result, AMstackCallback callback, void* data) {
|
|
92
|
+
return (AMstackResult(stack, result, callback, data)) ? AMresultItems(result) : (AMitems){0};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
size_t AMstackSize(AMstack const* const stack) {
|
|
96
|
+
if (!stack) {
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
99
|
+
size_t count = 0;
|
|
100
|
+
AMstack const* prev = stack;
|
|
101
|
+
while (prev) {
|
|
102
|
+
++count;
|
|
103
|
+
prev = prev->prev;
|
|
104
|
+
}
|
|
105
|
+
return count;
|
|
106
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#include <stdlib.h>
|
|
2
|
+
|
|
3
|
+
#include <automerge-c/utils/stack_callback_data.h>
|
|
4
|
+
|
|
5
|
+
AMstackCallbackData* AMstackCallbackDataInit(AMvalType const bitmask, char const* const file, int const line) {
|
|
6
|
+
AMstackCallbackData* data = malloc(sizeof(AMstackCallbackData));
|
|
7
|
+
*data = (AMstackCallbackData){.bitmask = bitmask, .file = file, .line = line};
|
|
8
|
+
return data;
|
|
9
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#include <stdlib.h>
|
|
2
|
+
#include <string.h>
|
|
3
|
+
|
|
4
|
+
#include <automerge-c/utils/string.h>
|
|
5
|
+
|
|
6
|
+
char* AMstrdup(AMbyteSpan const str, char const* nul) {
|
|
7
|
+
if (!str.src) {
|
|
8
|
+
return NULL;
|
|
9
|
+
} else if (!str.count) {
|
|
10
|
+
return strdup("");
|
|
11
|
+
}
|
|
12
|
+
nul = (nul) ? nul : "\\0";
|
|
13
|
+
size_t const nul_len = strlen(nul);
|
|
14
|
+
char* dup = NULL;
|
|
15
|
+
size_t dup_len = 0;
|
|
16
|
+
char const* begin = (char const*) str.src;
|
|
17
|
+
char const* end = begin;
|
|
18
|
+
for (size_t i = 0; i != str.count; ++i, ++end) {
|
|
19
|
+
if (!*end) {
|
|
20
|
+
size_t const len = end - begin;
|
|
21
|
+
size_t const alloc_len = dup_len + len + nul_len;
|
|
22
|
+
if (dup) {
|
|
23
|
+
dup = realloc(dup, alloc_len + 1);
|
|
24
|
+
} else {
|
|
25
|
+
dup = malloc(alloc_len + 1);
|
|
26
|
+
}
|
|
27
|
+
memcpy(dup + dup_len, begin, len);
|
|
28
|
+
memcpy(dup + dup_len + len, nul, nul_len);
|
|
29
|
+
dup[alloc_len] = '\0';
|
|
30
|
+
begin = end + 1;
|
|
31
|
+
dup_len = alloc_len;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (begin != end) {
|
|
35
|
+
size_t const len = end - begin;
|
|
36
|
+
size_t const alloc_len = dup_len + len;
|
|
37
|
+
if (dup) {
|
|
38
|
+
dup = realloc(dup, alloc_len + 1);
|
|
39
|
+
} else {
|
|
40
|
+
dup = malloc(alloc_len + 1);
|
|
41
|
+
}
|
|
42
|
+
memcpy(dup + dup_len, begin, len);
|
|
43
|
+
dup[alloc_len] = '\0';
|
|
44
|
+
}
|
|
45
|
+
return dup;
|
|
46
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.25 FATAL_ERROR)
|
|
2
|
+
|
|
3
|
+
find_package(cmocka CONFIG REQUIRED)
|
|
4
|
+
|
|
5
|
+
add_executable(
|
|
6
|
+
${LIBRARY_NAME}_test
|
|
7
|
+
actor_id_tests.c
|
|
8
|
+
base_state.c
|
|
9
|
+
byte_span_tests.c
|
|
10
|
+
cmocka_utils.c
|
|
11
|
+
cursor_tests.c
|
|
12
|
+
enum_string_tests.c
|
|
13
|
+
doc_state.c
|
|
14
|
+
doc_tests.c
|
|
15
|
+
item_tests.c
|
|
16
|
+
list_tests.c
|
|
17
|
+
macro_utils.c
|
|
18
|
+
main.c
|
|
19
|
+
map_tests.c
|
|
20
|
+
mark_tests.c
|
|
21
|
+
str_utils.c
|
|
22
|
+
ported_wasm/basic_tests.c
|
|
23
|
+
ported_wasm/cursor_tests.c
|
|
24
|
+
ported_wasm/suite.c
|
|
25
|
+
ported_wasm/sync_tests.c
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
set_target_properties(${LIBRARY_NAME}_test PROPERTIES LINKER_LANGUAGE C)
|
|
29
|
+
|
|
30
|
+
if(WIN32)
|
|
31
|
+
set(CMOCKA "cmocka::cmocka")
|
|
32
|
+
else()
|
|
33
|
+
set(CMOCKA "cmocka")
|
|
34
|
+
endif()
|
|
35
|
+
|
|
36
|
+
target_link_libraries(${LIBRARY_NAME}_test PRIVATE ${CMOCKA} ${LIBRARY_NAME})
|
|
37
|
+
|
|
38
|
+
add_dependencies(${LIBRARY_NAME}_test ${BINDINGS_NAME}_artifacts)
|
|
39
|
+
|
|
40
|
+
add_custom_command(
|
|
41
|
+
TARGET ${LIBRARY_NAME}_test
|
|
42
|
+
POST_BUILD
|
|
43
|
+
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/files ${CMAKE_CURRENT_BINARY_DIR}/files
|
|
44
|
+
COMMENT "Copying the test input files into the tests directory..."
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
if(BUILD_SHARED_LIBS AND WIN32)
|
|
48
|
+
add_custom_command(
|
|
49
|
+
TARGET ${LIBRARY_NAME}_test
|
|
50
|
+
POST_BUILD
|
|
51
|
+
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${LIBRARY_NAME}> $<TARGET_FILE_DIR:${LIBRARY_NAME}_test>
|
|
52
|
+
COMMENT "Copying the DLL into the tests directory..."
|
|
53
|
+
VERBATIM
|
|
54
|
+
)
|
|
55
|
+
endif()
|
|
56
|
+
|
|
57
|
+
add_test(NAME ${LIBRARY_NAME}_test COMMAND ${LIBRARY_NAME}_test)
|
|
58
|
+
|
|
59
|
+
add_custom_command(
|
|
60
|
+
TARGET ${LIBRARY_NAME}_test
|
|
61
|
+
POST_BUILD
|
|
62
|
+
COMMAND
|
|
63
|
+
${CMAKE_CTEST_COMMAND} --build-config $<CONFIG> --output-on-failure
|
|
64
|
+
COMMENT
|
|
65
|
+
"Running the test(s)..."
|
|
66
|
+
VERBATIM
|
|
67
|
+
)
|