document-drive 4.0.1 → 4.1.0-dev.2

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 (264) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/prisma/schema.prisma +1 -2
  6. package/dist/src/drive-document-model/gen/document-model.js +3 -3
  7. package/dist/src/drive-document-model/gen/document-model.js.map +1 -1
  8. package/dist/src/drive-document-model/gen/drive/actions.d.ts +9 -9
  9. package/dist/src/drive-document-model/gen/drive/actions.d.ts.map +1 -1
  10. package/dist/src/drive-document-model/gen/node/actions.d.ts +8 -8
  11. package/dist/src/drive-document-model/gen/node/actions.d.ts.map +1 -1
  12. package/dist/src/drive-document-model/gen/node/creators.d.ts +6 -2
  13. package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -1
  14. package/dist/src/drive-document-model/gen/node/creators.js +8 -1
  15. package/dist/src/drive-document-model/gen/node/creators.js.map +1 -1
  16. package/dist/src/drive-document-model/gen/reducer.d.ts.map +1 -1
  17. package/dist/src/drive-document-model/gen/reducer.js.map +1 -1
  18. package/dist/src/drive-document-model/gen/schema/types.d.ts +1 -14
  19. package/dist/src/drive-document-model/gen/schema/types.d.ts.map +1 -1
  20. package/dist/src/drive-document-model/gen/schema/zod.d.ts +1 -5
  21. package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -1
  22. package/dist/src/drive-document-model/gen/schema/zod.js +0 -12
  23. package/dist/src/drive-document-model/gen/schema/zod.js.map +1 -1
  24. package/dist/src/drive-document-model/gen/types.d.ts +13 -4
  25. package/dist/src/drive-document-model/gen/types.d.ts.map +1 -1
  26. package/dist/src/drive-document-model/gen/types.js.map +1 -1
  27. package/dist/src/drive-document-model/module.d.ts +2 -1
  28. package/dist/src/drive-document-model/module.d.ts.map +1 -1
  29. package/dist/src/drive-document-model/src/reducers/node.d.ts.map +1 -1
  30. package/dist/src/drive-document-model/src/reducers/node.js +1 -25
  31. package/dist/src/drive-document-model/src/reducers/node.js.map +1 -1
  32. package/dist/src/drive-document-model/src/tests/actions.test.js +1 -23
  33. package/dist/src/drive-document-model/src/tests/actions.test.js.map +1 -1
  34. package/dist/src/drive-document-model/src/tests/base.test.js +0 -32
  35. package/dist/src/drive-document-model/src/tests/base.test.js.map +1 -1
  36. package/dist/src/drive-document-model/src/tests/utils.test.js +7 -37
  37. package/dist/src/drive-document-model/src/tests/utils.test.js.map +1 -1
  38. package/dist/src/drive-document-model/src/utils.d.ts +2 -8
  39. package/dist/src/drive-document-model/src/utils.d.ts.map +1 -1
  40. package/dist/src/drive-document-model/src/utils.js +6 -55
  41. package/dist/src/drive-document-model/src/utils.js.map +1 -1
  42. package/dist/src/processors/types.d.ts +2 -1
  43. package/dist/src/processors/types.d.ts.map +1 -1
  44. package/dist/src/queue/base.d.ts +6 -27
  45. package/dist/src/queue/base.d.ts.map +1 -1
  46. package/dist/src/queue/base.js +15 -203
  47. package/dist/src/queue/base.js.map +1 -1
  48. package/dist/src/queue/event.d.ts +41 -0
  49. package/dist/src/queue/event.d.ts.map +1 -0
  50. package/dist/src/queue/event.js +222 -0
  51. package/dist/src/queue/event.js.map +1 -0
  52. package/dist/src/queue/redis.d.ts +1 -27
  53. package/dist/src/queue/redis.d.ts.map +1 -1
  54. package/dist/src/queue/redis.js +122 -110
  55. package/dist/src/queue/redis.js.map +1 -1
  56. package/dist/src/queue/types.d.ts +18 -12
  57. package/dist/src/queue/types.d.ts.map +1 -1
  58. package/dist/src/queue/types.js +3 -0
  59. package/dist/src/queue/types.js.map +1 -1
  60. package/dist/src/server/base-server.d.ts +87 -11
  61. package/dist/src/server/base-server.d.ts.map +1 -1
  62. package/dist/src/server/base-server.js +549 -250
  63. package/dist/src/server/base-server.js.map +1 -1
  64. package/dist/src/server/builder.js +2 -2
  65. package/dist/src/server/builder.js.map +1 -1
  66. package/dist/src/server/error.d.ts +3 -3
  67. package/dist/src/server/error.d.ts.map +1 -1
  68. package/dist/src/server/error.js +2 -2
  69. package/dist/src/server/error.js.map +1 -1
  70. package/dist/src/server/listener/listener-manager.d.ts +5 -6
  71. package/dist/src/server/listener/listener-manager.d.ts.map +1 -1
  72. package/dist/src/server/listener/listener-manager.js +62 -79
  73. package/dist/src/server/listener/listener-manager.js.map +1 -1
  74. package/dist/src/server/listener/transmitter/internal.d.ts +3 -3
  75. package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -1
  76. package/dist/src/server/listener/transmitter/internal.js +18 -13
  77. package/dist/src/server/listener/transmitter/internal.js.map +1 -1
  78. package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -1
  79. package/dist/src/server/listener/transmitter/pull-responder.js +14 -8
  80. package/dist/src/server/listener/transmitter/pull-responder.js.map +1 -1
  81. package/dist/src/server/listener/transmitter/switchboard-push.d.ts.map +1 -1
  82. package/dist/src/server/listener/transmitter/switchboard-push.js +13 -8
  83. package/dist/src/server/listener/transmitter/switchboard-push.js.map +1 -1
  84. package/dist/src/server/sync-manager.d.ts +8 -10
  85. package/dist/src/server/sync-manager.d.ts.map +1 -1
  86. package/dist/src/server/sync-manager.js +62 -147
  87. package/dist/src/server/sync-manager.js.map +1 -1
  88. package/dist/src/server/sync-unit-map.d.ts +137 -0
  89. package/dist/src/server/sync-unit-map.d.ts.map +1 -0
  90. package/dist/src/server/sync-unit-map.js +234 -0
  91. package/dist/src/server/sync-unit-map.js.map +1 -0
  92. package/dist/src/server/types.d.ts +116 -33
  93. package/dist/src/server/types.d.ts.map +1 -1
  94. package/dist/src/server/types.js.map +1 -1
  95. package/dist/src/server/utils.d.ts +10 -1
  96. package/dist/src/server/utils.d.ts.map +1 -1
  97. package/dist/src/server/utils.js +44 -1
  98. package/dist/src/server/utils.js.map +1 -1
  99. package/dist/src/storage/browser.d.ts +7 -2
  100. package/dist/src/storage/browser.d.ts.map +1 -1
  101. package/dist/src/storage/browser.js +80 -22
  102. package/dist/src/storage/browser.js.map +1 -1
  103. package/dist/src/storage/filesystem.d.ts +7 -2
  104. package/dist/src/storage/filesystem.d.ts.map +1 -1
  105. package/dist/src/storage/filesystem.js +79 -22
  106. package/dist/src/storage/filesystem.js.map +1 -1
  107. package/dist/src/storage/memory.d.ts +7 -2
  108. package/dist/src/storage/memory.d.ts.map +1 -1
  109. package/dist/src/storage/memory.js +76 -22
  110. package/dist/src/storage/memory.js.map +1 -1
  111. package/dist/src/storage/prisma/client/edge.js +5 -4
  112. package/dist/src/storage/prisma/client/index-browser.js +2 -1
  113. package/dist/src/storage/prisma/client/index.d.ts +58 -249
  114. package/dist/src/storage/prisma/client/index.js +5 -4
  115. package/dist/src/storage/prisma/client/package.json +1 -1
  116. package/dist/src/storage/prisma/client/schema.prisma +2 -3
  117. package/dist/src/storage/prisma/client/wasm.js +2 -1
  118. package/dist/src/storage/prisma/prisma.d.ts +9 -4
  119. package/dist/src/storage/prisma/prisma.d.ts.map +1 -1
  120. package/dist/src/storage/prisma/prisma.js +119 -51
  121. package/dist/src/storage/prisma/prisma.js.map +1 -1
  122. package/dist/src/storage/types.d.ts +43 -4
  123. package/dist/src/storage/types.d.ts.map +1 -1
  124. package/dist/src/storage/utils.d.ts +3 -0
  125. package/dist/src/storage/utils.d.ts.map +1 -1
  126. package/dist/src/storage/utils.js +14 -0
  127. package/dist/src/storage/utils.js.map +1 -1
  128. package/dist/src/utils/gql-transformations.d.ts +14 -5
  129. package/dist/src/utils/gql-transformations.d.ts.map +1 -1
  130. package/dist/src/utils/gql-transformations.js +1 -0
  131. package/dist/src/utils/gql-transformations.js.map +1 -1
  132. package/dist/src/utils/migrations.d.ts.map +1 -1
  133. package/dist/src/utils/migrations.js.map +1 -1
  134. package/dist/src/utils/misc.d.ts +2 -0
  135. package/dist/src/utils/misc.d.ts.map +1 -1
  136. package/dist/src/utils/misc.js +4 -0
  137. package/dist/src/utils/misc.js.map +1 -1
  138. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  139. package/package.json +4 -4
  140. package/dist/test/cache.test.d.ts +0 -2
  141. package/dist/test/cache.test.d.ts.map +0 -1
  142. package/dist/test/cache.test.js +0 -281
  143. package/dist/test/cache.test.js.map +0 -1
  144. package/dist/test/default-remote-drives.test.d.ts +0 -2
  145. package/dist/test/default-remote-drives.test.d.ts.map +0 -1
  146. package/dist/test/default-remote-drives.test.js +0 -446
  147. package/dist/test/default-remote-drives.test.js.map +0 -1
  148. package/dist/test/document-helpers/addUndo.test.d.ts +0 -2
  149. package/dist/test/document-helpers/addUndo.test.d.ts.map +0 -1
  150. package/dist/test/document-helpers/addUndo.test.js +0 -120
  151. package/dist/test/document-helpers/addUndo.test.js.map +0 -1
  152. package/dist/test/document-helpers/attachBranch.test.d.ts +0 -2
  153. package/dist/test/document-helpers/attachBranch.test.d.ts.map +0 -1
  154. package/dist/test/document-helpers/attachBranch.test.js +0 -333
  155. package/dist/test/document-helpers/attachBranch.test.js.map +0 -1
  156. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts +0 -2
  157. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +0 -1
  158. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +0 -252
  159. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +0 -1
  160. package/dist/test/document-helpers/garbageCollect.test.d.ts +0 -2
  161. package/dist/test/document-helpers/garbageCollect.test.d.ts.map +0 -1
  162. package/dist/test/document-helpers/garbageCollect.test.js +0 -136
  163. package/dist/test/document-helpers/garbageCollect.test.js.map +0 -1
  164. package/dist/test/document-helpers/groupOperationsByScope.test.d.ts +0 -2
  165. package/dist/test/document-helpers/groupOperationsByScope.test.d.ts.map +0 -1
  166. package/dist/test/document-helpers/groupOperationsByScope.test.js +0 -98
  167. package/dist/test/document-helpers/groupOperationsByScope.test.js.map +0 -1
  168. package/dist/test/document-helpers/merge.test.d.ts +0 -2
  169. package/dist/test/document-helpers/merge.test.d.ts.map +0 -1
  170. package/dist/test/document-helpers/merge.test.js +0 -757
  171. package/dist/test/document-helpers/merge.test.js.map +0 -1
  172. package/dist/test/document-helpers/nextSkipNumber.test.d.ts +0 -2
  173. package/dist/test/document-helpers/nextSkipNumber.test.d.ts.map +0 -1
  174. package/dist/test/document-helpers/nextSkipNumber.test.js +0 -123
  175. package/dist/test/document-helpers/nextSkipNumber.test.js.map +0 -1
  176. package/dist/test/document-helpers/prepareOperations.test.d.ts +0 -2
  177. package/dist/test/document-helpers/prepareOperations.test.d.ts.map +0 -1
  178. package/dist/test/document-helpers/prepareOperations.test.js +0 -304
  179. package/dist/test/document-helpers/prepareOperations.test.js.map +0 -1
  180. package/dist/test/document-helpers/removeExistingOperations.test.d.ts +0 -2
  181. package/dist/test/document-helpers/removeExistingOperations.test.d.ts.map +0 -1
  182. package/dist/test/document-helpers/removeExistingOperations.test.js +0 -150
  183. package/dist/test/document-helpers/removeExistingOperations.test.js.map +0 -1
  184. package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts +0 -2
  185. package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +0 -1
  186. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +0 -148
  187. package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +0 -1
  188. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts +0 -2
  189. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +0 -1
  190. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +0 -200
  191. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +0 -1
  192. package/dist/test/document-helpers/sortOperations.test.d.ts +0 -2
  193. package/dist/test/document-helpers/sortOperations.test.d.ts.map +0 -1
  194. package/dist/test/document-helpers/sortOperations.test.js +0 -101
  195. package/dist/test/document-helpers/sortOperations.test.js.map +0 -1
  196. package/dist/test/document-helpers/split.test.d.ts +0 -2
  197. package/dist/test/document-helpers/split.test.d.ts.map +0 -1
  198. package/dist/test/document-helpers/split.test.js +0 -121
  199. package/dist/test/document-helpers/split.test.js.map +0 -1
  200. package/dist/test/document-helpers/utils.d.ts +0 -8
  201. package/dist/test/document-helpers/utils.d.ts.map +0 -1
  202. package/dist/test/document-helpers/utils.js +0 -22
  203. package/dist/test/document-helpers/utils.js.map +0 -1
  204. package/dist/test/drive-operations.test.d.ts +0 -2
  205. package/dist/test/drive-operations.test.d.ts.map +0 -1
  206. package/dist/test/drive-operations.test.js +0 -145
  207. package/dist/test/drive-operations.test.js.map +0 -1
  208. package/dist/test/graphql.test.d.ts +0 -2
  209. package/dist/test/graphql.test.d.ts.map +0 -1
  210. package/dist/test/graphql.test.js +0 -10
  211. package/dist/test/graphql.test.js.map +0 -1
  212. package/dist/test/internal-listener.test.d.ts +0 -2
  213. package/dist/test/internal-listener.test.d.ts.map +0 -1
  214. package/dist/test/internal-listener.test.js +0 -277
  215. package/dist/test/internal-listener.test.js.map +0 -1
  216. package/dist/test/queue.test.d.ts +0 -2
  217. package/dist/test/queue.test.d.ts.map +0 -1
  218. package/dist/test/queue.test.js +0 -338
  219. package/dist/test/queue.test.js.map +0 -1
  220. package/dist/test/read-mode.test.d.ts +0 -2
  221. package/dist/test/read-mode.test.d.ts.map +0 -1
  222. package/dist/test/read-mode.test.js +0 -578
  223. package/dist/test/read-mode.test.js.map +0 -1
  224. package/dist/test/server/driveOperationsConflictResolution.test.d.ts +0 -2
  225. package/dist/test/server/driveOperationsConflictResolution.test.d.ts.map +0 -1
  226. package/dist/test/server/driveOperationsConflictResolution.test.js +0 -460
  227. package/dist/test/server/driveOperationsConflictResolution.test.js.map +0 -1
  228. package/dist/test/server/mergeOperations.test.d.ts +0 -2
  229. package/dist/test/server/mergeOperations.test.d.ts.map +0 -1
  230. package/dist/test/server/mergeOperations.test.js +0 -107
  231. package/dist/test/server/mergeOperations.test.js.map +0 -1
  232. package/dist/test/server/processOperations.test.d.ts +0 -2
  233. package/dist/test/server/processOperations.test.d.ts.map +0 -1
  234. package/dist/test/server/processOperations.test.js +0 -380
  235. package/dist/test/server/processOperations.test.js.map +0 -1
  236. package/dist/test/server.test.d.ts +0 -2
  237. package/dist/test/server.test.d.ts.map +0 -1
  238. package/dist/test/server.test.js +0 -899
  239. package/dist/test/server.test.js.map +0 -1
  240. package/dist/test/signature-migration.test.d.ts +0 -2
  241. package/dist/test/signature-migration.test.d.ts.map +0 -1
  242. package/dist/test/signature-migration.test.js +0 -239
  243. package/dist/test/signature-migration.test.js.map +0 -1
  244. package/dist/test/storage.test.d.ts +0 -2
  245. package/dist/test/storage.test.d.ts.map +0 -1
  246. package/dist/test/storage.test.js +0 -523
  247. package/dist/test/storage.test.js.map +0 -1
  248. package/dist/test/utils.d.ts +0 -48
  249. package/dist/test/utils.d.ts.map +0 -1
  250. package/dist/test/utils.js +0 -133
  251. package/dist/test/utils.js.map +0 -1
  252. package/dist/test/utils.test.d.ts +0 -2
  253. package/dist/test/utils.test.d.ts.map +0 -1
  254. package/dist/test/utils.test.js +0 -89
  255. package/dist/test/utils.test.js.map +0 -1
  256. package/dist/test/vitest-setup.d.ts +0 -2
  257. package/dist/test/vitest-setup.d.ts.map +0 -1
  258. package/dist/test/vitest-setup.js +0 -5
  259. package/dist/test/vitest-setup.js.map +0 -1
  260. package/dist/tsconfig.tsbuildinfo +0 -1
  261. package/dist/vitest.config.d.ts +0 -3
  262. package/dist/vitest.config.d.ts.map +0 -1
  263. package/dist/vitest.config.js +0 -27
  264. package/dist/vitest.config.js.map +0 -1
