document-model 2.20.0 → 2.21.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 (740) hide show
  1. package/dist/index.d.ts +17 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +11 -0
  4. package/dist/{browser/src → src}/document/actions/creators.d.ts +3 -2
  5. package/dist/src/document/actions/creators.d.ts.map +1 -0
  6. package/dist/{node/src/document/actions/creators.d.ts → src/document/actions/creators.js} +17 -9
  7. package/dist/src/document/actions/operations.d.ts +23 -0
  8. package/dist/src/document/actions/operations.d.ts.map +1 -0
  9. package/dist/src/document/actions/operations.js +130 -0
  10. package/dist/src/document/actions/types.d.ts +16 -0
  11. package/dist/src/document/actions/types.d.ts.map +1 -0
  12. package/dist/src/document/actions/types.js +6 -0
  13. package/dist/{browser/src → src}/document/object.d.ts +16 -14
  14. package/dist/src/document/object.d.ts.map +1 -0
  15. package/dist/{node/src/document/object.d.ts → src/document/object.js} +92 -30
  16. package/dist/src/document/reducer.d.ts +49 -0
  17. package/dist/src/document/reducer.d.ts.map +1 -0
  18. package/dist/src/document/reducer.js +341 -0
  19. package/dist/{browser/src → src}/document/schema/types.d.ts +1 -1
  20. package/dist/src/document/schema/types.d.ts.map +1 -0
  21. package/dist/src/document/schema/types.js +1 -0
  22. package/dist/{browser/src → src}/document/schema/zod.d.ts +20 -20
  23. package/dist/src/document/schema/zod.d.ts.map +1 -0
  24. package/dist/src/document/schema/zod.js +112 -0
  25. package/dist/{node/src → src}/document/signal.d.ts +9 -9
  26. package/dist/src/document/signal.d.ts.map +1 -0
  27. package/dist/src/document/signal.js +1 -0
  28. package/dist/src/document/types.d.ts +302 -0
  29. package/dist/src/document/types.d.ts.map +1 -0
  30. package/dist/src/document/types.js +1 -0
  31. package/dist/src/document/utils/base.d.ts +84 -0
  32. package/dist/src/document/utils/base.d.ts.map +1 -0
  33. package/dist/src/document/utils/base.js +328 -0
  34. package/dist/{browser/src → src}/document/utils/browser.d.ts +1 -1
  35. package/dist/src/document/utils/browser.d.ts.map +1 -0
  36. package/dist/src/document/utils/browser.js +46 -0
  37. package/dist/src/document/utils/crypto.d.ts +11 -0
  38. package/dist/src/document/utils/crypto.d.ts.map +1 -0
  39. package/dist/src/document/utils/crypto.js +79 -0
  40. package/dist/src/document/utils/document-helpers.d.ts +78 -0
  41. package/dist/src/document/utils/document-helpers.d.ts.map +1 -0
  42. package/dist/src/document/utils/document-helpers.js +410 -0
  43. package/dist/{browser/src → src}/document/utils/errors.d.ts +1 -1
  44. package/dist/src/document/utils/errors.d.ts.map +1 -0
  45. package/dist/src/document/utils/errors.js +18 -0
  46. package/dist/{browser/src → src}/document/utils/file.d.ts +9 -8
  47. package/dist/src/document/utils/file.d.ts.map +1 -0
  48. package/dist/src/document/utils/file.js +155 -0
  49. package/dist/{browser/src → src}/document/utils/node.d.ts +2 -2
  50. package/dist/src/document/utils/node.d.ts.map +1 -0
  51. package/dist/src/document/utils/node.js +54 -0
  52. package/dist/src/document/utils/validation.d.ts +3 -0
  53. package/dist/src/document/utils/validation.d.ts.map +1 -0
  54. package/dist/src/document/utils/validation.js +22 -0
  55. package/dist/src/document-model/custom/reducers/header.d.ts +3 -0
  56. package/dist/src/document-model/custom/reducers/header.d.ts.map +1 -0
  57. package/dist/src/document-model/custom/reducers/header.js +22 -0
  58. package/dist/src/document-model/custom/reducers/module.d.ts +3 -0
  59. package/dist/src/document-model/custom/reducers/module.d.ts.map +1 -0
  60. package/dist/src/document-model/custom/reducers/module.js +40 -0
  61. package/dist/src/document-model/custom/reducers/operation-error.d.ts +3 -0
  62. package/dist/src/document-model/custom/reducers/operation-error.d.ts.map +1 -0
  63. package/dist/src/document-model/custom/reducers/operation-error.js +93 -0
  64. package/dist/src/document-model/custom/reducers/operation-example.d.ts +3 -0
  65. package/dist/src/document-model/custom/reducers/operation-example.d.ts.map +1 -0
  66. package/dist/src/document-model/custom/reducers/operation-example.js +52 -0
  67. package/dist/src/document-model/custom/reducers/operation.d.ts +3 -0
  68. package/dist/src/document-model/custom/reducers/operation.d.ts.map +1 -0
  69. package/dist/src/document-model/custom/reducers/operation.js +124 -0
  70. package/dist/src/document-model/custom/reducers/state.d.ts +3 -0
  71. package/dist/src/document-model/custom/reducers/state.d.ts.map +1 -0
  72. package/dist/src/document-model/custom/reducers/state.js +70 -0
  73. package/dist/src/document-model/custom/reducers/versioning.d.ts +8 -0
  74. package/dist/src/document-model/custom/reducers/versioning.d.ts.map +1 -0
  75. package/dist/src/document-model/custom/reducers/versioning.js +22 -0
  76. package/dist/{browser/src → src}/document-model/custom/utils.d.ts +3 -3
  77. package/dist/src/document-model/custom/utils.d.ts.map +1 -0
  78. package/dist/src/document-model/custom/utils.js +104 -0
  79. package/dist/src/document-model/gen/actions.d.ts +16 -0
  80. package/dist/src/document-model/gen/actions.d.ts.map +1 -0
  81. package/dist/src/document-model/gen/actions.js +7 -0
  82. package/dist/src/document-model/gen/constants.d.ts +7 -0
  83. package/dist/src/document-model/gen/constants.d.ts.map +1 -0
  84. package/dist/src/document-model/gen/constants.js +33 -0
  85. package/dist/src/document-model/gen/creators.d.ts +8 -0
  86. package/dist/src/document-model/gen/creators.d.ts.map +1 -0
  87. package/dist/src/document-model/gen/creators.js +7 -0
  88. package/dist/src/document-model/gen/document-model.d.ts +3 -0
  89. package/dist/src/document-model/gen/document-model.d.ts.map +1 -0
  90. package/dist/src/document-model/gen/document-model.js +541 -0
  91. package/dist/src/document-model/gen/header/actions.d.ts +10 -0
  92. package/dist/src/document-model/gen/header/actions.d.ts.map +1 -0
  93. package/dist/src/document-model/gen/header/actions.js +1 -0
  94. package/dist/{browser/src → src}/document-model/gen/header/creators.d.ts +2 -2
  95. package/dist/src/document-model/gen/header/creators.d.ts.map +1 -0
  96. package/dist/src/document-model/gen/header/creators.js +9 -0
  97. package/dist/src/document-model/gen/header/object.d.ts +13 -0
  98. package/dist/src/document-model/gen/header/object.d.ts.map +1 -0
  99. package/dist/src/document-model/gen/header/object.js +22 -0
  100. package/dist/{node/src → src}/document-model/gen/header/operations.d.ts +2 -2
  101. package/dist/src/document-model/gen/header/operations.d.ts.map +1 -0
  102. package/dist/src/document-model/gen/header/operations.js +1 -0
  103. package/dist/src/document-model/gen/module/actions.d.ts +9 -0
  104. package/dist/src/document-model/gen/module/actions.d.ts.map +1 -0
  105. package/dist/src/document-model/gen/module/actions.js +1 -0
  106. package/dist/{node/src → src}/document-model/gen/module/creators.d.ts +2 -2
  107. package/dist/src/document-model/gen/module/creators.d.ts.map +1 -0
  108. package/dist/src/document-model/gen/module/creators.js +8 -0
  109. package/dist/src/document-model/gen/module/object.d.ts +12 -0
  110. package/dist/src/document-model/gen/module/object.d.ts.map +1 -0
  111. package/dist/src/document-model/gen/module/object.js +19 -0
  112. package/dist/{browser/src → src}/document-model/gen/module/operations.d.ts +2 -2
  113. package/dist/src/document-model/gen/module/operations.d.ts.map +1 -0
  114. package/dist/src/document-model/gen/module/operations.js +1 -0
  115. package/dist/src/document-model/gen/object.d.ts +30 -0
  116. package/dist/src/document-model/gen/object.d.ts.map +1 -0
  117. package/dist/src/document-model/gen/object.js +46 -0
  118. package/dist/src/document-model/gen/operation/actions.d.ts +14 -0
  119. package/dist/src/document-model/gen/operation/actions.d.ts.map +1 -0
  120. package/dist/src/document-model/gen/operation/actions.js +1 -0
  121. package/dist/{browser/src → src}/document-model/gen/operation/creators.d.ts +2 -2
  122. package/dist/src/document-model/gen/operation/creators.d.ts.map +1 -0
  123. package/dist/src/document-model/gen/operation/creators.js +19 -0
  124. package/dist/{node/src → src}/document-model/gen/operation/object.d.ts +6 -5
  125. package/dist/src/document-model/gen/operation/object.d.ts.map +1 -0
  126. package/dist/src/document-model/gen/operation/object.js +34 -0
  127. package/dist/{browser/src → src}/document-model/gen/operation/operations.d.ts +2 -2
  128. package/dist/src/document-model/gen/operation/operations.d.ts.map +1 -0
  129. package/dist/src/document-model/gen/operation/operations.js +1 -0
  130. package/dist/src/document-model/gen/operation-error/actions.d.ts +11 -0
  131. package/dist/src/document-model/gen/operation-error/actions.d.ts.map +1 -0
  132. package/dist/src/document-model/gen/operation-error/actions.js +1 -0
  133. package/dist/{node/src → src}/document-model/gen/operation-error/creators.d.ts +2 -2
  134. package/dist/src/document-model/gen/operation-error/creators.d.ts.map +1 -0
  135. package/dist/src/document-model/gen/operation-error/creators.js +16 -0
  136. package/dist/{node/src → src}/document-model/gen/operation-error/object.d.ts +6 -5
  137. package/dist/src/document-model/gen/operation-error/object.d.ts.map +1 -0
  138. package/dist/src/document-model/gen/operation-error/object.js +25 -0
  139. package/dist/{browser/src → src}/document-model/gen/operation-error/operations.d.ts +2 -2
  140. package/dist/src/document-model/gen/operation-error/operations.d.ts.map +1 -0
  141. package/dist/src/document-model/gen/operation-error/operations.js +1 -0
  142. package/dist/src/document-model/gen/operation-example/actions.d.ts +8 -0
  143. package/dist/src/document-model/gen/operation-example/actions.d.ts.map +1 -0
  144. package/dist/src/document-model/gen/operation-example/actions.js +1 -0
  145. package/dist/{browser/src → src}/document-model/gen/operation-example/creators.d.ts +2 -2
  146. package/dist/src/document-model/gen/operation-example/creators.d.ts.map +1 -0
  147. package/dist/src/document-model/gen/operation-example/creators.js +13 -0
  148. package/dist/src/document-model/gen/operation-example/object.d.ts +12 -0
  149. package/dist/src/document-model/gen/operation-example/object.d.ts.map +1 -0
  150. package/dist/src/document-model/gen/operation-example/object.js +16 -0
  151. package/dist/{browser/src → src}/document-model/gen/operation-example/operations.d.ts +2 -2
  152. package/dist/src/document-model/gen/operation-example/operations.d.ts.map +1 -0
  153. package/dist/src/document-model/gen/operation-example/operations.js +1 -0
  154. package/dist/src/document-model/gen/reducer.d.ts +5 -0
  155. package/dist/src/document-model/gen/reducer.d.ts.map +1 -0
  156. package/dist/src/document-model/gen/reducer.js +192 -0
  157. package/dist/{node/src → src}/document-model/gen/schema/types.d.ts +5 -1
  158. package/dist/src/document-model/gen/schema/types.d.ts.map +1 -0
  159. package/dist/src/document-model/gen/schema/types.js +1 -0
  160. package/dist/{browser/src → src}/document-model/gen/schema/zod.d.ts +198 -198
  161. package/dist/src/document-model/gen/schema/zod.d.ts.map +1 -0
  162. package/dist/src/document-model/gen/schema/zod.js +393 -0
  163. package/dist/src/document-model/gen/state/actions.d.ts +10 -0
  164. package/dist/src/document-model/gen/state/actions.d.ts.map +1 -0
  165. package/dist/src/document-model/gen/state/actions.js +1 -0
  166. package/dist/{browser/src → src}/document-model/gen/state/creators.d.ts +2 -2
  167. package/dist/src/document-model/gen/state/creators.d.ts.map +1 -0
  168. package/dist/src/document-model/gen/state/creators.js +9 -0
  169. package/dist/src/document-model/gen/state/object.d.ts +13 -0
  170. package/dist/src/document-model/gen/state/object.d.ts.map +1 -0
  171. package/dist/src/document-model/gen/state/object.js +22 -0
  172. package/dist/{browser/src → src}/document-model/gen/state/operations.d.ts +2 -2
  173. package/dist/src/document-model/gen/state/operations.d.ts.map +1 -0
  174. package/dist/src/document-model/gen/state/operations.js +1 -0
  175. package/dist/src/document-model/gen/types.d.ts +7 -0
  176. package/dist/src/document-model/gen/types.d.ts.map +1 -0
  177. package/dist/src/document-model/gen/types.js +1 -0
  178. package/dist/src/document-model/gen/utils.d.ts +11 -0
  179. package/dist/src/document-model/gen/utils.d.ts.map +1 -0
  180. package/dist/src/document-model/gen/utils.js +29 -0
  181. package/dist/src/document-model/gen/versioning/actions.d.ts +9 -0
  182. package/dist/src/document-model/gen/versioning/actions.d.ts.map +1 -0
  183. package/dist/src/document-model/gen/versioning/actions.js +1 -0
  184. package/dist/{browser/src → src}/document-model/gen/versioning/creators.d.ts +2 -2
  185. package/dist/src/document-model/gen/versioning/creators.d.ts.map +1 -0
  186. package/dist/src/document-model/gen/versioning/creators.js +12 -0
  187. package/dist/src/document-model/gen/versioning/object.d.ts +13 -0
  188. package/dist/src/document-model/gen/versioning/object.d.ts.map +1 -0
  189. package/dist/src/document-model/gen/versioning/object.js +19 -0
  190. package/dist/{browser/src → src}/document-model/gen/versioning/operations.d.ts +2 -2
  191. package/dist/src/document-model/gen/versioning/operations.d.ts.map +1 -0
  192. package/dist/src/document-model/gen/versioning/operations.js +1 -0
  193. package/dist/src/document-model/module.d.ts +3 -0
  194. package/dist/src/document-model/module.d.ts.map +1 -0
  195. package/dist/src/document-model/module.js +12 -0
  196. package/dist/src/document-model/types.d.ts +4 -0
  197. package/dist/src/document-model/types.d.ts.map +1 -0
  198. package/dist/src/document-model/types.js +1 -0
  199. package/dist/test/document/crypto.test.d.ts.map +1 -0
  200. package/dist/test/document/crypto.test.js +180 -0
  201. package/dist/test/document/event-vs-command.test.d.ts.map +1 -0
  202. package/dist/test/document/event-vs-command.test.js +168 -0
  203. package/dist/test/document/local.test.d.ts.map +1 -0
  204. package/dist/test/document/local.test.js +247 -0
  205. package/dist/test/document/object.test.d.ts.map +1 -0
  206. package/dist/test/document/object.test.js +12 -0
  207. package/dist/test/document/operation-id.test.d.ts.map +1 -0
  208. package/dist/test/document/operation-id.test.js +158 -0
  209. package/dist/test/document/prune.test.d.ts.map +1 -0
  210. package/dist/test/document/prune.test.js +176 -0
  211. package/dist/test/document/reducer.test.d.ts.map +1 -0
  212. package/dist/test/document/reducer.test.js +268 -0
  213. package/dist/test/document/skip-operations.test.d.ts.map +1 -0
  214. package/dist/test/document/skip-operations.test.js +441 -0
  215. package/dist/test/document/undo-redo.test.d.ts.map +1 -0
  216. package/dist/test/document/undo-redo.test.js +376 -0
  217. package/dist/test/document/utils.test.d.ts.map +1 -0
  218. package/dist/test/document/utils.test.js +151 -0
  219. package/dist/test/document-helpers/addUndo.test.d.ts.map +1 -0
  220. package/dist/test/document-helpers/addUndo.test.js +119 -0
  221. package/dist/test/document-helpers/attachBranch.test.d.ts.map +1 -0
  222. package/dist/test/document-helpers/attachBranch.test.js +363 -0
  223. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +1 -0
  224. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +251 -0
  225. package/dist/test/document-helpers/conflictResolution.test.d.ts.map +1 -0
  226. package/dist/test/document-helpers/conflictResolution.test.js +108 -0
  227. package/dist/test/document-helpers/filterDuplicatedOperations.test.d.ts.map +1 -0
  228. package/dist/test/document-helpers/filterDuplicatedOperations.test.js +125 -0
  229. package/dist/test/document-helpers/garbageCollect.test.d.ts.map +1 -0
  230. package/dist/test/document-helpers/garbageCollect.test.js +135 -0
  231. package/dist/test/document-helpers/groupOperationsByScope.test.d.ts.map +1 -0
  232. package/dist/test/document-helpers/groupOperationsByScope.test.js +97 -0
  233. package/dist/test/document-helpers/merge.test.d.ts.map +1 -0
  234. package/dist/test/document-helpers/merge.test.js +905 -0
  235. package/dist/test/document-helpers/nextSkipNumber.test.d.ts.map +1 -0
  236. package/dist/test/document-helpers/nextSkipNumber.test.js +134 -0
  237. package/dist/test/document-helpers/prepareOperations.test.d.ts.map +1 -0
  238. package/dist/test/document-helpers/prepareOperations.test.js +303 -0
  239. package/dist/test/document-helpers/removeExistingOperations.test.d.ts.map +1 -0
  240. package/dist/test/document-helpers/removeExistingOperations.test.js +149 -0
  241. package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +1 -0
  242. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +147 -0
  243. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +1 -0
  244. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +199 -0
  245. package/dist/test/document-helpers/skipHeaderOperations.test.d.ts.map +1 -0
  246. package/dist/test/document-helpers/skipHeaderOperations.test.js +73 -0
  247. package/dist/test/document-helpers/sortOperations.test.d.ts.map +1 -0
  248. package/dist/test/document-helpers/sortOperations.test.js +100 -0
  249. package/dist/test/document-helpers/split.test.d.ts.map +1 -0
  250. package/dist/test/document-helpers/split.test.js +120 -0
  251. package/dist/{browser/test → test}/document-helpers/utils.d.ts +1 -1
  252. package/dist/test/document-helpers/utils.d.ts.map +1 -0
  253. package/dist/test/document-helpers/utils.js +21 -0
  254. package/dist/test/document-model/object.test.d.ts.map +1 -0
  255. package/dist/test/document-model/object.test.js +242 -0
  256. package/dist/test/document-model/replay.test.d.ts.map +1 -0
  257. package/dist/test/document-model/replay.test.js +137 -0
  258. package/dist/test/document-model/skip-operations.test.d.ts.map +1 -0
  259. package/dist/test/document-model/skip-operations.test.js +216 -0
  260. package/dist/test/document-model/validation.test.d.ts.map +1 -0
  261. package/dist/test/document-model/validation.test.js +257 -0
  262. package/dist/test/document-model/zip.test.d.ts.map +1 -0
  263. package/dist/test/document-model/zip.test.js +80 -0
  264. package/dist/test/helpers.d.ts +31 -0
  265. package/dist/test/helpers.d.ts.map +1 -0
  266. package/dist/test/helpers.js +69 -0
  267. package/dist/tsconfig.tsbuildinfo +1 -0
  268. package/dist/vitest.config.d.ts +3 -0
  269. package/dist/vitest.config.d.ts.map +1 -0
  270. package/dist/vitest.config.js +6 -0
  271. package/package.json +16 -53
  272. package/dist/browser/cjs/document-model.js +0 -21
  273. package/dist/browser/cjs/document-model.js.map +0 -1
  274. package/dist/browser/cjs/document.js +0 -16
  275. package/dist/browser/cjs/document.js.map +0 -1
  276. package/dist/browser/cjs/index.js +0 -14
  277. package/dist/browser/cjs/index.js.map +0 -1
  278. package/dist/browser/cjs/internal/creators-DJg3Kd1P.js +0 -2901
  279. package/dist/browser/cjs/internal/creators-DJg3Kd1P.js.map +0 -1
  280. package/dist/browser/cjs/internal/index-CGExio27.js +0 -2216
  281. package/dist/browser/cjs/internal/index-CGExio27.js.map +0 -1
  282. package/dist/browser/cjs/internal/index-CQg4iLBq.js +0 -19
  283. package/dist/browser/cjs/internal/index-CQg4iLBq.js.map +0 -1
  284. package/dist/browser/cjs/internal/index-DcdJY5J3.js +0 -47
  285. package/dist/browser/cjs/internal/index-DcdJY5J3.js.map +0 -1
  286. package/dist/browser/cjs/internal/object-C3OfcOUa.js +0 -183
  287. package/dist/browser/cjs/internal/object-C3OfcOUa.js.map +0 -1
  288. package/dist/browser/cjs/package.json +0 -1
  289. package/dist/browser/cjs/utils.js +0 -44
  290. package/dist/browser/cjs/utils.js.map +0 -1
  291. package/dist/browser/document-model.d.ts +0 -2
  292. package/dist/browser/document.d.ts +0 -2
  293. package/dist/browser/es/document-model.js +0 -21
  294. package/dist/browser/es/document-model.js.map +0 -1
  295. package/dist/browser/es/document.js +0 -16
  296. package/dist/browser/es/document.js.map +0 -1
  297. package/dist/browser/es/index.js +0 -14
  298. package/dist/browser/es/index.js.map +0 -1
  299. package/dist/browser/es/internal/creators-Dir4K_-h.js +0 -2902
  300. package/dist/browser/es/internal/creators-Dir4K_-h.js.map +0 -1
  301. package/dist/browser/es/internal/index-BxCiP58y.js +0 -48
  302. package/dist/browser/es/internal/index-BxCiP58y.js.map +0 -1
  303. package/dist/browser/es/internal/index-HlkIVQZ6.js +0 -2217
  304. package/dist/browser/es/internal/index-HlkIVQZ6.js.map +0 -1
  305. package/dist/browser/es/internal/index-qYp7hG3r.js +0 -20
  306. package/dist/browser/es/internal/index-qYp7hG3r.js.map +0 -1
  307. package/dist/browser/es/internal/object-CzFSgK3q.js +0 -184
  308. package/dist/browser/es/internal/object-CzFSgK3q.js.map +0 -1
  309. package/dist/browser/es/package.json +0 -1
  310. package/dist/browser/es/utils.js +0 -44
  311. package/dist/browser/es/utils.js.map +0 -1
  312. package/dist/browser/index.d.ts +0 -6
  313. package/dist/browser/src/document/actions/creators.d.ts.map +0 -1
  314. package/dist/browser/src/document/actions/index.d.ts +0 -15
  315. package/dist/browser/src/document/actions/index.d.ts.map +0 -1
  316. package/dist/browser/src/document/actions/types.d.ts +0 -16
  317. package/dist/browser/src/document/actions/types.d.ts.map +0 -1
  318. package/dist/browser/src/document/index.d.ts +0 -7
  319. package/dist/browser/src/document/index.d.ts.map +0 -1
  320. package/dist/browser/src/document/object.d.ts.map +0 -1
  321. package/dist/browser/src/document/reducer.d.ts +0 -66
  322. package/dist/browser/src/document/reducer.d.ts.map +0 -1
  323. package/dist/browser/src/document/schema/index.d.ts +0 -3
  324. package/dist/browser/src/document/schema/index.d.ts.map +0 -1
  325. package/dist/browser/src/document/schema/types.d.ts.map +0 -1
  326. package/dist/browser/src/document/schema/zod.d.ts.map +0 -1
  327. package/dist/browser/src/document/signal.d.ts +0 -30
  328. package/dist/browser/src/document/signal.d.ts.map +0 -1
  329. package/dist/browser/src/document/types.d.ts +0 -292
  330. package/dist/browser/src/document/types.d.ts.map +0 -1
  331. package/dist/browser/src/document/utils/base.d.ts +0 -89
  332. package/dist/browser/src/document/utils/base.d.ts.map +0 -1
  333. package/dist/browser/src/document/utils/browser.d.ts.map +0 -1
  334. package/dist/browser/src/document/utils/crypto.d.ts +0 -11
  335. package/dist/browser/src/document/utils/crypto.d.ts.map +0 -1
  336. package/dist/browser/src/document/utils/document-helpers.d.ts +0 -74
  337. package/dist/browser/src/document/utils/document-helpers.d.ts.map +0 -1
  338. package/dist/browser/src/document/utils/errors.d.ts.map +0 -1
  339. package/dist/browser/src/document/utils/file.d.ts.map +0 -1
  340. package/dist/browser/src/document/utils/index.d.ts +0 -8
  341. package/dist/browser/src/document/utils/index.d.ts.map +0 -1
  342. package/dist/browser/src/document/utils/node.d.ts.map +0 -1
  343. package/dist/browser/src/document/utils/validation.d.ts +0 -3
  344. package/dist/browser/src/document/utils/validation.d.ts.map +0 -1
  345. package/dist/browser/src/document-model/custom/reducers/header.d.ts +0 -3
  346. package/dist/browser/src/document-model/custom/reducers/header.d.ts.map +0 -1
  347. package/dist/browser/src/document-model/custom/reducers/module.d.ts +0 -3
  348. package/dist/browser/src/document-model/custom/reducers/module.d.ts.map +0 -1
  349. package/dist/browser/src/document-model/custom/reducers/operation-error.d.ts +0 -3
  350. package/dist/browser/src/document-model/custom/reducers/operation-error.d.ts.map +0 -1
  351. package/dist/browser/src/document-model/custom/reducers/operation-example.d.ts +0 -3
  352. package/dist/browser/src/document-model/custom/reducers/operation-example.d.ts.map +0 -1
  353. package/dist/browser/src/document-model/custom/reducers/operation.d.ts +0 -3
  354. package/dist/browser/src/document-model/custom/reducers/operation.d.ts.map +0 -1
  355. package/dist/browser/src/document-model/custom/reducers/state.d.ts +0 -3
  356. package/dist/browser/src/document-model/custom/reducers/state.d.ts.map +0 -1
  357. package/dist/browser/src/document-model/custom/reducers/versioning.d.ts +0 -3
  358. package/dist/browser/src/document-model/custom/reducers/versioning.d.ts.map +0 -1
  359. package/dist/browser/src/document-model/custom/utils.d.ts.map +0 -1
  360. package/dist/browser/src/document-model/gen/actions.d.ts +0 -16
  361. package/dist/browser/src/document-model/gen/actions.d.ts.map +0 -1
  362. package/dist/browser/src/document-model/gen/creators.d.ts +0 -8
  363. package/dist/browser/src/document-model/gen/creators.d.ts.map +0 -1
  364. package/dist/browser/src/document-model/gen/document-model.d.ts +0 -3
  365. package/dist/browser/src/document-model/gen/document-model.d.ts.map +0 -1
  366. package/dist/browser/src/document-model/gen/header/actions.d.ts +0 -10
  367. package/dist/browser/src/document-model/gen/header/actions.d.ts.map +0 -1
  368. package/dist/browser/src/document-model/gen/header/creators.d.ts.map +0 -1
  369. package/dist/browser/src/document-model/gen/header/object.d.ts +0 -13
  370. package/dist/browser/src/document-model/gen/header/object.d.ts.map +0 -1
  371. package/dist/browser/src/document-model/gen/header/operations.d.ts +0 -11
  372. package/dist/browser/src/document-model/gen/header/operations.d.ts.map +0 -1
  373. package/dist/browser/src/document-model/gen/index.d.ts +0 -6
  374. package/dist/browser/src/document-model/gen/index.d.ts.map +0 -1
  375. package/dist/browser/src/document-model/gen/module/actions.d.ts +0 -9
  376. package/dist/browser/src/document-model/gen/module/actions.d.ts.map +0 -1
  377. package/dist/browser/src/document-model/gen/module/creators.d.ts +0 -8
  378. package/dist/browser/src/document-model/gen/module/creators.d.ts.map +0 -1
  379. package/dist/browser/src/document-model/gen/module/object.d.ts +0 -12
  380. package/dist/browser/src/document-model/gen/module/object.d.ts.map +0 -1
  381. package/dist/browser/src/document-model/gen/module/operations.d.ts.map +0 -1
  382. package/dist/browser/src/document-model/gen/object.d.ts +0 -29
  383. package/dist/browser/src/document-model/gen/object.d.ts.map +0 -1
  384. package/dist/browser/src/document-model/gen/operation/actions.d.ts +0 -14
  385. package/dist/browser/src/document-model/gen/operation/actions.d.ts.map +0 -1
  386. package/dist/browser/src/document-model/gen/operation/creators.d.ts.map +0 -1
  387. package/dist/browser/src/document-model/gen/operation/object.d.ts +0 -17
  388. package/dist/browser/src/document-model/gen/operation/object.d.ts.map +0 -1
  389. package/dist/browser/src/document-model/gen/operation/operations.d.ts.map +0 -1
  390. package/dist/browser/src/document-model/gen/operation-error/actions.d.ts +0 -11
  391. package/dist/browser/src/document-model/gen/operation-error/actions.d.ts.map +0 -1
  392. package/dist/browser/src/document-model/gen/operation-error/creators.d.ts +0 -10
  393. package/dist/browser/src/document-model/gen/operation-error/creators.d.ts.map +0 -1
  394. package/dist/browser/src/document-model/gen/operation-error/object.d.ts +0 -14
  395. package/dist/browser/src/document-model/gen/operation-error/object.d.ts.map +0 -1
  396. package/dist/browser/src/document-model/gen/operation-error/operations.d.ts.map +0 -1
  397. package/dist/browser/src/document-model/gen/operation-example/actions.d.ts +0 -8
  398. package/dist/browser/src/document-model/gen/operation-example/actions.d.ts.map +0 -1
  399. package/dist/browser/src/document-model/gen/operation-example/creators.d.ts.map +0 -1
  400. package/dist/browser/src/document-model/gen/operation-example/object.d.ts +0 -11
  401. package/dist/browser/src/document-model/gen/operation-example/object.d.ts.map +0 -1
  402. package/dist/browser/src/document-model/gen/operation-example/operations.d.ts.map +0 -1
  403. package/dist/browser/src/document-model/gen/reducer.d.ts +0 -6
  404. package/dist/browser/src/document-model/gen/reducer.d.ts.map +0 -1
  405. package/dist/browser/src/document-model/gen/schema/index.d.ts +0 -3
  406. package/dist/browser/src/document-model/gen/schema/index.d.ts.map +0 -1
  407. package/dist/browser/src/document-model/gen/schema/types.d.ts +0 -454
  408. package/dist/browser/src/document-model/gen/schema/types.d.ts.map +0 -1
  409. package/dist/browser/src/document-model/gen/schema/zod.d.ts.map +0 -1
  410. package/dist/browser/src/document-model/gen/state/actions.d.ts +0 -10
  411. package/dist/browser/src/document-model/gen/state/actions.d.ts.map +0 -1
  412. package/dist/browser/src/document-model/gen/state/creators.d.ts.map +0 -1
  413. package/dist/browser/src/document-model/gen/state/object.d.ts +0 -13
  414. package/dist/browser/src/document-model/gen/state/object.d.ts.map +0 -1
  415. package/dist/browser/src/document-model/gen/state/operations.d.ts.map +0 -1
  416. package/dist/browser/src/document-model/gen/types.d.ts +0 -9
  417. package/dist/browser/src/document-model/gen/types.d.ts.map +0 -1
  418. package/dist/browser/src/document-model/gen/utils.d.ts +0 -7
  419. package/dist/browser/src/document-model/gen/utils.d.ts.map +0 -1
  420. package/dist/browser/src/document-model/gen/versioning/actions.d.ts +0 -9
  421. package/dist/browser/src/document-model/gen/versioning/actions.d.ts.map +0 -1
  422. package/dist/browser/src/document-model/gen/versioning/creators.d.ts.map +0 -1
  423. package/dist/browser/src/document-model/gen/versioning/object.d.ts +0 -12
  424. package/dist/browser/src/document-model/gen/versioning/object.d.ts.map +0 -1
  425. package/dist/browser/src/document-model/gen/versioning/operations.d.ts.map +0 -1
  426. package/dist/browser/src/document-model/index.d.ts +0 -77
  427. package/dist/browser/src/document-model/index.d.ts.map +0 -1
  428. package/dist/browser/src/index.d.ts +0 -25
  429. package/dist/browser/src/index.d.ts.map +0 -1
  430. package/dist/browser/test/document/crypto.test.d.ts.map +0 -1
  431. package/dist/browser/test/document/event-vs-command.test.d.ts.map +0 -1
  432. package/dist/browser/test/document/local.test.d.ts.map +0 -1
  433. package/dist/browser/test/document/object.test.d.ts.map +0 -1
  434. package/dist/browser/test/document/operation-id.test.d.ts.map +0 -1
  435. package/dist/browser/test/document/prune.test.d.ts.map +0 -1
  436. package/dist/browser/test/document/reducer.test.d.ts.map +0 -1
  437. package/dist/browser/test/document/skip-operations.test.d.ts.map +0 -1
  438. package/dist/browser/test/document/undo-redo.test.d.ts.map +0 -1
  439. package/dist/browser/test/document/utils.test.d.ts.map +0 -1
  440. package/dist/browser/test/document-helpers/addUndo.test.d.ts.map +0 -1
  441. package/dist/browser/test/document-helpers/attachBranch.test.d.ts.map +0 -1
  442. package/dist/browser/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +0 -1
  443. package/dist/browser/test/document-helpers/conflictResolution.test.d.ts.map +0 -1
  444. package/dist/browser/test/document-helpers/filterDuplicatedOperations.test.d.ts.map +0 -1
  445. package/dist/browser/test/document-helpers/garbageCollect.test.d.ts.map +0 -1
  446. package/dist/browser/test/document-helpers/groupOperationsByScope.test.d.ts.map +0 -1
  447. package/dist/browser/test/document-helpers/merge.test.d.ts.map +0 -1
  448. package/dist/browser/test/document-helpers/nextSkipNumber.test.d.ts.map +0 -1
  449. package/dist/browser/test/document-helpers/prepareOperations.test.d.ts.map +0 -1
  450. package/dist/browser/test/document-helpers/removeExistingOperations.test.d.ts.map +0 -1
  451. package/dist/browser/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +0 -1
  452. package/dist/browser/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +0 -1
  453. package/dist/browser/test/document-helpers/skipHeaderOperations.test.d.ts.map +0 -1
  454. package/dist/browser/test/document-helpers/sortOperations.test.d.ts.map +0 -1
  455. package/dist/browser/test/document-helpers/split.test.d.ts.map +0 -1
  456. package/dist/browser/test/document-helpers/utils.d.ts.map +0 -1
  457. package/dist/browser/test/document-model/object.test.d.ts.map +0 -1
  458. package/dist/browser/test/document-model/replay.test.d.ts.map +0 -1
  459. package/dist/browser/test/document-model/skip-operations.test.d.ts.map +0 -1
  460. package/dist/browser/test/document-model/validation.test.d.ts.map +0 -1
  461. package/dist/browser/test/document-model/zip.test.d.ts.map +0 -1
  462. package/dist/browser/test/helpers.d.ts +0 -40
  463. package/dist/browser/test/helpers.d.ts.map +0 -1
  464. package/dist/browser/utils.d.ts +0 -2
  465. package/dist/browser/vite.config.d.ts +0 -3
  466. package/dist/browser/vite.config.d.ts.map +0 -1
  467. package/dist/browser/vitest.config.d.ts +0 -3
  468. package/dist/browser/vitest.config.d.ts.map +0 -1
  469. package/dist/node/cjs/document-model.js +0 -25
  470. package/dist/node/cjs/document-model.js.map +0 -1
  471. package/dist/node/cjs/document.js +0 -16
  472. package/dist/node/cjs/document.js.map +0 -1
  473. package/dist/node/cjs/index.js +0 -14
  474. package/dist/node/cjs/index.js.map +0 -1
  475. package/dist/node/cjs/internal/creators-ZpkFlacS.js +0 -2684
  476. package/dist/node/cjs/internal/creators-ZpkFlacS.js.map +0 -1
  477. package/dist/node/cjs/internal/index-B9N2GsMZ.js +0 -47
  478. package/dist/node/cjs/internal/index-B9N2GsMZ.js.map +0 -1
  479. package/dist/node/cjs/internal/index-ClITlWIV.js +0 -19
  480. package/dist/node/cjs/internal/index-ClITlWIV.js.map +0 -1
  481. package/dist/node/cjs/internal/index-DVgdtYs7.js +0 -2220
  482. package/dist/node/cjs/internal/index-DVgdtYs7.js.map +0 -1
  483. package/dist/node/cjs/internal/object-DVKEoARn.js +0 -183
  484. package/dist/node/cjs/internal/object-DVKEoARn.js.map +0 -1
  485. package/dist/node/cjs/package.json +0 -1
  486. package/dist/node/cjs/utils.js +0 -44
  487. package/dist/node/cjs/utils.js.map +0 -1
  488. package/dist/node/document-model.d.ts +0 -2
  489. package/dist/node/document.d.ts +0 -2
  490. package/dist/node/es/document-model.js +0 -25
  491. package/dist/node/es/document-model.js.map +0 -1
  492. package/dist/node/es/document.js +0 -16
  493. package/dist/node/es/document.js.map +0 -1
  494. package/dist/node/es/index.js +0 -14
  495. package/dist/node/es/index.js.map +0 -1
  496. package/dist/node/es/internal/creators-0lHfLHX0.js +0 -2685
  497. package/dist/node/es/internal/creators-0lHfLHX0.js.map +0 -1
  498. package/dist/node/es/internal/index-BOhJLvSm.js +0 -48
  499. package/dist/node/es/internal/index-BOhJLvSm.js.map +0 -1
  500. package/dist/node/es/internal/index-CxWihLAA.js +0 -2221
  501. package/dist/node/es/internal/index-CxWihLAA.js.map +0 -1
  502. package/dist/node/es/internal/index-bxdb71Hw.js +0 -20
  503. package/dist/node/es/internal/index-bxdb71Hw.js.map +0 -1
  504. package/dist/node/es/internal/object-Bl-LmXHF.js +0 -184
  505. package/dist/node/es/internal/object-Bl-LmXHF.js.map +0 -1
  506. package/dist/node/es/package.json +0 -1
  507. package/dist/node/es/utils.js +0 -44
  508. package/dist/node/es/utils.js.map +0 -1
  509. package/dist/node/index.d.ts +0 -6
  510. package/dist/node/src/document/actions/creators.d.ts.map +0 -1
  511. package/dist/node/src/document/actions/index.d.ts +0 -15
  512. package/dist/node/src/document/actions/index.d.ts.map +0 -1
  513. package/dist/node/src/document/actions/types.d.ts +0 -16
  514. package/dist/node/src/document/actions/types.d.ts.map +0 -1
  515. package/dist/node/src/document/index.d.ts +0 -7
  516. package/dist/node/src/document/index.d.ts.map +0 -1
  517. package/dist/node/src/document/object.d.ts.map +0 -1
  518. package/dist/node/src/document/reducer.d.ts +0 -66
  519. package/dist/node/src/document/reducer.d.ts.map +0 -1
  520. package/dist/node/src/document/schema/index.d.ts +0 -3
  521. package/dist/node/src/document/schema/index.d.ts.map +0 -1
  522. package/dist/node/src/document/schema/types.d.ts +0 -177
  523. package/dist/node/src/document/schema/types.d.ts.map +0 -1
  524. package/dist/node/src/document/schema/zod.d.ts +0 -99
  525. package/dist/node/src/document/schema/zod.d.ts.map +0 -1
  526. package/dist/node/src/document/signal.d.ts.map +0 -1
  527. package/dist/node/src/document/types.d.ts +0 -292
  528. package/dist/node/src/document/types.d.ts.map +0 -1
  529. package/dist/node/src/document/utils/base.d.ts +0 -89
  530. package/dist/node/src/document/utils/base.d.ts.map +0 -1
  531. package/dist/node/src/document/utils/browser.d.ts +0 -11
  532. package/dist/node/src/document/utils/browser.d.ts.map +0 -1
  533. package/dist/node/src/document/utils/crypto.d.ts +0 -11
  534. package/dist/node/src/document/utils/crypto.d.ts.map +0 -1
  535. package/dist/node/src/document/utils/document-helpers.d.ts +0 -74
  536. package/dist/node/src/document/utils/document-helpers.d.ts.map +0 -1
  537. package/dist/node/src/document/utils/errors.d.ts +0 -10
  538. package/dist/node/src/document/utils/errors.d.ts.map +0 -1
  539. package/dist/node/src/document/utils/file.d.ts +0 -49
  540. package/dist/node/src/document/utils/file.d.ts.map +0 -1
  541. package/dist/node/src/document/utils/index.d.ts +0 -8
  542. package/dist/node/src/document/utils/index.d.ts.map +0 -1
  543. package/dist/node/src/document/utils/node.d.ts +0 -11
  544. package/dist/node/src/document/utils/node.d.ts.map +0 -1
  545. package/dist/node/src/document/utils/validation.d.ts +0 -3
  546. package/dist/node/src/document/utils/validation.d.ts.map +0 -1
  547. package/dist/node/src/document-model/custom/reducers/header.d.ts +0 -3
  548. package/dist/node/src/document-model/custom/reducers/header.d.ts.map +0 -1
  549. package/dist/node/src/document-model/custom/reducers/module.d.ts +0 -3
  550. package/dist/node/src/document-model/custom/reducers/module.d.ts.map +0 -1
  551. package/dist/node/src/document-model/custom/reducers/operation-error.d.ts +0 -3
  552. package/dist/node/src/document-model/custom/reducers/operation-error.d.ts.map +0 -1
  553. package/dist/node/src/document-model/custom/reducers/operation-example.d.ts +0 -3
  554. package/dist/node/src/document-model/custom/reducers/operation-example.d.ts.map +0 -1
  555. package/dist/node/src/document-model/custom/reducers/operation.d.ts +0 -3
  556. package/dist/node/src/document-model/custom/reducers/operation.d.ts.map +0 -1
  557. package/dist/node/src/document-model/custom/reducers/state.d.ts +0 -3
  558. package/dist/node/src/document-model/custom/reducers/state.d.ts.map +0 -1
  559. package/dist/node/src/document-model/custom/reducers/versioning.d.ts +0 -3
  560. package/dist/node/src/document-model/custom/reducers/versioning.d.ts.map +0 -1
  561. package/dist/node/src/document-model/custom/utils.d.ts +0 -8
  562. package/dist/node/src/document-model/custom/utils.d.ts.map +0 -1
  563. package/dist/node/src/document-model/gen/actions.d.ts +0 -16
  564. package/dist/node/src/document-model/gen/actions.d.ts.map +0 -1
  565. package/dist/node/src/document-model/gen/creators.d.ts +0 -8
  566. package/dist/node/src/document-model/gen/creators.d.ts.map +0 -1
  567. package/dist/node/src/document-model/gen/document-model.d.ts +0 -3
  568. package/dist/node/src/document-model/gen/document-model.d.ts.map +0 -1
  569. package/dist/node/src/document-model/gen/header/actions.d.ts +0 -10
  570. package/dist/node/src/document-model/gen/header/actions.d.ts.map +0 -1
  571. package/dist/node/src/document-model/gen/header/creators.d.ts +0 -9
  572. package/dist/node/src/document-model/gen/header/creators.d.ts.map +0 -1
  573. package/dist/node/src/document-model/gen/header/object.d.ts +0 -13
  574. package/dist/node/src/document-model/gen/header/object.d.ts.map +0 -1
  575. package/dist/node/src/document-model/gen/header/operations.d.ts.map +0 -1
  576. package/dist/node/src/document-model/gen/index.d.ts +0 -6
  577. package/dist/node/src/document-model/gen/index.d.ts.map +0 -1
  578. package/dist/node/src/document-model/gen/module/actions.d.ts +0 -9
  579. package/dist/node/src/document-model/gen/module/actions.d.ts.map +0 -1
  580. package/dist/node/src/document-model/gen/module/creators.d.ts.map +0 -1
  581. package/dist/node/src/document-model/gen/module/object.d.ts +0 -12
  582. package/dist/node/src/document-model/gen/module/object.d.ts.map +0 -1
  583. package/dist/node/src/document-model/gen/module/operations.d.ts +0 -10
  584. package/dist/node/src/document-model/gen/module/operations.d.ts.map +0 -1
  585. package/dist/node/src/document-model/gen/object.d.ts +0 -29
  586. package/dist/node/src/document-model/gen/object.d.ts.map +0 -1
  587. package/dist/node/src/document-model/gen/operation/actions.d.ts +0 -14
  588. package/dist/node/src/document-model/gen/operation/actions.d.ts.map +0 -1
  589. package/dist/node/src/document-model/gen/operation/creators.d.ts +0 -13
  590. package/dist/node/src/document-model/gen/operation/creators.d.ts.map +0 -1
  591. package/dist/node/src/document-model/gen/operation/object.d.ts.map +0 -1
  592. package/dist/node/src/document-model/gen/operation/operations.d.ts +0 -15
  593. package/dist/node/src/document-model/gen/operation/operations.d.ts.map +0 -1
  594. package/dist/node/src/document-model/gen/operation-error/actions.d.ts +0 -11
  595. package/dist/node/src/document-model/gen/operation-error/actions.d.ts.map +0 -1
  596. package/dist/node/src/document-model/gen/operation-error/creators.d.ts.map +0 -1
  597. package/dist/node/src/document-model/gen/operation-error/object.d.ts.map +0 -1
  598. package/dist/node/src/document-model/gen/operation-error/operations.d.ts +0 -12
  599. package/dist/node/src/document-model/gen/operation-error/operations.d.ts.map +0 -1
  600. package/dist/node/src/document-model/gen/operation-example/actions.d.ts +0 -8
  601. package/dist/node/src/document-model/gen/operation-example/actions.d.ts.map +0 -1
  602. package/dist/node/src/document-model/gen/operation-example/creators.d.ts +0 -7
  603. package/dist/node/src/document-model/gen/operation-example/creators.d.ts.map +0 -1
  604. package/dist/node/src/document-model/gen/operation-example/object.d.ts +0 -11
  605. package/dist/node/src/document-model/gen/operation-example/object.d.ts.map +0 -1
  606. package/dist/node/src/document-model/gen/operation-example/operations.d.ts +0 -9
  607. package/dist/node/src/document-model/gen/operation-example/operations.d.ts.map +0 -1
  608. package/dist/node/src/document-model/gen/reducer.d.ts +0 -6
  609. package/dist/node/src/document-model/gen/reducer.d.ts.map +0 -1
  610. package/dist/node/src/document-model/gen/schema/index.d.ts +0 -3
  611. package/dist/node/src/document-model/gen/schema/index.d.ts.map +0 -1
  612. package/dist/node/src/document-model/gen/schema/types.d.ts.map +0 -1
  613. package/dist/node/src/document-model/gen/schema/zod.d.ts +0 -454
  614. package/dist/node/src/document-model/gen/schema/zod.d.ts.map +0 -1
  615. package/dist/node/src/document-model/gen/state/actions.d.ts +0 -10
  616. package/dist/node/src/document-model/gen/state/actions.d.ts.map +0 -1
  617. package/dist/node/src/document-model/gen/state/creators.d.ts +0 -9
  618. package/dist/node/src/document-model/gen/state/creators.d.ts.map +0 -1
  619. package/dist/node/src/document-model/gen/state/object.d.ts +0 -13
  620. package/dist/node/src/document-model/gen/state/object.d.ts.map +0 -1
  621. package/dist/node/src/document-model/gen/state/operations.d.ts +0 -11
  622. package/dist/node/src/document-model/gen/state/operations.d.ts.map +0 -1
  623. package/dist/node/src/document-model/gen/types.d.ts +0 -9
  624. package/dist/node/src/document-model/gen/types.d.ts.map +0 -1
  625. package/dist/node/src/document-model/gen/utils.d.ts +0 -7
  626. package/dist/node/src/document-model/gen/utils.d.ts.map +0 -1
  627. package/dist/node/src/document-model/gen/versioning/actions.d.ts +0 -9
  628. package/dist/node/src/document-model/gen/versioning/actions.d.ts.map +0 -1
  629. package/dist/node/src/document-model/gen/versioning/creators.d.ts +0 -8
  630. package/dist/node/src/document-model/gen/versioning/creators.d.ts.map +0 -1
  631. package/dist/node/src/document-model/gen/versioning/object.d.ts +0 -12
  632. package/dist/node/src/document-model/gen/versioning/object.d.ts.map +0 -1
  633. package/dist/node/src/document-model/gen/versioning/operations.d.ts +0 -10
  634. package/dist/node/src/document-model/gen/versioning/operations.d.ts.map +0 -1
  635. package/dist/node/src/document-model/index.d.ts +0 -77
  636. package/dist/node/src/document-model/index.d.ts.map +0 -1
  637. package/dist/node/src/index.d.ts +0 -25
  638. package/dist/node/src/index.d.ts.map +0 -1
  639. package/dist/node/test/document/crypto.test.d.ts +0 -2
  640. package/dist/node/test/document/crypto.test.d.ts.map +0 -1
  641. package/dist/node/test/document/event-vs-command.test.d.ts +0 -2
  642. package/dist/node/test/document/event-vs-command.test.d.ts.map +0 -1
  643. package/dist/node/test/document/local.test.d.ts +0 -2
  644. package/dist/node/test/document/local.test.d.ts.map +0 -1
  645. package/dist/node/test/document/object.test.d.ts +0 -2
  646. package/dist/node/test/document/object.test.d.ts.map +0 -1
  647. package/dist/node/test/document/operation-id.test.d.ts +0 -2
  648. package/dist/node/test/document/operation-id.test.d.ts.map +0 -1
  649. package/dist/node/test/document/prune.test.d.ts +0 -2
  650. package/dist/node/test/document/prune.test.d.ts.map +0 -1
  651. package/dist/node/test/document/reducer.test.d.ts +0 -2
  652. package/dist/node/test/document/reducer.test.d.ts.map +0 -1
  653. package/dist/node/test/document/skip-operations.test.d.ts +0 -2
  654. package/dist/node/test/document/skip-operations.test.d.ts.map +0 -1
  655. package/dist/node/test/document/undo-redo.test.d.ts +0 -2
  656. package/dist/node/test/document/undo-redo.test.d.ts.map +0 -1
  657. package/dist/node/test/document/utils.test.d.ts +0 -2
  658. package/dist/node/test/document/utils.test.d.ts.map +0 -1
  659. package/dist/node/test/document-helpers/addUndo.test.d.ts +0 -2
  660. package/dist/node/test/document-helpers/addUndo.test.d.ts.map +0 -1
  661. package/dist/node/test/document-helpers/attachBranch.test.d.ts +0 -2
  662. package/dist/node/test/document-helpers/attachBranch.test.d.ts.map +0 -1
  663. package/dist/node/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts +0 -2
  664. package/dist/node/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +0 -1
  665. package/dist/node/test/document-helpers/conflictResolution.test.d.ts +0 -2
  666. package/dist/node/test/document-helpers/conflictResolution.test.d.ts.map +0 -1
  667. package/dist/node/test/document-helpers/filterDuplicatedOperations.test.d.ts +0 -2
  668. package/dist/node/test/document-helpers/filterDuplicatedOperations.test.d.ts.map +0 -1
  669. package/dist/node/test/document-helpers/garbageCollect.test.d.ts +0 -2
  670. package/dist/node/test/document-helpers/garbageCollect.test.d.ts.map +0 -1
  671. package/dist/node/test/document-helpers/groupOperationsByScope.test.d.ts +0 -2
  672. package/dist/node/test/document-helpers/groupOperationsByScope.test.d.ts.map +0 -1
  673. package/dist/node/test/document-helpers/merge.test.d.ts +0 -2
  674. package/dist/node/test/document-helpers/merge.test.d.ts.map +0 -1
  675. package/dist/node/test/document-helpers/nextSkipNumber.test.d.ts +0 -2
  676. package/dist/node/test/document-helpers/nextSkipNumber.test.d.ts.map +0 -1
  677. package/dist/node/test/document-helpers/prepareOperations.test.d.ts +0 -2
  678. package/dist/node/test/document-helpers/prepareOperations.test.d.ts.map +0 -1
  679. package/dist/node/test/document-helpers/removeExistingOperations.test.d.ts +0 -2
  680. package/dist/node/test/document-helpers/removeExistingOperations.test.d.ts.map +0 -1
  681. package/dist/node/test/document-helpers/reshuffleByTimestamp.test.d.ts +0 -2
  682. package/dist/node/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +0 -1
  683. package/dist/node/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts +0 -2
  684. package/dist/node/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +0 -1
  685. package/dist/node/test/document-helpers/skipHeaderOperations.test.d.ts +0 -2
  686. package/dist/node/test/document-helpers/skipHeaderOperations.test.d.ts.map +0 -1
  687. package/dist/node/test/document-helpers/sortOperations.test.d.ts +0 -2
  688. package/dist/node/test/document-helpers/sortOperations.test.d.ts.map +0 -1
  689. package/dist/node/test/document-helpers/split.test.d.ts +0 -2
  690. package/dist/node/test/document-helpers/split.test.d.ts.map +0 -1
  691. package/dist/node/test/document-helpers/utils.d.ts +0 -8
  692. package/dist/node/test/document-helpers/utils.d.ts.map +0 -1
  693. package/dist/node/test/document-model/object.test.d.ts +0 -2
  694. package/dist/node/test/document-model/object.test.d.ts.map +0 -1
  695. package/dist/node/test/document-model/replay.test.d.ts +0 -2
  696. package/dist/node/test/document-model/replay.test.d.ts.map +0 -1
  697. package/dist/node/test/document-model/skip-operations.test.d.ts +0 -2
  698. package/dist/node/test/document-model/skip-operations.test.d.ts.map +0 -1
  699. package/dist/node/test/document-model/validation.test.d.ts +0 -2
  700. package/dist/node/test/document-model/validation.test.d.ts.map +0 -1
  701. package/dist/node/test/document-model/zip.test.d.ts +0 -2
  702. package/dist/node/test/document-model/zip.test.d.ts.map +0 -1
  703. package/dist/node/test/helpers.d.ts +0 -40
  704. package/dist/node/test/helpers.d.ts.map +0 -1
  705. package/dist/node/utils.d.ts +0 -2
  706. package/dist/node/vite.config.d.ts +0 -3
  707. package/dist/node/vite.config.d.ts.map +0 -1
  708. package/dist/node/vitest.config.d.ts +0 -3
  709. package/dist/node/vitest.config.d.ts.map +0 -1
  710. /package/dist/{browser/test → test}/document/crypto.test.d.ts +0 -0
  711. /package/dist/{browser/test → test}/document/event-vs-command.test.d.ts +0 -0
  712. /package/dist/{browser/test → test}/document/local.test.d.ts +0 -0
  713. /package/dist/{browser/test → test}/document/object.test.d.ts +0 -0
  714. /package/dist/{browser/test → test}/document/operation-id.test.d.ts +0 -0
  715. /package/dist/{browser/test → test}/document/prune.test.d.ts +0 -0
  716. /package/dist/{browser/test → test}/document/reducer.test.d.ts +0 -0
  717. /package/dist/{browser/test → test}/document/skip-operations.test.d.ts +0 -0
  718. /package/dist/{browser/test → test}/document/undo-redo.test.d.ts +0 -0
  719. /package/dist/{browser/test → test}/document/utils.test.d.ts +0 -0
  720. /package/dist/{browser/test → test}/document-helpers/addUndo.test.d.ts +0 -0
  721. /package/dist/{browser/test → test}/document-helpers/attachBranch.test.d.ts +0 -0
  722. /package/dist/{browser/test → test}/document-helpers/checkCleanedOperationsIntegrity.test.d.ts +0 -0
  723. /package/dist/{browser/test → test}/document-helpers/conflictResolution.test.d.ts +0 -0
  724. /package/dist/{browser/test → test}/document-helpers/filterDuplicatedOperations.test.d.ts +0 -0
  725. /package/dist/{browser/test → test}/document-helpers/garbageCollect.test.d.ts +0 -0
  726. /package/dist/{browser/test → test}/document-helpers/groupOperationsByScope.test.d.ts +0 -0
  727. /package/dist/{browser/test → test}/document-helpers/merge.test.d.ts +0 -0
  728. /package/dist/{browser/test → test}/document-helpers/nextSkipNumber.test.d.ts +0 -0
  729. /package/dist/{browser/test → test}/document-helpers/prepareOperations.test.d.ts +0 -0
  730. /package/dist/{browser/test → test}/document-helpers/removeExistingOperations.test.d.ts +0 -0
  731. /package/dist/{browser/test → test}/document-helpers/reshuffleByTimestamp.test.d.ts +0 -0
  732. /package/dist/{browser/test → test}/document-helpers/reshuffleByTimestampAndIndex.test.d.ts +0 -0
  733. /package/dist/{browser/test → test}/document-helpers/skipHeaderOperations.test.d.ts +0 -0
  734. /package/dist/{browser/test → test}/document-helpers/sortOperations.test.d.ts +0 -0
  735. /package/dist/{browser/test → test}/document-helpers/split.test.d.ts +0 -0
  736. /package/dist/{browser/test → test}/document-model/object.test.d.ts +0 -0
  737. /package/dist/{browser/test → test}/document-model/replay.test.d.ts +0 -0
  738. /package/dist/{browser/test → test}/document-model/skip-operations.test.d.ts +0 -0
  739. /package/dist/{browser/test → test}/document-model/validation.test.d.ts +0 -0
  740. /package/dist/{browser/test → test}/document-model/zip.test.d.ts +0 -0
