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.
Files changed (481) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +175 -0
  4. data/ext/automerge_ext/automerge_ext.c +1805 -0
  5. data/ext/automerge_ext/extconf.rb +132 -0
  6. data/lib/automerge/version.rb +6 -0
  7. data/lib/automerge.rb +110 -0
  8. data/rust-toolchain.toml +4 -0
  9. data/vendor/automerge-rust/Cargo.lock +1909 -0
  10. data/vendor/automerge-rust/Cargo.toml +15 -0
  11. data/vendor/automerge-rust/automerge/Cargo.toml +78 -0
  12. data/vendor/automerge-rust/automerge/README.md +5 -0
  13. data/vendor/automerge-rust/automerge/benches/load_save.rs +102 -0
  14. data/vendor/automerge-rust/automerge/benches/map.rs +260 -0
  15. data/vendor/automerge-rust/automerge/benches/range.rs +37 -0
  16. data/vendor/automerge-rust/automerge/benches/sync.rs +95 -0
  17. data/vendor/automerge-rust/automerge/examples/README.md +7 -0
  18. data/vendor/automerge-rust/automerge/examples/quickstart.rs +57 -0
  19. data/vendor/automerge-rust/automerge/examples/watch.rs +94 -0
  20. data/vendor/automerge-rust/automerge/fuzz/Cargo.toml +29 -0
  21. data/vendor/automerge-rust/automerge/fuzz/fuzz_targets/load.rs +37 -0
  22. data/vendor/automerge-rust/automerge/src/autocommit.rs +1286 -0
  23. data/vendor/automerge-rust/automerge/src/automerge/current_state.rs +546 -0
  24. data/vendor/automerge-rust/automerge/src/automerge/tests.rs +2023 -0
  25. data/vendor/automerge-rust/automerge/src/automerge.rs +2071 -0
  26. data/vendor/automerge-rust/automerge/src/autoserde.rs +128 -0
  27. data/vendor/automerge-rust/automerge/src/change.rs +357 -0
  28. data/vendor/automerge-rust/automerge/src/change_graph.rs +1215 -0
  29. data/vendor/automerge-rust/automerge/src/change_queue.rs +46 -0
  30. data/vendor/automerge-rust/automerge/src/clock.rs +206 -0
  31. data/vendor/automerge-rust/automerge/src/columnar/column_range/boolean.rs +83 -0
  32. data/vendor/automerge-rust/automerge/src/columnar/column_range/delta.rs +148 -0
  33. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/group.rs +138 -0
  34. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/simple.rs +76 -0
  35. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic.rs +93 -0
  36. data/vendor/automerge-rust/automerge/src/columnar/column_range/key.rs +272 -0
  37. data/vendor/automerge-rust/automerge/src/columnar/column_range/obj_id.rs +202 -0
  38. data/vendor/automerge-rust/automerge/src/columnar/column_range/opid_list.rs +329 -0
  39. data/vendor/automerge-rust/automerge/src/columnar/column_range/raw.rs +38 -0
  40. data/vendor/automerge-rust/automerge/src/columnar/column_range/rle.rs +216 -0
  41. data/vendor/automerge-rust/automerge/src/columnar/column_range/value.rs +547 -0
  42. data/vendor/automerge-rust/automerge/src/columnar/column_range.rs +17 -0
  43. data/vendor/automerge-rust/automerge/src/columnar/encoding/boolean.rs +197 -0
  44. data/vendor/automerge-rust/automerge/src/columnar/encoding/col_error.rs +88 -0
  45. data/vendor/automerge-rust/automerge/src/columnar/encoding/column_decoder.rs +133 -0
  46. data/vendor/automerge-rust/automerge/src/columnar/encoding/decodable_impls.rs +175 -0
  47. data/vendor/automerge-rust/automerge/src/columnar/encoding/delta.rs +96 -0
  48. data/vendor/automerge-rust/automerge/src/columnar/encoding/encodable_impls.rs +200 -0
  49. data/vendor/automerge-rust/automerge/src/columnar/encoding/leb128.rs +82 -0
  50. data/vendor/automerge-rust/automerge/src/columnar/encoding/properties.rs +178 -0
  51. data/vendor/automerge-rust/automerge/src/columnar/encoding/raw.rs +101 -0
  52. data/vendor/automerge-rust/automerge/src/columnar/encoding/rle.rs +239 -0
  53. data/vendor/automerge-rust/automerge/src/columnar/encoding.rs +67 -0
  54. data/vendor/automerge-rust/automerge/src/columnar/splice_error.rs +47 -0
  55. data/vendor/automerge-rust/automerge/src/columnar.rs +14 -0
  56. data/vendor/automerge-rust/automerge/src/convert.rs +112 -0
  57. data/vendor/automerge-rust/automerge/src/cursor.rs +296 -0
  58. data/vendor/automerge-rust/automerge/src/decoding.rs +475 -0
  59. data/vendor/automerge-rust/automerge/src/error.rs +159 -0
  60. data/vendor/automerge-rust/automerge/src/exid.rs +238 -0
  61. data/vendor/automerge-rust/automerge/src/hydrate/list.rs +140 -0
  62. data/vendor/automerge-rust/automerge/src/hydrate/map.rs +132 -0
  63. data/vendor/automerge-rust/automerge/src/hydrate/tests.rs +40 -0
  64. data/vendor/automerge-rust/automerge/src/hydrate/text.rs +89 -0
  65. data/vendor/automerge-rust/automerge/src/hydrate.rs +368 -0
  66. data/vendor/automerge-rust/automerge/src/indexed_cache.rs +113 -0
  67. data/vendor/automerge-rust/automerge/src/iter/doc.rs +603 -0
  68. data/vendor/automerge-rust/automerge/src/iter/keys.rs +93 -0
  69. data/vendor/automerge-rust/automerge/src/iter/list_range.rs +433 -0
  70. data/vendor/automerge-rust/automerge/src/iter/map_range.rs +316 -0
  71. data/vendor/automerge-rust/automerge/src/iter/spans.rs +601 -0
  72. data/vendor/automerge-rust/automerge/src/iter/tools.rs +427 -0
  73. data/vendor/automerge-rust/automerge/src/iter/values.rs +36 -0
  74. data/vendor/automerge-rust/automerge/src/iter.rs +25 -0
  75. data/vendor/automerge-rust/automerge/src/legacy/mod.rs +364 -0
  76. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/actor_id.rs +25 -0
  77. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/change_hash.rs +29 -0
  78. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/element_id.rs +27 -0
  79. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/mod.rs +31 -0
  80. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/object_id.rs +36 -0
  81. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op.rs +668 -0
  82. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op_type.rs +26 -0
  83. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/opid.rs +25 -0
  84. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/scalar_value.rs +63 -0
  85. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/element_id.rs +66 -0
  86. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/key.rs +49 -0
  87. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/mod.rs +4 -0
  88. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/object_id.rs +74 -0
  89. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/opid.rs +68 -0
  90. data/vendor/automerge-rust/automerge/src/lib.rs +315 -0
  91. data/vendor/automerge-rust/automerge/src/marks.rs +478 -0
  92. data/vendor/automerge-rust/automerge/src/op_set2/change/batch.rs +2002 -0
  93. data/vendor/automerge-rust/automerge/src/op_set2/change/collector.rs +974 -0
  94. data/vendor/automerge-rust/automerge/src/op_set2/change.rs +332 -0
  95. data/vendor/automerge-rust/automerge/src/op_set2/columns.rs +714 -0
  96. data/vendor/automerge-rust/automerge/src/op_set2/meta.rs +174 -0
  97. data/vendor/automerge-rust/automerge/src/op_set2/op.rs +1363 -0
  98. data/vendor/automerge-rust/automerge/src/op_set2/op_set/elems.rs +43 -0
  99. data/vendor/automerge-rust/automerge/src/op_set2/op_set/found_op.rs +60 -0
  100. data/vendor/automerge-rust/automerge/src/op_set2/op_set/index.rs +197 -0
  101. data/vendor/automerge-rust/automerge/src/op_set2/op_set/insert.rs +179 -0
  102. data/vendor/automerge-rust/automerge/src/op_set2/op_set/mark_index.rs +292 -0
  103. data/vendor/automerge-rust/automerge/src/op_set2/op_set/marks.rs +86 -0
  104. data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_iter.rs +1295 -0
  105. data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_query.rs +82 -0
  106. data/vendor/automerge-rust/automerge/src/op_set2/op_set/top_op.rs +50 -0
  107. data/vendor/automerge-rust/automerge/src/op_set2/op_set/visible.rs +290 -0
  108. data/vendor/automerge-rust/automerge/src/op_set2/op_set.rs +1793 -0
  109. data/vendor/automerge-rust/automerge/src/op_set2/parents.rs +133 -0
  110. data/vendor/automerge-rust/automerge/src/op_set2/skip_list.rs +714 -0
  111. data/vendor/automerge-rust/automerge/src/op_set2/types.rs +769 -0
  112. data/vendor/automerge-rust/automerge/src/op_set2.rs +18 -0
  113. data/vendor/automerge-rust/automerge/src/patches/patch.rs +95 -0
  114. data/vendor/automerge-rust/automerge/src/patches/patch_builder.rs +382 -0
  115. data/vendor/automerge-rust/automerge/src/patches/patch_log.rs +584 -0
  116. data/vendor/automerge-rust/automerge/src/patches.rs +7 -0
  117. data/vendor/automerge-rust/automerge/src/query/list_state.rs +230 -0
  118. data/vendor/automerge-rust/automerge/src/query/seek_mark.rs +142 -0
  119. data/vendor/automerge-rust/automerge/src/read.rs +326 -0
  120. data/vendor/automerge-rust/automerge/src/sequence_tree.rs +662 -0
  121. data/vendor/automerge-rust/automerge/src/storage/bundle/builder.rs +942 -0
  122. data/vendor/automerge-rust/automerge/src/storage/bundle/error.rs +42 -0
  123. data/vendor/automerge-rust/automerge/src/storage/bundle/meta.rs +23 -0
  124. data/vendor/automerge-rust/automerge/src/storage/bundle/storage.rs +146 -0
  125. data/vendor/automerge-rust/automerge/src/storage/bundle.rs +210 -0
  126. data/vendor/automerge-rust/automerge/src/storage/change/change_actors.rs +311 -0
  127. data/vendor/automerge-rust/automerge/src/storage/change/change_op_columns.rs +621 -0
  128. data/vendor/automerge-rust/automerge/src/storage/change/compressed.rs +51 -0
  129. data/vendor/automerge-rust/automerge/src/storage/change/op_with_change_actors.rs +1 -0
  130. data/vendor/automerge-rust/automerge/src/storage/change.rs +523 -0
  131. data/vendor/automerge-rust/automerge/src/storage/chunk.rs +312 -0
  132. data/vendor/automerge-rust/automerge/src/storage/columns/column.rs +42 -0
  133. data/vendor/automerge-rust/automerge/src/storage/columns/column_builder.rs +199 -0
  134. data/vendor/automerge-rust/automerge/src/storage/columns/column_specification.rs +340 -0
  135. data/vendor/automerge-rust/automerge/src/storage/columns/raw_column.rs +286 -0
  136. data/vendor/automerge-rust/automerge/src/storage/columns.rs +355 -0
  137. data/vendor/automerge-rust/automerge/src/storage/document/compression.rs +362 -0
  138. data/vendor/automerge-rust/automerge/src/storage/document.rs +411 -0
  139. data/vendor/automerge-rust/automerge/src/storage/load/change_collector.rs +15 -0
  140. data/vendor/automerge-rust/automerge/src/storage/load.rs +136 -0
  141. data/vendor/automerge-rust/automerge/src/storage/parse/leb128.rs +302 -0
  142. data/vendor/automerge-rust/automerge/src/storage/parse.rs +619 -0
  143. data/vendor/automerge-rust/automerge/src/storage/save/document.rs +27 -0
  144. data/vendor/automerge-rust/automerge/src/storage.rs +26 -0
  145. data/vendor/automerge-rust/automerge/src/sync/bloom.rs +161 -0
  146. data/vendor/automerge-rust/automerge/src/sync/message_builder.rs +118 -0
  147. data/vendor/automerge-rust/automerge/src/sync/state.rs +214 -0
  148. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/bloom.rs +162 -0
  149. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/mod.rs +625 -0
  150. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/state.rs +120 -0
  151. data/vendor/automerge-rust/automerge/src/sync.rs +2482 -0
  152. data/vendor/automerge-rust/automerge/src/text_diff/LICENSE +201 -0
  153. data/vendor/automerge-rust/automerge/src/text_diff/myers.rs +332 -0
  154. data/vendor/automerge-rust/automerge/src/text_diff/replace.rs +139 -0
  155. data/vendor/automerge-rust/automerge/src/text_diff/utils.rs +119 -0
  156. data/vendor/automerge-rust/automerge/src/text_diff.rs +515 -0
  157. data/vendor/automerge-rust/automerge/src/text_value.rs +276 -0
  158. data/vendor/automerge-rust/automerge/src/transaction/commit.rs +34 -0
  159. data/vendor/automerge-rust/automerge/src/transaction/inner.rs +1403 -0
  160. data/vendor/automerge-rust/automerge/src/transaction/manual_transaction.rs +147 -0
  161. data/vendor/automerge-rust/automerge/src/transaction/owned_transaction.rs +266 -0
  162. data/vendor/automerge-rust/automerge/src/transaction/result.rs +21 -0
  163. data/vendor/automerge-rust/automerge/src/transaction/transactable.rs +203 -0
  164. data/vendor/automerge-rust/automerge/src/transaction.rs +513 -0
  165. data/vendor/automerge-rust/automerge/src/types.rs +749 -0
  166. data/vendor/automerge-rust/automerge/src/validation.rs +29 -0
  167. data/vendor/automerge-rust/automerge/src/value.rs +763 -0
  168. data/vendor/automerge-rust/automerge/tests/batch_insert.rs +1034 -0
  169. data/vendor/automerge-rust/automerge/tests/block_tests.rs +887 -0
  170. data/vendor/automerge-rust/automerge/tests/convert_string_to_text.rs +72 -0
  171. data/vendor/automerge-rust/automerge/tests/diff_marks.rs +1508 -0
  172. data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_change.automerge +0 -0
  173. data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_doc.automerge +0 -0
  174. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_has_incorrect_meta.automerge +0 -0
  175. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_ok.automerge +0 -0
  176. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_overlong.automerge +0 -0
  177. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks.automerge +0 -0
  178. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_compressed.automerge +0 -0
  179. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_out_of_order.automerge +0 -0
  180. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/action-is-48.automerge +0 -0
  181. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 +0 -0
  182. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/incorrect_max_op.automerge +0 -0
  183. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/invalid_deflate_stream.automerge +0 -0
  184. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/missing_actor.automerge +0 -0
  185. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/overflow_in_length.automerge +0 -0
  186. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_deps.automerge +0 -0
  187. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_ops.automerge +0 -0
  188. data/vendor/automerge-rust/automerge/tests/test.rs +2668 -0
  189. data/vendor/automerge-rust/automerge/tests/test_mark_patches.rs +41 -0
  190. data/vendor/automerge-rust/automerge/tests/test_save_load_orphans.rs +84 -0
  191. data/vendor/automerge-rust/automerge/tests/text.rs +1098 -0
  192. data/vendor/automerge-rust/automerge/tests/text_encoding.rs +640 -0
  193. data/vendor/automerge-rust/automerge-c/CMakeLists.txt +439 -0
  194. data/vendor/automerge-rust/automerge-c/Cargo.toml +22 -0
  195. data/vendor/automerge-rust/automerge-c/README.md +233 -0
  196. data/vendor/automerge-rust/automerge-c/build.rs +21 -0
  197. data/vendor/automerge-rust/automerge-c/cbindgen.toml +48 -0
  198. data/vendor/automerge-rust/automerge-c/cmake/Cargo.toml.in +22 -0
  199. data/vendor/automerge-rust/automerge-c/cmake/automerge-c-config.cmake.in +99 -0
  200. data/vendor/automerge-rust/automerge-c/cmake/cbindgen.toml.in +48 -0
  201. data/vendor/automerge-rust/automerge-c/cmake/config.h.in +58 -0
  202. data/vendor/automerge-rust/automerge-c/cmake/enum-string-functions-gen.cmake +183 -0
  203. data/vendor/automerge-rust/automerge-c/cmake/file-regex-replace.cmake +33 -0
  204. data/vendor/automerge-rust/automerge-c/cmake/file-touch.cmake +35 -0
  205. data/vendor/automerge-rust/automerge-c/docs/CMakeLists.txt +39 -0
  206. data/vendor/automerge-rust/automerge-c/docs/img/brandmark.png +0 -0
  207. data/vendor/automerge-rust/automerge-c/examples/CMakeLists.txt +42 -0
  208. data/vendor/automerge-rust/automerge-c/examples/README.md +9 -0
  209. data/vendor/automerge-rust/automerge-c/examples/quickstart.c +131 -0
  210. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/result.h +30 -0
  211. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack.h +130 -0
  212. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack_callback_data.h +53 -0
  213. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/string.h +29 -0
  214. data/vendor/automerge-rust/automerge-c/src/actor_id.rs +193 -0
  215. data/vendor/automerge-rust/automerge-c/src/byte_span.rs +227 -0
  216. data/vendor/automerge-rust/automerge-c/src/change.rs +356 -0
  217. data/vendor/automerge-rust/automerge-c/src/cursor.rs +168 -0
  218. data/vendor/automerge-rust/automerge-c/src/doc/list.rs +636 -0
  219. data/vendor/automerge-rust/automerge-c/src/doc/map.rs +556 -0
  220. data/vendor/automerge-rust/automerge-c/src/doc/mark.rs +296 -0
  221. data/vendor/automerge-rust/automerge-c/src/doc/utils.rs +46 -0
  222. data/vendor/automerge-rust/automerge-c/src/doc.rs +1009 -0
  223. data/vendor/automerge-rust/automerge-c/src/index.rs +84 -0
  224. data/vendor/automerge-rust/automerge-c/src/item.rs +2177 -0
  225. data/vendor/automerge-rust/automerge-c/src/items.rs +401 -0
  226. data/vendor/automerge-rust/automerge-c/src/lib.rs +11 -0
  227. data/vendor/automerge-rust/automerge-c/src/obj.rs +216 -0
  228. data/vendor/automerge-rust/automerge-c/src/result.rs +653 -0
  229. data/vendor/automerge-rust/automerge-c/src/sync/have.rs +42 -0
  230. data/vendor/automerge-rust/automerge-c/src/sync/message.rs +146 -0
  231. data/vendor/automerge-rust/automerge-c/src/sync/state.rs +262 -0
  232. data/vendor/automerge-rust/automerge-c/src/sync.rs +7 -0
  233. data/vendor/automerge-rust/automerge-c/src/utils/result.c +33 -0
  234. data/vendor/automerge-rust/automerge-c/src/utils/stack.c +106 -0
  235. data/vendor/automerge-rust/automerge-c/src/utils/stack_callback_data.c +9 -0
  236. data/vendor/automerge-rust/automerge-c/src/utils/string.c +46 -0
  237. data/vendor/automerge-rust/automerge-c/test/CMakeLists.txt +67 -0
  238. data/vendor/automerge-rust/automerge-c/test/actor_id_tests.c +140 -0
  239. data/vendor/automerge-rust/automerge-c/test/base_state.c +17 -0
  240. data/vendor/automerge-rust/automerge-c/test/base_state.h +39 -0
  241. data/vendor/automerge-rust/automerge-c/test/byte_span_tests.c +119 -0
  242. data/vendor/automerge-rust/automerge-c/test/cmocka_utils.c +91 -0
  243. data/vendor/automerge-rust/automerge-c/test/cmocka_utils.h +42 -0
  244. data/vendor/automerge-rust/automerge-c/test/cursor_tests.c +263 -0
  245. data/vendor/automerge-rust/automerge-c/test/doc_state.c +27 -0
  246. data/vendor/automerge-rust/automerge-c/test/doc_state.h +17 -0
  247. data/vendor/automerge-rust/automerge-c/test/doc_tests.c +335 -0
  248. data/vendor/automerge-rust/automerge-c/test/enum_string_tests.c +148 -0
  249. data/vendor/automerge-rust/automerge-c/test/files/brave-ape-49.automerge +0 -0
  250. data/vendor/automerge-rust/automerge-c/test/item_tests.c +313 -0
  251. data/vendor/automerge-rust/automerge-c/test/list_tests.c +544 -0
  252. data/vendor/automerge-rust/automerge-c/test/macro_utils.c +38 -0
  253. data/vendor/automerge-rust/automerge-c/test/macro_utils.h +23 -0
  254. data/vendor/automerge-rust/automerge-c/test/main.c +33 -0
  255. data/vendor/automerge-rust/automerge-c/test/map_tests.c +1610 -0
  256. data/vendor/automerge-rust/automerge-c/test/mark_tests.c +124 -0
  257. data/vendor/automerge-rust/automerge-c/test/ported_wasm/basic_tests.c +1642 -0
  258. data/vendor/automerge-rust/automerge-c/test/ported_wasm/cursor_tests.c +108 -0
  259. data/vendor/automerge-rust/automerge-c/test/ported_wasm/suite.c +17 -0
  260. data/vendor/automerge-rust/automerge-c/test/ported_wasm/sync_tests.c +1280 -0
  261. data/vendor/automerge-rust/automerge-c/test/str_utils.c +15 -0
  262. data/vendor/automerge-rust/automerge-c/test/str_utils.h +17 -0
  263. data/vendor/automerge-rust/automerge-test/Cargo.toml +17 -0
  264. data/vendor/automerge-rust/automerge-test/README.md +3 -0
  265. data/vendor/automerge-rust/automerge-test/src/lib.rs +487 -0
  266. data/vendor/automerge-rust/hexane/CHANGELOG.md +34 -0
  267. data/vendor/automerge-rust/hexane/Cargo.toml +47 -0
  268. data/vendor/automerge-rust/hexane/README.md +292 -0
  269. data/vendor/automerge-rust/hexane/RESULTS.txt +20 -0
  270. data/vendor/automerge-rust/hexane/TODO +18 -0
  271. data/vendor/automerge-rust/hexane/benches/insert.rs +82 -0
  272. data/vendor/automerge-rust/hexane/benches/seek.rs +77 -0
  273. data/vendor/automerge-rust/hexane/benches/splice.rs +82 -0
  274. data/vendor/automerge-rust/hexane/src/aggregate.rs +288 -0
  275. data/vendor/automerge-rust/hexane/src/boolean.rs +478 -0
  276. data/vendor/automerge-rust/hexane/src/columndata.rs +2540 -0
  277. data/vendor/automerge-rust/hexane/src/cursor.rs +756 -0
  278. data/vendor/automerge-rust/hexane/src/delta.rs +793 -0
  279. data/vendor/automerge-rust/hexane/src/encoder.rs +639 -0
  280. data/vendor/automerge-rust/hexane/src/leb128.rs +82 -0
  281. data/vendor/automerge-rust/hexane/src/lib.rs +95 -0
  282. data/vendor/automerge-rust/hexane/src/pack.rs +325 -0
  283. data/vendor/automerge-rust/hexane/src/raw.rs +314 -0
  284. data/vendor/automerge-rust/hexane/src/rle.rs +928 -0
  285. data/vendor/automerge-rust/hexane/src/slab/tree.rs +1373 -0
  286. data/vendor/automerge-rust/hexane/src/slab/writer.rs +535 -0
  287. data/vendor/automerge-rust/hexane/src/slab.rs +224 -0
  288. data/vendor/automerge-rust/hexane/src/test.rs +108 -0
  289. data/vendor/bundle/ruby/3.3.0/bin/rake +29 -0
  290. data/vendor/bundle/ruby/3.3.0/bin/rake-compiler +29 -0
  291. data/vendor/bundle/ruby/3.3.0/bin/rake-compiler-dock +29 -0
  292. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/History.rdoc +1732 -0
  293. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Manifest.txt +32 -0
  294. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/README.rdoc +845 -0
  295. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Rakefile +97 -0
  296. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/design_rationale.rb +54 -0
  297. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/hoe/minitest.rb +30 -0
  298. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/assertions.rb +850 -0
  299. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/autorun.rb +6 -0
  300. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/benchmark.rb +452 -0
  301. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/compress.rb +94 -0
  302. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/error_on_warning.rb +11 -0
  303. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/expectations.rb +321 -0
  304. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/hell.rb +11 -0
  305. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/manual_plugins.rb +16 -0
  306. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/mock.rb +327 -0
  307. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/parallel.rb +72 -0
  308. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride.rb +4 -0
  309. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride_plugin.rb +135 -0
  310. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/spec.rb +353 -0
  311. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test.rb +238 -0
  312. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test_task.rb +324 -0
  313. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/unit.rb +42 -0
  314. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest.rb +1250 -0
  315. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/metametameta.rb +150 -0
  316. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_assertions.rb +1677 -0
  317. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_benchmark.rb +137 -0
  318. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_mock.rb +1213 -0
  319. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_reporter.rb +437 -0
  320. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_spec.rb +1159 -0
  321. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test.rb +1374 -0
  322. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test_task.rb +57 -0
  323. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/History.rdoc +2454 -0
  324. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/MIT-LICENSE +21 -0
  325. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/README.rdoc +155 -0
  326. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/command_line_usage.rdoc +171 -0
  327. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile1 +38 -0
  328. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile2 +35 -0
  329. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/a.c +6 -0
  330. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/b.c +6 -0
  331. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/main.c +11 -0
  332. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/glossary.rdoc +42 -0
  333. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/jamis.rb +592 -0
  334. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/proto_rake.rdoc +127 -0
  335. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rake.1 +156 -0
  336. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rakefile.rdoc +635 -0
  337. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rational.rdoc +151 -0
  338. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/exe/rake +27 -0
  339. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/application.rb +847 -0
  340. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/backtrace.rb +25 -0
  341. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/clean.rb +78 -0
  342. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cloneable.rb +17 -0
  343. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cpu_counter.rb +122 -0
  344. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/default_loader.rb +15 -0
  345. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/dsl_definition.rb +196 -0
  346. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/early_time.rb +22 -0
  347. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/core.rb +26 -0
  348. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/string.rb +176 -0
  349. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_creation_task.rb +25 -0
  350. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_list.rb +435 -0
  351. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_task.rb +58 -0
  352. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils.rb +137 -0
  353. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils_ext.rb +135 -0
  354. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_chain.rb +57 -0
  355. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_exception_mixin.rb +17 -0
  356. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/late_time.rb +18 -0
  357. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/linked_list.rb +112 -0
  358. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/loaders/makefile.rb +54 -0
  359. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/multi_task.rb +14 -0
  360. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/name_space.rb +38 -0
  361. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/options.rb +31 -0
  362. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/packagetask.rb +222 -0
  363. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/phony.rb +16 -0
  364. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/private_reader.rb +21 -0
  365. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/promise.rb +100 -0
  366. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/pseudo_status.rb +30 -0
  367. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_module.rb +67 -0
  368. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_test_loader.rb +27 -0
  369. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  370. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/scope.rb +43 -0
  371. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task.rb +434 -0
  372. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_argument_error.rb +8 -0
  373. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_arguments.rb +113 -0
  374. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_manager.rb +333 -0
  375. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/tasklib.rb +12 -0
  376. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/testtask.rb +192 -0
  377. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_history_display.rb +49 -0
  378. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_pool.rb +157 -0
  379. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/trace_output.rb +23 -0
  380. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/version.rb +10 -0
  381. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/win32.rb +17 -0
  382. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake.rb +69 -0
  383. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/rake.gemspec +102 -0
  384. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Gemfile +8 -0
  385. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/History.md +695 -0
  386. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/LICENSE.txt +20 -0
  387. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/README.md +476 -0
  388. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Rakefile +15 -0
  389. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/appveyor.yml +22 -0
  390. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/bin/rake-compiler +24 -0
  391. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/cucumber.yml +4 -0
  392. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/compile.feature +79 -0
  393. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-compile.feature +23 -0
  394. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package-multi.feature +15 -0
  395. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package.feature +14 -0
  396. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-compile.feature +22 -0
  397. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-no-native-compile.feature +33 -0
  398. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-package.feature +24 -0
  399. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/package.feature +40 -0
  400. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/compilation.rb +70 -0
  401. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/cross_compilation.rb +27 -0
  402. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/execution.rb +52 -0
  403. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/folders.rb +32 -0
  404. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/gem.rb +46 -0
  405. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/java_compilation.rb +7 -0
  406. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/env.rb +10 -0
  407. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/file_template_helpers.rb +137 -0
  408. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/generator_helpers.rb +123 -0
  409. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/platform_extension_helpers.rb +27 -0
  410. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/baseextensiontask.rb +90 -0
  411. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/compiler_config.rb +38 -0
  412. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensioncompiler.rb +51 -0
  413. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensiontask.rb +589 -0
  414. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/javaextensiontask.rb +321 -0
  415. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bin/cross-ruby.rake +189 -0
  416. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bootstrap.rake +11 -0
  417. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/common.rake +10 -0
  418. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/cucumber.rake +23 -0
  419. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/gem.rake +15 -0
  420. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/rspec.rake +9 -0
  421. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CHANGELOG.md +446 -0
  422. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CONTRIBUTING.md +109 -0
  423. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.jruby +79 -0
  424. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.mri.erb +282 -0
  425. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Gemfile +8 -0
  426. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/LICENSE.txt +22 -0
  427. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/README.md +447 -0
  428. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Rakefile +246 -0
  429. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/bin/rake-compiler-dock +18 -0
  430. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/buildkitd.toml +2 -0
  431. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/gem_helper.rb +54 -0
  432. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_i686.rb +18 -0
  433. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_musl_cross.sh +37 -0
  434. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_osxcross.sh +45 -0
  435. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_pkg_config.sh +24 -0
  436. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/parallel_docker_build.rb +169 -0
  437. 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
  438. 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
  439. 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
  440. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/rcd-env.sh +6 -0
  441. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/runas +7 -0
  442. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sigfw.c +45 -0
  443. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_codesign +17 -0
  444. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_vbox +30 -0
  445. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sudoers +1 -0
  446. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/colors.rb +43 -0
  447. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/docker_check.rb +356 -0
  448. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/predefined_user_group.rb +5 -0
  449. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/starter.rb +206 -0
  450. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/version.rb +4 -0
  451. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock.rb +151 -0
  452. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/Dockerfile +66 -0
  453. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/README.md +14 -0
  454. 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
  455. 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
  456. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/mingw-w64-enable-ucrt.patch +22 -0
  457. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/rake-compiler-dock.gemspec +34 -0
  458. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.alpine +17 -0
  459. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.debian +24 -0
  460. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/fixtures/mig_test_rpc.defs +8 -0
  461. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Gemfile +11 -0
  462. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Rakefile +97 -0
  463. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RcdTestExtService.java +19 -0
  464. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RubyRcdTest.java +16 -0
  465. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/extconf.rb +111 -0
  466. 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
  467. 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
  468. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/lib/rcd_test.rb +6 -0
  469. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/rcd_test.gemspec +28 -0
  470. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/test/test_basic.rb +49 -0
  471. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_environment_variables.rb +108 -0
  472. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_mig.rb +18 -0
  473. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_parallel_docker_build.rb +95 -0
  474. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_rubygems_plugins.rb +12 -0
  475. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_starter.rb +158 -0
  476. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_versions.rb +82 -0
  477. data/vendor/bundle/ruby/3.3.0/specifications/minitest-5.27.0.gemspec +32 -0
  478. data/vendor/bundle/ruby/3.3.0/specifications/rake-13.4.2.gemspec +26 -0
  479. data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-1.3.1.gemspec +33 -0
  480. data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-dock-1.12.0.gemspec +28 -0
  481. 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
+ }