@@ -1,757 +0,0 @@
1
- import { merge } from "document-model";
2
- import { describe, expect, it } from "vitest";
3
- import { checkCleanedOperationsIntegrity, reshuffleByTimestampAndIndex, } from "../../../document-model/src/document/utils/document-helpers.js";
4
- import { buildOperations } from "./utils.js";
5
- describe("merge", () => {
6
- const scenarios = [
7
- {
8
- // [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, 2:0, B3:0, B4:2, B5:0]
9
- // GC => [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, B4:2, B5:0]
10
- // Split => [0:0, 1:0] + [2:0, A3:0, A4:0, A5:0] + [B4:2, B5:0]
11
- // Reshuffle(6:4) => [6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
12
- // merge => [0:0, 1:0, 6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
13
- title: "case 1",
14
- targetOperations: [
15
- {
16
- index: 0,
17
- skip: 0,
18
- type: "OP_0",
19
- timestamp: "2021-01-01T00:00:00.000Z",
20
- },
21
- {
22
- index: 1,
23
- skip: 0,
24
- type: "OP_1",
25
- timestamp: "2021-01-02T00:00:00.000Z",
26
- },
27
- {
28
- index: 2,
29
- skip: 0,
30
- type: "OP_A_2",
31
- timestamp: "2021-01-03T00:00:00.000Z",
32
- },
33
- {
34
- index: 3,
35
- skip: 0,
36
- type: "OP_A_3",
37
- timestamp: "2021-01-04T00:00:00.000Z",
38
- },
39
- {
40
- index: 4,
41
- skip: 0,
42
- type: "OP_A_4",
43
- timestamp: "2021-01-09T00:00:00.000Z",
44
- },
45
- {
46
- index: 5,
47
- skip: 0,
48
- type: "OP_A_5",
49
- timestamp: "2021-01-10T00:00:00.000Z",
50
- },
51
- ],
52
- mergeOperations: [
53
- {
54
- index: 0,
55
- skip: 0,
56
- type: "OP_0",
57
- timestamp: "2021-01-01T00:00:00.000Z",
58
- },
59
- {
60
- index: 1,
61
- skip: 0,
62
- type: "OP_1",
63
- timestamp: "2021-01-02T00:00:00.000Z",
64
- },
65
- {
66
- index: 2,
67
- skip: 0,
68
- type: "OP_B_2",
69
- timestamp: "2021-01-05T00:00:00.000Z",
70
- },
71
- {
72
- index: 3,
73
- skip: 0,
74
- type: "OP_B_3",
75
- timestamp: "2021-01-06T00:00:00.000Z",
76
- },
77
- {
78
- index: 4,
79
- skip: 2,
80
- type: "OP_B_4",
81
- timestamp: "2021-01-07T00:00:00.000Z",
82
- },
83
- {
84
- index: 5,
85
- skip: 0,
86
- type: "OP_B_5",
87
- timestamp: "2021-01-08T00:00:00.000Z",
88
- },
89
- ],
90
- expected: [
91
- {
92
- index: 0,
93
- skip: 0,
94
- type: "OP_0",
95
- timestamp: "2021-01-01T00:00:00.000Z",
96
- },
97
- {
98
- index: 1,
99
- skip: 0,
100
- type: "OP_1",
101
- timestamp: "2021-01-02T00:00:00.000Z",
102
- },
103
- {
104
- index: 6,
105
- skip: 4,
106
- type: "OP_A_2",
107
- timestamp: "2021-01-03T00:00:00.000Z",
108
- },
109
- {
110
- index: 7,
111
- skip: 0,
112
- type: "OP_A_3",
113
- timestamp: "2021-01-04T00:00:00.000Z",
114
- },
115
- {
116
- index: 8,
117
- skip: 0,
118
- type: "OP_B_4",
119
- timestamp: "2021-01-07T00:00:00.000Z",
120
- },
121
- {
122
- index: 9,
123
- skip: 0,
124
- type: "OP_A_4",
125
- timestamp: "2021-01-09T00:00:00.000Z",
126
- },
127
- {
128
- index: 10,
129
- skip: 0,
130
- type: "OP_B_5",
131
- timestamp: "2021-01-08T00:00:00.000Z",
132
- },
133
- {
134
- index: 11,
135
- skip: 0,
136
- type: "OP_A_5",
137
- timestamp: "2021-01-10T00:00:00.000Z",
138
- },
139
- ],
140
- },
141
- {
142
- // [0:0, 1:0, 2:0, A3:0, A4:0, A5:1] + [0:0, 1:0, 2:0, B3:0, B4:2, B5:0]
143
- // GC => [0:0, 1:0, 2:0, A3:0, A5:1] + [0:0, 1:0, B4:2, B5:0]
144
- // Split => [0:0, 1:0] + [2:0, A3:0, A5:1] + [B4:2, B5:0]
145
- // Reshuffle(6:4) => [6:4, 7:0, 8:0, 9:0, 10:0]
146
- // merge => [0:0, 1:0, 6:4, 7:0, 8:0, 9:0, 10:0]
147
- title: "case 2",
148
- targetOperations: [
149
- {
150
- index: 0,
151
- skip: 0,
152
- type: "OP_0",
153
- timestamp: "2021-01-01T00:00:00.000Z",
154
- },
155
- {
156
- index: 1,
157
- skip: 0,
158
- type: "OP_1",
159
- timestamp: "2021-01-02T00:00:00.000Z",
160
- },
161
- {
162
- index: 2,
163
- skip: 0,
164
- type: "OP_A_2",
165
- timestamp: "2021-01-03T00:00:00.000Z",
166
- },
167
- {
168
- index: 3,
169
- skip: 0,
170
- type: "OP_A_3",
171
- timestamp: "2021-01-04T00:00:00.000Z",
172
- },
173
- {
174
- index: 4,
175
- skip: 0,
176
- type: "OP_A_4",
177
- timestamp: "2021-01-05T00:00:00.000Z",
178
- },
179
- {
180
- index: 5,
181
- skip: 1,
182
- type: "OP_A_5",
183
- timestamp: "2021-01-06T00:00:00.000Z",
184
- },
185
- ],
186
- mergeOperations: [
187
- {
188
- index: 0,
189
- skip: 0,
190
- type: "OP_0",
191
- timestamp: "2021-01-01T00:00:00.000Z",
192
- },
193
- {
194
- index: 1,
195
- skip: 0,
196
- type: "OP_1",
197
- timestamp: "2021-01-02T00:00:00.000Z",
198
- },
199
- {
200
- index: 2,
201
- skip: 0,
202
- type: "OP_B_2",
203
- timestamp: "2021-01-07T00:00:00.000Z",
204
- },
205
- {
206
- index: 3,
207
- skip: 0,
208
- type: "OP_B_3",
209
- timestamp: "2021-01-08T00:00:00.000Z",
210
- },
211
- {
212
- index: 4,
213
- skip: 2,
214
- type: "OP_B_4",
215
- timestamp: "2021-01-09T00:00:00.000Z",
216
- },
217
- {
218
- index: 5,
219
- skip: 0,
220
- type: "OP_B_5",
221
- timestamp: "2021-01-10T00:00:00.000Z",
222
- },
223
- ],
224
- expected: [
225
- {
226
- index: 0,
227
- skip: 0,
228
- type: "OP_0",
229
- timestamp: "2021-01-01T00:00:00.000Z",
230
- },
231
- {
232
- index: 1,
233
- skip: 0,
234
- type: "OP_1",
235
- timestamp: "2021-01-02T00:00:00.000Z",
236
- },
237
- {
238
- index: 6,
239
- skip: 4,
240
- type: "OP_A_2",
241
- timestamp: "2021-01-03T00:00:00.000Z",
242
- },
243
- {
244
- index: 7,
245
- skip: 0,
246
- type: "OP_A_3",
247
- timestamp: "2021-01-04T00:00:00.000Z",
248
- },
249
- {
250
- index: 8,
251
- skip: 0,
252
- type: "OP_B_4",
253
- timestamp: "2021-01-09T00:00:00.000Z",
254
- },
255
- {
256
- index: 9,
257
- skip: 0,
258
- type: "OP_A_5",
259
- timestamp: "2021-01-06T00:00:00.000Z",
260
- },
261
- {
262
- index: 10,
263
- skip: 0,
264
- type: "OP_B_5",
265
- timestamp: "2021-01-10T00:00:00.000Z",
266
- },
267
- ],
268
- },
269
- // [0:0, 1:1, 2:0, A3:0, A4:0, A5:1] + [0:0, 1:1, 2:0, B3:0, B4:2, B5:0]
270
- // GC => [1:1, 2:0, A3:0, A5:1] + [1:1, B4:2, B5:0]
271
- // Split => [1:1] + [2:0, A3:0, A5:1] + [B4:2, B5:0]
272
- // Reshuffle(6:4) => [6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
273
- // merge => [1:1, 6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
274
- {
275
- title: "case 3",
276
- targetOperations: [
277
- {
278
- index: 0,
279
- skip: 0,
280
- type: "OP_0",
281
- timestamp: "2021-01-01T00:00:00.000Z",
282
- },
283
- {
284
- index: 1,
285
- skip: 1,
286
- type: "OP_1",
287
- timestamp: "2021-01-02T00:00:00.000Z",
288
- },
289
- {
290
- index: 2,
291
- skip: 0,
292
- type: "OP_A_2",
293
- timestamp: "2021-01-03T00:00:00.000Z",
294
- },
295
- {
296
- index: 3,
297
- skip: 0,
298
- type: "OP_A_3",
299
- timestamp: "2021-01-04T00:00:00.000Z",
300
- },
301
- {
302
- index: 4,
303
- skip: 0,
304
- type: "OP_A_4",
305
- timestamp: "2021-01-05T00:00:00.000Z",
306
- },
307
- {
308
- index: 5,
309
- skip: 1,
310
- type: "OP_A_5",
311
- timestamp: "2021-01-06T00:00:00.000Z",
312
- },
313
- ],
314
- mergeOperations: [
315
- {
316
- index: 0,
317
- skip: 0,
318
- type: "OP_0",
319
- timestamp: "2021-01-01T00:00:00.000Z",
320
- },
321
- {
322
- index: 1,
323
- skip: 1,
324
- type: "OP_1",
325
- timestamp: "2021-01-02T00:00:00.000Z",
326
- },
327
- {
328
- index: 2,
329
- skip: 0,
330
- type: "OP_B_2",
331
- timestamp: "2021-01-07T00:00:00.000Z",
332
- },
333
- {
334
- index: 3,
335
- skip: 0,
336
- type: "OP_B_3",
337
- timestamp: "2021-01-08T00:00:00.000Z",
338
- },
339
- {
340
- index: 4,
341
- skip: 2,
342
- type: "OP_B_4",
343
- timestamp: "2021-01-09T00:00:00.000Z",
344
- },
345
- {
346
- index: 5,
347
- skip: 0,
348
- type: "OP_B_5",
349
- timestamp: "2021-01-10T00:00:00.000Z",
350
- },
351
- ],
352
- expected: [
353
- {
354
- index: 1,
355
- skip: 1,
356
- type: "OP_1",
357
- timestamp: "2021-01-02T00:00:00.000Z",
358
- },
359
- {
360
- index: 6,
361
- skip: 4,
362
- type: "OP_A_2",
363
- timestamp: "2021-01-03T00:00:00.000Z",
364
- },
365
- {
366
- index: 7,
367
- skip: 0,
368
- type: "OP_A_3",
369
- timestamp: "2021-01-04T00:00:00.000Z",
370
- },
371
- {
372
- index: 8,
373
- skip: 0,
374
- type: "OP_B_4",
375
- timestamp: "2021-01-09T00:00:00.000Z",
376
- },
377
- {
378
- index: 9,
379
- skip: 0,
380
- type: "OP_A_5",
381
- timestamp: "2021-01-06T00:00:00.000Z",
382
- },
383
- {
384
- index: 10,
385
- skip: 0,
386
- type: "OP_B_5",
387
- timestamp: "2021-01-10T00:00:00.000Z",
388
- },
389
- ],
390
- },
391
- // [0:0, 1:1, 2:0, A3:0, A4:0, A5:1] + [0:0, 1:1, 2:0]
392
- // GC => [1:1, 2:0, A3:0, A5:1] + [1:1, 2:0]
393
- // Split => [1:1, 2:0] + [A3:0, A5:1] + []
394
- // Reshuffle(6:3) => [6:3, 7:0]
395
- // merge => [1:1, 2:0, 6:3, 7:0]
396
- {
397
- title: "case 4 (empty merge ops)",
398
- targetOperations: [
399
- {
400
- index: 0,
401
- skip: 0,
402
- type: "OP_0",
403
- timestamp: "2021-01-01T00:00:00.000Z",
404
- },
405
- {
406
- index: 1,
407
- skip: 1,
408
- type: "OP_1",
409
- timestamp: "2021-01-02T00:00:00.000Z",
410
- },
411
- {
412
- index: 2,
413
- skip: 0,
414
- type: "OP_2",
415
- timestamp: "2021-01-03T00:00:00.000Z",
416
- },
417
- {
418
- index: 3,
419
- skip: 0,
420
- type: "OP_A_3",
421
- timestamp: "2021-01-04T00:00:00.000Z",
422
- },
423
- {
424
- index: 4,
425
- skip: 0,
426
- type: "OP_A_4",
427
- timestamp: "2021-01-05T00:00:00.000Z",
428
- },
429
- {
430
- index: 5,
431
- skip: 1,
432
- type: "OP_A_5",
433
- timestamp: "2021-01-06T00:00:00.000Z",
434
- },
435
- ],
436
- mergeOperations: [
437
- {
438
- index: 0,
439
- skip: 0,
440
- type: "OP_0",
441
- timestamp: "2021-01-01T00:00:00.000Z",
442
- },
443
- {
444
- index: 1,
445
- skip: 1,
446
- type: "OP_1",
447
- timestamp: "2021-01-02T00:00:00.000Z",
448
- },
449
- {
450
- index: 2,
451
- skip: 0,
452
- type: "OP_2",
453
- timestamp: "2021-01-03T00:00:00.000Z",
454
- },
455
- ],
456
- expected: [
457
- {
458
- index: 1,
459
- skip: 1,
460
- type: "OP_1",
461
- timestamp: "2021-01-02T00:00:00.000Z",
462
- },
463
- {
464
- index: 2,
465
- skip: 0,
466
- type: "OP_2",
467
- timestamp: "2021-01-03T00:00:00.000Z",
468
- },
469
- {
470
- index: 6,
471
- skip: 3,
472
- type: "OP_A_3",
473
- timestamp: "2021-01-04T00:00:00.000Z",
474
- },
475
- {
476
- index: 7,
477
- skip: 0,
478
- type: "OP_A_5",
479
- timestamp: "2021-01-06T00:00:00.000Z",
480
- },
481
- ],
482
- },
483
- // [0:0, 1:1, 2:0] + [0:0, 1:1, 2:0, A3:0, A4:0, A5:1]
484
- // GC => [1:1, 2:0] + [1:1, 2:0, A3:0, A5:1]
485
- // Split => [1:1, 2:0] + [] + [A3:0, A5:1]
486
- // Reshuffle(6:3) => [6:3, 7:0, 8:0]
487
- // merge => [1:1, 2:0, 6:3, 7:0, 8:0]
488
- {
489
- title: "case 5 (empty target ops)",
490
- targetOperations: [
491
- {
492
- index: 0,
493
- skip: 0,
494
- type: "OP_0",
495
- timestamp: "2021-01-01T00:00:00.000Z",
496
- },
497
- {
498
- index: 1,
499
- skip: 1,
500
- type: "OP_1",
501
- timestamp: "2021-01-02T00:00:00.000Z",
502
- },
503
- {
504
- index: 2,
505
- skip: 0,
506
- type: "OP_2",
507
- timestamp: "2021-01-03T00:00:00.000Z",
508
- },
509
- ],
510
- mergeOperations: [
511
- {
512
- index: 0,
513
- skip: 0,
514
- type: "OP_0",
515
- timestamp: "2021-01-01T00:00:00.000Z",
516
- },
517
- {
518
- index: 1,
519
- skip: 1,
520
- type: "OP_1",
521
- timestamp: "2021-01-02T00:00:00.000Z",
522
- },
523
- {
524
- index: 2,
525
- skip: 0,
526
- type: "OP_2",
527
- timestamp: "2021-01-03T00:00:00.000Z",
528
- },
529
- {
530
- index: 3,
531
- skip: 0,
532
- type: "OP_B_3",
533
- timestamp: "2021-01-04T00:00:00.000Z",
534
- },
535
- {
536
- index: 4,
537
- skip: 0,
538
- type: "OP_B_4",
539
- timestamp: "2021-01-05T00:00:00.000Z",
540
- },
541
- {
542
- index: 5,
543
- skip: 1,
544
- type: "OP_B_5",
545
- timestamp: "2021-01-06T00:00:00.000Z",
546
- },
547
- ],
548
- expected: [
549
- {
550
- index: 1,
551
- skip: 1,
552
- type: "OP_1",
553
- timestamp: "2021-01-02T00:00:00.000Z",
554
- },
555
- {
556
- index: 2,
557
- skip: 0,
558
- type: "OP_2",
559
- timestamp: "2021-01-03T00:00:00.000Z",
560
- },
561
- {
562
- index: 6,
563
- skip: 3,
564
- type: "OP_B_3",
565
- timestamp: "2021-01-04T00:00:00.000Z",
566
- },
567
- {
568
- index: 7,
569
- skip: 0,
570
- type: "OP_B_5",
571
- timestamp: "2021-01-06T00:00:00.000Z",
572
- },
573
- ],
574
- },
575
- // [A0:0, A1:0, A2:1, A3:0] + [B0:0, B1:0]
576
- // GC => [A0:0, A2:1, A3:0] + [B0:0, B1:0]
577
- // Split => [] + [A0:0, A2:1, A3:0] + [B0:0, B1:0]
578
- // Reshuffle(4:4) => [4:4, 5:0, 6:0, 7:0, 8:0]
579
- // merge => [4:4, 5:0, 6:0, 7:0, 8:0]
580
- {
581
- title: "case 6 (empty common, longer target)",
582
- targetOperations: [
583
- {
584
- index: 0,
585
- skip: 0,
586
- type: "OP_A0",
587
- timestamp: "2021-01-01T00:00:00.000Z",
588
- },
589
- {
590
- index: 1,
591
- skip: 0,
592
- type: "OP_A1",
593
- timestamp: "2021-01-02T00:00:00.000Z",
594
- },
595
- {
596
- index: 2,
597
- skip: 1,
598
- type: "OP_A2",
599
- timestamp: "2021-01-03T00:00:00.000Z",
600
- },
601
- {
602
- index: 3,
603
- skip: 0,
604
- type: "OP_A3",
605
- timestamp: "2021-01-04T00:00:00.000Z",
606
- },
607
- ],
608
- mergeOperations: [
609
- {
610
- index: 0,
611
- skip: 0,
612
- type: "OP_B0",
613
- timestamp: "2021-01-01T00:00:00.000Z",
614
- },
615
- {
616
- index: 1,
617
- skip: 0,
618
- type: "OP_B1",
619
- timestamp: "2021-01-02T00:00:00.000Z",
620
- },
621
- ],
622
- expected: [
623
- {
624
- index: 4,
625
- skip: 4,
626
- type: "OP_A0",
627
- timestamp: "2021-01-01T00:00:00.000Z",
628
- },
629
- {
630
- index: 5,
631
- skip: 0,
632
- type: "OP_B0",
633
- timestamp: "2021-01-01T00:00:00.000Z",
634
- },
635
- {
636
- index: 6,
637
- skip: 0,
638
- type: "OP_B1",
639
- timestamp: "2021-01-02T00:00:00.000Z",
640
- },
641
- {
642
- index: 7,
643
- skip: 0,
644
- type: "OP_A2",
645
- timestamp: "2021-01-03T00:00:00.000Z",
646
- },
647
- {
648
- index: 8,
649
- skip: 0,
650
- type: "OP_A3",
651
- timestamp: "2021-01-04T00:00:00.000Z",
652
- },
653
- ],
654
- },
655
- // [A0:0, A1:0] + [B0:0, B1:0, B2:1, B3:0]
656
- // GC => [A0:0, A1:0] + [B0:0, B2:1, B3:0]
657
- // Split => [] + [A0:0, A1:0] + [B0:0, B2:1, B3:0]
658
- // Reshuffle(4:3) => [4:4, 5:0, 6:0, 7:0, 8:0]
659
- // merge => [4:4, 5:0, 6:0, 7:0, 8:0]
660
- {
661
- title: "case 7 (empty common, longer merge)",
662
- targetOperations: [
663
- {
664
- index: 0,
665
- skip: 0,
666
- type: "OP_A0",
667
- timestamp: "2021-01-01T00:00:00.000Z",
668
- },
669
- {
670
- index: 1,
671
- skip: 0,
672
- type: "OP_A1",
673
- timestamp: "2021-01-02T00:00:00.000Z",
674
- },
675
- ],
676
- mergeOperations: [
677
- {
678
- index: 0,
679
- skip: 0,
680
- type: "OP_B0",
681
- timestamp: "2021-01-01T00:00:00.000Z",
682
- },
683
- {
684
- index: 1,
685
- skip: 0,
686
- type: "OP_B1",
687
- timestamp: "2021-01-02T00:00:00.000Z",
688
- },
689
- {
690
- index: 2,
691
- skip: 1,
692
- type: "OP_B2",
693
- timestamp: "2021-01-03T00:00:00.000Z",
694
- },
695
- {
696
- index: 3,
697
- skip: 0,
698
- type: "OP_B3",
699
- timestamp: "2021-01-04T00:00:00.000Z",
700
- },
701
- ],
702
- expected: [
703
- {
704
- index: 4,
705
- skip: 4,
706
- type: "OP_A0",
707
- timestamp: "2021-01-01T00:00:00.000Z",
708
- },
709
- {
710
- index: 5,
711
- skip: 0,
712
- type: "OP_B0",
713
- timestamp: "2021-01-01T00:00:00.000Z",
714
- },
715
- {
716
- index: 6,
717
- skip: 0,
718
- type: "OP_A1",
719
- timestamp: "2021-01-02T00:00:00.000Z",
720
- },
721
- {
722
- index: 7,
723
- skip: 0,
724
- type: "OP_B2",
725
- timestamp: "2021-01-03T00:00:00.000Z",
726
- },
727
- {
728
- index: 8,
729
- skip: 0,
730
- type: "OP_B3",
731
- timestamp: "2021-01-04T00:00:00.000Z",
732
- },
733
- ],
734
- },
735
- // [] + []
736
- // GC => [] + []
737
- // Split => [] + [] + []
738
- // Reshuffle(0:0) => []
739
- // merge => []
740
- {
741
- title: "case 8 (all empty)",
742
- targetOperations: [],
743
- mergeOperations: [],
744
- expected: [],
745
- },
746
- ];
747
- it.each(scenarios)("should merge conlficted operations into a new operations history: $title", (testInput) => {
748
- const tergetOperations = buildOperations(testInput.targetOperations);
749
- const mergeOperations = buildOperations(testInput.mergeOperations);
750
- const result = merge(tergetOperations, mergeOperations, reshuffleByTimestampAndIndex);
751
- expect(result.length).toBe(testInput.expected.length);
752
- expect(result).toMatchObject(testInput.expected);
753
- const check = checkCleanedOperationsIntegrity(result);
754
- expect(check).toHaveLength(0);
755
- });
756
- });
757
- //# sourceMappingURL=merge.test.js.map