@@ -0,0 +1,410 @@
1
+ import stringify from "safe-stable-stringify";
2
+ export var IntegrityIssueType;
3
+ (function (IntegrityIssueType) {
4
+ IntegrityIssueType["UNEXPECTED_INDEX"] = "UNEXPECTED_INDEX";
5
+ })(IntegrityIssueType || (IntegrityIssueType = {}));
6
+ export var IntegrityIssueSubType;
7
+ (function (IntegrityIssueSubType) {
8
+ IntegrityIssueSubType["DUPLICATED_INDEX"] = "DUPLICATED_INDEX";
9
+ IntegrityIssueSubType["MISSING_INDEX"] = "MISSING_INDEX";
10
+ })(IntegrityIssueSubType || (IntegrityIssueSubType = {}));
11
+ export function checkCleanedOperationsIntegrity(sortedOperations) {
12
+ const result = [];
13
+ // 1:1 1
14
+ // 0:0 0 -> 1:0 1 -> 2:0 -> 3:0 -> 4:0 -> 5:0
15
+ // 0:0 0 -> 2:1 1 -> 3:0 -> 4:0 -> 5:0
16
+ // 0:0 0 -> 3:2 1 -> 4:0 -> 5:0
17
+ // 0:0 0 -> 3:2 1 -> 5:1
18
+ // 0:3 (expected 0, got -3)
19
+ // 1:2 (expected 0, got -1)
20
+ // 0:0 -> 1:1
21
+ // 0:0 -> 2:2
22
+ // 0:0 -> 3:2 -> 5:2
23
+ let currentIndex = -1;
24
+ for (const nextOperation of sortedOperations) {
25
+ const nextIndex = nextOperation.index - nextOperation.skip;
26
+ if (nextIndex !== currentIndex + 1) {
27
+ result.push({
28
+ operation: {
29
+ index: nextOperation.index,
30
+ skip: nextOperation.skip,
31
+ },
32
+ issue: IntegrityIssueType.UNEXPECTED_INDEX,
33
+ category: nextIndex > currentIndex + 1
34
+ ? IntegrityIssueSubType.MISSING_INDEX
35
+ : IntegrityIssueSubType.DUPLICATED_INDEX,
36
+ message: `Expected index ${currentIndex + 1} with skip 0 or equivalent, got index ${nextOperation.index} with skip ${nextOperation.skip}`,
37
+ });
38
+ }
39
+ currentIndex = nextOperation.index;
40
+ }
41
+ return result;
42
+ }
43
+ // [] -> []
44
+ // [0:0] -> [0:0]
45
+ // 0:0 1:0 2:0 => 0:0 1:0 2:0, removals 0, no issues
46
+ // 0:0 1:1 2:0 => 1:1 2:0, removals 1, no issues
47
+ // 0:0 1:1 2:0 3:1 => 1:1 3:1, removals 2, no issues
48
+ // 0:0 1:1 2:0 3:3 => 3:3
49
+ // 1:1 2:0 3:0 => 1:1 2:0 3:0, removals 0, no issues
50
+ // 1:0 0:0 2:0 => 2:0, removals 2, issues [UNEXPECTED_INDEX, INDEX_OUT_OF_ORDER]
51
+ // 0:0 1:0 2:0 => 0:0 1:0 2:0, removals 0, no issues
52
+ // 0:0 1:0 2:0 => 0:0 1:0 2:0, removals 0, no issues
53
+ // 0:0 1:0 2:0 => 0:0 1:0 2:0, removals 0, no issues
54
+ export function garbageCollect(sortedOperations) {
55
+ const result = [];
56
+ let i = sortedOperations.length - 1;
57
+ while (i > -1) {
58
+ result.unshift(sortedOperations[i]);
59
+ const skipUntil = (sortedOperations[i]?.index || 0) - (sortedOperations[i]?.skip || 0) - 1;
60
+ let j = i - 1;
61
+ while (j > -1 && (sortedOperations[j]?.index || 0) > skipUntil) {
62
+ j--;
63
+ }
64
+ i = j;
65
+ }
66
+ return result;
67
+ }
68
+ export function addUndo(sortedOperations) {
69
+ const operationsCopy = [...sortedOperations];
70
+ const latestOperation = operationsCopy[operationsCopy.length - 1];
71
+ if (!latestOperation)
72
+ return operationsCopy;
73
+ if (latestOperation.type === "NOOP") {
74
+ operationsCopy.push({
75
+ ...latestOperation,
76
+ index: latestOperation.index,
77
+ type: "NOOP",
78
+ skip: nextSkipNumber(sortedOperations),
79
+ });
80
+ }
81
+ else {
82
+ operationsCopy.push({
83
+ type: "NOOP",
84
+ index: latestOperation.index + 1,
85
+ timestamp: new Date().toISOString(),
86
+ input: {},
87
+ skip: 1,
88
+ scope: latestOperation.scope,
89
+ hash: latestOperation.hash,
90
+ });
91
+ }
92
+ return operationsCopy;
93
+ }
94
+ // [0:0 2:0 1:0 3:3 3:1] => [0:0 1:0 2:0 3:1 3:3]
95
+ // Sort by index _and_ skip number
96
+ export function sortOperations(operations) {
97
+ return operations
98
+ .slice()
99
+ .sort((a, b) => a.skip - b.skip)
100
+ .sort((a, b) => a.index - b.index);
101
+ }
102
+ // [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, 2:0, B3:0, B4:2, B5:0]
103
+ // GC => [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, B4:2, B5:0]
104
+ // Split => [0:0, 1:0] + [2:0, A3:0, A4:0, A5:0] + [B4:2, B5:0]
105
+ // Reshuffle(6:4) => [6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
106
+ // merge => [0:0, 1:0, 6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
107
+ export function reshuffleByTimestamp(startIndex, opsA, opsB) {
108
+ return [...opsA, ...opsB]
109
+ .sort((a, b) => new Date(a.timestamp || "").getTime() -
110
+ new Date(b.timestamp || "").getTime())
111
+ .map((op, i) => ({
112
+ ...op,
113
+ index: startIndex.index + i,
114
+ skip: i === 0 ? startIndex.skip : 0,
115
+ }));
116
+ }
117
+ export function reshuffleByTimestampAndIndex(startIndex, opsA, opsB) {
118
+ return [...opsA, ...opsB]
119
+ .sort((a, b) => new Date(a.timestamp || "").getTime() -
120
+ new Date(b.timestamp || "").getTime())
121
+ .sort((a, b) => a.index - b.index)
122
+ .map((op, i) => ({
123
+ ...op,
124
+ index: startIndex.index + i,
125
+ skip: i === 0 ? startIndex.skip : 0,
126
+ }));
127
+ }
128
+ // TODO: implement better operation equality function
129
+ export function operationsAreEqual(op1, op2) {
130
+ return stringify(op1) === stringify(op2);
131
+ }
132
+ // [T0:0 T1:0 T2:0 T3:0] + [B4:0 B5:0] = [T0:0 T1:0 T2:0 T3:0 B4:0 B5:0]
133
+ // [T0:0 T1:0 T2:0 T3:0] + [B3:0 B4:0] = [T0:0 T1:0 T2:0 B3:0 B4:0]
134
+ // [T0:0 T1:0 T2:0 T3:0] + [B2:0 B3:0] = [T0:0 T1:0 B2:0 B3:0]
135
+ // [T0:0 T1:0 T2:0 T3:0] + [B4:0 B4:2] = [T0:0 T1:0 T2:0 T3:0 B4:0 B4:2]
136
+ // [T0:0 T1:0 T2:0 T3:0] + [B3:0 B3:2] = [T0:0 T1:0 T2:0 B3:0 B3:2]
137
+ // [T0:0 T1:0 T2:0 T3:0] + [B2:3 B3:0] = [T0:0 T1:0 B2:3 B3:0]
138
+ export function attachBranch(trunk, newBranch) {
139
+ const trunkCopy = garbageCollect(sortOperations(trunk.slice()));
140
+ const newOperations = garbageCollect(sortOperations(newBranch.slice()));
141
+ if (trunkCopy.length < 1) {
142
+ return [newOperations, []];
143
+ }
144
+ const result = [];
145
+ let enteredBranch = false;
146
+ while (newOperations.length > 0) {
147
+ const newOperationCandidate = newOperations[0];
148
+ let nextTrunkOperation = trunkCopy.shift();
149
+ while (nextTrunkOperation &&
150
+ precedes(nextTrunkOperation, newOperationCandidate)) {
151
+ result.push(nextTrunkOperation);
152
+ nextTrunkOperation = trunkCopy.shift();
153
+ }
154
+ if (!nextTrunkOperation) {
155
+ enteredBranch = true;
156
+ }
157
+ else if (!enteredBranch) {
158
+ if (operationsAreEqual(nextTrunkOperation, newOperationCandidate)) {
159
+ newOperations.shift();
160
+ result.push(nextTrunkOperation);
161
+ }
162
+ else {
163
+ trunkCopy.unshift(nextTrunkOperation);
164
+ enteredBranch = true;
165
+ }
166
+ }
167
+ if (enteredBranch) {
168
+ let nextAppend = newOperations.shift();
169
+ while (nextAppend) {
170
+ result.push(nextAppend);
171
+ nextAppend = newOperations.shift();
172
+ }
173
+ }
174
+ }
175
+ if (!enteredBranch) {
176
+ let nextAppend = trunkCopy.shift();
177
+ while (nextAppend) {
178
+ result.push(nextAppend);
179
+ nextAppend = trunkCopy.shift();
180
+ }
181
+ }
182
+ return [garbageCollect(result), trunkCopy];
183
+ }
184
+ export function precedes(op1, op2) {
185
+ return (op1.index < op2.index ||
186
+ (op1.index === op2.index && op1.id === op2.id && op1.skip < op2.skip));
187
+ }
188
+ export function split(sortedTargetOperations, sortedMergeOperations) {
189
+ const commonOperations = [];
190
+ const targetDiffOperations = [];
191
+ const mergeDiffOperations = [];
192
+ // get bigger array length
193
+ const maxLength = Math.max(sortedTargetOperations.length, sortedMergeOperations.length);
194
+ let splitHappened = false;
195
+ for (let i = 0; i < maxLength; i++) {
196
+ const targetOperation = sortedTargetOperations[i];
197
+ const mergeOperation = sortedMergeOperations[i];
198
+ if (targetOperation && mergeOperation) {
199
+ if (!splitHappened &&
200
+ operationsAreEqual(targetOperation, mergeOperation)) {
201
+ commonOperations.push(targetOperation);
202
+ }
203
+ else {
204
+ splitHappened = true;
205
+ targetDiffOperations.push(targetOperation);
206
+ mergeDiffOperations.push(mergeOperation);
207
+ }
208
+ }
209
+ else if (targetOperation) {
210
+ targetDiffOperations.push(targetOperation);
211
+ }
212
+ else if (mergeOperation) {
213
+ mergeDiffOperations.push(mergeOperation);
214
+ }
215
+ }
216
+ return [commonOperations, targetDiffOperations, mergeDiffOperations];
217
+ }
218
+ // [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, 2:0, B3:0, B4:2, B5:0]
219
+ // GC => [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, B4:2, B5:0]
220
+ // Split => [0:0, 1:0] + [2:0, A3:0, A4:0, A5:0] + [B4:2, B5:0]
221
+ // Reshuffle(6:4) => [6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
222
+ // merge => [0:0, 1:0, 6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
223
+ export function merge(sortedTargetOperations, sortedMergeOperations, reshuffle) {
224
+ const [_commonOperations, _targetOperations, _mergeOperations] = split(garbageCollect(sortedTargetOperations), garbageCollect(sortedMergeOperations));
225
+ const maxCommonIndex = getMaxIndex(_commonOperations);
226
+ const nextIndex = 1 +
227
+ Math.max(maxCommonIndex, getMaxIndex(_targetOperations), getMaxIndex(_mergeOperations));
228
+ const filteredMergeOperations = filterDuplicatedOperations(_mergeOperations, _targetOperations);
229
+ const newOperationHistory = reshuffle({
230
+ index: nextIndex,
231
+ skip: nextIndex - (maxCommonIndex + 1),
232
+ }, _targetOperations, filteredMergeOperations);
233
+ return _commonOperations.concat(newOperationHistory);
234
+ }
235
+ function getMaxIndex(sortedOperations) {
236
+ const lastElement = sortedOperations[sortedOperations.length - 1];
237
+ if (!lastElement) {
238
+ return -1;
239
+ }
240
+ return lastElement.index;
241
+ }
242
+ // [] => -1
243
+ // [0:0] => -1
244
+ // [0:0 1:0] => 1
245
+ // [0:0 1:1] => -1
246
+ // [1:1] => -1
247
+ // [0:0 1:0 2:0] => 1
248
+ // [0:0 1:0 2:0 2:1] => 2
249
+ // [0:0 1:0 2:0 2:1 2:2] => -1
250
+ // [0:0 1:1 2:0] => 2
251
+ // [0:0 1:1 2:2] => -1
252
+ // [0:0 1:1 2:0 3:0] => 1
253
+ // [0:0 1:1 2:0 3:1] => 3
254
+ // [0:0 1:1 2:0 3:3] => -1
255
+ // [50:50 100:50 150:50 151:0 152:0 153:0 154:3] => 53
256
+ export function nextSkipNumber(sortedOperations) {
257
+ if (sortedOperations.length < 1) {
258
+ return -1;
259
+ }
260
+ const cleanedOperations = garbageCollect(sortedOperations);
261
+ let nextSkip = (cleanedOperations[cleanedOperations.length - 1]?.skip || 0) + 1;
262
+ if (cleanedOperations.length > 1) {
263
+ nextSkip += cleanedOperations[cleanedOperations.length - 2]?.skip || 0;
264
+ }
265
+ return (cleanedOperations[cleanedOperations.length - 1]?.index || -1) <
266
+ nextSkip
267
+ ? -1
268
+ : nextSkip;
269
+ }
270
+ export function checkOperationsIntegrity(operations) {
271
+ return checkCleanedOperationsIntegrity(garbageCollect(sortOperations(operations)));
272
+ }
273
+ export function groupOperationsByScope(operations) {
274
+ const result = operations.reduce((acc, operation) => {
275
+ if (!acc[operation.scope]) {
276
+ acc[operation.scope] = [];
277
+ }
278
+ acc[operation.scope]?.push(operation);
279
+ return acc;
280
+ }, {});
281
+ return result;
282
+ }
283
+ export function prepareOperations(operationsHistory, newOperations) {
284
+ const result = {
285
+ integrityIssues: [],
286
+ validOperations: [],
287
+ invalidOperations: [],
288
+ duplicatedOperations: [],
289
+ };
290
+ const sortedOperationsHistory = sortOperations(operationsHistory);
291
+ const sortedOperations = sortOperations(newOperations);
292
+ const integrityErrors = checkCleanedOperationsIntegrity([
293
+ ...sortedOperationsHistory,
294
+ ...sortedOperations,
295
+ ]);
296
+ const missingIndexErrors = integrityErrors.filter((integrityIssue) => integrityIssue.category === IntegrityIssueSubType.MISSING_INDEX);
297
+ // get the integrity error with the lowest index operation
298
+ const firstMissingIndexOperation = [...missingIndexErrors]
299
+ .sort((a, b) => b.operation.index - a.operation.index)
300
+ .pop()?.operation;
301
+ for (const newOperation of sortedOperations) {
302
+ // Operation is missing index or it follows an operation that is missing index
303
+ if (firstMissingIndexOperation &&
304
+ newOperation.index >= firstMissingIndexOperation.index) {
305
+ result.invalidOperations.push(newOperation);
306
+ continue;
307
+ }
308
+ // check if operation is duplicated
309
+ const isDuplicatedOperation = integrityErrors.some((integrityError) => {
310
+ return (integrityError.operation.index === newOperation.index &&
311
+ integrityError.operation.skip === newOperation.skip &&
312
+ integrityError.category === IntegrityIssueSubType.DUPLICATED_INDEX);
313
+ });
314
+ // add to duplicated operations if it is duplicated
315
+ if (isDuplicatedOperation) {
316
+ result.duplicatedOperations.push(newOperation);
317
+ continue;
318
+ }
319
+ // otherwise, add to valid operations
320
+ result.validOperations.push(newOperation);
321
+ }
322
+ result.integrityIssues.push(...integrityErrors);
323
+ return result;
324
+ }
325
+ export function removeExistingOperations(newOperations, operationsHistory) {
326
+ return newOperations.filter((newOperation) => {
327
+ return !operationsHistory.some((historyOperation) => {
328
+ return ((newOperation.type === "NOOP" &&
329
+ newOperation.skip === 0 &&
330
+ newOperation.index === historyOperation.index) ||
331
+ (newOperation.index === historyOperation.index &&
332
+ newOperation.skip === historyOperation.skip &&
333
+ newOperation.scope === historyOperation.scope &&
334
+ newOperation.hash === historyOperation.hash &&
335
+ newOperation.type === historyOperation.type));
336
+ });
337
+ });
338
+ }
339
+ /**
340
+ * Skips header operations and returns the remaining operations.
341
+ *
342
+ * @param operations - The array of operations.
343
+ * @param skipHeaderOperation - The skip header operation index.
344
+ * @returns The remaining operations after skipping header operations.
345
+ */
346
+ export function skipHeaderOperations(operations, skipHeaderOperation) {
347
+ const lastOperation = sortOperations(operations).at(-1);
348
+ const lastIndex = lastOperation?.index ?? -1;
349
+ const nextIndex = lastIndex + 1;
350
+ const skipOperationIndex = {
351
+ ...skipHeaderOperation,
352
+ index: skipHeaderOperation.index ?? nextIndex,
353
+ };
354
+ if (skipOperationIndex.index < lastIndex) {
355
+ throw new Error(`The skip header operation index must be greater than or equal to ${lastIndex}`);
356
+ }
357
+ const clearedOperations = garbageCollect(sortOperations([...operations, skipOperationIndex]));
358
+ return clearedOperations.slice(0, -1); //clearedOperation ? [clearedOperation as TOpIndex] : [];
359
+ }
360
+ export function garbageCollectDocumentOperations(documentOperations) {
361
+ const clearedOperations = Object.entries(documentOperations).reduce((acc, entry) => {
362
+ const [scope, ops] = entry;
363
+ return {
364
+ ...acc,
365
+ [scope]: garbageCollect(sortOperations(ops)),
366
+ };
367
+ }, {});
368
+ return clearedOperations;
369
+ }
370
+ /**
371
+ * Filters out duplicated operations from the target operations array based on their IDs.
372
+ * If an operation has an ID, it is considered duplicated if there is another operation in the source operations array with the same ID.
373
+ * If an operation does not have an ID, it is considered unique and will not be filtered out.
374
+ * @param targetOperations - The array of target operations to filter.
375
+ * @param sourceOperations - The array of source operations to compare against.
376
+ * @returns An array of operations with duplicates filtered out.
377
+ */
378
+ export function filterDuplicatedOperations(targetOperations, sourceOperations) {
379
+ return targetOperations.filter((op) => {
380
+ if (op.id) {
381
+ return !sourceOperations.some((targetOp) => targetOp.id === op.id);
382
+ }
383
+ return true;
384
+ });
385
+ }
386
+ export function filterDocumentOperationsResultingState(documentOperations) {
387
+ if (!documentOperations) {
388
+ return {};
389
+ }
390
+ const entries = Object.entries(documentOperations);
391
+ return entries.reduce((acc, [scope, operations]) => ({
392
+ ...acc,
393
+ [scope]: operations.map((op) => {
394
+ const { resultingState, ...restProps } = op;
395
+ return restProps;
396
+ }),
397
+ }), {});
398
+ }
399
+ /**
400
+ * Calculates the difference between two arrays of operations.
401
+ * Returns an array of operations that are present in `clearedOperationsA` but not in `clearedOperationsB`.
402
+ *
403
+ * @template TOp - The type of the operations.
404
+ * @param {TOp[]} clearedOperationsA - The first array of operations.
405
+ * @param {TOp[]} clearedOperationsB - The second array of operations.
406
+ * @returns {TOp[]} - The difference between the two arrays of operations.
407
+ */
408
+ export function diffOperations(clearedOperationsA, clearedOperationsB) {
409
+ return clearedOperationsA.filter((operationA) => !clearedOperationsB.some((operationB) => operationA.index === operationB.index));
410
+ }
@@ -1,4 +1,4 @@
1
- import { ZodIssue } from 'zod';
1
+ import { ZodIssue } from "zod";
2
2
  export declare class InvalidActionInputError extends Error {
3
3
  data: unknown;
4
4
  constructor(data: unknown);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE/B,qBAAa,uBAAwB,SAAQ,KAAK;IACzC,IAAI,EAAE,OAAO,CAAC;gBACT,IAAI,EAAE,OAAO;CAO1B;AAED,qBAAa,0BAA2B,SAAQ,uBAAuB;IAC9D,MAAM,EAAE,QAAQ,EAAE,CAAC;gBAEd,MAAM,EAAE,QAAQ,EAAE;CAK/B"}
@@ -0,0 +1,18 @@
1
+ export class InvalidActionInputError extends Error {
2
+ data;
3
+ constructor(data) {
4
+ super();
5
+ this.name = "InvalidActionInputError";
6
+ this.data = data;
7
+ this.message =
8
+ this.message || `Invalid action input: ${JSON.stringify(data, null, 2)}`;
9
+ }
10
+ }
11
+ export class InvalidActionInputZodError extends InvalidActionInputError {
12
+ issues;
13
+ constructor(issues) {
14
+ super(issues);
15
+ this.issues = issues;
16
+ this.name = "InvalidActionInputZodError";
17
+ }
18
+ }
@@ -1,8 +1,9 @@
1
- import { default as JSZip } from 'jszip';
2
- import { Action, AttachmentInput, Document, Reducer } from '../types';
3
- import { ReplayDocumentOptions } from './base';
1
+ import { Reducer } from "#document/types.js";
2
+ import JSZip from "jszip";
3
+ import { AttachmentInput, PHDocument } from "../types.js";
4
+ import { ReplayDocumentOptions } from "./base.js";
4
5
  export type FileInput = string | number[] | Uint8Array | ArrayBuffer | Blob;
5
- export declare const createZip: (document: Document) => Promise<JSZip>;
6
+ export declare function createZip(document: PHDocument): JSZip;
6
7
  /**
7
8
  * Saves a document to a ZIP file.
8
9
  *
@@ -15,8 +16,8 @@ export declare const createZip: (document: Document) => Promise<JSZip>;
15
16
  * @param extension - The extension to use for the file.
16
17
  * @returns A promise that resolves to the path of the saved file.
17
18
  */
18
- export declare const saveToFile: (document: Document, path: string, extension: string, name?: string) => Promise<string>;
19
- export declare const saveToFileHandle: (document: Document, input: FileSystemFileHandle) => Promise<void>;
19
+ export declare function baseSaveToFile(document: PHDocument, path: string, extension: string, name?: string): Promise<string>;
20
+ export declare function baseSaveToFileHandle(document: PHDocument, input: FileSystemFileHandle): Promise<void>;
20
21
  /**
21
22
  * Loads a document from a ZIP file.
22
23
  *
@@ -32,8 +33,8 @@ export declare const saveToFileHandle: (document: Document, input: FileSystemFil
32
33
  * @returns A promise that resolves to the document state after applying all the operations.
33
34
  * @throws An error if the initial state or the operations history is not found in the ZIP file.
34
35
  */
35
- export declare const loadFromFile: <S, A extends Action, L>(path: string, reducer: Reducer<S, A, L>, options?: ReplayDocumentOptions) => Promise<Document<S, A, L>>;
36
- export declare const loadFromInput: <S, A extends Action, L>(input: FileInput, reducer: Reducer<S, A, L>, options?: ReplayDocumentOptions) => Promise<Document<S, A, L>>;
36
+ export declare function baseLoadFromFile<TDocument extends PHDocument>(path: string, reducer: Reducer<TDocument>, options?: ReplayDocumentOptions): Promise<TDocument>;
37
+ export declare function baseLoadFromInput<TDocument extends PHDocument>(input: FileInput, reducer: Reducer<TDocument>, options?: ReplayDocumentOptions): Promise<TDocument>;
37
38
  /**
38
39
  * Fetches an attachment from a URL and returns its base64-encoded data and MIME type.
39
40
  * @param url - The URL of the attachment to fetch.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAEL,eAAe,EAGf,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAkB,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAOlE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;AAE5E,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,SAuC7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,mBAgBd;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,oBAAoB,iBAO5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,SAAS,UAAU,EACjE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,SAAS,CAAC,CAGpB;AAED,wBAAsB,iBAAiB,CAAC,SAAS,SAAS,UAAU,EAClE,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,SAAS,CAAC,CAIpB;AAgED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAWzE;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAMzE"}
@@ -0,0 +1,155 @@
1
+ import { fetchFile, getFile, hash, readFile, writeFile } from "#utils/env";
2
+ import JSZip from "jszip";
3
+ import mime from "mime/lite";
4
+ import { replayDocument } from "./base.js";
5
+ import { filterDocumentOperationsResultingState, garbageCollectDocumentOperations, } from "./document-helpers.js";
6
+ import { validateOperations } from "./validation.js";
7
+ export function createZip(document) {
8
+ // create zip file
9
+ const zip = new JSZip();
10
+ const { name, revision, documentType, created, lastModified } = document;
11
+ const header = {
12
+ name,
13
+ revision,
14
+ documentType,
15
+ created,
16
+ lastModified,
17
+ };
18
+ zip.file("header.json", JSON.stringify(header, null, 2));
19
+ zip.file("state.json", JSON.stringify(document.initialState || {}, null, 2));
20
+ zip.file("current-state.json", JSON.stringify(document.state || {}, null, 2));
21
+ zip.file("operations.json", JSON.stringify(filterDocumentOperationsResultingState(document.operations), null, 2));
22
+ if (document.attachments) {
23
+ const attachments = Object.keys(document.attachments);
24
+ attachments.forEach((key) => {
25
+ const { data, ...attributes } = document.attachments?.[key] ?? {};
26
+ if (data) {
27
+ zip.file(key, data, {
28
+ base64: true,
29
+ createFolders: true,
30
+ comment: JSON.stringify(attributes),
31
+ });
32
+ }
33
+ });
34
+ }
35
+ return zip;
36
+ }
37
+ /**
38
+ * Saves a document to a ZIP file.
39
+ *
40
+ * @remarks
41
+ * This function creates a ZIP file containing the document's state, operations,
42
+ * and file attachments. The file is saved to the specified path.
43
+ *
44
+ * @param document - The document to save to the file.
45
+ * @param path - The path to save the file to.
46
+ * @param extension - The extension to use for the file.
47
+ * @returns A promise that resolves to the path of the saved file.
48
+ */
49
+ export async function baseSaveToFile(document, path, extension, name) {
50
+ // create zip file
51
+ const zip = createZip(document);
52
+ const file = await zip.generateAsync({
53
+ type: "uint8array",
54
+ streamFiles: true,
55
+ });
56
+ const fileName = name ?? document.name;
57
+ const fileExtension = `.${extension}.zip`;
58
+ return writeFile(path, fileName.endsWith(fileExtension) ? fileName : `${fileName}${fileExtension}`, file);
59
+ }
60
+ export async function baseSaveToFileHandle(document, input) {
61
+ const zip = createZip(document);
62
+ const blob = await zip.generateAsync({ type: "blob" });
63
+ const writable = await input.createWritable();
64
+ await writable.write(blob);
65
+ await writable.close();
66
+ }
67
+ /**
68
+ * Loads a document from a ZIP file.
69
+ *
70
+ * @remarks
71
+ * This function reads a ZIP file and returns the document state after
72
+ * applying all the operations. The reducer is used to apply the operations.
73
+ *
74
+ * @typeParam S - The type of the state object.
75
+ * @typeParam A - The type of the actions that can be applied to the state object.
76
+ *
77
+ * @param path - The path to the ZIP file.
78
+ * @param reducer - The reducer to apply the operations to the state object.
79
+ * @returns A promise that resolves to the document state after applying all the operations.
80
+ * @throws An error if the initial state or the operations history is not found in the ZIP file.
81
+ */
82
+ export async function baseLoadFromFile(path, reducer, options) {
83
+ const file = readFile(path);
84
+ return baseLoadFromInput(file, reducer, options);
85
+ }
86
+ export async function baseLoadFromInput(input, reducer, options) {
87
+ const zip = new JSZip();
88
+ await zip.loadAsync(input);
89
+ return loadFromZip(zip, reducer, options);
90
+ }
91
+ async function loadFromZip(zip, reducer, options) {
92
+ const initialStateZip = zip.file("state.json");
93
+ if (!initialStateZip) {
94
+ throw new Error("Initial state not found");
95
+ }
96
+ const initialStateStr = await initialStateZip.async("string");
97
+ const initialState = JSON.parse(initialStateStr);
98
+ const headerZip = zip.file("header.json");
99
+ let header = undefined;
100
+ if (headerZip) {
101
+ header = JSON.parse(await headerZip.async("string"));
102
+ }
103
+ const operationsZip = zip.file("operations.json");
104
+ if (!operationsZip) {
105
+ throw new Error("Operations history not found");
106
+ }
107
+ const operations = JSON.parse(await operationsZip.async("string"));
108
+ const clearedOperations = garbageCollectDocumentOperations(operations);
109
+ const operationsError = validateOperations(clearedOperations);
110
+ if (operationsError.length) {
111
+ const errorMessages = operationsError.map((err) => err.message);
112
+ throw new Error(errorMessages.join("\n"));
113
+ }
114
+ let result = replayDocument(initialState, clearedOperations, reducer, undefined, header, {}, options);
115
+ if (header) {
116
+ result = {
117
+ ...result,
118
+ ...header,
119
+ };
120
+ }
121
+ return result;
122
+ }
123
+ function getFileAttributes(file) {
124
+ const extension = file.replace(/^.*\./, "") || undefined;
125
+ const fileName = file.replace(/^.*[/\\]/, "") || undefined;
126
+ return { extension, fileName };
127
+ }
128
+ /**
129
+ * Fetches an attachment from a URL and returns its base64-encoded data and MIME type.
130
+ * @param url - The URL of the attachment to fetch.
131
+ * @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.
132
+ */
133
+ export async function getRemoteFile(url) {
134
+ const { buffer, mimeType = "application/octet-stream" } = await fetchFile(url);
135
+ const attributes = getFileAttributes(url);
136
+ const data = buffer.toString("base64");
137
+ return {
138
+ data,
139
+ hash: hash(data),
140
+ mimeType,
141
+ ...attributes,
142
+ };
143
+ }
144
+ /**
145
+ * Reads an attachment from a file and returns its base64-encoded data and MIME type.
146
+ * @param path - The path of the attachment file to read.
147
+ * @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.
148
+ */
149
+ export async function getLocalFile(path) {
150
+ const buffer = await getFile(path);
151
+ const mimeType = mime.getType(path) || "application/octet-stream";
152
+ const attributes = getFileAttributes(path);
153
+ const data = buffer.toString("base64");
154
+ return { data, hash: hash(data), mimeType, ...attributes };
155
+ }
@@ -1,4 +1,4 @@
1
- import { default as crypto, RandomUUIDOptions } from 'node:crypto';
1
+ import { BinaryLike, RandomUUIDOptions } from "node:crypto";
2
2
  export declare function generateUUID(options?: RandomUUIDOptions): `${string}-${string}-${string}-${string}-${string}`;
3
3
  export declare function writeFile(path: string, name: string, data: Uint8Array): Promise<string>;
4
4
  export declare function readFile(path: string): Buffer<ArrayBufferLike>;
@@ -7,5 +7,5 @@ export declare function fetchFile(url: string): Promise<{
7
7
  mimeType?: string;
8
8
  }>;
9
9
  export declare const getFile: (file: string) => Promise<Buffer<ArrayBufferLike>>;
10
- export declare const hash: (data: crypto.BinaryLike, algorithm?: string) => string;
10
+ export declare const hash: (data: BinaryLike, algorithm?: string) => string;
11
11
  //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,iBAAiB,EAGlB,MAAM,aAAa,CAAC;AAKrB,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB,uDAEvD;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,2BAEpC;AAED,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBhD;AAED,eAAO,MAAM,OAAO,SAAgB,MAAM,qCAEzC,CAAC;AAEF,eAAO,MAAM,IAAI,SAAU,UAAU,+BAEpC,CAAC"}