document-drive 6.0.0-dev.104 → 6.0.0-dev.106

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 (564) hide show
  1. package/dist/chunk-CX61OkwL.mjs +16 -0
  2. package/dist/index-HOJm2mt2.d.mts +205 -0
  3. package/dist/index-HOJm2mt2.d.mts.map +1 -0
  4. package/dist/index.d.ts +1944 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +5170 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/storage/filesystem.d.mts +49 -0
  9. package/dist/storage/filesystem.d.mts.map +1 -0
  10. package/dist/storage/filesystem.mjs +371 -0
  11. package/dist/storage/filesystem.mjs.map +1 -0
  12. package/dist/storage/prisma.d.mts +11508 -0
  13. package/dist/storage/prisma.d.mts.map +1 -0
  14. package/dist/storage/prisma.mjs +7582 -0
  15. package/dist/storage/prisma.mjs.map +1 -0
  16. package/dist/utils-BI7cwVSp.mjs +74 -0
  17. package/dist/utils-BI7cwVSp.mjs.map +1 -0
  18. package/package.json +21 -38
  19. package/dist/prisma/schema.prisma +0 -93
  20. package/dist/src/cache/index.d.ts +0 -4
  21. package/dist/src/cache/index.d.ts.map +0 -1
  22. package/dist/src/cache/index.js +0 -4
  23. package/dist/src/cache/index.js.map +0 -1
  24. package/dist/src/cache/lru.d.ts +0 -22
  25. package/dist/src/cache/lru.d.ts.map +0 -1
  26. package/dist/src/cache/lru.js +0 -40
  27. package/dist/src/cache/lru.js.map +0 -1
  28. package/dist/src/cache/memory.d.ts +0 -27
  29. package/dist/src/cache/memory.d.ts.map +0 -1
  30. package/dist/src/cache/memory.js +0 -104
  31. package/dist/src/cache/memory.js.map +0 -1
  32. package/dist/src/cache/redis.d.ts +0 -22
  33. package/dist/src/cache/redis.d.ts.map +0 -1
  34. package/dist/src/cache/redis.js +0 -91
  35. package/dist/src/cache/redis.js.map +0 -1
  36. package/dist/src/cache/types.d.ts +0 -37
  37. package/dist/src/cache/types.d.ts.map +0 -1
  38. package/dist/src/cache/types.js +0 -2
  39. package/dist/src/cache/types.js.map +0 -1
  40. package/dist/src/cache/util.d.ts +0 -3
  41. package/dist/src/cache/util.d.ts.map +0 -1
  42. package/dist/src/cache/util.js +0 -16
  43. package/dist/src/cache/util.js.map +0 -1
  44. package/dist/src/drive-document-model/constants.d.ts +0 -2
  45. package/dist/src/drive-document-model/constants.d.ts.map +0 -1
  46. package/dist/src/drive-document-model/constants.js +0 -2
  47. package/dist/src/drive-document-model/constants.js.map +0 -1
  48. package/dist/src/drive-document-model/gen/creators.d.ts +0 -3
  49. package/dist/src/drive-document-model/gen/creators.d.ts.map +0 -1
  50. package/dist/src/drive-document-model/gen/creators.js +0 -3
  51. package/dist/src/drive-document-model/gen/creators.js.map +0 -1
  52. package/dist/src/drive-document-model/gen/document-model.d.ts +0 -3
  53. package/dist/src/drive-document-model/gen/document-model.d.ts.map +0 -1
  54. package/dist/src/drive-document-model/gen/document-model.js +0 -210
  55. package/dist/src/drive-document-model/gen/document-model.js.map +0 -1
  56. package/dist/src/drive-document-model/gen/document-schema.d.ts +0 -68
  57. package/dist/src/drive-document-model/gen/document-schema.d.ts.map +0 -1
  58. package/dist/src/drive-document-model/gen/document-schema.js +0 -35
  59. package/dist/src/drive-document-model/gen/document-schema.js.map +0 -1
  60. package/dist/src/drive-document-model/gen/document-type.d.ts +0 -2
  61. package/dist/src/drive-document-model/gen/document-type.d.ts.map +0 -1
  62. package/dist/src/drive-document-model/gen/document-type.js +0 -2
  63. package/dist/src/drive-document-model/gen/document-type.js.map +0 -1
  64. package/dist/src/drive-document-model/gen/drive/actions.d.ts +0 -46
  65. package/dist/src/drive-document-model/gen/drive/actions.d.ts.map +0 -1
  66. package/dist/src/drive-document-model/gen/drive/actions.js +0 -2
  67. package/dist/src/drive-document-model/gen/drive/actions.js.map +0 -1
  68. package/dist/src/drive-document-model/gen/drive/creators.d.ts +0 -10
  69. package/dist/src/drive-document-model/gen/drive/creators.d.ts.map +0 -1
  70. package/dist/src/drive-document-model/gen/drive/creators.js +0 -11
  71. package/dist/src/drive-document-model/gen/drive/creators.js.map +0 -1
  72. package/dist/src/drive-document-model/gen/drive/error.d.ts +0 -2
  73. package/dist/src/drive-document-model/gen/drive/error.d.ts.map +0 -1
  74. package/dist/src/drive-document-model/gen/drive/error.js +0 -2
  75. package/dist/src/drive-document-model/gen/drive/error.js.map +0 -1
  76. package/dist/src/drive-document-model/gen/drive/index.d.ts +0 -2
  77. package/dist/src/drive-document-model/gen/drive/index.d.ts.map +0 -1
  78. package/dist/src/drive-document-model/gen/drive/index.js +0 -2
  79. package/dist/src/drive-document-model/gen/drive/index.js.map +0 -1
  80. package/dist/src/drive-document-model/gen/drive/types.d.ts +0 -2
  81. package/dist/src/drive-document-model/gen/drive/types.d.ts.map +0 -1
  82. package/dist/src/drive-document-model/gen/drive/types.js +0 -2
  83. package/dist/src/drive-document-model/gen/drive/types.js.map +0 -1
  84. package/dist/src/drive-document-model/gen/index.d.ts +0 -10
  85. package/dist/src/drive-document-model/gen/index.d.ts.map +0 -1
  86. package/dist/src/drive-document-model/gen/index.js +0 -10
  87. package/dist/src/drive-document-model/gen/index.js.map +0 -1
  88. package/dist/src/drive-document-model/gen/node/actions.d.ts +0 -41
  89. package/dist/src/drive-document-model/gen/node/actions.d.ts.map +0 -1
  90. package/dist/src/drive-document-model/gen/node/actions.js +0 -2
  91. package/dist/src/drive-document-model/gen/node/actions.js.map +0 -1
  92. package/dist/src/drive-document-model/gen/node/creators.d.ts +0 -13
  93. package/dist/src/drive-document-model/gen/node/creators.d.ts.map +0 -1
  94. package/dist/src/drive-document-model/gen/node/creators.js +0 -17
  95. package/dist/src/drive-document-model/gen/node/creators.js.map +0 -1
  96. package/dist/src/drive-document-model/gen/node/error.d.ts +0 -2
  97. package/dist/src/drive-document-model/gen/node/error.d.ts.map +0 -1
  98. package/dist/src/drive-document-model/gen/node/error.js +0 -2
  99. package/dist/src/drive-document-model/gen/node/error.js.map +0 -1
  100. package/dist/src/drive-document-model/gen/node/index.d.ts +0 -2
  101. package/dist/src/drive-document-model/gen/node/index.d.ts.map +0 -1
  102. package/dist/src/drive-document-model/gen/node/index.js +0 -2
  103. package/dist/src/drive-document-model/gen/node/index.js.map +0 -1
  104. package/dist/src/drive-document-model/gen/node/types.d.ts +0 -2
  105. package/dist/src/drive-document-model/gen/node/types.d.ts.map +0 -1
  106. package/dist/src/drive-document-model/gen/node/types.js +0 -2
  107. package/dist/src/drive-document-model/gen/node/types.js.map +0 -1
  108. package/dist/src/drive-document-model/gen/ph-factories.d.ts +0 -12
  109. package/dist/src/drive-document-model/gen/ph-factories.d.ts.map +0 -1
  110. package/dist/src/drive-document-model/gen/ph-factories.js +0 -46
  111. package/dist/src/drive-document-model/gen/ph-factories.js.map +0 -1
  112. package/dist/src/drive-document-model/gen/reducer.d.ts +0 -4
  113. package/dist/src/drive-document-model/gen/reducer.d.ts.map +0 -1
  114. package/dist/src/drive-document-model/gen/reducer.js +0 -76
  115. package/dist/src/drive-document-model/gen/reducer.js.map +0 -1
  116. package/dist/src/drive-document-model/gen/schema/index.d.ts +0 -2
  117. package/dist/src/drive-document-model/gen/schema/index.d.ts.map +0 -1
  118. package/dist/src/drive-document-model/gen/schema/index.js +0 -2
  119. package/dist/src/drive-document-model/gen/schema/index.js.map +0 -1
  120. package/dist/src/drive-document-model/gen/schema/types.d.ts +0 -283
  121. package/dist/src/drive-document-model/gen/schema/types.d.ts.map +0 -1
  122. package/dist/src/drive-document-model/gen/schema/types.js +0 -2
  123. package/dist/src/drive-document-model/gen/schema/types.js.map +0 -1
  124. package/dist/src/drive-document-model/gen/schema/zod.d.ts +0 -67
  125. package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +0 -1
  126. package/dist/src/drive-document-model/gen/schema/zod.js +0 -229
  127. package/dist/src/drive-document-model/gen/schema/zod.js.map +0 -1
  128. package/dist/src/drive-document-model/gen/types.d.ts +0 -21
  129. package/dist/src/drive-document-model/gen/types.d.ts.map +0 -1
  130. package/dist/src/drive-document-model/gen/types.js +0 -4
  131. package/dist/src/drive-document-model/gen/types.js.map +0 -1
  132. package/dist/src/drive-document-model/gen/utils.d.ts +0 -13
  133. package/dist/src/drive-document-model/gen/utils.d.ts.map +0 -1
  134. package/dist/src/drive-document-model/gen/utils.js +0 -48
  135. package/dist/src/drive-document-model/gen/utils.js.map +0 -1
  136. package/dist/src/drive-document-model/index.d.ts +0 -5
  137. package/dist/src/drive-document-model/index.d.ts.map +0 -1
  138. package/dist/src/drive-document-model/index.js +0 -5
  139. package/dist/src/drive-document-model/index.js.map +0 -1
  140. package/dist/src/drive-document-model/module.d.ts +0 -3
  141. package/dist/src/drive-document-model/module.d.ts.map +0 -1
  142. package/dist/src/drive-document-model/module.js +0 -24
  143. package/dist/src/drive-document-model/module.js.map +0 -1
  144. package/dist/src/drive-document-model/src/index.d.ts +0 -3
  145. package/dist/src/drive-document-model/src/index.d.ts.map +0 -1
  146. package/dist/src/drive-document-model/src/index.js +0 -3
  147. package/dist/src/drive-document-model/src/index.js.map +0 -1
  148. package/dist/src/drive-document-model/src/reducers/drive.d.ts +0 -8
  149. package/dist/src/drive-document-model/src/reducers/drive.d.ts.map +0 -1
  150. package/dist/src/drive-document-model/src/reducers/drive.js +0 -66
  151. package/dist/src/drive-document-model/src/reducers/drive.js.map +0 -1
  152. package/dist/src/drive-document-model/src/reducers/index.d.ts +0 -3
  153. package/dist/src/drive-document-model/src/reducers/index.d.ts.map +0 -1
  154. package/dist/src/drive-document-model/src/reducers/index.js +0 -3
  155. package/dist/src/drive-document-model/src/reducers/index.js.map +0 -1
  156. package/dist/src/drive-document-model/src/reducers/node.d.ts +0 -8
  157. package/dist/src/drive-document-model/src/reducers/node.d.ts.map +0 -1
  158. package/dist/src/drive-document-model/src/reducers/node.js +0 -187
  159. package/dist/src/drive-document-model/src/reducers/node.js.map +0 -1
  160. package/dist/src/drive-document-model/src/tests/actions.test.d.ts +0 -2
  161. package/dist/src/drive-document-model/src/tests/actions.test.d.ts.map +0 -1
  162. package/dist/src/drive-document-model/src/tests/actions.test.js +0 -197
  163. package/dist/src/drive-document-model/src/tests/actions.test.js.map +0 -1
  164. package/dist/src/drive-document-model/src/tests/base.test.d.ts +0 -2
  165. package/dist/src/drive-document-model/src/tests/base.test.d.ts.map +0 -1
  166. package/dist/src/drive-document-model/src/tests/base.test.js +0 -44
  167. package/dist/src/drive-document-model/src/tests/base.test.js.map +0 -1
  168. package/dist/src/drive-document-model/src/tests/document-model.test.d.ts +0 -6
  169. package/dist/src/drive-document-model/src/tests/document-model.test.d.ts.map +0 -1
  170. package/dist/src/drive-document-model/src/tests/document-model.test.js +0 -19
  171. package/dist/src/drive-document-model/src/tests/document-model.test.js.map +0 -1
  172. package/dist/src/drive-document-model/src/tests/drive.test.d.ts +0 -6
  173. package/dist/src/drive-document-model/src/tests/drive.test.d.ts.map +0 -1
  174. package/dist/src/drive-document-model/src/tests/drive.test.js +0 -38
  175. package/dist/src/drive-document-model/src/tests/drive.test.js.map +0 -1
  176. package/dist/src/drive-document-model/src/tests/generate-mock.d.ts +0 -3
  177. package/dist/src/drive-document-model/src/tests/generate-mock.d.ts.map +0 -1
  178. package/dist/src/drive-document-model/src/tests/generate-mock.js +0 -5
  179. package/dist/src/drive-document-model/src/tests/generate-mock.js.map +0 -1
  180. package/dist/src/drive-document-model/src/tests/node.test.d.ts +0 -6
  181. package/dist/src/drive-document-model/src/tests/node.test.d.ts.map +0 -1
  182. package/dist/src/drive-document-model/src/tests/node.test.js +0 -343
  183. package/dist/src/drive-document-model/src/tests/node.test.js.map +0 -1
  184. package/dist/src/drive-document-model/src/tests/test-factories.d.ts +0 -9
  185. package/dist/src/drive-document-model/src/tests/test-factories.d.ts.map +0 -1
  186. package/dist/src/drive-document-model/src/tests/test-factories.js +0 -17
  187. package/dist/src/drive-document-model/src/tests/test-factories.js.map +0 -1
  188. package/dist/src/drive-document-model/src/tests/utils.test.d.ts +0 -2
  189. package/dist/src/drive-document-model/src/tests/utils.test.d.ts.map +0 -1
  190. package/dist/src/drive-document-model/src/tests/utils.test.js +0 -232
  191. package/dist/src/drive-document-model/src/tests/utils.test.js.map +0 -1
  192. package/dist/src/drive-document-model/src/types.d.ts +0 -8
  193. package/dist/src/drive-document-model/src/types.d.ts.map +0 -1
  194. package/dist/src/drive-document-model/src/types.js +0 -2
  195. package/dist/src/drive-document-model/src/types.js.map +0 -1
  196. package/dist/src/drive-document-model/src/utils.d.ts +0 -23
  197. package/dist/src/drive-document-model/src/utils.d.ts.map +0 -1
  198. package/dist/src/drive-document-model/src/utils.js +0 -102
  199. package/dist/src/drive-document-model/src/utils.js.map +0 -1
  200. package/dist/src/drive-document-model/types.d.ts +0 -10
  201. package/dist/src/drive-document-model/types.d.ts.map +0 -1
  202. package/dist/src/drive-document-model/types.js +0 -3
  203. package/dist/src/drive-document-model/types.js.map +0 -1
  204. package/dist/src/index.d.ts +0 -17
  205. package/dist/src/index.d.ts.map +0 -1
  206. package/dist/src/index.js +0 -17
  207. package/dist/src/index.js.map +0 -1
  208. package/dist/src/processors/index.d.ts +0 -4
  209. package/dist/src/processors/index.d.ts.map +0 -1
  210. package/dist/src/processors/index.js +0 -4
  211. package/dist/src/processors/index.js.map +0 -1
  212. package/dist/src/processors/processor-manager.d.ts +0 -21
  213. package/dist/src/processors/processor-manager.d.ts.map +0 -1
  214. package/dist/src/processors/processor-manager.js +0 -104
  215. package/dist/src/processors/processor-manager.js.map +0 -1
  216. package/dist/src/processors/relational.d.ts +0 -49
  217. package/dist/src/processors/relational.d.ts.map +0 -1
  218. package/dist/src/processors/relational.js +0 -57
  219. package/dist/src/processors/relational.js.map +0 -1
  220. package/dist/src/processors/types.d.ts +0 -94
  221. package/dist/src/processors/types.d.ts.map +0 -1
  222. package/dist/src/processors/types.js +0 -2
  223. package/dist/src/processors/types.js.map +0 -1
  224. package/dist/src/processors/utils.d.ts +0 -29
  225. package/dist/src/processors/utils.d.ts.map +0 -1
  226. package/dist/src/processors/utils.js +0 -72
  227. package/dist/src/processors/utils.js.map +0 -1
  228. package/dist/src/queue/base.d.ts +0 -22
  229. package/dist/src/queue/base.d.ts.map +0 -1
  230. package/dist/src/queue/base.js +0 -54
  231. package/dist/src/queue/base.js.map +0 -1
  232. package/dist/src/queue/event.d.ts +0 -40
  233. package/dist/src/queue/event.d.ts.map +0 -1
  234. package/dist/src/queue/event.js +0 -226
  235. package/dist/src/queue/event.js.map +0 -1
  236. package/dist/src/queue/index.d.ts +0 -5
  237. package/dist/src/queue/index.d.ts.map +0 -1
  238. package/dist/src/queue/index.js +0 -5
  239. package/dist/src/queue/index.js.map +0 -1
  240. package/dist/src/queue/redis.d.ts +0 -2
  241. package/dist/src/queue/redis.d.ts.map +0 -1
  242. package/dist/src/queue/redis.js +0 -123
  243. package/dist/src/queue/redis.js.map +0 -1
  244. package/dist/src/queue/types.d.ts +0 -59
  245. package/dist/src/queue/types.d.ts.map +0 -1
  246. package/dist/src/queue/types.js +0 -2
  247. package/dist/src/queue/types.js.map +0 -1
  248. package/dist/src/queue/utils.d.ts +0 -5
  249. package/dist/src/queue/utils.d.ts.map +0 -1
  250. package/dist/src/queue/utils.js +0 -10
  251. package/dist/src/queue/utils.js.map +0 -1
  252. package/dist/src/read-mode/errors.d.ts +0 -12
  253. package/dist/src/read-mode/errors.d.ts.map +0 -1
  254. package/dist/src/read-mode/errors.js +0 -18
  255. package/dist/src/read-mode/errors.js.map +0 -1
  256. package/dist/src/read-mode/index.d.ts +0 -4
  257. package/dist/src/read-mode/index.d.ts.map +0 -1
  258. package/dist/src/read-mode/index.js +0 -4
  259. package/dist/src/read-mode/index.js.map +0 -1
  260. package/dist/src/read-mode/server.d.ts +0 -3
  261. package/dist/src/read-mode/server.d.ts.map +0 -1
  262. package/dist/src/read-mode/server.js +0 -78
  263. package/dist/src/read-mode/server.js.map +0 -1
  264. package/dist/src/read-mode/service.d.ts +0 -17
  265. package/dist/src/read-mode/service.d.ts.map +0 -1
  266. package/dist/src/read-mode/service.js +0 -119
  267. package/dist/src/read-mode/service.js.map +0 -1
  268. package/dist/src/read-mode/types.d.ts +0 -31
  269. package/dist/src/read-mode/types.d.ts.map +0 -1
  270. package/dist/src/read-mode/types.js +0 -2
  271. package/dist/src/read-mode/types.js.map +0 -1
  272. package/dist/src/server/base-server.d.ts +0 -177
  273. package/dist/src/server/base-server.d.ts.map +0 -1
  274. package/dist/src/server/base-server.js +0 -2000
  275. package/dist/src/server/base-server.js.map +0 -1
  276. package/dist/src/server/builder.d.ts +0 -27
  277. package/dist/src/server/builder.d.ts.map +0 -1
  278. package/dist/src/server/builder.js +0 -97
  279. package/dist/src/server/builder.js.map +0 -1
  280. package/dist/src/server/error.d.ts +0 -34
  281. package/dist/src/server/error.d.ts.map +0 -1
  282. package/dist/src/server/error.js +0 -56
  283. package/dist/src/server/error.js.map +0 -1
  284. package/dist/src/server/event-emitter.d.ts +0 -8
  285. package/dist/src/server/event-emitter.d.ts.map +0 -1
  286. package/dist/src/server/event-emitter.js +0 -11
  287. package/dist/src/server/event-emitter.js.map +0 -1
  288. package/dist/src/server/index.d.ts +0 -10
  289. package/dist/src/server/index.d.ts.map +0 -1
  290. package/dist/src/server/index.js +0 -10
  291. package/dist/src/server/index.js.map +0 -1
  292. package/dist/src/server/listener/constants.d.ts +0 -4
  293. package/dist/src/server/listener/constants.d.ts.map +0 -1
  294. package/dist/src/server/listener/constants.js +0 -4
  295. package/dist/src/server/listener/constants.js.map +0 -1
  296. package/dist/src/server/listener/index.d.ts +0 -4
  297. package/dist/src/server/listener/index.d.ts.map +0 -1
  298. package/dist/src/server/listener/index.js +0 -4
  299. package/dist/src/server/listener/index.js.map +0 -1
  300. package/dist/src/server/listener/listener-manager.d.ts +0 -28
  301. package/dist/src/server/listener/listener-manager.d.ts.map +0 -1
  302. package/dist/src/server/listener/listener-manager.js +0 -415
  303. package/dist/src/server/listener/listener-manager.js.map +0 -1
  304. package/dist/src/server/listener/util.d.ts +0 -2
  305. package/dist/src/server/listener/util.d.ts.map +0 -1
  306. package/dist/src/server/listener/util.js +0 -23
  307. package/dist/src/server/listener/util.js.map +0 -1
  308. package/dist/src/server/sync-manager.d.ts +0 -28
  309. package/dist/src/server/sync-manager.d.ts.map +0 -1
  310. package/dist/src/server/sync-manager.js +0 -222
  311. package/dist/src/server/sync-manager.js.map +0 -1
  312. package/dist/src/server/sync-unit-map.d.ts +0 -116
  313. package/dist/src/server/sync-unit-map.d.ts.map +0 -1
  314. package/dist/src/server/sync-unit-map.js +0 -233
  315. package/dist/src/server/sync-unit-map.js.map +0 -1
  316. package/dist/src/server/transmitter/constants.d.ts +0 -2
  317. package/dist/src/server/transmitter/constants.d.ts.map +0 -1
  318. package/dist/src/server/transmitter/constants.js +0 -2
  319. package/dist/src/server/transmitter/constants.js.map +0 -1
  320. package/dist/src/server/transmitter/factory.d.ts +0 -7
  321. package/dist/src/server/transmitter/factory.d.ts.map +0 -1
  322. package/dist/src/server/transmitter/factory.js +0 -25
  323. package/dist/src/server/transmitter/factory.js.map +0 -1
  324. package/dist/src/server/transmitter/index.d.ts +0 -6
  325. package/dist/src/server/transmitter/index.d.ts.map +0 -1
  326. package/dist/src/server/transmitter/index.js +0 -5
  327. package/dist/src/server/transmitter/index.js.map +0 -1
  328. package/dist/src/server/transmitter/internal.d.ts +0 -12
  329. package/dist/src/server/transmitter/internal.d.ts.map +0 -1
  330. package/dist/src/server/transmitter/internal.js +0 -113
  331. package/dist/src/server/transmitter/internal.js.map +0 -1
  332. package/dist/src/server/transmitter/pull-responder.d.ts +0 -30
  333. package/dist/src/server/transmitter/pull-responder.d.ts.map +0 -1
  334. package/dist/src/server/transmitter/pull-responder.js +0 -543
  335. package/dist/src/server/transmitter/pull-responder.js.map +0 -1
  336. package/dist/src/server/transmitter/switchboard-push.d.ts +0 -11
  337. package/dist/src/server/transmitter/switchboard-push.d.ts.map +0 -1
  338. package/dist/src/server/transmitter/switchboard-push.js +0 -130
  339. package/dist/src/server/transmitter/switchboard-push.js.map +0 -1
  340. package/dist/src/server/transmitter/types.d.ts +0 -53
  341. package/dist/src/server/transmitter/types.d.ts.map +0 -1
  342. package/dist/src/server/transmitter/types.js +0 -2
  343. package/dist/src/server/transmitter/types.js.map +0 -1
  344. package/dist/src/server/types.d.ts +0 -419
  345. package/dist/src/server/types.d.ts.map +0 -1
  346. package/dist/src/server/types.js +0 -10
  347. package/dist/src/server/types.js.map +0 -1
  348. package/dist/src/server/utils.d.ts +0 -19
  349. package/dist/src/server/utils.d.ts.map +0 -1
  350. package/dist/src/server/utils.js +0 -110
  351. package/dist/src/server/utils.js.map +0 -1
  352. package/dist/src/storage/browser.d.ts +0 -52
  353. package/dist/src/storage/browser.d.ts.map +0 -1
  354. package/dist/src/storage/browser.js +0 -430
  355. package/dist/src/storage/browser.js.map +0 -1
  356. package/dist/src/storage/filesystem.d.ts +0 -45
  357. package/dist/src/storage/filesystem.d.ts.map +0 -1
  358. package/dist/src/storage/filesystem.js +0 -457
  359. package/dist/src/storage/filesystem.js.map +0 -1
  360. package/dist/src/storage/index.d.ts +0 -5
  361. package/dist/src/storage/index.d.ts.map +0 -1
  362. package/dist/src/storage/index.js +0 -5
  363. package/dist/src/storage/index.js.map +0 -1
  364. package/dist/src/storage/ipfs.d.ts +0 -2
  365. package/dist/src/storage/ipfs.d.ts.map +0 -1
  366. package/dist/src/storage/ipfs.js +0 -491
  367. package/dist/src/storage/ipfs.js.map +0 -1
  368. package/dist/src/storage/memory.d.ts +0 -42
  369. package/dist/src/storage/memory.d.ts.map +0 -1
  370. package/dist/src/storage/memory.js +0 -355
  371. package/dist/src/storage/memory.js.map +0 -1
  372. package/dist/src/storage/path-encoding.d.ts +0 -21
  373. package/dist/src/storage/path-encoding.d.ts.map +0 -1
  374. package/dist/src/storage/path-encoding.js +0 -53
  375. package/dist/src/storage/path-encoding.js.map +0 -1
  376. package/dist/src/storage/prisma/client/default.d.ts +0 -1
  377. package/dist/src/storage/prisma/client/default.js +0 -1
  378. package/dist/src/storage/prisma/client/edge.d.ts +0 -1
  379. package/dist/src/storage/prisma/client/edge.js +0 -263
  380. package/dist/src/storage/prisma/client/index-browser.js +0 -246
  381. package/dist/src/storage/prisma/client/index.d.ts +0 -10318
  382. package/dist/src/storage/prisma/client/index.js +0 -292
  383. package/dist/src/storage/prisma/client/libquery_engine-darwin-arm64.dylib.node +0 -0
  384. package/dist/src/storage/prisma/client/libquery_engine-debian-openssl-3.0.x.so.node +0 -0
  385. package/dist/src/storage/prisma/client/libquery_engine-linux-musl.so.node +0 -0
  386. package/dist/src/storage/prisma/client/package.json +0 -84
  387. package/dist/src/storage/prisma/client/runtime/edge-esm.js +0 -31
  388. package/dist/src/storage/prisma/client/runtime/edge.js +0 -31
  389. package/dist/src/storage/prisma/client/runtime/index-browser.d.ts +0 -365
  390. package/dist/src/storage/prisma/client/runtime/index-browser.js +0 -13
  391. package/dist/src/storage/prisma/client/runtime/library.d.ts +0 -3273
  392. package/dist/src/storage/prisma/client/runtime/library.js +0 -143
  393. package/dist/src/storage/prisma/client/runtime/react-native.js +0 -80
  394. package/dist/src/storage/prisma/client/runtime/wasm.js +0 -32
  395. package/dist/src/storage/prisma/client/schema.prisma +0 -93
  396. package/dist/src/storage/prisma/client/wasm.d.ts +0 -1
  397. package/dist/src/storage/prisma/client/wasm.js +0 -246
  398. package/dist/src/storage/prisma/factory.d.ts +0 -10
  399. package/dist/src/storage/prisma/factory.d.ts.map +0 -1
  400. package/dist/src/storage/prisma/factory.js +0 -23
  401. package/dist/src/storage/prisma/factory.js.map +0 -1
  402. package/dist/src/storage/prisma/index.d.ts +0 -3
  403. package/dist/src/storage/prisma/index.d.ts.map +0 -1
  404. package/dist/src/storage/prisma/index.js +0 -3
  405. package/dist/src/storage/prisma/index.js.map +0 -1
  406. package/dist/src/storage/prisma/prisma.d.ts +0 -73
  407. package/dist/src/storage/prisma/prisma.d.ts.map +0 -1
  408. package/dist/src/storage/prisma/prisma.js +0 -760
  409. package/dist/src/storage/prisma/prisma.js.map +0 -1
  410. package/dist/src/storage/types.d.ts +0 -187
  411. package/dist/src/storage/types.d.ts.map +0 -1
  412. package/dist/src/storage/types.js +0 -2
  413. package/dist/src/storage/types.js.map +0 -1
  414. package/dist/src/storage/utils.d.ts +0 -6
  415. package/dist/src/storage/utils.d.ts.map +0 -1
  416. package/dist/src/storage/utils.js +0 -33
  417. package/dist/src/storage/utils.js.map +0 -1
  418. package/dist/src/utils/default-drives-manager.d.ts +0 -18
  419. package/dist/src/utils/default-drives-manager.d.ts.map +0 -1
  420. package/dist/src/utils/default-drives-manager.js +0 -208
  421. package/dist/src/utils/default-drives-manager.js.map +0 -1
  422. package/dist/src/utils/errors.d.ts +0 -5
  423. package/dist/src/utils/errors.d.ts.map +0 -1
  424. package/dist/src/utils/errors.js +0 -10
  425. package/dist/src/utils/errors.js.map +0 -1
  426. package/dist/src/utils/gql-transformations.d.ts +0 -32
  427. package/dist/src/utils/gql-transformations.d.ts.map +0 -1
  428. package/dist/src/utils/gql-transformations.js +0 -39
  429. package/dist/src/utils/gql-transformations.js.map +0 -1
  430. package/dist/src/utils/graphql.d.ts +0 -13
  431. package/dist/src/utils/graphql.d.ts.map +0 -1
  432. package/dist/src/utils/graphql.js +0 -196
  433. package/dist/src/utils/graphql.js.map +0 -1
  434. package/dist/src/utils/index.d.ts +0 -9
  435. package/dist/src/utils/index.d.ts.map +0 -1
  436. package/dist/src/utils/index.js +0 -9
  437. package/dist/src/utils/index.js.map +0 -1
  438. package/dist/src/utils/logger.d.ts +0 -3
  439. package/dist/src/utils/logger.d.ts.map +0 -1
  440. package/dist/src/utils/logger.js +0 -2
  441. package/dist/src/utils/logger.js.map +0 -1
  442. package/dist/src/utils/migrations.d.ts +0 -4
  443. package/dist/src/utils/migrations.d.ts.map +0 -1
  444. package/dist/src/utils/migrations.js +0 -112
  445. package/dist/src/utils/migrations.js.map +0 -1
  446. package/dist/src/utils/misc.d.ts +0 -21
  447. package/dist/src/utils/misc.d.ts.map +0 -1
  448. package/dist/src/utils/misc.js +0 -55
  449. package/dist/src/utils/misc.js.map +0 -1
  450. package/dist/src/utils/run-asap.d.ts +0 -8
  451. package/dist/src/utils/run-asap.d.ts.map +0 -1
  452. package/dist/src/utils/run-asap.js +0 -120
  453. package/dist/src/utils/run-asap.js.map +0 -1
  454. package/dist/src/utils/test.d.ts +0 -63
  455. package/dist/src/utils/test.d.ts.map +0 -1
  456. package/dist/src/utils/test.js +0 -161
  457. package/dist/src/utils/test.js.map +0 -1
  458. package/dist/src/utils/types.d.ts +0 -44
  459. package/dist/src/utils/types.d.ts.map +0 -1
  460. package/dist/src/utils/types.js +0 -2
  461. package/dist/src/utils/types.js.map +0 -1
  462. package/dist/test/benchmarks/getDrive.json +0 -10
  463. package/dist/test/benchmarks/processOperations.bench.d.ts +0 -2
  464. package/dist/test/benchmarks/processOperations.bench.d.ts.map +0 -1
  465. package/dist/test/benchmarks/processOperations.bench.js +0 -148
  466. package/dist/test/benchmarks/processOperations.bench.js.map +0 -1
  467. package/dist/test/benchmarks/queue.bench.d.ts +0 -2
  468. package/dist/test/benchmarks/queue.bench.d.ts.map +0 -1
  469. package/dist/test/benchmarks/queue.bench.js +0 -55
  470. package/dist/test/benchmarks/queue.bench.js.map +0 -1
  471. package/dist/test/benchmarks/strands.small.json +0 -37085
  472. package/dist/test/cache.test.d.ts +0 -2
  473. package/dist/test/cache.test.d.ts.map +0 -1
  474. package/dist/test/cache.test.js +0 -276
  475. package/dist/test/cache.test.js.map +0 -1
  476. package/dist/test/default-remote-drives.test.d.ts +0 -2
  477. package/dist/test/default-remote-drives.test.d.ts.map +0 -1
  478. package/dist/test/default-remote-drives.test.js +0 -445
  479. package/dist/test/default-remote-drives.test.js.map +0 -1
  480. package/dist/test/drive-operations.test.d.ts +0 -2
  481. package/dist/test/drive-operations.test.d.ts.map +0 -1
  482. package/dist/test/drive-operations.test.js +0 -134
  483. package/dist/test/drive-operations.test.js.map +0 -1
  484. package/dist/test/dual-action-create.test.d.ts +0 -2
  485. package/dist/test/dual-action-create.test.d.ts.map +0 -1
  486. package/dist/test/dual-action-create.test.js +0 -187
  487. package/dist/test/dual-action-create.test.js.map +0 -1
  488. package/dist/test/dual-action-migration.test.d.ts +0 -2
  489. package/dist/test/dual-action-migration.test.d.ts.map +0 -1
  490. package/dist/test/dual-action-migration.test.js +0 -348
  491. package/dist/test/dual-action-migration.test.js.map +0 -1
  492. package/dist/test/graphql.test.d.ts +0 -2
  493. package/dist/test/graphql.test.d.ts.map +0 -1
  494. package/dist/test/graphql.test.js +0 -9
  495. package/dist/test/graphql.test.js.map +0 -1
  496. package/dist/test/internal-listener.test.d.ts +0 -2
  497. package/dist/test/internal-listener.test.d.ts.map +0 -1
  498. package/dist/test/internal-listener.test.js +0 -262
  499. package/dist/test/internal-listener.test.js.map +0 -1
  500. package/dist/test/path-encoding.test.d.ts +0 -2
  501. package/dist/test/path-encoding.test.d.ts.map +0 -1
  502. package/dist/test/path-encoding.test.js +0 -116
  503. package/dist/test/path-encoding.test.js.map +0 -1
  504. package/dist/test/queue.test.d.ts +0 -2
  505. package/dist/test/queue.test.d.ts.map +0 -1
  506. package/dist/test/queue.test.js +0 -325
  507. package/dist/test/queue.test.js.map +0 -1
  508. package/dist/test/reactor.test.d.ts +0 -2
  509. package/dist/test/reactor.test.d.ts.map +0 -1
  510. package/dist/test/reactor.test.js +0 -32
  511. package/dist/test/reactor.test.js.map +0 -1
  512. package/dist/test/read-mode.test.d.ts +0 -2
  513. package/dist/test/read-mode.test.d.ts.map +0 -1
  514. package/dist/test/read-mode.test.js +0 -569
  515. package/dist/test/read-mode.test.js.map +0 -1
  516. package/dist/test/server/driveOperationsConflictResolution.test.d.ts +0 -2
  517. package/dist/test/server/driveOperationsConflictResolution.test.d.ts.map +0 -1
  518. package/dist/test/server/driveOperationsConflictResolution.test.js +0 -486
  519. package/dist/test/server/driveOperationsConflictResolution.test.js.map +0 -1
  520. package/dist/test/server/mergeOperations.test.d.ts +0 -2
  521. package/dist/test/server/mergeOperations.test.d.ts.map +0 -1
  522. package/dist/test/server/mergeOperations.test.js +0 -131
  523. package/dist/test/server/mergeOperations.test.js.map +0 -1
  524. package/dist/test/server/processOperations.test.d.ts +0 -2
  525. package/dist/test/server/processOperations.test.d.ts.map +0 -1
  526. package/dist/test/server/processOperations.test.js +0 -392
  527. package/dist/test/server/processOperations.test.js.map +0 -1
  528. package/dist/test/server.test.d.ts +0 -2
  529. package/dist/test/server.test.d.ts.map +0 -1
  530. package/dist/test/server.test.js +0 -957
  531. package/dist/test/server.test.js.map +0 -1
  532. package/dist/test/signature-migration.test.d.ts +0 -2
  533. package/dist/test/signature-migration.test.d.ts.map +0 -1
  534. package/dist/test/signature-migration.test.js +0 -241
  535. package/dist/test/signature-migration.test.js.map +0 -1
  536. package/dist/test/storage.test.d.ts +0 -2
  537. package/dist/test/storage.test.d.ts.map +0 -1
  538. package/dist/test/storage.test.js +0 -457
  539. package/dist/test/storage.test.js.map +0 -1
  540. package/dist/test/switchboard-push-listener.test.d.ts +0 -2
  541. package/dist/test/switchboard-push-listener.test.d.ts.map +0 -1
  542. package/dist/test/switchboard-push-listener.test.js +0 -133
  543. package/dist/test/switchboard-push-listener.test.js.map +0 -1
  544. package/dist/test/sync-manager.test.d.ts +0 -2
  545. package/dist/test/sync-manager.test.d.ts.map +0 -1
  546. package/dist/test/sync-manager.test.js +0 -354
  547. package/dist/test/sync-manager.test.js.map +0 -1
  548. package/dist/test/undo-redo-clipboard.test.d.ts +0 -2
  549. package/dist/test/undo-redo-clipboard.test.d.ts.map +0 -1
  550. package/dist/test/undo-redo-clipboard.test.js +0 -108
  551. package/dist/test/undo-redo-clipboard.test.js.map +0 -1
  552. package/dist/test/utils.test.d.ts +0 -2
  553. package/dist/test/utils.test.d.ts.map +0 -1
  554. package/dist/test/utils.test.js +0 -86
  555. package/dist/test/utils.test.js.map +0 -1
  556. package/dist/test/vitest-setup.d.ts +0 -2
  557. package/dist/test/vitest-setup.d.ts.map +0 -1
  558. package/dist/test/vitest-setup.js +0 -5
  559. package/dist/test/vitest-setup.js.map +0 -1
  560. package/dist/tsconfig.tsbuildinfo +0 -1
  561. package/dist/vitest.config.d.ts +0 -3
  562. package/dist/vitest.config.d.ts.map +0 -1
  563. package/dist/vitest.config.js +0 -28
  564. package/dist/vitest.config.js.map +0 -1
@@ -1,486 +0,0 @@
1
- import { addFolder, BrowserStorage, copyNode, DriveBasicClient, driveCreateDocument, driveDocumentModelModule, driveDocumentReducer, generateNodesCopy, InMemoryCache, MemoryStorage, ReactorBuilder, } from "document-drive";
2
- import { FilesystemStorage } from "document-drive/storage/filesystem";
3
- import { PrismaStorage } from "document-drive/storage/prisma";
4
- import { PrismaClient } from "document-drive/storage/prisma/client";
5
- import { documentModelDocumentModelModule } from "document-model";
6
- import { existsSync, rmSync } from "fs";
7
- import path from "path";
8
- import { beforeEach, describe, expect, it } from "vitest";
9
- function sortNodes(nodes) {
10
- return nodes.sort((a, b) => (a.id < b.id ? -1 : 1));
11
- }
12
- /**
13
- * Currently we do not have good standalone tests for operations storage. The
14
- * storage tests in storage.test.ts test the IDocumentStorage interface, which
15
- * is not the same.
16
- *
17
- * We should test these in isolation.
18
- */
19
- const storageImplementations = [
20
- ["Memory Storage", () => Promise.resolve(new MemoryStorage())],
21
- [
22
- "File System Storage",
23
- () => {
24
- const basePath = path.join(__dirname, "test-storage");
25
- // delete the base path
26
- if (existsSync(basePath)) {
27
- rmSync(basePath, { recursive: true, force: true });
28
- }
29
- return Promise.resolve(new FilesystemStorage(basePath));
30
- },
31
- ],
32
- [
33
- "Browser Storage",
34
- async () => {
35
- const storage = new BrowserStorage();
36
- await storage.clear();
37
- return storage;
38
- },
39
- ],
40
- [
41
- "PrismaStorage",
42
- async () => {
43
- const prisma = new PrismaClient();
44
- await prisma.$executeRawUnsafe('DELETE FROM "Attachment";');
45
- await prisma.$executeRawUnsafe('DELETE FROM "Operation";');
46
- await prisma.$executeRawUnsafe('DELETE FROM "Document";');
47
- await prisma.$executeRawUnsafe('DELETE FROM "DriveDocument";');
48
- await prisma.$executeRawUnsafe('DELETE FROM "Drive";');
49
- return new PrismaStorage(prisma, new InMemoryCache());
50
- },
51
- ],
52
- /*[
53
- "IPFSStorage",
54
- async () => {
55
- const helia = await createHelia();
56
- return new IPFSStorage(helia);
57
- },
58
- ],*/
59
- ];
60
- describe.each(storageImplementations)("%s", async (_, buildStorage) => {
61
- describe("Drive Operations", () => {
62
- const documentModels = [
63
- documentModelDocumentModelModule,
64
- driveDocumentModelModule,
65
- ];
66
- let server;
67
- beforeEach(async () => {
68
- const storage = await buildStorage();
69
- server = new ReactorBuilder(documentModels)
70
- .withStorage(storage)
71
- .build();
72
- await server.initialize();
73
- });
74
- let driveId;
75
- async function buildDrive() {
76
- const drive = await server.addDrive({
77
- global: { name: "test" },
78
- local: {
79
- availableOffline: false,
80
- sharingType: "PRIVATE",
81
- listeners: [],
82
- triggers: [],
83
- },
84
- });
85
- driveId = drive.header.id;
86
- return await server.getDrive(driveId);
87
- }
88
- it("boilerplate is accurate", async () => {
89
- const a = await server.addDrive({
90
- global: { name: "test" },
91
- local: {
92
- availableOffline: false,
93
- sharingType: "PRIVATE",
94
- listeners: [],
95
- triggers: [],
96
- },
97
- });
98
- const b = await server.getDrive(a.header.id);
99
- expect(a).toMatchObject(b);
100
- });
101
- it("should not re-apply existing operations", async () => {
102
- const initialDriveDocument = await buildDrive();
103
- let pushOperationResult;
104
- const client1 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
105
- const client2 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
106
- client1.dispatchDriveAction(addFolder({ id: "1", name: "test1" }));
107
- pushOperationResult = await client1.pushOperationsToServer();
108
- expect(pushOperationResult.status).toBe("SUCCESS");
109
- client2.dispatchDriveAction(addFolder({ id: "2", name: "test2" }));
110
- pushOperationResult = await client2.pushOperationsToServer();
111
- expect(pushOperationResult.status).toBe("SUCCESS");
112
- await client1.syncDocument();
113
- expect(client1.getUnsyncedOperations()).toMatchObject([]);
114
- const syncedOperations = client1.getDocument().operations
115
- .global;
116
- client1.setUnsyncedOperations(syncedOperations);
117
- pushOperationResult = await client1.pushOperationsToServer();
118
- const drive = await server.getDrive(driveId);
119
- expect(drive.state.global.nodes.length).toBe(2);
120
- expect(drive.state.global.nodes).toMatchObject([
121
- { id: "1", name: "test1" },
122
- { id: "2", name: "test2" },
123
- ]);
124
- expect(drive.operations.global.length).toBe(2);
125
- expect(drive.operations.global).toMatchObject([
126
- {
127
- action: {
128
- type: "ADD_FOLDER",
129
- input: { id: "1", name: "test1" },
130
- scope: "global",
131
- },
132
- index: 1,
133
- skip: 1,
134
- },
135
- {
136
- action: {
137
- type: "ADD_FOLDER",
138
- input: { id: "2", name: "test2" },
139
- scope: "global",
140
- },
141
- index: 2,
142
- skip: 0,
143
- },
144
- ]);
145
- });
146
- it("should resolve conflicts when 5 clients are pushing changes to the same drive", async () => {
147
- const initialDriveDocument = await buildDrive();
148
- let pushOperationResult;
149
- driveCreateDocument();
150
- const client1 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
151
- const client2 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
152
- const client3 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
153
- const client4 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
154
- const client5 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
155
- // Client1 Add folder and push to server
156
- client1.dispatchDriveAction(addFolder({ id: "1", name: "test1" }));
157
- pushOperationResult = await client1.pushOperationsToServer();
158
- expect(pushOperationResult.status).toBe("SUCCESS");
159
- // Client2 Add folder and push to server
160
- client2.dispatchDriveAction(addFolder({ id: "2", name: "test2" }));
161
- pushOperationResult = await client2.pushOperationsToServer();
162
- expect(pushOperationResult.status).toBe("SUCCESS");
163
- // Client1 sync with server
164
- await client1.syncDocument();
165
- expect(client1.getUnsyncedOperations()).toMatchObject([]);
166
- // Clien1 push already synced operations to server (this should not create new operations in the server document)
167
- const syncedOperations = client1.getDocument().operations
168
- .global;
169
- client1.setUnsyncedOperations(syncedOperations);
170
- pushOperationResult = await client1.pushOperationsToServer();
171
- // Client3 sync with server
172
- await client3.syncDocument();
173
- // Client3 add folder and push to server
174
- client3.dispatchDriveAction(addFolder({ id: "3", name: "test3" }));
175
- pushOperationResult = await client3.pushOperationsToServer();
176
- expect(pushOperationResult.status).toBe("SUCCESS");
177
- // Client4 sync with server (partially syncs at this point)
178
- await client4.syncDocument();
179
- // Client3 add folder and push to server
180
- client3.dispatchDriveAction(addFolder({ id: "4", name: "test4" }));
181
- pushOperationResult = await client3.pushOperationsToServer();
182
- expect(pushOperationResult.status).toBe("SUCCESS");
183
- // Client4 add folder and push to server
184
- client4.dispatchDriveAction(addFolder({ id: "5", name: "test5" }));
185
- pushOperationResult = await client4.pushOperationsToServer();
186
- expect(pushOperationResult.status).toBe("SUCCESS");
187
- // Client5 add folder and push to server
188
- client5.dispatchDriveAction(addFolder({ id: "6", name: "test6" }));
189
- pushOperationResult = await client5.pushOperationsToServer();
190
- expect(pushOperationResult.status).toBe("SUCCESS");
191
- // Check if the operations are in the server
192
- const drive = await server.getDrive(driveId);
193
- expect(drive.state.global.nodes.length).toBe(6);
194
- expect(drive.state.global.nodes).toMatchObject([
195
- { id: "1", name: "test1" },
196
- { id: "2", name: "test2" },
197
- { id: "3", name: "test3" },
198
- { id: "4", name: "test4" },
199
- { id: "5", name: "test5" },
200
- { id: "6", name: "test6" },
201
- ]);
202
- expect(drive.operations.global.slice(-6)).toMatchObject([
203
- {
204
- action: {
205
- type: "ADD_FOLDER",
206
- input: { id: "1", name: "test1" },
207
- scope: "global",
208
- },
209
- index: 7,
210
- skip: 7,
211
- },
212
- {
213
- action: {
214
- type: "ADD_FOLDER",
215
- input: { id: "2", name: "test2" },
216
- scope: "global",
217
- },
218
- index: 8,
219
- skip: 0,
220
- },
221
- {
222
- action: {
223
- type: "ADD_FOLDER",
224
- input: { id: "3", name: "test3" },
225
- scope: "global",
226
- },
227
- index: 9,
228
- skip: 0,
229
- },
230
- {
231
- action: {
232
- type: "ADD_FOLDER",
233
- input: { id: "4", name: "test4" },
234
- scope: "global",
235
- },
236
- index: 10,
237
- skip: 0,
238
- },
239
- {
240
- action: {
241
- type: "ADD_FOLDER",
242
- input: { id: "5", name: "test5" },
243
- scope: "global",
244
- },
245
- index: 11,
246
- skip: 0,
247
- },
248
- {
249
- action: {
250
- type: "ADD_FOLDER",
251
- input: { id: "6", name: "test6" },
252
- scope: "global",
253
- },
254
- index: 12,
255
- skip: 0,
256
- },
257
- ]);
258
- });
259
- it("Should not throw an error when adding the same folder twice (same client)", async () => {
260
- const initialDriveDocument = await buildDrive();
261
- let pushOperationResult;
262
- driveCreateDocument();
263
- const client1 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
264
- const addFolderAction = addFolder({
265
- id: "1",
266
- name: "test1",
267
- });
268
- client1.dispatchDriveAction(addFolderAction);
269
- pushOperationResult = await client1.pushOperationsToServer();
270
- expect(pushOperationResult.status).toBe("SUCCESS");
271
- client1.dispatchDriveAction(addFolderAction);
272
- pushOperationResult = await client1.pushOperationsToServer();
273
- expect(pushOperationResult.status).toBe("SUCCESS");
274
- expect(client1.getDocument().operations.global.length).toBe(2);
275
- expect(client1.getDocument().operations.global[1]).toMatchObject({
276
- action: {
277
- type: "ADD_FOLDER",
278
- input: { id: "1", name: "test1" },
279
- scope: "global",
280
- },
281
- index: 1,
282
- skip: 0,
283
- error: "Node with id 1 already exists!",
284
- });
285
- const drive = await server.getDrive(driveId);
286
- expect(drive.state.global.nodes.length).toBe(1);
287
- expect(drive.state.global.nodes).toMatchObject([
288
- { id: "1", name: "test1" },
289
- ]);
290
- expect(drive.operations.global.length).toBe(2);
291
- expect(drive.operations.global).toMatchObject([
292
- {
293
- action: {
294
- type: "ADD_FOLDER",
295
- input: { id: "1", name: "test1" },
296
- scope: "global",
297
- },
298
- index: 0,
299
- skip: 0,
300
- },
301
- {
302
- action: {
303
- type: "ADD_FOLDER",
304
- input: { id: "1", name: "test1" },
305
- scope: "global",
306
- },
307
- index: 1,
308
- skip: 0,
309
- error: "Node with id 1 already exists!",
310
- },
311
- ]);
312
- });
313
- it("Should not throw an error when adding the same folder twice (2 clients)", { retry: 10 }, async () => {
314
- const initialDriveDocument = await buildDrive();
315
- let pushOperationResult;
316
- driveCreateDocument();
317
- const client1 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
318
- const client2 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
319
- client1.dispatchDriveAction(addFolder({
320
- id: "1",
321
- name: "test1",
322
- }));
323
- pushOperationResult = await client1.pushOperationsToServer();
324
- expect(pushOperationResult.status).toBe("SUCCESS");
325
- expect(client1.getDocument().operations.global.length).toBe(1);
326
- expect(client1.getDocument().operations.global[0]).toMatchObject({
327
- action: {
328
- type: "ADD_FOLDER",
329
- input: { id: "1", name: "test1" },
330
- scope: "global",
331
- },
332
- index: 0,
333
- skip: 0,
334
- error: undefined,
335
- });
336
- client2.dispatchDriveAction(addFolder({
337
- id: "1",
338
- name: "test2",
339
- }));
340
- pushOperationResult = await client2.pushOperationsToServer();
341
- expect(pushOperationResult.status).toBe("SUCCESS");
342
- expect(client2.getDocument().operations.global.length).toBe(1);
343
- expect(client2.getDocument().operations.global[0]).toMatchObject({
344
- action: {
345
- type: "ADD_FOLDER",
346
- input: { id: "1", name: "test2" },
347
- scope: "global",
348
- },
349
- index: 0,
350
- skip: 0,
351
- error: undefined,
352
- });
353
- const drive = await server.getDrive(driveId);
354
- expect(drive.state.global.nodes.length).toBe(1);
355
- expect(drive.state.global.nodes).toMatchObject([
356
- { id: "1", name: "test1" },
357
- ]);
358
- expect(drive.operations.global.length).toBe(2);
359
- expect(drive.operations.global).toMatchObject([
360
- {
361
- action: {
362
- type: "ADD_FOLDER",
363
- input: { id: "1", name: "test1" },
364
- scope: "global",
365
- },
366
- error: undefined,
367
- index: 1,
368
- skip: 1,
369
- },
370
- {
371
- action: {
372
- type: "ADD_FOLDER",
373
- input: { id: "1", name: "test2" },
374
- scope: "global",
375
- },
376
- index: 2,
377
- skip: 0,
378
- error: "Node with id 1 already exists!",
379
- },
380
- ]);
381
- });
382
- // TODO: This test is flaky.
383
- it("should resolve conflicts without duplicate ids when copy folders", async () => {
384
- return;
385
- let idCounter = 0;
386
- const generateId = () => {
387
- idCounter++;
388
- return `${idCounter}`;
389
- };
390
- const initialDriveDocument = await buildDrive();
391
- let pushOperationResult;
392
- driveCreateDocument();
393
- const client1 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
394
- const client2 = new DriveBasicClient(server, driveId, initialDriveDocument, driveDocumentReducer);
395
- const idFolder1 = generateId();
396
- const idFolder2 = generateId();
397
- expect(idFolder1).toBe("1");
398
- expect(idFolder2).toBe("2");
399
- // Add folders in client 1 and push to server
400
- client1.dispatchDriveAction(addFolder({ id: idFolder1, name: "1" }));
401
- pushOperationResult = await client1.pushOperationsToServer();
402
- expect(pushOperationResult.status).toBe("SUCCESS");
403
- client1.dispatchDriveAction(addFolder({
404
- id: idFolder2,
405
- name: "2",
406
- parentFolder: idFolder1,
407
- }));
408
- pushOperationResult = await client1.pushOperationsToServer();
409
- expect(pushOperationResult.status).toBe("SUCCESS");
410
- // Sync client 2 with server
411
- await client2.syncDocument();
412
- // Copy folder 1 to root in client 1 and push to server
413
- const copyNodesInput = generateNodesCopy({
414
- srcId: idFolder1,
415
- targetName: "1",
416
- targetParentFolder: undefined,
417
- }, generateId, client1.getDocument().state.global.nodes);
418
- const copyActions = copyNodesInput.map((copyNodeInput) => copyNode(copyNodeInput));
419
- for (const copyAction of copyActions) {
420
- client1.dispatchDriveAction(copyAction);
421
- }
422
- pushOperationResult = await client1.pushOperationsToServer();
423
- expect(pushOperationResult.status).toBe("SUCCESS");
424
- let drive = await server.getDrive(driveId);
425
- expect(drive.state.global.nodes.length).toBe(4);
426
- expect(drive.state.global.nodes).toMatchObject([
427
- { id: "1", name: "1", parentFolder: null },
428
- { id: "2", name: "2", parentFolder: "1" },
429
- { id: "3", name: "1 (copy) 1", parentFolder: null },
430
- { id: "4", name: "2", parentFolder: "3" },
431
- ]);
432
- /* CLIENT 2 */
433
- // generate copy nodes input for client 2
434
- const copyNodesInput2 = generateNodesCopy({
435
- srcId: idFolder1,
436
- targetName: "1",
437
- targetParentFolder: undefined,
438
- }, generateId, client2.getDocument().state.global.nodes);
439
- const copyNodesInput3 = generateNodesCopy({
440
- srcId: idFolder1,
441
- targetName: "1",
442
- targetParentFolder: undefined,
443
- }, generateId, client2.getDocument().state.global.nodes);
444
- const copyActions2 = copyNodesInput2.map((copyNodeInput) => copyNode(copyNodeInput));
445
- const copyActions3 = copyNodesInput3.map((copyNodeInput) => copyNode(copyNodeInput));
446
- // apply copy actions (1) to client 2
447
- for (const copyAction of copyActions2) {
448
- client2.dispatchDriveAction(copyAction);
449
- }
450
- // push operations to server
451
- pushOperationResult = await client2.pushOperationsToServer();
452
- expect(pushOperationResult.status).toBe("SUCCESS");
453
- drive = await server.getDrive(driveId);
454
- expect(drive.state.global.nodes.length).toBe(6);
455
- expect(drive.state.global.nodes).toMatchObject([
456
- { id: "1", name: "1", parentFolder: null },
457
- { id: "2", name: "2", parentFolder: "1" },
458
- { id: "3", name: "1 (copy) 1", parentFolder: null },
459
- { id: "4", name: "2", parentFolder: "3" },
460
- { id: "5", name: "1 (copy) 2", parentFolder: null },
461
- { id: "6", name: "2", parentFolder: "5" },
462
- ]);
463
- // apply copy actions (2) to client 2
464
- for (const copyAction of copyActions3) {
465
- client2.dispatchDriveAction(copyAction);
466
- }
467
- // sync client 2 with server
468
- await client2.syncDocument();
469
- const client2Nodes = client2.getDocument().state.global.nodes;
470
- // TODO: validate that there are not duplicated operations after operation id implementation
471
- expect(client2Nodes).toHaveLength(8);
472
- const sortedClient2Nodes = sortNodes(client2Nodes);
473
- expect(sortedClient2Nodes).toMatchObject([
474
- { id: "1", name: "1", parentFolder: null },
475
- { id: "2", name: "2", parentFolder: "1" },
476
- { id: "3", name: "1 (copy) 1", parentFolder: null },
477
- { id: "4", name: "2", parentFolder: "3" },
478
- { id: "5", name: "1 (copy) 2", parentFolder: null },
479
- { id: "6", name: "2", parentFolder: "5" },
480
- { id: "7", name: "1 (copy) 3", parentFolder: null },
481
- { id: "8", name: "2", parentFolder: "7" },
482
- ]);
483
- });
484
- });
485
- });
486
- //# sourceMappingURL=driveOperationsConflictResolution.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"driveOperationsConflictResolution.test.js","sourceRoot":"","sources":["../../../test/server/driveOperationsConflictResolution.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=mergeOperations.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mergeOperations.test.d.ts","sourceRoot":"","sources":["../../../test/server/mergeOperations.test.ts"],"names":[],"mappings":""}
@@ -1,131 +0,0 @@
1
- import { fakeAction, mergeOperations } from "document-drive";
2
- import { deriveOperationId } from "document-model/core";
3
- import { describe, expect, it } from "vitest";
4
- const TEST_DOC_ID = "test-doc-id";
5
- const TEST_BRANCH = "main";
6
- const TEST_SCOPE = "global";
7
- describe("mergeOperations", () => {
8
- it("should merge operations correcly", async () => {
9
- const action1 = fakeAction({
10
- scope: "global",
11
- type: "SET_MODEL_NAME",
12
- input: { name: "1" },
13
- });
14
- const operation = {
15
- id: deriveOperationId(TEST_DOC_ID, TEST_SCOPE, TEST_BRANCH, action1.id),
16
- action: action1,
17
- index: 0,
18
- timestampUtcMs: "2024-05-03T20:26:52.236Z",
19
- hash: "GCbMKj+UOVkUwAJhI7vU76Y7j1I=",
20
- skip: 0,
21
- error: undefined,
22
- };
23
- const action2 = fakeAction({
24
- scope: "global",
25
- type: "SET_MODEL_NAME",
26
- input: { name: "1" },
27
- });
28
- const action3 = fakeAction({
29
- scope: "global",
30
- type: "SET_MODEL_NAME",
31
- input: { name: "2" },
32
- });
33
- const result = mergeOperations({
34
- global: [operation],
35
- local: [],
36
- }, [
37
- {
38
- id: deriveOperationId(TEST_DOC_ID, TEST_SCOPE, TEST_BRANCH, action2.id),
39
- action: action2,
40
- index: 1,
41
- timestampUtcMs: "2024-05-03T20:26:52.239Z",
42
- hash: "GCbMKj+UOVkUwAJhI7vU76Y7j1I=",
43
- skip: 1,
44
- error: undefined,
45
- },
46
- {
47
- id: deriveOperationId(TEST_DOC_ID, TEST_SCOPE, TEST_BRANCH, action3.id),
48
- action: action3,
49
- index: 2,
50
- timestampUtcMs: "2024-05-03T20:26:52.239Z",
51
- hash: "7rDGOdcTtu9xcKwmMM5F98KO9PM=",
52
- skip: 0,
53
- error: undefined,
54
- },
55
- ]);
56
- expect(result.global).toHaveLength(3);
57
- expect(result.global).toMatchObject([
58
- {
59
- action: { type: "SET_MODEL_NAME", input: { name: "1" } },
60
- index: 0,
61
- skip: 0,
62
- error: undefined,
63
- },
64
- {
65
- action: { type: "SET_MODEL_NAME", input: { name: "1" } },
66
- index: 1,
67
- skip: 1,
68
- error: undefined,
69
- },
70
- {
71
- action: { type: "SET_MODEL_NAME", input: { name: "2" } },
72
- index: 2,
73
- skip: 0,
74
- error: undefined,
75
- },
76
- ]);
77
- });
78
- it("should reject operations with invalid index", async () => {
79
- const action4 = fakeAction({
80
- scope: "global",
81
- type: "SET_MODEL_NAME",
82
- input: { name: "1" },
83
- });
84
- const action5 = fakeAction({
85
- scope: "global",
86
- type: "SET_MODEL_NAME",
87
- input: { name: "1" },
88
- });
89
- const action6 = fakeAction({
90
- scope: "global",
91
- type: "SET_MODEL_NAME",
92
- input: { name: "2" },
93
- });
94
- await expect(new Promise(() => {
95
- mergeOperations({
96
- global: [
97
- {
98
- id: deriveOperationId(TEST_DOC_ID, TEST_SCOPE, TEST_BRANCH, action4.id),
99
- action: action4,
100
- index: 0,
101
- timestampUtcMs: "2024-05-03T20:26:52.236Z",
102
- hash: "GCbMKj+UOVkUwAJhI7vU76Y7j1I=",
103
- skip: 0,
104
- error: undefined,
105
- },
106
- {
107
- id: deriveOperationId(TEST_DOC_ID, TEST_SCOPE, TEST_BRANCH, action5.id),
108
- action: action5,
109
- index: 1,
110
- timestampUtcMs: "2024-05-03T20:26:52.239Z",
111
- hash: "GCbMKj+UOVkUwAJhI7vU76Y7j1I=",
112
- skip: 1,
113
- error: undefined,
114
- },
115
- ],
116
- local: [],
117
- }, [
118
- {
119
- id: deriveOperationId(TEST_DOC_ID, TEST_SCOPE, TEST_BRANCH, action6.id),
120
- action: action6,
121
- index: 0,
122
- timestampUtcMs: "2024-05-03T20:26:52.239Z",
123
- hash: "7rDGOdcTtu9xcKwmMM5F98KO9PM=",
124
- skip: 0,
125
- error: undefined,
126
- },
127
- ]);
128
- })).rejects.toThrow("Tried to add operation with index 0 and document is at index 1");
129
- });
130
- });
131
- //# sourceMappingURL=mergeOperations.test.js.map