document-model 2.19.0 → 2.21.0

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 +2 -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} +8 -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 +301 -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 +10 -0
  179. package/dist/src/document-model/gen/utils.d.ts.map +1 -0
  180. package/dist/src/document-model/gen/utils.js +28 -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 +32 -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 +15 -52
  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 -273
  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 -273
  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
@@ -1 +0,0 @@
1
- {"version":3,"file":"creators-0lHfLHX0.js","sources":["../../../../src/document/schema/zod.ts","../../../../../../node_modules/.pnpm/safe-stable-stringify@2.5.0/node_modules/safe-stable-stringify/index.js","../../../../../../node_modules/.pnpm/safe-stable-stringify@2.5.0/node_modules/safe-stable-stringify/esm/wrapper.js","../../../../src/document/utils/node.ts","../../../../src/document/utils/crypto.ts","../../../../src/document/utils/errors.ts","../../../../../../node_modules/.pnpm/mime@4.0.6/node_modules/mime/dist/types/standard.js","../../../../../../node_modules/.pnpm/mime@4.0.6/node_modules/mime/dist/src/Mime.js","../../../../../../node_modules/.pnpm/mime@4.0.6/node_modules/mime/dist/src/index_lite.js","../../../../src/document/utils/validation.ts","../../../../src/document/utils/document-helpers.ts","../../../../src/document/utils/file.ts","../../../../src/document/actions/index.ts","../../../../src/document/actions/types.ts","../../../../src/document/reducer.ts","../../../../src/document/utils/base.ts","../../../../src/document/actions/creators.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n Action,\n DocumentFile,\n Load_State,\n LoadStateAction,\n LoadStateActionInput,\n LoadStateActionStateInput,\n Operation,\n Prune,\n PruneAction,\n PruneActionInput,\n Redo,\n RedoAction,\n Set_Name,\n SetNameAction,\n SetNameOperation,\n Undo,\n UndoAction,\n} from \".\";\nimport { OperationScope } from \"../types\";\n\ntype Properties<T> = Required<{\n [K in keyof T]: z.ZodType<T[K], any, T[K]>;\n}>;\n\ntype definedNonNullAny = {};\n\nexport const isDefinedNonNullAny = (v: any): v is definedNonNullAny =>\n v !== undefined && v !== null;\n\nexport const definedNonNullAnySchema = z\n .any()\n .refine((v) => isDefinedNonNullAny(v));\n\nexport const Load_StateSchema = z.enum([\"LOAD_STATE\"]);\n\nexport const PruneSchema = z.enum([\"PRUNE\"]);\n\nexport const RedoSchema = z.enum([\"REDO\"]);\n\nexport const Set_NameSchema = z.enum([\"SET_NAME\"]);\n\nexport const UndoSchema = z.enum([\"UNDO\"]);\n\nexport function ActionSchema(): z.ZodObject<Properties<Action>> {\n return z.object({\n __typename: z.literal(\"Action\").optional(),\n type: z.string(),\n });\n}\n\nexport function OperationScopeSchema(): z.ZodType<OperationScope> {\n return z.literal(\"global\").or(z.literal(\"local\"));\n}\n\nexport function BaseActionSchema() {\n return z.union([\n LoadStateActionSchema(),\n PruneActionSchema(),\n RedoActionSchema(),\n SetNameActionSchema(),\n UndoActionSchema(),\n ]);\n}\n\nexport function DocumentFileSchema(): z.ZodObject<Properties<DocumentFile>> {\n return z.object({\n __typename: z.literal(\"DocumentFile\").optional(),\n data: z.string(),\n extension: z.string().nullable(),\n fileName: z.string().nullable(),\n mimeType: z.string(),\n });\n}\n\nexport function LoadStateActionSchema(): z.ZodObject<\n Properties<LoadStateAction>\n> {\n return z.object({\n input: z.lazy(() => LoadStateActionInputSchema()),\n type: Load_StateSchema,\n scope: OperationScopeSchema(),\n });\n}\n\nexport function LoadStateActionInputSchema(): z.ZodObject<\n Properties<LoadStateActionInput>\n> {\n return z.object({\n operations: z.number(),\n state: z.lazy(() => LoadStateActionStateInputSchema()),\n });\n}\n\nexport function LoadStateActionStateInputSchema(): z.ZodObject<\n Properties<LoadStateActionStateInput>\n> {\n return z.object({\n data: z.unknown().nullish(),\n name: z.string(),\n });\n}\n\nexport function OperationSchema(): z.ZodObject<Properties<Operation>> {\n return z.object({\n __typename: z.literal(\"Operation\").optional(),\n hash: z.string(),\n index: z.number(),\n timestamp: z.string().datetime(),\n type: z.string(),\n });\n}\n\nexport function PruneActionSchema(): z.ZodObject<Properties<PruneAction>> {\n return z.object({\n input: z.lazy(() => PruneActionInputSchema()),\n type: PruneSchema,\n scope: OperationScopeSchema(),\n });\n}\n\nexport function PruneActionInputSchema(): z.ZodObject<\n Properties<PruneActionInput>\n> {\n return z.object({\n end: z.number().nullish(),\n start: z.number().nullish(),\n });\n}\n\nexport const RedoActionInputSchema = z.number;\n\nexport function RedoActionSchema(): z.ZodObject<Properties<RedoAction>> {\n return z.object({\n input: RedoActionInputSchema(),\n type: RedoSchema,\n scope: OperationScopeSchema(),\n });\n}\n\nexport const SetNameActionInputSchema = z.string;\n\nexport function SetNameActionSchema(): z.ZodObject<Properties<SetNameAction>> {\n return z.object({\n input: SetNameActionInputSchema(),\n type: Set_NameSchema,\n scope: z.literal(\"global\"),\n });\n}\n\nexport function SetNameOperationSchema(): z.ZodObject<\n Properties<SetNameOperation>\n> {\n return z.object({\n __typename: z.literal(\"SetNameOperation\").optional(),\n hash: z.string(),\n index: z.number(),\n input: z.string(),\n timestamp: z.string().datetime(),\n type: z.string(),\n });\n}\n\nexport const UndoActionInputSchema = z.number;\n\nexport function UndoActionSchema(): z.ZodObject<Properties<UndoAction>> {\n return z.object({\n input: UndoActionInputSchema(),\n type: UndoSchema,\n scope: OperationScopeSchema(),\n });\n}\n","'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n // Some magic numbers that worked out fine while benchmarking with v8 8.0\n if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n return `\"${str}\"`\n }\n return JSON.stringify(str)\n}\n\nfunction sort (array, comparator) {\n // Insertion sort is very efficient for small input sizes, but it has a bad\n // worst case complexity. Thus, use native array sort for bigger values.\n if (array.length > 2e2 || comparator) {\n return array.sort(comparator)\n }\n for (let i = 1; i < array.length; i++) {\n const currentValue = array[i]\n let position = i\n while (position !== 0 && array[position - 1] > currentValue) {\n array[position] = array[position - 1]\n position--\n }\n array[position] = currentValue\n }\n return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(\n Object.getPrototypeOf(\n new Int8Array()\n )\n ),\n Symbol.toStringTag\n ).get\n\nfunction isTypedArrayWithEntries (value) {\n return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n if (array.length < maximumBreadth) {\n maximumBreadth = array.length\n }\n const whitespace = separator === ',' ? '' : ' '\n let res = `\"0\":${whitespace}${array[0]}`\n for (let i = 1; i < maximumBreadth; i++) {\n res += `${separator}\"${i}\":${whitespace}${array[i]}`\n }\n return res\n}\n\nfunction getCircularValueOption (options) {\n if (hasOwnProperty.call(options, 'circularValue')) {\n const circularValue = options.circularValue\n if (typeof circularValue === 'string') {\n return `\"${circularValue}\"`\n }\n if (circularValue == null) {\n return circularValue\n }\n if (circularValue === Error || circularValue === TypeError) {\n return {\n toString () {\n throw new TypeError('Converting circular structure to JSON')\n }\n }\n }\n throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n }\n return '\"[Circular]\"'\n}\n\nfunction getDeterministicOption (options) {\n let value\n if (hasOwnProperty.call(options, 'deterministic')) {\n value = options.deterministic\n if (typeof value !== 'boolean' && typeof value !== 'function') {\n throw new TypeError('The \"deterministic\" argument must be of type boolean or comparator function')\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getBooleanOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'boolean') {\n throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'number') {\n throw new TypeError(`The \"${key}\" argument must be of type number`)\n }\n if (!Number.isInteger(value)) {\n throw new TypeError(`The \"${key}\" argument must be an integer`)\n }\n if (value < 1) {\n throw new RangeError(`The \"${key}\" argument must be >= 1`)\n }\n }\n return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n if (number === 1) {\n return '1 item'\n }\n return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n const replacerSet = new Set()\n for (const value of replacerArray) {\n if (typeof value === 'string' || typeof value === 'number') {\n replacerSet.add(String(value))\n }\n }\n return replacerSet\n}\n\nfunction getStrictOption (options) {\n if (hasOwnProperty.call(options, 'strict')) {\n const value = options.strict\n if (typeof value !== 'boolean') {\n throw new TypeError('The \"strict\" argument must be of type boolean')\n }\n if (value) {\n return (value) => {\n let message = `Object can not safely be stringified. Received type ${typeof value}`\n if (typeof value !== 'function') message += ` (${value.toString()})`\n throw new Error(message)\n }\n }\n }\n}\n\nfunction configure (options) {\n options = { ...options }\n const fail = getStrictOption(options)\n if (fail) {\n if (options.bigint === undefined) {\n options.bigint = false\n }\n if (!('circularValue' in options)) {\n options.circularValue = Error\n }\n }\n const circularValue = getCircularValueOption(options)\n const bigint = getBooleanOption(options, 'bigint')\n const deterministic = getDeterministicOption(options)\n const comparator = typeof deterministic === 'function' ? deterministic : undefined\n const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n let value = parent[key]\n\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n value = replacer.call(parent, key, value)\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n let join = ','\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let whitespace = ''\n let separator = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (deterministic && !isTypedArrayWithEntries(value)) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n const originalIndentation = indentation\n let res = ''\n let join = ','\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n stack.push(value)\n let whitespace = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n let separator = ''\n for (const key of replacer) {\n const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyIndent (key, value, stack, spacer, indentation) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again.\n if (typeof value !== 'object') {\n return stringifyIndent(key, value, stack, spacer, indentation)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n indentation += spacer\n let res = `\\n${indentation}`\n const join = `,\\n${indentation}`\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n res += `\\n${originalIndentation}`\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n indentation += spacer\n const join = `,\\n${indentation}`\n let res = ''\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, join, maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = join\n }\n if (deterministic) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}: ${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (separator !== '') {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifySimple (key, value, stack) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again\n if (typeof value !== 'object') {\n return stringifySimple(key, value, stack)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n\n const hasLength = value.length !== undefined\n if (hasLength && Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n res += ','\n }\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (hasLength && isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, ',', maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = ','\n }\n if (deterministic) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifySimple(key, value[key], stack)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${tmp}`\n separator = ','\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringify (value, replacer, space) {\n if (arguments.length > 1) {\n let spacer = ''\n if (typeof space === 'number') {\n spacer = ' '.repeat(Math.min(space, 10))\n } else if (typeof space === 'string') {\n spacer = space.slice(0, 10)\n }\n if (replacer != null) {\n if (typeof replacer === 'function') {\n return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n }\n if (Array.isArray(replacer)) {\n return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n }\n }\n if (spacer.length !== 0) {\n return stringifyIndent('', value, [], spacer, '')\n }\n }\n return stringifySimple('', value, [])\n }\n\n return stringify\n}\n","import cjsModule from '../index.js'\n\nexport const configure = cjsModule.configure\n\nexport const stringify = cjsModule\nexport default cjsModule\n","import crypto, { RandomUUIDOptions } from \"node:crypto\";\nimport fs from \"node:fs\";\nimport https from \"node:https\";\nimport { join } from \"node:path\";\n\nexport function generateUUID(options?: RandomUUIDOptions) {\n return crypto.randomUUID(options);\n}\n\nexport function writeFile(\n path: string,\n name: string,\n data: Uint8Array,\n): Promise<string> {\n const filePath = join(path, name);\n fs.mkdirSync(path, { recursive: true });\n\n return new Promise((resolve, reject) => {\n try {\n fs.writeFile(filePath, data, {}, (err) => {\n if (err) {\n reject(err);\n } else {\n resolve(filePath);\n }\n });\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject(error);\n }\n });\n}\n\nexport function readFile(path: string) {\n return fs.readFileSync(path);\n}\n\nexport function fetchFile(\n url: string,\n): Promise<{ buffer: Buffer; mimeType?: string }> {\n return new Promise((resolve, reject) => {\n https\n .get(url, (resp) => {\n const data: Uint8Array[] = [];\n const mimeType = resp.headers[\"content-type\"];\n resp.on(\"data\", (chunk: Uint8Array) => {\n data.push(chunk);\n });\n\n resp.on(\"end\", () => {\n resolve({ buffer: Buffer.concat(data), mimeType });\n });\n })\n .on(\"error\", (err) => {\n reject(err);\n });\n });\n}\n\nexport const getFile = async (file: string) => {\n return readFile(file);\n};\n\nexport const hash = (data: crypto.BinaryLike, algorithm = \"sha1\") => {\n return crypto.createHash(algorithm).update(data).digest(\"base64\");\n};\n","import stringifyJson from \"safe-stable-stringify\";\nimport type {\n Action,\n ActionSigner,\n BaseAction,\n Document,\n Operation,\n OperationSignatureContext,\n OperationSigningHandler,\n OperationVerificationHandler,\n Reducer,\n Signature,\n} from \"../types\";\nimport { generateUUID, hash } from \"./node\";\n\nexport function generateId(method?: \"UUIDv4\"): string {\n if (method && method.toString() !== \"UUIDv4\") {\n throw new Error(\n `Id generation method not supported: \"${method.toString()}\"`,\n );\n }\n return generateUUID();\n}\n\nexport function getUnixTimestamp(date: Date | string): string {\n return (new Date(date).getTime() / 1000).toFixed(0);\n}\n\nexport function buildOperationSignatureParams({\n documentId,\n signer,\n operation,\n previousStateHash,\n}: OperationSignatureContext): [string, string, string, string] {\n const { timestamp, scope, id, type } = operation;\n return [\n getUnixTimestamp(timestamp), // timestamp,\n signer.app.key, // signer public key\n hash(\n // hash (docID, scope, operationID, operationName, operationInput)\n [documentId, scope, id, type, stringifyJson(operation.input)].join(\"\"),\n ),\n previousStateHash, // state hash that the operation was applied to\n ];\n}\n\nconst textEncode = new TextEncoder();\n\nexport function buildOperationSignatureMessage(\n params: [string, string, string, string],\n): Uint8Array {\n const message = params.join(\"\");\n const prefix = \"\\x19Signed Operation:\\n\" + message.length.toString();\n return textEncode.encode(prefix + message);\n}\n\nexport function ab2hex(ab: ArrayBuffer | ArrayBufferView): string {\n const view = ArrayBuffer.isView(ab) ? ab : new Uint8Array(ab);\n return Array.prototype.map\n .call(view, (x: number) => (\"00\" + x.toString(16)).slice(-2))\n .join(\"\");\n}\n\nexport function hex2ab(hex: string) {\n return new Uint8Array(\n hex.match(/[\\da-f]{2}/gi)?.map(function (h) {\n return parseInt(h, 16);\n }) ?? [],\n );\n}\n\nexport async function buildOperationSignature(\n context: OperationSignatureContext,\n signMethod: OperationSigningHandler,\n): Promise<Signature> {\n const params = buildOperationSignatureParams(context);\n const message = buildOperationSignatureMessage(params);\n const signature = await signMethod(message);\n return [...params, `0x${ab2hex(signature)}`];\n}\n\nexport async function buildSignedOperation<T, A extends Action, L>(\n action: A | Operation<A>,\n reducer: Reducer<T, A, L>,\n document: Document<T, A, L>,\n context: Omit<OperationSignatureContext, \"operation\" | \"previousStateHash\">,\n signHandler: OperationSigningHandler,\n): Promise<Operation<A | BaseAction>> {\n const result = reducer(document, action, undefined, {\n reuseHash: true,\n reuseOperationResultingState: true,\n });\n const operation = result.operations[action.scope].at(-1);\n if (!operation) {\n throw new Error(\"Action was not applied\");\n }\n\n const previousStateHash = result.operations[action.scope].at(-2)?.hash ?? \"\";\n const signature = await buildOperationSignature(\n {\n ...context,\n operation,\n previousStateHash,\n },\n signHandler,\n );\n\n return {\n ...operation,\n context: {\n ...operation.context,\n signer: {\n ...operation.context?.signer,\n ...context.signer,\n signatures: [...(context.signer.signatures ?? []), signature],\n },\n },\n };\n}\n\nexport async function verifyOperationSignature<T, A extends Action, L>(\n signature: Signature,\n signer: Omit<ActionSigner, \"signatures\">,\n verifyHandler: OperationVerificationHandler,\n): Promise<boolean> {\n const publicKey = signer.app.key;\n const params = signature.slice(0, 4) as [string, string, string, string];\n const signatureBytes = hex2ab(signature[4]);\n const expectedMessage = buildOperationSignatureMessage(params);\n return verifyHandler(publicKey, signatureBytes, expectedMessage);\n}\n","import { ZodIssue } from \"zod\";\n\nexport class InvalidActionInputError extends Error {\n public data: unknown;\n constructor(data: unknown) {\n super();\n this.name = \"InvalidActionInputError\";\n this.data = data;\n this.message =\n this.message || `Invalid action input: ${JSON.stringify(data, null, 2)}`;\n }\n}\n\nexport class InvalidActionInputZodError extends InvalidActionInputError {\n public issues: ZodIssue[];\n\n constructor(issues: ZodIssue[]) {\n super(issues);\n this.issues = issues;\n this.name = \"InvalidActionInputZodError\";\n }\n}\n","const types = {\n 'application/andrew-inset': ['ez'],\n 'application/appinstaller': ['appinstaller'],\n 'application/applixware': ['aw'],\n 'application/appx': ['appx'],\n 'application/appxbundle': ['appxbundle'],\n 'application/atom+xml': ['atom'],\n 'application/atomcat+xml': ['atomcat'],\n 'application/atomdeleted+xml': ['atomdeleted'],\n 'application/atomsvc+xml': ['atomsvc'],\n 'application/atsc-dwd+xml': ['dwd'],\n 'application/atsc-held+xml': ['held'],\n 'application/atsc-rsat+xml': ['rsat'],\n 'application/automationml-aml+xml': ['aml'],\n 'application/automationml-amlx+zip': ['amlx'],\n 'application/bdoc': ['bdoc'],\n 'application/calendar+xml': ['xcs'],\n 'application/ccxml+xml': ['ccxml'],\n 'application/cdfx+xml': ['cdfx'],\n 'application/cdmi-capability': ['cdmia'],\n 'application/cdmi-container': ['cdmic'],\n 'application/cdmi-domain': ['cdmid'],\n 'application/cdmi-object': ['cdmio'],\n 'application/cdmi-queue': ['cdmiq'],\n 'application/cpl+xml': ['cpl'],\n 'application/cu-seeme': ['cu'],\n 'application/cwl': ['cwl'],\n 'application/dash+xml': ['mpd'],\n 'application/dash-patch+xml': ['mpp'],\n 'application/davmount+xml': ['davmount'],\n 'application/docbook+xml': ['dbk'],\n 'application/dssc+der': ['dssc'],\n 'application/dssc+xml': ['xdssc'],\n 'application/ecmascript': ['ecma'],\n 'application/emma+xml': ['emma'],\n 'application/emotionml+xml': ['emotionml'],\n 'application/epub+zip': ['epub'],\n 'application/exi': ['exi'],\n 'application/express': ['exp'],\n 'application/fdf': ['fdf'],\n 'application/fdt+xml': ['fdt'],\n 'application/font-tdpfr': ['pfr'],\n 'application/geo+json': ['geojson'],\n 'application/gml+xml': ['gml'],\n 'application/gpx+xml': ['gpx'],\n 'application/gxf': ['gxf'],\n 'application/gzip': ['gz'],\n 'application/hjson': ['hjson'],\n 'application/hyperstudio': ['stk'],\n 'application/inkml+xml': ['ink', 'inkml'],\n 'application/ipfix': ['ipfix'],\n 'application/its+xml': ['its'],\n 'application/java-archive': ['jar', 'war', 'ear'],\n 'application/java-serialized-object': ['ser'],\n 'application/java-vm': ['class'],\n 'application/javascript': ['*js'],\n 'application/json': ['json', 'map'],\n 'application/json5': ['json5'],\n 'application/jsonml+json': ['jsonml'],\n 'application/ld+json': ['jsonld'],\n 'application/lgr+xml': ['lgr'],\n 'application/lost+xml': ['lostxml'],\n 'application/mac-binhex40': ['hqx'],\n 'application/mac-compactpro': ['cpt'],\n 'application/mads+xml': ['mads'],\n 'application/manifest+json': ['webmanifest'],\n 'application/marc': ['mrc'],\n 'application/marcxml+xml': ['mrcx'],\n 'application/mathematica': ['ma', 'nb', 'mb'],\n 'application/mathml+xml': ['mathml'],\n 'application/mbox': ['mbox'],\n 'application/media-policy-dataset+xml': ['mpf'],\n 'application/mediaservercontrol+xml': ['mscml'],\n 'application/metalink+xml': ['metalink'],\n 'application/metalink4+xml': ['meta4'],\n 'application/mets+xml': ['mets'],\n 'application/mmt-aei+xml': ['maei'],\n 'application/mmt-usd+xml': ['musd'],\n 'application/mods+xml': ['mods'],\n 'application/mp21': ['m21', 'mp21'],\n 'application/mp4': ['*mp4', '*mpg4', 'mp4s', 'm4p'],\n 'application/msix': ['msix'],\n 'application/msixbundle': ['msixbundle'],\n 'application/msword': ['doc', 'dot'],\n 'application/mxf': ['mxf'],\n 'application/n-quads': ['nq'],\n 'application/n-triples': ['nt'],\n 'application/node': ['cjs'],\n 'application/octet-stream': [\n 'bin',\n 'dms',\n 'lrf',\n 'mar',\n 'so',\n 'dist',\n 'distz',\n 'pkg',\n 'bpk',\n 'dump',\n 'elc',\n 'deploy',\n 'exe',\n 'dll',\n 'deb',\n 'dmg',\n 'iso',\n 'img',\n 'msi',\n 'msp',\n 'msm',\n 'buffer',\n ],\n 'application/oda': ['oda'],\n 'application/oebps-package+xml': ['opf'],\n 'application/ogg': ['ogx'],\n 'application/omdoc+xml': ['omdoc'],\n 'application/onenote': ['onetoc', 'onetoc2', 'onetmp', 'onepkg'],\n 'application/oxps': ['oxps'],\n 'application/p2p-overlay+xml': ['relo'],\n 'application/patch-ops-error+xml': ['xer'],\n 'application/pdf': ['pdf'],\n 'application/pgp-encrypted': ['pgp'],\n 'application/pgp-keys': ['asc'],\n 'application/pgp-signature': ['sig', '*asc'],\n 'application/pics-rules': ['prf'],\n 'application/pkcs10': ['p10'],\n 'application/pkcs7-mime': ['p7m', 'p7c'],\n 'application/pkcs7-signature': ['p7s'],\n 'application/pkcs8': ['p8'],\n 'application/pkix-attr-cert': ['ac'],\n 'application/pkix-cert': ['cer'],\n 'application/pkix-crl': ['crl'],\n 'application/pkix-pkipath': ['pkipath'],\n 'application/pkixcmp': ['pki'],\n 'application/pls+xml': ['pls'],\n 'application/postscript': ['ai', 'eps', 'ps'],\n 'application/provenance+xml': ['provx'],\n 'application/pskc+xml': ['pskcxml'],\n 'application/raml+yaml': ['raml'],\n 'application/rdf+xml': ['rdf', 'owl'],\n 'application/reginfo+xml': ['rif'],\n 'application/relax-ng-compact-syntax': ['rnc'],\n 'application/resource-lists+xml': ['rl'],\n 'application/resource-lists-diff+xml': ['rld'],\n 'application/rls-services+xml': ['rs'],\n 'application/route-apd+xml': ['rapd'],\n 'application/route-s-tsid+xml': ['sls'],\n 'application/route-usd+xml': ['rusd'],\n 'application/rpki-ghostbusters': ['gbr'],\n 'application/rpki-manifest': ['mft'],\n 'application/rpki-roa': ['roa'],\n 'application/rsd+xml': ['rsd'],\n 'application/rss+xml': ['rss'],\n 'application/rtf': ['rtf'],\n 'application/sbml+xml': ['sbml'],\n 'application/scvp-cv-request': ['scq'],\n 'application/scvp-cv-response': ['scs'],\n 'application/scvp-vp-request': ['spq'],\n 'application/scvp-vp-response': ['spp'],\n 'application/sdp': ['sdp'],\n 'application/senml+xml': ['senmlx'],\n 'application/sensml+xml': ['sensmlx'],\n 'application/set-payment-initiation': ['setpay'],\n 'application/set-registration-initiation': ['setreg'],\n 'application/shf+xml': ['shf'],\n 'application/sieve': ['siv', 'sieve'],\n 'application/smil+xml': ['smi', 'smil'],\n 'application/sparql-query': ['rq'],\n 'application/sparql-results+xml': ['srx'],\n 'application/sql': ['sql'],\n 'application/srgs': ['gram'],\n 'application/srgs+xml': ['grxml'],\n 'application/sru+xml': ['sru'],\n 'application/ssdl+xml': ['ssdl'],\n 'application/ssml+xml': ['ssml'],\n 'application/swid+xml': ['swidtag'],\n 'application/tei+xml': ['tei', 'teicorpus'],\n 'application/thraud+xml': ['tfi'],\n 'application/timestamped-data': ['tsd'],\n 'application/toml': ['toml'],\n 'application/trig': ['trig'],\n 'application/ttml+xml': ['ttml'],\n 'application/ubjson': ['ubj'],\n 'application/urc-ressheet+xml': ['rsheet'],\n 'application/urc-targetdesc+xml': ['td'],\n 'application/voicexml+xml': ['vxml'],\n 'application/wasm': ['wasm'],\n 'application/watcherinfo+xml': ['wif'],\n 'application/widget': ['wgt'],\n 'application/winhlp': ['hlp'],\n 'application/wsdl+xml': ['wsdl'],\n 'application/wspolicy+xml': ['wspolicy'],\n 'application/xaml+xml': ['xaml'],\n 'application/xcap-att+xml': ['xav'],\n 'application/xcap-caps+xml': ['xca'],\n 'application/xcap-diff+xml': ['xdf'],\n 'application/xcap-el+xml': ['xel'],\n 'application/xcap-ns+xml': ['xns'],\n 'application/xenc+xml': ['xenc'],\n 'application/xfdf': ['xfdf'],\n 'application/xhtml+xml': ['xhtml', 'xht'],\n 'application/xliff+xml': ['xlf'],\n 'application/xml': ['xml', 'xsl', 'xsd', 'rng'],\n 'application/xml-dtd': ['dtd'],\n 'application/xop+xml': ['xop'],\n 'application/xproc+xml': ['xpl'],\n 'application/xslt+xml': ['*xsl', 'xslt'],\n 'application/xspf+xml': ['xspf'],\n 'application/xv+xml': ['mxml', 'xhvml', 'xvml', 'xvm'],\n 'application/yang': ['yang'],\n 'application/yin+xml': ['yin'],\n 'application/zip': ['zip'],\n 'audio/3gpp': ['*3gpp'],\n 'audio/aac': ['adts', 'aac'],\n 'audio/adpcm': ['adp'],\n 'audio/amr': ['amr'],\n 'audio/basic': ['au', 'snd'],\n 'audio/midi': ['mid', 'midi', 'kar', 'rmi'],\n 'audio/mobile-xmf': ['mxmf'],\n 'audio/mp3': ['*mp3'],\n 'audio/mp4': ['m4a', 'mp4a'],\n 'audio/mpeg': ['mpga', 'mp2', 'mp2a', 'mp3', 'm2a', 'm3a'],\n 'audio/ogg': ['oga', 'ogg', 'spx', 'opus'],\n 'audio/s3m': ['s3m'],\n 'audio/silk': ['sil'],\n 'audio/wav': ['wav'],\n 'audio/wave': ['*wav'],\n 'audio/webm': ['weba'],\n 'audio/xm': ['xm'],\n 'font/collection': ['ttc'],\n 'font/otf': ['otf'],\n 'font/ttf': ['ttf'],\n 'font/woff': ['woff'],\n 'font/woff2': ['woff2'],\n 'image/aces': ['exr'],\n 'image/apng': ['apng'],\n 'image/avci': ['avci'],\n 'image/avcs': ['avcs'],\n 'image/avif': ['avif'],\n 'image/bmp': ['bmp', 'dib'],\n 'image/cgm': ['cgm'],\n 'image/dicom-rle': ['drle'],\n 'image/dpx': ['dpx'],\n 'image/emf': ['emf'],\n 'image/fits': ['fits'],\n 'image/g3fax': ['g3'],\n 'image/gif': ['gif'],\n 'image/heic': ['heic'],\n 'image/heic-sequence': ['heics'],\n 'image/heif': ['heif'],\n 'image/heif-sequence': ['heifs'],\n 'image/hej2k': ['hej2'],\n 'image/hsj2': ['hsj2'],\n 'image/ief': ['ief'],\n 'image/jls': ['jls'],\n 'image/jp2': ['jp2', 'jpg2'],\n 'image/jpeg': ['jpeg', 'jpg', 'jpe'],\n 'image/jph': ['jph'],\n 'image/jphc': ['jhc'],\n 'image/jpm': ['jpm', 'jpgm'],\n 'image/jpx': ['jpx', 'jpf'],\n 'image/jxl': ['jxl'],\n 'image/jxr': ['jxr'],\n 'image/jxra': ['jxra'],\n 'image/jxrs': ['jxrs'],\n 'image/jxs': ['jxs'],\n 'image/jxsc': ['jxsc'],\n 'image/jxsi': ['jxsi'],\n 'image/jxss': ['jxss'],\n 'image/ktx': ['ktx'],\n 'image/ktx2': ['ktx2'],\n 'image/png': ['png'],\n 'image/sgi': ['sgi'],\n 'image/svg+xml': ['svg', 'svgz'],\n 'image/t38': ['t38'],\n 'image/tiff': ['tif', 'tiff'],\n 'image/tiff-fx': ['tfx'],\n 'image/webp': ['webp'],\n 'image/wmf': ['wmf'],\n 'message/disposition-notification': ['disposition-notification'],\n 'message/global': ['u8msg'],\n 'message/global-delivery-status': ['u8dsn'],\n 'message/global-disposition-notification': ['u8mdn'],\n 'message/global-headers': ['u8hdr'],\n 'message/rfc822': ['eml', 'mime'],\n 'model/3mf': ['3mf'],\n 'model/gltf+json': ['gltf'],\n 'model/gltf-binary': ['glb'],\n 'model/iges': ['igs', 'iges'],\n 'model/jt': ['jt'],\n 'model/mesh': ['msh', 'mesh', 'silo'],\n 'model/mtl': ['mtl'],\n 'model/obj': ['obj'],\n 'model/prc': ['prc'],\n 'model/step+xml': ['stpx'],\n 'model/step+zip': ['stpz'],\n 'model/step-xml+zip': ['stpxz'],\n 'model/stl': ['stl'],\n 'model/u3d': ['u3d'],\n 'model/vrml': ['wrl', 'vrml'],\n 'model/x3d+binary': ['*x3db', 'x3dbz'],\n 'model/x3d+fastinfoset': ['x3db'],\n 'model/x3d+vrml': ['*x3dv', 'x3dvz'],\n 'model/x3d+xml': ['x3d', 'x3dz'],\n 'model/x3d-vrml': ['x3dv'],\n 'text/cache-manifest': ['appcache', 'manifest'],\n 'text/calendar': ['ics', 'ifb'],\n 'text/coffeescript': ['coffee', 'litcoffee'],\n 'text/css': ['css'],\n 'text/csv': ['csv'],\n 'text/html': ['html', 'htm', 'shtml'],\n 'text/jade': ['jade'],\n 'text/javascript': ['js', 'mjs'],\n 'text/jsx': ['jsx'],\n 'text/less': ['less'],\n 'text/markdown': ['md', 'markdown'],\n 'text/mathml': ['mml'],\n 'text/mdx': ['mdx'],\n 'text/n3': ['n3'],\n 'text/plain': ['txt', 'text', 'conf', 'def', 'list', 'log', 'in', 'ini'],\n 'text/richtext': ['rtx'],\n 'text/rtf': ['*rtf'],\n 'text/sgml': ['sgml', 'sgm'],\n 'text/shex': ['shex'],\n 'text/slim': ['slim', 'slm'],\n 'text/spdx': ['spdx'],\n 'text/stylus': ['stylus', 'styl'],\n 'text/tab-separated-values': ['tsv'],\n 'text/troff': ['t', 'tr', 'roff', 'man', 'me', 'ms'],\n 'text/turtle': ['ttl'],\n 'text/uri-list': ['uri', 'uris', 'urls'],\n 'text/vcard': ['vcard'],\n 'text/vtt': ['vtt'],\n 'text/wgsl': ['wgsl'],\n 'text/xml': ['*xml'],\n 'text/yaml': ['yaml', 'yml'],\n 'video/3gpp': ['3gp', '3gpp'],\n 'video/3gpp2': ['3g2'],\n 'video/h261': ['h261'],\n 'video/h263': ['h263'],\n 'video/h264': ['h264'],\n 'video/iso.segment': ['m4s'],\n 'video/jpeg': ['jpgv'],\n 'video/jpm': ['*jpm', '*jpgm'],\n 'video/mj2': ['mj2', 'mjp2'],\n 'video/mp2t': ['ts', 'm2t', 'm2ts', 'mts'],\n 'video/mp4': ['mp4', 'mp4v', 'mpg4'],\n 'video/mpeg': ['mpeg', 'mpg', 'mpe', 'm1v', 'm2v'],\n 'video/ogg': ['ogv'],\n 'video/quicktime': ['qt', 'mov'],\n 'video/webm': ['webm'],\n};\nObject.freeze(types);\nexport default types;\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Mime_extensionToType, _Mime_typeToExtension, _Mime_typeToExtensions;\nclass Mime {\n constructor(...args) {\n _Mime_extensionToType.set(this, new Map());\n _Mime_typeToExtension.set(this, new Map());\n _Mime_typeToExtensions.set(this, new Map());\n for (const arg of args) {\n this.define(arg);\n }\n }\n define(typeMap, force = false) {\n for (let [type, extensions] of Object.entries(typeMap)) {\n type = type.toLowerCase();\n extensions = extensions.map((ext) => ext.toLowerCase());\n if (!__classPrivateFieldGet(this, _Mime_typeToExtensions, \"f\").has(type)) {\n __classPrivateFieldGet(this, _Mime_typeToExtensions, \"f\").set(type, new Set());\n }\n const allExtensions = __classPrivateFieldGet(this, _Mime_typeToExtensions, \"f\").get(type);\n let first = true;\n for (let extension of extensions) {\n const starred = extension.startsWith('*');\n extension = starred ? extension.slice(1) : extension;\n allExtensions?.add(extension);\n if (first) {\n __classPrivateFieldGet(this, _Mime_typeToExtension, \"f\").set(type, extension);\n }\n first = false;\n if (starred)\n continue;\n const currentType = __classPrivateFieldGet(this, _Mime_extensionToType, \"f\").get(extension);\n if (currentType && currentType != type && !force) {\n throw new Error(`\"${type} -> ${extension}\" conflicts with \"${currentType} -> ${extension}\". Pass \\`force=true\\` to override this definition.`);\n }\n __classPrivateFieldGet(this, _Mime_extensionToType, \"f\").set(extension, type);\n }\n }\n return this;\n }\n getType(path) {\n if (typeof path !== 'string')\n return null;\n const last = path.replace(/^.*[/\\\\]/, '').toLowerCase();\n const ext = last.replace(/^.*\\./, '').toLowerCase();\n const hasPath = last.length < path.length;\n const hasDot = ext.length < last.length - 1;\n if (!hasDot && hasPath)\n return null;\n return __classPrivateFieldGet(this, _Mime_extensionToType, \"f\").get(ext) ?? null;\n }\n getExtension(type) {\n if (typeof type !== 'string')\n return null;\n type = type?.split?.(';')[0];\n return ((type && __classPrivateFieldGet(this, _Mime_typeToExtension, \"f\").get(type.trim().toLowerCase())) ?? null);\n }\n getAllExtensions(type) {\n if (typeof type !== 'string')\n return null;\n return __classPrivateFieldGet(this, _Mime_typeToExtensions, \"f\").get(type.toLowerCase()) ?? null;\n }\n _freeze() {\n this.define = () => {\n throw new Error('define() not allowed for built-in Mime objects. See https://github.com/broofa/mime/blob/main/README.md#custom-mime-instances');\n };\n Object.freeze(this);\n for (const extensions of __classPrivateFieldGet(this, _Mime_typeToExtensions, \"f\").values()) {\n Object.freeze(extensions);\n }\n return this;\n }\n _getTestState() {\n return {\n types: __classPrivateFieldGet(this, _Mime_extensionToType, \"f\"),\n extensions: __classPrivateFieldGet(this, _Mime_typeToExtension, \"f\"),\n };\n }\n}\n_Mime_extensionToType = new WeakMap(), _Mime_typeToExtension = new WeakMap(), _Mime_typeToExtensions = new WeakMap();\nexport default Mime;\n","import standardTypes from '../types/standard.js';\nimport Mime from './Mime.js';\nexport { default as Mime } from './Mime.js';\nexport default new Mime(standardTypes)._freeze();\n","import {\n DocumentOperations,\n Action,\n ValidationError,\n OperationScope,\n} from \"../types\";\n\nexport function validateOperations<A extends Action>(\n operations: DocumentOperations<A>,\n) {\n const errors: ValidationError[] = [];\n const scopes = Object.keys(operations) as OperationScope[];\n\n for (const scope of scopes) {\n const ops = operations[scope].sort((a, b) => a.index - b.index);\n\n let opIndex = -1;\n\n for (let i = 0; i < ops.length; i++) {\n opIndex = opIndex + 1 + ops[i].skip;\n if (ops[i].index !== opIndex) {\n errors.push({\n message: `Invalid operation index ${ops[i].index} at position ${i}`,\n details: {\n position: i,\n operation: ops[i],\n scope: ops[i].scope,\n },\n });\n }\n }\n }\n\n return errors;\n}\n","import {\n Operation,\n OperationScope,\n Action,\n DocumentOperations,\n} from \"../types\";\nimport stringify from \"safe-stable-stringify\";\n\nexport type OperationIndex = {\n index: number;\n skip: number;\n};\n\nexport enum IntegrityIssueType {\n UNEXPECTED_INDEX = \"UNEXPECTED_INDEX\",\n}\n\nexport enum IntegrityIssueSubType {\n DUPLICATED_INDEX = \"DUPLICATED_INDEX\",\n MISSING_INDEX = \"MISSING_INDEX\",\n}\n\ntype IntegrityIssue = {\n operation: OperationIndex;\n issue: IntegrityIssueType;\n category: IntegrityIssueSubType;\n message: string;\n};\n\ntype Reshuffle = (\n startIndex: OperationIndex,\n opsA: Operation[],\n opsB: Operation[],\n) => Operation[];\n\nexport function checkCleanedOperationsIntegrity(\n sortedOperations: Operation[],\n): IntegrityIssue[] {\n const result: IntegrityIssue[] = [];\n\n // 1:1 1\n // 0:0 0 -> 1:0 1 -> 2:0 -> 3:0 -> 4:0 -> 5:0\n // 0:0 0 -> 2:1 1 -> 3:0 -> 4:0 -> 5:0\n // 0:0 0 -> 3:2 1 -> 4:0 -> 5:0\n // 0:0 0 -> 3:2 1 -> 5:1\n\n // 0:3 (expected 0, got -3)\n // 1:2 (expected 0, got -1)\n // 0:0 -> 1:1\n // 0:0 -> 2:2\n // 0:0 -> 3:2 -> 5:2\n\n let currentIndex = -1;\n for (const nextOperation of sortedOperations) {\n const nextIndex = nextOperation.index - nextOperation.skip;\n\n if (nextIndex !== currentIndex + 1) {\n result.push({\n operation: {\n index: nextOperation.index,\n skip: nextOperation.skip,\n },\n issue: IntegrityIssueType.UNEXPECTED_INDEX,\n category:\n nextIndex > currentIndex + 1\n ? IntegrityIssueSubType.MISSING_INDEX\n : IntegrityIssueSubType.DUPLICATED_INDEX,\n message: `Expected index ${currentIndex + 1} with skip 0 or equivalent, got index ${nextOperation.index} with skip ${nextOperation.skip}`,\n });\n }\n\n currentIndex = nextOperation.index;\n }\n\n return result;\n}\n\n// [] -> []\n// [0:0] -> [0:0]\n\n// 0:0 1:0 2:0 => 0:0 1:0 2:0, removals 0, no issues\n// 0:0 1:1 2:0 => 1:1 2:0, removals 1, no issues\n\n// 0:0 1:1 2:0 3:1 => 1:1 3:1, removals 2, no issues\n// 0:0 1:1 2:0 3:3 => 3:3\n\n// 1:1 2:0 3:0 => 1:1 2:0 3:0, removals 0, no issues\n// 1:0 0:0 2:0 => 2:0, removals 2, issues [UNEXPECTED_INDEX, INDEX_OUT_OF_ORDER]\n// 0:0 1:0 2:0 => 0:0 1:0 2:0, removals 0, no issues\n// 0:0 1:0 2:0 => 0:0 1:0 2:0, removals 0, no issues\n// 0:0 1:0 2:0 => 0:0 1:0 2:0, removals 0, no issues\n\nexport function garbageCollect<A extends OperationIndex>(\n sortedOperations: A[],\n): A[] {\n const result: A[] = [];\n\n let i = sortedOperations.length - 1;\n\n while (i > -1) {\n result.unshift(sortedOperations[i]);\n const skipUntil =\n (sortedOperations[i]?.index || 0) - (sortedOperations[i]?.skip || 0) - 1;\n\n let j = i - 1;\n while (j > -1 && (sortedOperations[j]?.index || 0) > skipUntil) {\n j--;\n }\n\n i = j;\n }\n\n return result;\n}\n\nexport function addUndo(sortedOperations: Operation[]): Operation[] {\n const operationsCopy = [...sortedOperations];\n const latestOperation = operationsCopy[operationsCopy.length - 1];\n\n if (!latestOperation) return operationsCopy;\n\n if (latestOperation.type === \"NOOP\") {\n operationsCopy.push({\n ...latestOperation,\n index: latestOperation.index,\n type: \"NOOP\",\n skip: nextSkipNumber(sortedOperations),\n });\n } else {\n operationsCopy.push({\n type: \"NOOP\",\n index: latestOperation.index + 1,\n timestamp: new Date().toISOString(),\n input: {},\n skip: 1,\n scope: latestOperation.scope,\n hash: latestOperation.hash,\n });\n }\n\n return operationsCopy;\n}\n\n// [0:0 2:0 1:0 3:3 3:1] => [0:0 1:0 2:0 3:1 3:3]\n// Sort by index _and_ skip number\nexport function sortOperations<A extends OperationIndex>(operations: A[]): A[] {\n return operations\n .slice()\n .sort((a, b) => a.skip - b.skip)\n .sort((a, b) => a.index - b.index);\n}\n\n// [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, 2:0, B3:0, B4:2, B5:0]\n// GC => [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, B4:2, B5:0]\n// Split => [0:0, 1:0] + [2:0, A3:0, A4:0, A5:0] + [B4:2, B5:0]\n// Reshuffle(6:4) => [6:4, 7:0, 8:0, 9:0, 10:0, 11:0]\n// merge => [0:0, 1:0, 6:4, 7:0, 8:0, 9:0, 10:0, 11:0]\nexport const reshuffleByTimestamp: Reshuffle = (startIndex, opsA, opsB) => {\n return [...opsA, ...opsB]\n .sort(\n (a, b) =>\n new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime(),\n )\n .map((op, i) => ({\n ...op,\n index: startIndex.index + i,\n skip: i === 0 ? startIndex.skip : 0,\n }));\n};\n\nexport const reshuffleByTimestampAndIndex: Reshuffle = (\n startIndex,\n opsA,\n opsB,\n) => {\n return [...opsA, ...opsB]\n .sort(\n (a, b) =>\n new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime(),\n )\n .sort((a, b) => a.index - b.index)\n .map((op, i) => ({\n ...op,\n index: startIndex.index + i,\n skip: i === 0 ? startIndex.skip : 0,\n }));\n};\n\n// TODO: implement better operation equality function\nexport function operationsAreEqual(op1: Operation, op2: Operation) {\n return stringify(op1) === stringify(op2);\n}\n\n// [T0:0 T1:0 T2:0 T3:0] + [B4:0 B5:0] = [T0:0 T1:0 T2:0 T3:0 B4:0 B5:0]\n// [T0:0 T1:0 T2:0 T3:0] + [B3:0 B4:0] = [T0:0 T1:0 T2:0 B3:0 B4:0]\n// [T0:0 T1:0 T2:0 T3:0] + [B2:0 B3:0] = [T0:0 T1:0 B2:0 B3:0]\n\n// [T0:0 T1:0 T2:0 T3:0] + [B4:0 B4:2] = [T0:0 T1:0 T2:0 T3:0 B4:0 B4:2]\n// [T0:0 T1:0 T2:0 T3:0] + [B3:0 B3:2] = [T0:0 T1:0 T2:0 B3:0 B3:2]\n// [T0:0 T1:0 T2:0 T3:0] + [B2:3 B3:0] = [T0:0 T1:0 B2:3 B3:0]\n\nexport function attachBranch(\n trunk: Operation[],\n newBranch: Operation[],\n): [Operation[], Operation[]] {\n const trunkCopy = garbageCollect(sortOperations(trunk.slice()));\n const newOperations = garbageCollect(sortOperations(newBranch.slice()));\n if (trunkCopy.length < 1) {\n return [newOperations, []];\n }\n\n const result: Operation[] = [];\n let enteredBranch = false;\n\n while (newOperations.length > 0) {\n const newOperationCandidate = newOperations[0];\n\n let nextTrunkOperation = trunkCopy.shift();\n while (\n nextTrunkOperation &&\n precedes(nextTrunkOperation, newOperationCandidate)\n ) {\n result.push(nextTrunkOperation);\n nextTrunkOperation = trunkCopy.shift();\n }\n\n if (!nextTrunkOperation) {\n enteredBranch = true;\n } else if (!enteredBranch) {\n if (operationsAreEqual(nextTrunkOperation, newOperationCandidate)) {\n newOperations.shift();\n result.push(nextTrunkOperation);\n } else {\n trunkCopy.unshift(nextTrunkOperation);\n enteredBranch = true;\n }\n }\n\n if (enteredBranch) {\n let nextAppend = newOperations.shift();\n while (nextAppend) {\n result.push(nextAppend);\n nextAppend = newOperations.shift();\n }\n }\n }\n\n if (!enteredBranch) {\n let nextAppend = trunkCopy.shift();\n while (nextAppend) {\n result.push(nextAppend);\n nextAppend = trunkCopy.shift();\n }\n }\n\n return [garbageCollect(result), trunkCopy];\n}\n\nexport function precedes(op1: Operation, op2: Operation) {\n return (\n op1.index < op2.index ||\n (op1.index === op2.index && op1.id === op2.id && op1.skip < op2.skip)\n );\n}\n\nexport function split(\n sortedTargetOperations: Operation[],\n sortedMergeOperations: Operation[],\n): [Operation[], Operation[], Operation[]] {\n const commonOperations: Operation[] = [];\n const targetDiffOperations: Operation[] = [];\n const mergeDiffOperations: Operation[] = [];\n\n // get bigger array length\n const maxLength = Math.max(\n sortedTargetOperations.length,\n sortedMergeOperations.length,\n );\n\n let splitHappened = false;\n for (let i = 0; i < maxLength; i++) {\n const targetOperation = sortedTargetOperations[i];\n const mergeOperation = sortedMergeOperations[i];\n\n if (targetOperation && mergeOperation) {\n if (\n !splitHappened &&\n operationsAreEqual(targetOperation, mergeOperation)\n ) {\n commonOperations.push(targetOperation);\n } else {\n splitHappened = true;\n targetDiffOperations.push(targetOperation);\n mergeDiffOperations.push(mergeOperation);\n }\n } else if (targetOperation) {\n targetDiffOperations.push(targetOperation);\n } else if (mergeOperation) {\n mergeDiffOperations.push(mergeOperation);\n }\n }\n\n return [commonOperations, targetDiffOperations, mergeDiffOperations];\n}\n\n// [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, 2:0, B3:0, B4:2, B5:0]\n// GC => [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, B4:2, B5:0]\n// Split => [0:0, 1:0] + [2:0, A3:0, A4:0, A5:0] + [B4:2, B5:0]\n// Reshuffle(6:4) => [6:4, 7:0, 8:0, 9:0, 10:0, 11:0]\n// merge => [0:0, 1:0, 6:4, 7:0, 8:0, 9:0, 10:0, 11:0]\nexport function merge(\n sortedTargetOperations: Operation[],\n sortedMergeOperations: Operation[],\n reshuffle: Reshuffle,\n): Operation[] {\n const [_commonOperations, _targetOperations, _mergeOperations] = split(\n garbageCollect(sortedTargetOperations),\n garbageCollect(sortedMergeOperations),\n );\n\n const maxCommonIndex = getMaxIndex(_commonOperations);\n const nextIndex =\n 1 +\n Math.max(\n maxCommonIndex,\n getMaxIndex(_targetOperations),\n getMaxIndex(_mergeOperations),\n );\n\n const filteredMergeOperations = filterDuplicatedOperations(\n _mergeOperations,\n _targetOperations,\n );\n\n const newOperationHistory = reshuffle(\n {\n index: nextIndex,\n skip: nextIndex - (maxCommonIndex + 1),\n },\n _targetOperations,\n filteredMergeOperations,\n );\n\n return _commonOperations.concat(newOperationHistory);\n}\n\nfunction getMaxIndex(sortedOperations: Operation[]) {\n const lastElement = sortedOperations[sortedOperations.length - 1];\n if (!lastElement) {\n return -1;\n }\n\n return lastElement.index;\n}\n\n// [] => -1\n// [0:0] => -1\n// [0:0 1:0] => 1\n// [0:0 1:1] => -1\n// [1:1] => -1\n// [0:0 1:0 2:0] => 1\n// [0:0 1:0 2:0 2:1] => 2\n// [0:0 1:0 2:0 2:1 2:2] => -1\n// [0:0 1:1 2:0] => 2\n// [0:0 1:1 2:2] => -1\n// [0:0 1:1 2:0 3:0] => 1\n// [0:0 1:1 2:0 3:1] => 3\n// [0:0 1:1 2:0 3:3] => -1\n// [50:50 100:50 150:50 151:0 152:0 153:0 154:3] => 53\n\nexport function nextSkipNumber<A extends OperationIndex>(\n sortedOperations: A[],\n): number {\n if (sortedOperations.length < 1) {\n return -1;\n }\n\n const cleanedOperations = garbageCollect(sortedOperations);\n\n let nextSkip =\n (cleanedOperations[cleanedOperations.length - 1]?.skip || 0) + 1;\n\n if (cleanedOperations.length > 1) {\n nextSkip += cleanedOperations[cleanedOperations.length - 2]?.skip || 0;\n }\n\n return (cleanedOperations[cleanedOperations.length - 1]?.index || -1) <\n nextSkip\n ? -1\n : nextSkip;\n}\n\nexport const checkOperationsIntegrity = (\n operations: Operation[],\n): IntegrityIssue[] => {\n return checkCleanedOperationsIntegrity(\n garbageCollect(sortOperations(operations)),\n );\n};\n\nexport type OperationsByScope = Partial<Record<OperationScope, Operation[]>>;\n\nexport const groupOperationsByScope = (\n operations: Operation[],\n): OperationsByScope => {\n const result = operations.reduce<OperationsByScope>((acc, operation) => {\n if (!acc[operation.scope]) {\n acc[operation.scope] = [];\n }\n\n acc[operation.scope]?.push(operation);\n\n return acc;\n }, {});\n\n return result;\n};\n\ntype PrepareOperationsResult = {\n validOperations: Operation[];\n invalidOperations: Operation[];\n duplicatedOperations: Operation[];\n integrityIssues: IntegrityIssue[];\n};\n\nexport const prepareOperations = (\n operationsHistory: Operation[],\n newOperations: Operation[],\n): PrepareOperationsResult => {\n const result: PrepareOperationsResult = {\n integrityIssues: [],\n validOperations: [],\n invalidOperations: [],\n duplicatedOperations: [],\n };\n\n const sortedOperationsHistory = sortOperations(operationsHistory);\n const sortedOperations = sortOperations(newOperations);\n\n const integrityErrors = checkCleanedOperationsIntegrity([\n ...sortedOperationsHistory,\n ...sortedOperations,\n ]);\n\n const missingIndexErrors = integrityErrors.filter(\n (integrityIssue) =>\n integrityIssue.category === IntegrityIssueSubType.MISSING_INDEX,\n );\n\n // get the integrity error with the lowest index operation\n const firstMissingIndexOperation = [...missingIndexErrors]\n .sort((a, b) => b.operation.index - a.operation.index)\n .pop()?.operation;\n\n for (const newOperation of sortedOperations) {\n // Operation is missing index or it follows an operation that is missing index\n if (\n firstMissingIndexOperation &&\n newOperation.index >= firstMissingIndexOperation.index\n ) {\n result.invalidOperations.push(newOperation);\n continue;\n }\n\n // check if operation is duplicated\n const isDuplicatedOperation = integrityErrors.some((integrityError) => {\n return (\n integrityError.operation.index === newOperation.index &&\n integrityError.operation.skip === newOperation.skip &&\n integrityError.category === IntegrityIssueSubType.DUPLICATED_INDEX\n );\n });\n\n // add to duplicated operations if it is duplicated\n if (isDuplicatedOperation) {\n result.duplicatedOperations.push(newOperation);\n continue;\n }\n\n // otherwise, add to valid operations\n result.validOperations.push(newOperation);\n }\n\n result.integrityIssues.push(...integrityErrors);\n return result;\n};\n\nexport function removeExistingOperations(\n newOperations: Operation[],\n operationsHistory: Operation[],\n): Operation[] {\n return newOperations.filter((newOperation) => {\n return !operationsHistory.some((historyOperation) => {\n return (\n (newOperation.type === \"NOOP\" &&\n newOperation.skip === 0 &&\n newOperation.index === historyOperation.index) ||\n (newOperation.index === historyOperation.index &&\n newOperation.skip === historyOperation.skip &&\n newOperation.scope === historyOperation.scope &&\n newOperation.hash === historyOperation.hash &&\n newOperation.type === historyOperation.type)\n );\n });\n });\n}\n\nexport type SkipHeaderOperationIndex = Partial<Pick<OperationIndex, \"index\">> &\n Pick<OperationIndex, \"skip\">;\n\n/**\n * Skips header operations and returns the remaining operations.\n *\n * @param operations - The array of operations.\n * @param skipHeaderOperation - The skip header operation index.\n * @returns The remaining operations after skipping header operations.\n */\nexport function skipHeaderOperations<A extends OperationIndex>(\n operations: A[],\n skipHeaderOperation: SkipHeaderOperationIndex,\n): A[] {\n const [lastOperation] = sortOperations(operations).slice(-1);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const lastIndex = lastOperation?.index ?? -1;\n const nextIndex = lastIndex + 1;\n\n const skipOperationIndex = {\n ...skipHeaderOperation,\n index: skipHeaderOperation.index ?? nextIndex,\n };\n\n if (skipOperationIndex.index < lastIndex) {\n throw new Error(\n `The skip header operation index must be greater than or equal to ${lastIndex}`,\n );\n }\n\n const clearedOperations = garbageCollect(\n sortOperations([...operations, skipOperationIndex]),\n );\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return (clearedOperations || []).slice(0, -1) as A[];\n}\n\nexport function garbageCollectDocumentOperations<A extends Action>(\n documentOperations: DocumentOperations<A>,\n): DocumentOperations<A> {\n const clearedOperations = Object.entries(documentOperations).reduce(\n (acc, entry) => {\n const [scope, ops] = entry;\n\n return {\n ...acc,\n [scope as OperationScope]: garbageCollect(sortOperations(ops)),\n };\n },\n {},\n );\n\n return {\n ...clearedOperations,\n } as DocumentOperations<A>;\n}\n\n/**\n * Filters out duplicated operations from the target operations array based on their IDs.\n * If an operation has an ID, it is considered duplicated if there is another operation in the source operations array with the same ID.\n * If an operation does not have an ID, it is considered unique and will not be filtered out.\n * @param targetOperations - The array of target operations to filter.\n * @param sourceOperations - The array of source operations to compare against.\n * @returns An array of operations with duplicates filtered out.\n */\nexport function filterDuplicatedOperations(\n targetOperations: Operation[],\n sourceOperations: Operation[],\n): Operation[] {\n return targetOperations.filter((op) => {\n if (op.id) {\n return !sourceOperations.some((targetOp) => targetOp.id === op.id);\n }\n\n return true;\n });\n}\n\nexport function filterDocumentOperationsResultingState<A extends Action>(\n documentOperations?: DocumentOperations<A>,\n) {\n if (!documentOperations) {\n return {};\n }\n\n const entries = Object.entries(documentOperations);\n\n return entries.reduce<DocumentOperations<A>>(\n (acc, [scope, operations]) => ({\n ...acc,\n [scope]: operations.map((op) => {\n const { resultingState, ...restProps } = op;\n\n return restProps;\n }),\n }),\n {} as DocumentOperations<A>,\n );\n}\n\n/**\n * Calculates the difference between two arrays of operations.\n * Returns an array of operations that are present in `clearedOperationsA` but not in `clearedOperationsB`.\n *\n * @template A - The type of the operations.\n * @param {A[]} clearedOperationsA - The first array of operations.\n * @param {A[]} clearedOperationsB - The second array of operations.\n * @returns {A[]} - The difference between the two arrays of operations.\n */\nexport function diffOperations<A extends OperationIndex>(\n clearedOperationsA: A[],\n clearedOperationsB: A[],\n): A[] {\n return clearedOperationsA.filter(\n (operationA) =>\n !clearedOperationsB.some(\n (operationB) => operationA.index === operationB.index,\n ),\n );\n}\n","import JSZip from \"jszip\";\nimport mime from \"mime/lite\";\nimport type {\n Action,\n Attachment,\n AttachmentInput,\n Document,\n DocumentHeader,\n DocumentOperations,\n ExtendedState,\n Reducer,\n} from \"../types\";\nimport { fetchFile, getFile, hash, readFile, writeFile } from \"./node\";\nimport { replayDocument, ReplayDocumentOptions } from \"./base\";\nimport { validateOperations } from \"./validation\";\nimport {\n filterDocumentOperationsResultingState,\n garbageCollectDocumentOperations,\n} from \"./document-helpers\";\n\nexport type FileInput = string | number[] | Uint8Array | ArrayBuffer | Blob;\n\nexport const createZip = async (document: Document) => {\n // create zip file\n const zip = new JSZip();\n\n const { name, revision, documentType, created, lastModified } = document;\n const header: DocumentHeader = {\n name,\n revision,\n documentType,\n created,\n lastModified,\n };\n zip.file(\"header.json\", JSON.stringify(header, null, 2));\n zip.file(\"state.json\", JSON.stringify(document.initialState || {}, null, 2));\n zip.file(\"current-state.json\", JSON.stringify(document.state || {}, null, 2));\n zip.file(\n \"operations.json\",\n JSON.stringify(\n filterDocumentOperationsResultingState(document.operations),\n null,\n 2,\n ),\n );\n\n if (document.attachments) {\n const attachments = Object.keys(document.attachments);\n attachments.forEach((key) => {\n const { data, ...attributes } = document.attachments[key];\n zip.file(key, data, {\n base64: true,\n createFolders: true,\n comment: JSON.stringify(attributes),\n });\n });\n }\n\n return zip;\n};\n\n/**\n * Saves a document to a ZIP file.\n *\n * @remarks\n * This function creates a ZIP file containing the document's state, operations,\n * and file attachments. The file is saved to the specified path.\n *\n * @param document - The document to save to the file.\n * @param path - The path to save the file to.\n * @param extension - The extension to use for the file.\n * @returns A promise that resolves to the path of the saved file.\n */\nexport const saveToFile = async (\n document: Document,\n path: string,\n extension: string,\n name?: string,\n): Promise<string> => {\n // create zip file\n const zip = await createZip(document);\n const file = await zip.generateAsync({\n type: \"uint8array\",\n streamFiles: true,\n });\n const fileName = name ?? document.name;\n const fileExtension = `.${extension}.zip`;\n\n return writeFile(\n path,\n fileName.endsWith(fileExtension) ? fileName : `${fileName}${fileExtension}`,\n file,\n );\n};\n\nexport const saveToFileHandle = async (\n document: Document,\n input: FileSystemFileHandle,\n) => {\n const zip = await createZip(document);\n const blob = await zip.generateAsync({ type: \"blob\" });\n const writable = await input.createWritable();\n await writable.write(blob);\n await writable.close();\n};\n\n/**\n * Loads a document from a ZIP file.\n *\n * @remarks\n * This function reads a ZIP file and returns the document state after\n * applying all the operations. The reducer is used to apply the operations.\n *\n * @typeParam S - The type of the state object.\n * @typeParam A - The type of the actions that can be applied to the state object.\n *\n * @param path - The path to the ZIP file.\n * @param reducer - The reducer to apply the operations to the state object.\n * @returns A promise that resolves to the document state after applying all the operations.\n * @throws An error if the initial state or the operations history is not found in the ZIP file.\n */\nexport const loadFromFile = async <S, A extends Action, L>(\n path: string,\n reducer: Reducer<S, A, L>,\n options?: ReplayDocumentOptions,\n) => {\n const file = readFile(path);\n return loadFromInput(file, reducer, options);\n};\n\nexport const loadFromInput = async <S, A extends Action, L>(\n input: FileInput,\n reducer: Reducer<S, A, L>,\n options?: ReplayDocumentOptions,\n) => {\n const zip = new JSZip();\n await zip.loadAsync(input);\n return loadFromZip(zip, reducer, options);\n};\n\nasync function loadFromZip<S, A extends Action, L>(\n zip: JSZip,\n reducer: Reducer<S, A, L>,\n options?: ReplayDocumentOptions,\n) {\n const initialStateZip = zip.file(\"state.json\");\n if (!initialStateZip) {\n throw new Error(\"Initial state not found\");\n }\n const initialStateStr = await initialStateZip.async(\"string\");\n const initialState = JSON.parse(initialStateStr) as ExtendedState<S, L>;\n\n const headerZip = zip.file(\"header.json\");\n let header: DocumentHeader | undefined = undefined;\n if (headerZip) {\n header = JSON.parse(await headerZip.async(\"string\")) as DocumentHeader;\n }\n\n const operationsZip = zip.file(\"operations.json\");\n if (!operationsZip) {\n throw new Error(\"Operations history not found\");\n }\n\n const operations = JSON.parse(\n await operationsZip.async(\"string\"),\n ) as DocumentOperations<A>;\n\n const clearedOperations = garbageCollectDocumentOperations(operations);\n\n const operationsError = validateOperations(clearedOperations);\n if (operationsError.length) {\n const errorMessages = operationsError.map((err) => err.message);\n throw new Error(errorMessages.join(\"\\n\"));\n }\n\n let result = replayDocument(\n initialState,\n clearedOperations,\n reducer,\n undefined,\n header,\n {},\n options,\n );\n if (header) {\n result = {\n ...result,\n ...header,\n };\n }\n return result;\n}\n\nfunction getFileAttributes(\n file: string,\n): Omit<Attachment, \"data\" | \"mimeType\"> {\n const extension = file.replace(/^.*\\./, \"\") || undefined;\n const fileName = file.replace(/^.*[/\\\\]/, \"\") || undefined;\n return { extension, fileName };\n}\n\n/**\n * Fetches an attachment from a URL and returns its base64-encoded data and MIME type.\n * @param url - The URL of the attachment to fetch.\n * @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.\n */\nexport async function getRemoteFile(url: string): Promise<AttachmentInput> {\n const { buffer, mimeType = \"application/octet-stream\" } =\n await fetchFile(url);\n const attributes = getFileAttributes(url);\n const data = buffer.toString(\"base64\");\n return {\n data,\n hash: hash(data),\n mimeType,\n ...attributes,\n };\n}\n\n/**\n * Reads an attachment from a file and returns its base64-encoded data and MIME type.\n * @param path - The path of the attachment file to read.\n * @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.\n */\nexport async function getLocalFile(path: string): Promise<AttachmentInput> {\n const buffer = await getFile(path);\n const mimeType = mime.getType(path) || \"application/octet-stream\";\n const attributes = getFileAttributes(path);\n const data = buffer.toString(\"base64\");\n return { data, hash: hash(data), mimeType, ...attributes };\n}\n","import { castDraft, create } from \"mutative\";\nimport {\n Action,\n Document,\n ImmutableStateReducer,\n Operation,\n PruneAction,\n RedoAction,\n State,\n UndoAction,\n UndoRedoProcessResult,\n} from \"../types\";\nimport { hashDocument, replayOperations } from \"../utils/base\";\nimport { loadState, noop } from \"./creators\";\nimport { documentHelpers } from \"../utils\";\n\n// updates the name of the document\nexport function setNameOperation<T>(document: T, name: string): T {\n return { ...document, name };\n}\n\nexport function noopOperation<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: Partial<Operation>,\n skip: number,\n) {\n const defaultValues = {\n skip,\n document,\n };\n\n const { scope } = action;\n\n if (!scope) return defaultValues;\n if (action.skip === undefined) return defaultValues;\n\n return create(defaultValues, (draft) => {\n const lastOperation = draft.document.operations[scope].at(-1);\n\n if (action.skip && action.skip > 0) {\n draft.skip = action.skip;\n }\n\n if (\n lastOperation &&\n lastOperation.type === \"NOOP\" &&\n action.index === lastOperation.index &&\n draft.skip > lastOperation.skip\n ) {\n draft.document.operations[scope].pop();\n }\n });\n}\n\nexport function undoOperation<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: UndoAction,\n skip: number,\n): UndoRedoProcessResult<T, A, L> {\n // const scope = action.scope;\n const { scope, input } = action;\n\n const defaultResult: UndoRedoProcessResult<T, A, L> = {\n document,\n action,\n skip,\n reuseLastOperationIndex: false,\n };\n\n return create(defaultResult, (draft) => {\n const operations = [...document.operations[scope]];\n const sortedOperations = documentHelpers.sortOperations(operations);\n\n draft.action = noop(scope);\n\n const lastOperation = sortedOperations.at(-1);\n let nextIndex = lastOperation?.index ?? -1;\n\n const isNewNoop = lastOperation?.type !== \"NOOP\";\n\n if (isNewNoop) {\n nextIndex = nextIndex + 1;\n } else {\n draft.reuseLastOperationIndex = true;\n }\n\n const nextOperationHistory = isNewNoop\n ? [...sortedOperations, { index: nextIndex, skip: 0 }]\n : sortedOperations;\n\n draft.skip = documentHelpers.nextSkipNumber(nextOperationHistory);\n\n if (lastOperation && draft.skip > lastOperation.skip + 1) {\n // there's an overlap with a previous skip operation\n // (add 1 to the skip value because we are adding a new operation to the history)\n draft.skip = draft.skip + 1;\n }\n\n if (draft.skip < 0) {\n throw new Error(\n `Cannot undo: you can't undo more operations than the ones in the scope history`,\n );\n }\n });\n}\n\nexport function redoOperation<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: RedoAction,\n skip: number,\n): UndoRedoProcessResult<T, A, L> {\n const { scope, input } = action;\n\n const defaultResult: UndoRedoProcessResult<T, A, L> = {\n document,\n action,\n skip,\n reuseLastOperationIndex: false,\n };\n\n return create(defaultResult, (draft) => {\n if (draft.skip > 0) {\n throw new Error(\n `Cannot redo: skip value from reducer cannot be used with REDO action`,\n );\n }\n\n if (input > 1) {\n throw new Error(`Cannot redo: you can only redo one operation at a time`);\n }\n\n if (input < 1) {\n throw new Error(`Invalid REDO action: invalid redo input value`);\n }\n\n if (draft.document.clipboard.length < 1) {\n throw new Error(`Cannot redo: no operations in the clipboard`);\n }\n\n const operationIndex = draft.document.clipboard.findLastIndex(\n (op) => op.scope === scope,\n );\n if (operationIndex < 0) {\n throw new Error(\n `Cannot redo: no operations in clipboard for scope \"${scope}\"`,\n );\n }\n\n const operation = draft.document.clipboard.splice(operationIndex, 1)[0];\n\n draft.action = castDraft({\n type: operation.type,\n scope: operation.scope,\n input: operation.input,\n } as A);\n });\n}\n\nexport function pruneOperation<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: PruneAction,\n wrappedReducer: ImmutableStateReducer<T, A, L>,\n): Document<T, A, L> {\n const { scope } = action;\n const operations = document.operations[scope];\n\n let {\n input: { start, end },\n } = action;\n start = start || 0;\n end = end || operations.length;\n\n const actionsToPrune = operations.slice(start, end);\n const actionsToKeepStart = operations.slice(0, start);\n const actionsToKeepEnd = operations.slice(end);\n\n // runs all operations from the initial state to\n // the end of prune to get name and data\n const newDocument = replayOperations(\n document.initialState,\n {\n ...document.operations,\n [scope]: actionsToKeepStart.concat(actionsToPrune),\n },\n wrappedReducer,\n );\n\n const { name, state: newState } = newDocument;\n\n // the new operation has the index of the first pruned operation\n const loadStateIndex = actionsToKeepStart.length;\n\n // if and operation is pruned then reuses the timestamp of the last operation\n // if not then assigns the timestamp of the following unpruned operation\n const loadStateTimestamp = actionsToKeepStart.length\n ? actionsToKeepStart[actionsToKeepStart.length - 1].timestamp\n : actionsToKeepEnd.length\n ? actionsToKeepEnd[0].timestamp\n : new Date().toISOString();\n\n // replaces pruned operations with LOAD_STATE\n return replayOperations(\n document.initialState,\n {\n ...document.operations,\n [scope]: [\n ...actionsToKeepStart,\n {\n ...loadState({ name, state: newState }, actionsToPrune.length),\n timestamp: loadStateTimestamp,\n index: loadStateIndex,\n hash: hashDocument({ state: newState }, \"global\"),\n },\n ...actionsToKeepEnd\n // updates the index for all the following operations\n .map((action, index) => ({\n ...action,\n index: loadStateIndex + index + 1,\n })),\n ],\n },\n wrappedReducer,\n );\n}\n\nexport function loadStateOperation<T, A extends Action, L>(\n oldDocument: Document<T, A, L>,\n newDocument: { name: string; state?: State<T, L> },\n): Document<T, A, L> {\n return {\n ...oldDocument,\n name: newDocument.name,\n state: newDocument.state ?? ({ global: {}, local: {} } as State<T, L>),\n };\n}\n\nexport * from \"./creators\";\n","import type { Action } from \"../types\";\nimport type {\n LoadStateActionInput,\n PruneActionInput,\n RedoAction as _RedoAction,\n SetNameAction as _SetNameAction,\n UndoAction as _UndoAction,\n} from \"../schema/types\";\n\nexport const SET_NAME = \"SET_NAME\";\nexport const UNDO = \"UNDO\";\nexport const REDO = \"REDO\";\nexport const PRUNE = \"PRUNE\";\nexport const LOAD_STATE = \"LOAD_STATE\";\nexport const NOOP = \"NOOP\";\n\nexport type LoadStateAction = Action<\"LOAD_STATE\", LoadStateActionInput>;\nexport type PruneAction = Action<\"PRUNE\", PruneActionInput>;\nexport type RedoAction = Action<\"REDO\", _RedoAction[\"input\"]>;\nexport type SetNameAction = Action<\"SET_NAME\", _SetNameAction[\"input\"]>;\nexport type UndoAction = Action<\"UNDO\", _UndoAction[\"input\"]>;\nexport type NOOPAction = Action<\"NOOP\">;\n\nexport type BaseAction =\n | LoadStateAction\n | PruneAction\n | RedoAction\n | SetNameAction\n | UndoAction\n | NOOPAction;\n","import { create, castDraft, Draft, unsafe } from \"mutative\";\nimport {\n loadStateOperation,\n pruneOperation,\n redoOperation,\n setNameOperation,\n undoOperation,\n} from \"./actions\";\nimport {\n BaseAction,\n LOAD_STATE,\n PRUNE,\n REDO,\n SET_NAME,\n UNDO,\n} from \"./actions/types\";\nimport { UndoRedoAction, z } from \"./schema\";\nimport {\n Action,\n Document,\n ImmutableStateReducer,\n Operation,\n OperationScope,\n ReducerOptions,\n State,\n} from \"./types\";\nimport {\n isBaseAction,\n hashDocument,\n replayOperations,\n isUndoRedo,\n isUndo,\n getDocumentLastModified,\n parseResultingState,\n} from \"./utils/base\";\nimport { SignalDispatch } from \"./signal\";\nimport * as documentHelpers from \"./utils/document-helpers\";\nimport { generateId } from \"./utils\";\n\n/**\n * Gets the next revision number based on the provided action.\n *\n * @param state The current state of the document.\n * @param action The action being applied to the document.\n * @returns The next revision number.\n */\nfunction getNextRevision(\n document: Document,\n action: Action | Operation,\n): number {\n let latestOperation: Operation | undefined;\n\n if (\"index\" in action) {\n latestOperation = { ...action };\n } else {\n latestOperation = document.operations[action.scope].at(-1);\n }\n\n return (latestOperation?.index ?? -1) + 1;\n}\n\n/**\n * Updates the document header with the latest revision number and\n * date of last modification.\n *\n * @param state The current state of the document.\n * @param action The action being applied to the document.\n * @returns The updated document state.\n */\nexport function updateHeader<T extends Document>(\n document: T,\n action: Action,\n): T {\n return {\n ...document,\n revision: {\n ...document.revision,\n [action.scope]: getNextRevision(document, action),\n },\n lastModified: getDocumentLastModified(document),\n };\n}\n\n/**\n * Updates the operations history of the document based on the provided action.\n *\n * @param state The current state of the document.\n * @param action The action being applied to the document.\n * @param skip The number of operations to skip before applying the action.\n * @param reuseLastOperationIndex Whether to reuse the last operation index (used when a an UNDO operation is performed after an existing one).\n * @returns The updated document state.\n */\nfunction updateOperations<T extends Document>(\n document: T,\n action: Action | Operation,\n skip = 0,\n reuseLastOperationIndex = false,\n): T {\n // UNDO, REDO and PRUNE are meta operations\n // that alter the operations history themselves\n if ([UNDO, REDO, PRUNE].includes(action.type)) {\n return document;\n }\n\n const { scope } = action;\n const operations = document.operations[scope].slice();\n let operationId: string | undefined;\n\n const latestOperation = operations.at(-1);\n const lastOperationIndex = latestOperation?.index ?? -1;\n\n let nextIndex = reuseLastOperationIndex\n ? lastOperationIndex\n : lastOperationIndex + 1;\n\n let timestamp = new Date().toISOString();\n\n if (\"index\" in action) {\n if (action.index - skip > nextIndex) {\n throw new Error(\n `Missing operations: expected ${nextIndex} with skip 0 or equivalent, got index ${action.index} with skip ${skip}`,\n );\n }\n\n nextIndex = action.index;\n operationId = action.id;\n\n timestamp = action.timestamp;\n } else {\n operationId = \"id\" in action ? (action.id as string) : generateId();\n }\n\n operations.push({\n ...action,\n id: operationId,\n index: nextIndex,\n timestamp,\n hash: \"\",\n scope,\n skip,\n error: undefined,\n });\n\n // adds the action to the operations history with\n // the latest index and current timestamp\n return {\n ...document,\n operations: { ...document.operations, [scope]: operations },\n };\n}\n\n/**\n * Updates the document state based on the provided action.\n *\n * @param state The current state of the document.\n * @param action The action being applied to the document.\n * @param skip The number of operations to skip before applying the action.\n * @param reuseLastOperationIndex Whether to reuse the last operation index (used when a an UNDO operation is performed after an existing one).\n * @returns The updated document state.\n */\nexport function updateDocument<T extends Document>(\n document: T,\n action: Action,\n skip = 0,\n reuseLastOperationIndex = false,\n) {\n let newDocument = updateOperations(\n document,\n action,\n skip,\n reuseLastOperationIndex,\n );\n newDocument = updateHeader(newDocument, action);\n return newDocument;\n}\n\n/**\n * The base document reducer function that wraps a custom reducer function.\n *\n * @param state The current state of the document.\n * @param action The action being applied to the document.\n * @param wrappedReducer The custom reducer function being wrapped by the base reducer.\n * @returns The updated document state.\n */\nfunction _baseReducer<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: BaseAction,\n wrappedReducer: ImmutableStateReducer<T, A, L>,\n): Document<T, A, L> {\n // throws if action is not valid base action\n z.BaseActionSchema().parse(action);\n\n switch (action.type) {\n case SET_NAME:\n return setNameOperation(document, action.input);\n case PRUNE:\n return pruneOperation(document, action, wrappedReducer);\n case LOAD_STATE:\n return loadStateOperation(document, action.input.state);\n default:\n return document;\n }\n}\n\ntype UndoRedoProcessResult<T, A extends Action, L> = {\n document: Document<T, A, L>;\n action: A | BaseAction;\n skip: number;\n reuseLastOperationIndex: boolean;\n};\n\n/**\n * Processes an UNDO or REDO action.\n *\n * @param document The current state of the document.\n * @param action The action being applied to the document.\n * @param skip The number of operations to skip before applying the action.\n * @returns The updated document, calculated skip value and transformed action (if apply).\n */\nexport function processUndoRedo<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: UndoRedoAction,\n skip: number,\n): UndoRedoProcessResult<T, A, L> {\n switch (action.type) {\n case UNDO:\n return undoOperation(document, action, skip);\n case REDO:\n return redoOperation(document, action, skip);\n default:\n return { document, action, skip, reuseLastOperationIndex: false };\n }\n}\n\n/**\n * Processes a skip operation on a document.\n *\n * @template T - The type of the document state.\n * @template A - The type of the document actions.\n * @template L - The type of the document labels.\n * @param {Document<T, A, L>} document - The document to process the skip operation on.\n * @param {A | BaseAction | Operation} action - The action or operation to process.\n * @param {ImmutableStateReducer<T, A, L>} customReducer - The custom reducer function for the document state.\n * @param {number} skipValue - The value to skip.\n * @returns {Document<T, A, L>} - The updated document after processing the skip operation.\n */\nfunction processSkipOperation<\n T,\n A extends Action,\n L,\n D extends Document<T, A, L>,\n>(\n document: D,\n action: A | BaseAction | Operation,\n customReducer: ImmutableStateReducer<T, A, L>,\n skipValue: number,\n reuseOperationResultingState = false,\n resultingStateParser = parseResultingState,\n): D {\n const scope = action.scope;\n\n const latestOperation = document.operations[scope].at(-1);\n\n if (!latestOperation) return document;\n\n const documentOperations = documentHelpers.garbageCollectDocumentOperations({\n ...document.operations,\n [scope]: documentHelpers.skipHeaderOperations(\n document.operations[scope],\n latestOperation,\n ),\n });\n\n let scopeState: T | L | undefined = undefined;\n const lastRemainingOperation = documentOperations[scope].at(-1);\n\n // if the last operation has the resulting state and\n // reuseOperationResultingState is true then reuses it\n // instead of replaying the operations from the beginning\n if (reuseOperationResultingState && lastRemainingOperation?.resultingState) {\n scopeState = resultingStateParser(lastRemainingOperation.resultingState) as\n | T\n | L;\n } else {\n const { state } = replayOperations(\n document.initialState,\n documentOperations,\n customReducer,\n undefined,\n undefined,\n undefined,\n undefined,\n {\n reuseHash: true,\n reuseOperationResultingState,\n operationResultingStateParser: resultingStateParser,\n },\n );\n scopeState = state[scope];\n }\n\n return {\n ...document,\n state: {\n ...document.state,\n [scope]: scopeState,\n },\n operations: documentHelpers.garbageCollectDocumentOperations({\n ...document.operations,\n }),\n };\n}\n\nfunction processUndoOperation<\n T,\n A extends Action,\n L,\n D extends Document<T, A, L>,\n>(\n document: D,\n scope: OperationScope,\n customReducer: ImmutableStateReducer<T, A, L>,\n reuseOperationResultingState = false,\n resultingStateParser = parseResultingState,\n): Document<T, A, L> {\n const operations = [...document.operations[scope]];\n const sortedOperations = documentHelpers.sortOperations(operations);\n\n sortedOperations.pop();\n\n const documentOperations = documentHelpers.garbageCollectDocumentOperations({\n ...document.operations,\n });\n\n const clearedOperations = [...documentOperations[scope]];\n const diff = documentHelpers.diffOperations(\n documentHelpers.garbageCollect(sortedOperations),\n clearedOperations,\n );\n\n const doc = replayOperations(\n document.initialState,\n documentOperations,\n customReducer,\n undefined,\n undefined,\n undefined,\n undefined,\n {\n reuseHash: true,\n reuseOperationResultingState,\n operationResultingStateParser: resultingStateParser,\n },\n );\n\n const clipboard = documentHelpers\n .sortOperations(\n [...document.clipboard, ...diff].filter((op) => op.type !== \"NOOP\"),\n )\n .reverse();\n\n return { ...doc, clipboard };\n}\n\n/**\n * Base document reducer that wraps a custom document reducer and handles\n * document-level actions such as undo, redo, prune, and set name.\n *\n * @template T - The type of the state of the custom reducer.\n * @template A - The type of the actions of the custom reducer.\n * @param state - The current state of the document.\n * @param action - The action object to apply to the state.\n * @param customReducer - The custom reducer that implements the application logic\n * specific to the document's state.\n * @returns The new state of the document.\n */\nexport function baseReducer<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: A | BaseAction | Operation,\n customReducer: ImmutableStateReducer<T, A, L>,\n dispatch?: SignalDispatch,\n options: ReducerOptions = {},\n) {\n const {\n skip,\n ignoreSkipOperations = false,\n reuseHash = false,\n reuseOperationResultingState = false,\n operationResultingStateParser,\n } = options;\n\n let _action = { ...action };\n let skipValue = skip || 0;\n let newDocument: Document<T, A, L> = { ...document };\n let reuseLastOperationIndex = false;\n\n const shouldProcessSkipOperation =\n !ignoreSkipOperations &&\n (skipValue > 0 || (\"index\" in _action && _action.skip > 0));\n\n if (isUndoRedo(_action)) {\n const {\n skip: calculatedSkip,\n action: transformedAction,\n document: processedDocument,\n reuseLastOperationIndex: reuseIndex,\n } = processUndoRedo(document, _action, skipValue);\n\n _action = transformedAction;\n skipValue = calculatedSkip;\n newDocument = processedDocument;\n reuseLastOperationIndex = reuseIndex;\n } else {\n newDocument = {\n ...newDocument,\n clipboard: [],\n };\n }\n\n // if the action is one the base document actions (SET_NAME, UNDO, REDO, PRUNE)\n // then runs the base reducer first\n if (isBaseAction(_action)) {\n newDocument = _baseReducer(newDocument, _action, customReducer);\n }\n\n // updates the document revision number, last modified date\n // and operation history\n newDocument = updateDocument(\n newDocument,\n _action,\n skipValue,\n reuseLastOperationIndex,\n );\n\n const isUndoAction = isUndo(action);\n\n if (isUndoAction) {\n const result = processUndoOperation(\n newDocument,\n action.scope,\n customReducer,\n );\n\n return result;\n }\n\n if (shouldProcessSkipOperation) {\n newDocument = processSkipOperation(\n newDocument,\n _action,\n customReducer,\n skipValue,\n reuseOperationResultingState,\n operationResultingStateParser,\n );\n }\n\n // wraps the custom reducer with Mutative to avoid\n // mutation bugs and allow writing reducers with\n // mutating code\n newDocument = create(newDocument, (draft) => {\n // the reducer runs on a immutable version of\n // provided state\n try {\n const newState = customReducer(draft.state, _action as A, dispatch);\n\n // const clipboardValue = isUndoRedo(action) ? [...clipboard] : [];\n\n // if the reducer creates a new state object instead\n // of mutating the draft then returns the new state\n if (newState) {\n // Object.assign(draft.state, newState);\n unsafe(() => {\n // casts new state as draft to comply with typescript\n draft.state = castDraft(newState);\n // clipboard: [...clipboardValue],\n });\n } else {\n // unsafe(() => {\n // draft.clipboard = castDraft([...clipboardValue]);\n // });\n }\n } catch (error) {\n // if the reducer throws an error then we should keep the previous state (before replayOperations)\n // and remove skip number from action/operation\n const lastOperationIndex =\n newDocument.operations[_action.scope].length - 1;\n draft.operations[_action.scope][lastOperationIndex].error = (\n error as Error\n ).message;\n\n draft.operations[_action.scope][lastOperationIndex].skip = 0;\n\n if (shouldProcessSkipOperation) {\n draft.state = castDraft<State<T, L>>({ ...document.state });\n draft.operations = castDraft({\n ...document.operations,\n [_action.scope]: [\n ...document.operations[_action.scope],\n {\n ...draft.operations[_action.scope][lastOperationIndex],\n },\n ],\n });\n }\n }\n });\n // updates the document history\n // meta operations are not added to the operations history\n if ([UNDO, REDO, PRUNE].includes(_action.type)) {\n return newDocument;\n }\n\n // if reuseHash is true, checks if the action has\n // an hash and uses it instead of generating it\n const scope = _action.scope || \"global\";\n const hash =\n reuseHash && Object.prototype.hasOwnProperty.call(_action, \"hash\")\n ? (_action as Operation).hash\n : hashDocument(newDocument, scope);\n\n // updates the last operation with the hash of the resulting state\n const lastOperation = newDocument.operations[scope].at(-1);\n if (lastOperation) {\n lastOperation.hash = hash;\n\n if (reuseOperationResultingState) {\n lastOperation.resultingState = newDocument.state[scope];\n }\n\n // if the action has attachments then adds them to the document\n if (!isBaseAction(_action) && _action.attachments) {\n _action.attachments.forEach((attachment) => {\n const { hash, ...file } = attachment;\n newDocument.attachments[hash] = {\n ...file,\n };\n });\n }\n }\n\n return newDocument;\n}\n\n/**\n * Base document reducer that wraps a custom document reducer and handles\n * document-level actions such as undo, redo, prune, and set name.\n *\n * @template T - The type of the state of the custom reducer.\n * @template A - The type of the actions of the custom reducer.\n * @param state - The current state of the document.\n * @param action - The action object to apply to the state.\n * @param customReducer - The custom reducer that implements the application logic\n * specific to the document's state.\n * @returns The new state of the document.\n */\nexport function mutableBaseReducer<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: A | BaseAction | Operation,\n customReducer: ImmutableStateReducer<T, A, L>,\n dispatch?: SignalDispatch,\n options: ReducerOptions = {},\n) {\n const {\n skip,\n ignoreSkipOperations = false,\n reuseHash = false,\n reuseOperationResultingState = false,\n operationResultingStateParser,\n } = options;\n\n const _action = { ...action };\n const skipValue = skip || 0;\n let newDocument: Document<T, A, L> = { ...document };\n // let clipboard = [...document.clipboard];\n\n const shouldProcessSkipOperation =\n !ignoreSkipOperations &&\n (skipValue > 0 || (\"index\" in _action && _action.skip > 0));\n\n // if the action is one the base document actions (SET_NAME, UNDO, REDO, PRUNE)\n // then runs the base reducer first\n if (isBaseAction(_action)) {\n newDocument = _baseReducer(newDocument, _action, customReducer);\n }\n\n // updates the document revision number, last modified date\n // and operation history\n newDocument = updateDocument(newDocument, _action, skipValue);\n\n if (shouldProcessSkipOperation) {\n newDocument = processSkipOperation(\n newDocument,\n _action,\n customReducer,\n skipValue,\n reuseOperationResultingState,\n operationResultingStateParser,\n );\n }\n\n try {\n const newState = customReducer(\n newDocument.state as Draft<State<T, L>>,\n _action as A,\n dispatch,\n );\n if (newState) {\n newDocument.state = newState;\n }\n } catch (error) {\n // if the reducer throws an error then we should keep the previous state (before replayOperations)\n // and remove skip number from action/operation\n const lastOperationIndex = newDocument.operations[_action.scope].length - 1;\n newDocument.operations[_action.scope][lastOperationIndex].error = (\n error as Error\n ).message;\n newDocument.operations[_action.scope][lastOperationIndex].skip = 0;\n\n if (shouldProcessSkipOperation) {\n newDocument.state = { ...document.state };\n newDocument.operations = {\n ...document.operations,\n [_action.scope]: [\n ...document.operations[_action.scope],\n {\n ...newDocument.operations[_action.scope][lastOperationIndex],\n },\n ],\n };\n }\n }\n\n if ([UNDO, REDO, PRUNE].includes(_action.type)) {\n return newDocument;\n }\n\n // if reuseHash is true, checks if the action has\n // an hash and uses it instead of generating it\n const scope = _action.scope || \"global\";\n const hash =\n reuseHash && Object.prototype.hasOwnProperty.call(_action, \"hash\")\n ? (_action as Operation).hash\n : hashDocument(newDocument, scope);\n\n // updates the last operation with the hash of the resulting state\n const lastOperation = newDocument.operations[scope].at(-1);\n if (lastOperation) {\n lastOperation.hash = hash;\n\n if (reuseOperationResultingState) {\n lastOperation.resultingState = newDocument.state[scope];\n }\n\n // if the action has attachments then adds them to the document\n if (!isBaseAction(_action) && _action.attachments) {\n _action.attachments.forEach((attachment) => {\n const { hash, ...file } = attachment;\n newDocument.attachments[hash] = {\n ...file,\n };\n });\n }\n }\n return newDocument;\n}\n","import { ZodError } from \"zod\";\nimport stringifyJson from \"safe-stable-stringify\";\nimport { baseReducer, mutableBaseReducer, updateHeader } from \"../reducer\";\nimport {\n Action,\n BaseAction,\n UndoRedoAction,\n Document,\n ExtendedState,\n ImmutableStateReducer,\n Reducer,\n OperationScope,\n State,\n CreateState,\n PartialState,\n DocumentOperations,\n DocumentHeader,\n DocumentOperationsIgnoreMap,\n Operation,\n MappedOperation,\n ReducerOptions,\n UndoAction,\n} from \"../types\";\nimport { hash } from \"./node\";\nimport {\n LOAD_STATE,\n PRUNE,\n REDO,\n SET_NAME,\n UNDO,\n NOOP,\n} from \"../actions/types\";\nimport { SignalDispatch } from \"../signal\";\nimport { InvalidActionInputError, InvalidActionInputZodError } from \"./errors\";\n\nexport function isNoopOperation(op: Partial<Operation>): boolean {\n return (\n op.type === NOOP &&\n op.skip !== undefined &&\n op.skip > 0 &&\n op.hash !== undefined\n );\n}\n\nexport function isUndoRedo(action: Action): action is UndoRedoAction {\n return [UNDO, REDO].includes(action.type);\n}\n\nexport function isUndo(action: Action): action is UndoAction {\n return action.type === UNDO;\n}\n\nexport function isBaseAction(action: Action): action is BaseAction {\n return [SET_NAME, UNDO, REDO, PRUNE, LOAD_STATE].includes(action.type);\n}\n\n/**\n * Helper function to be used by action creators.\n *\n * @remarks\n * Creates an action with the given type and input properties. The input\n * properties default to an empty object.\n *\n * @typeParam A - Type of the action to be returned.\n *\n * @param type - The type of the action.\n * @param input - The input properties of the action.\n * @param attachments - The attachments included in the action.\n * @param validator - The validator to use for the input properties.\n * @param scope - The scope of the action, can either be 'global' or 'local'.\n * @param skip - The number of operations to skip before this new action is applied.\n *\n * @throws Error if the type is empty or not a string.\n *\n * @returns The new action.\n */\nexport function createAction<A extends Action>(\n type: A[\"type\"],\n input?: A[\"input\"],\n attachments?: Action[\"attachments\"],\n validator?: () => { parse(v: unknown): A[\"input\"] },\n scope: OperationScope = \"global\",\n): A {\n if (!type) {\n throw new Error(\"Empty action type\");\n }\n\n if (typeof type !== \"string\") {\n throw new Error(`Invalid action type: ${JSON.stringify(type)}`);\n }\n\n const action: Action = { type, input, scope };\n\n if (attachments) {\n action.attachments = attachments;\n }\n\n try {\n validator?.().parse(action.input);\n } catch (error) {\n if (error instanceof ZodError) {\n throw new InvalidActionInputZodError(error.issues);\n } else {\n throw new InvalidActionInputError(error);\n }\n }\n\n return action as A;\n}\n\n/**\n * Helper function to create a document model reducer.\n *\n * @remarks\n * This function creates a new reducer that wraps the provided `reducer` with\n * `documentReducer`, adding support for document actions:\n * - `SET_NAME`\n * - `UNDO`\n * - `REDO`\n * - `PRUNE`\n *\n * It also updates the document-related attributes on every operation.\n *\n * @param reducer - The custom reducer to wrap.\n * @param documentReducer - The document reducer to use.\n *\n * @returns The new reducer.\n */\nexport function createReducer<\n S = unknown,\n A extends Action = Action,\n L = unknown,\n>(\n reducer: ImmutableStateReducer<S, A, L>,\n documentReducer = baseReducer,\n): Reducer<S, A, L> {\n return (document, action, dispatch, options) => {\n return documentReducer(document, action, reducer, dispatch, options);\n };\n}\n\nexport function createUnsafeReducer<\n S = unknown,\n A extends Action = Action,\n L = unknown,\n>(\n reducer: ImmutableStateReducer<S, A, L>,\n documentReducer = mutableBaseReducer,\n): Reducer<S, A, L> {\n return (document, action, dispatch, options) => {\n return documentReducer(document, action, reducer, dispatch, options);\n };\n}\n\nexport const createExtendedState = <S, L>(\n initialState?: Partial<ExtendedState<PartialState<S>, PartialState<L>>>,\n createState?: CreateState<S, L>,\n): ExtendedState<S, L> => {\n return {\n name: \"\",\n documentType: \"\",\n revision: {\n global: 0,\n local: 0,\n },\n created: new Date().toISOString(),\n lastModified: new Date().toISOString(),\n attachments: {},\n ...initialState,\n state:\n createState?.(initialState?.state) ??\n ((initialState?.state ?? { global: {}, local: {} }) as State<S, L>),\n };\n};\n\n/**\n * Builds the initial document state from the provided data.\n *\n * @typeParam T - The type of the data.\n * @typeParam A - The type of the actions.\n *\n * @param initialState - The initial state of the document. The `data` property\n * is required, but all other properties are optional.\n *\n * @returns The new document state.\n */\nexport const createDocument = <S, A extends Action, L = unknown>(\n initialState?: Partial<ExtendedState<PartialState<S>, PartialState<L>>>,\n createState?: (\n state?: Partial<State<PartialState<S>, PartialState<L>>>,\n ) => State<S, L>,\n): Document<S, A, L> => {\n const state: ExtendedState<S, L> = createExtendedState(\n initialState,\n createState,\n );\n return {\n ...state,\n initialState: state,\n operations: { global: [], local: [] },\n clipboard: [],\n };\n};\n\n// export const stringifyJson = configureStringify\n\nexport const hashDocument = (\n document: Pick<Document, \"state\">,\n scope: OperationScope = \"global\",\n) => {\n return hash(stringifyJson(document.state[scope] || \"\"));\n};\n\nexport const hashKey = (date?: Date, randomLimit = 1000) => {\n const random = Math.random() * randomLimit;\n return hash(`${(date ?? new Date()).toISOString()}${random}`);\n};\n\nexport function readOnly<T>(value: T): Readonly<T> {\n return Object.freeze(value);\n}\n\n/**\n * Maps skipped operations in an array of operations.\n * Skipped operations are operations that are ignored during processing.\n * @param operations - The array of operations to map.\n * @param skippedHeadOperations - The number of operations to skip at the head of the array of operations.\n * @returns An array of mapped operations with ignore flag indicating if the operation is skipped.\n * @throws Error if the operation index is invalid and there are missing operations.\n */\nexport function mapSkippedOperations<A extends Action>(\n operations: Operation<BaseAction | A>[],\n skippedHeadOperations?: number,\n): MappedOperation<A>[] {\n const ops = [...operations];\n\n let skipped = skippedHeadOperations || 0;\n let latestOpIndex = ops.length > 0 ? ops[ops.length - 1].index : 0;\n\n const scopeOpsWithIgnore = [] as MappedOperation<A>[];\n\n for (const operation of ops.reverse()) {\n if (skipped > 0) {\n const operationsDiff = latestOpIndex - operation.index;\n skipped -= operationsDiff;\n }\n\n if (skipped < 0) {\n throw new Error(\"Invalid operation index, missing operations\");\n }\n\n const mappedOp = {\n ignore: skipped > 0,\n operation,\n };\n\n // here we add 1 to the skip number because we want to get the number of\n // operations that we want to move the pointer back to get the latest valid operation\n // operation.skip = 1 means that we want to move the pointer back 2 operations to get to the latest valid operation\n const operationSkip = operation.skip > 0 ? operation.skip + 1 : 0;\n\n if (operationSkip > 0 && operationSkip > skipped) {\n const skipDiff = operationSkip - skipped;\n skipped = skipped + skipDiff;\n }\n\n latestOpIndex = operation.index;\n scopeOpsWithIgnore.push(mappedOp);\n }\n\n return scopeOpsWithIgnore.reverse();\n}\n\n// Flattens the operations from all scopes into\n// a single array and sorts them by timestamp\nexport function sortOperations<A extends Action>(\n operations: DocumentOperations<A>,\n) {\n return Object.values(operations)\n .flatMap((array) => array)\n .sort(\n (a, b) =>\n new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime(),\n );\n}\n\n// Flattens the mapped operations (with ignore flag) from all scopes into\n// a single array and sorts them by timestamp\nexport function sortMappedOperations<A extends Action>(\n operations: DocumentOperationsIgnoreMap<A>,\n) {\n return Object.values(operations)\n .flatMap((array) => array)\n .sort(\n (a, b) =>\n new Date(a.operation.timestamp).getTime() -\n new Date(b.operation.timestamp).getTime(),\n );\n}\n\n// gets the last modified timestamp of a document from\n// it's operations, falling back to the initial state\nexport function getDocumentLastModified(document: Document) {\n const sortedOperations = sortOperations(document.operations);\n const timestamp =\n sortedOperations.at(-1)?.timestamp || document.initialState.lastModified;\n return timestamp;\n}\n\n// Runs the operations on the initial data using the\n// provided reducer, wrapped with the document reducer.\n// This rebuilds the document according to the provided actions.\nexport function replayOperations<T, A extends Action, L>(\n initialState: ExtendedState<T, L>,\n clearedOperations: DocumentOperations<A>,\n reducer: ImmutableStateReducer<T, A, L>,\n dispatch?: SignalDispatch,\n header?: DocumentHeader,\n documentReducer = baseReducer,\n skipHeaderOperations: SkipHeaderOperations = {},\n options?: ReducerOptions,\n): Document<T, A, L> {\n // wraps the provided custom reducer with the\n // base document reducer\n const wrappedReducer = createReducer(reducer, documentReducer);\n\n return replayDocument(\n initialState,\n clearedOperations,\n wrappedReducer,\n dispatch,\n header,\n skipHeaderOperations,\n options,\n );\n}\n\nexport type SkipHeaderOperations = Partial<Record<OperationScope, number>>;\n\nexport type ReplayDocumentOptions = {\n // if false then reuses the hash from the operations\n // and only checks the final hash of each scope\n checkHashes?: boolean;\n // if true then looks for the latest operation with\n // a resulting state and uses it as a starting point\n reuseOperationResultingState?: boolean;\n // Optional parser for the operation resulting state, uses JSON.parse by default\n operationResultingStateParser?: (state: unknown) => object;\n};\n\n// Runs the operations on the initial data using the\n// provided document reducer.\n// This rebuilds the document according to the provided actions.\nexport function replayDocument<T, A extends Action, L>(\n initialState: ExtendedState<T, L>,\n operations: DocumentOperations<A>,\n reducer: Reducer<T, A, L>,\n dispatch?: SignalDispatch,\n header?: DocumentHeader,\n skipHeaderOperations: SkipHeaderOperations = {},\n options?: ReplayDocumentOptions,\n): Document<T, A, L> {\n const {\n checkHashes = true,\n reuseOperationResultingState,\n operationResultingStateParser = parseResultingState,\n } = options || {};\n\n let documentState = initialState;\n const operationsToReplay = [] as Operation<A | BaseAction>[];\n const initialOperations: DocumentOperations<A> = {\n global: [],\n local: [],\n };\n\n // if operation resulting state is to be used then\n // looks for the last operation with state of each\n // scope to use it as the starting point and only\n // replay operations that follow it\n if (reuseOperationResultingState) {\n for (const [scope, scopeOperations] of Object.entries(operations)) {\n const index = scopeOperations.findLastIndex((s) => !!s.resultingState);\n if (index < 0) {\n operationsToReplay.push(...scopeOperations);\n continue;\n }\n const opWithState = scopeOperations[index];\n try {\n const scopeState = operationResultingStateParser(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-unnecessary-type-assertion\n opWithState.resultingState!,\n );\n documentState = {\n ...documentState,\n state: {\n ...documentState.state,\n // TODO how to deal with attachments?\n [scope]: scopeState,\n },\n };\n initialOperations[scope as keyof DocumentOperations<A>].push(\n ...scopeOperations.slice(0, index + 1),\n );\n operationsToReplay.push(...scopeOperations.slice(index + 1));\n } catch {\n /* if parsing fails then keeps replays all scope operations */\n operationsToReplay.push(...scopeOperations);\n }\n }\n } else {\n operationsToReplay.push(...Object.values(operations).flat());\n }\n\n // builds a new document from the initial data\n const document = createDocument<T, A, L>(documentState);\n document.initialState = initialState;\n document.operations = initialOperations;\n\n let result = document;\n // if there are operations left without resulting state\n // then replays them\n if (operationsToReplay.length) {\n result = operationsToReplay.reduce((document, operation) => {\n const doc = reducer(document, operation, dispatch, {\n skip: operation.skip,\n ignoreSkipOperations: true,\n reuseHash: !checkHashes,\n });\n\n return doc;\n }, document);\n }\n // if not then updates the document header according\n // to the latest operation of each scope\n else {\n for (const scopeOperations of Object.values(initialOperations)) {\n const lastOperation = scopeOperations.at(-1);\n if (lastOperation) {\n result = updateHeader(result, lastOperation);\n }\n }\n }\n\n // if hash generation was skipped then checks if the hash\n // of each scope matches the hash of last operation\n if (!checkHashes) {\n for (const scope of Object.keys(result.state)) {\n for (let i = operationsToReplay.length - 1; i >= 0; i--) {\n const operation = operationsToReplay[i];\n\n if (operation.scope !== scope) {\n continue;\n }\n if (operation.hash !== hashDocument(result, scope)) {\n throw new Error(`Hash mismatch for scope ${scope}`);\n } else {\n break;\n }\n }\n }\n }\n\n // reuses operation timestamp if provided\n const resultOperations: DocumentOperations<A> = Object.keys(\n result.operations,\n ).reduce(\n (acc, key) => {\n const scope = key as keyof DocumentOperations<A>;\n return {\n ...acc,\n [scope]: [\n ...result.operations[scope].map((operation, index) => {\n return {\n ...operation,\n timestamp:\n operations[scope][index]?.timestamp ?? operation.timestamp,\n };\n }),\n ],\n };\n },\n { global: [], local: [] },\n );\n // gets the last modified timestamp from the latest operation\n const lastModified = Object.values(resultOperations).reduce((acc, curr) => {\n const operation = curr.at(-1);\n if (operation && operation.timestamp > acc) {\n acc = operation.timestamp;\n }\n return acc;\n }, initialState.lastModified);\n\n return { ...result, operations: resultOperations, lastModified };\n}\n\nexport function isSameDocument(documentA: Document, documentB: Document) {\n return stringifyJson(documentA) === stringifyJson(documentB);\n}\n\nexport function parseResultingState(state: unknown) {\n const stateType = typeof state;\n if (stateType === \"string\") {\n return JSON.parse(state as string) as object;\n } else if (stateType === \"object\") {\n return state as object;\n } else {\n throw new Error(`Providing resulting state is of type: ${stateType}`);\n }\n}\n","import { ExtendedState, OperationScope, z } from \"../types\";\nimport { createAction } from \"../utils/base\";\nimport {\n LoadStateAction,\n PruneAction,\n RedoAction,\n SetNameAction,\n UndoAction,\n NOOPAction,\n} from \"./types\";\n\n/**\n * Changes the name of the document.\n *\n * @param name - The name to be set in the document.\n * @category Actions\n */\nexport const setName = (name: string) =>\n createAction<SetNameAction>(\n \"SET_NAME\",\n name,\n undefined,\n z.SetNameActionInputSchema,\n undefined,\n );\n\n/**\n * Cancels the last `count` operations.\n *\n * @param count - Number of operations to cancel\n * @category Actions\n */\nexport const undo = (skip = 1, scope: OperationScope = \"global\") =>\n createAction<UndoAction>(\n \"UNDO\",\n skip,\n undefined,\n z.UndoActionInputSchema,\n scope,\n );\n\n/**\n * Cancels the last `count` {@link undo | UNDO} operations.\n *\n * @param count - Number of UNDO operations to cancel\n * @category Actions\n */\nexport const redo = (count = 1, scope: OperationScope = \"global\") =>\n createAction<RedoAction>(\n \"REDO\",\n count,\n undefined,\n z.RedoActionInputSchema,\n scope,\n );\n\n/**\n * Joins multiple operations into a single {@link loadState | LOAD_STATE} operation.\n *\n * @remarks\n * Useful to keep operations history smaller. Operations to prune are selected by index,\n * similar to the {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice | slice} method in Arrays.\n *\n * @param start - Index of the first operation to prune\n * @param end - Index of the last operation to prune\n * @category Actions\n */\nexport const prune = (\n start?: number | undefined,\n end?: number | undefined,\n scope: OperationScope = \"global\",\n) =>\n createAction<PruneAction>(\n \"PRUNE\",\n { start, end },\n undefined,\n z.PruneActionInputSchema,\n scope,\n );\n\n/**\n * Replaces the state of the document.\n *\n * @remarks\n * This action shouldn't be used directly. It is dispatched by the {@link prune} action.\n *\n * @param state - State to be set in the document.\n * @param operations - Number of operations that were removed from the previous state.\n * @category Actions\n */\nexport const loadState = <S, T>(\n state: Pick<ExtendedState<S, T>, \"state\" | \"name\">,\n operations: number,\n) =>\n createAction<LoadStateAction>(\n \"LOAD_STATE\",\n { state, operations },\n undefined,\n z.LoadStateActionInputSchema,\n );\n\nexport const noop = (scope: OperationScope = \"global\") =>\n createAction<NOOPAction>(\"NOOP\", {}, undefined, undefined, scope);\n"],"names":["value","join","tmp","key","res","stringify","stringifyJson","standardTypes","IntegrityIssueType","IntegrityIssueSubType","sortOperations","documentHelpers.sortOperations","documentHelpers.nextSkipNumber","action","z.BaseActionSchema","documentHelpers.garbageCollectDocumentOperations","documentHelpers.skipHeaderOperations","documentHelpers.diffOperations","documentHelpers.garbageCollect","hash","skipHeaderOperations","document","z.SetNameActionInputSchema","z.UndoActionInputSchema","z.RedoActionInputSchema","z.PruneActionInputSchema","z.LoadStateActionInputSchema"],"mappings":"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","x_google_ignoreList":[1,2,6,7,8]}
@@ -1,48 +0,0 @@
1
- import { I as InvalidActionInputError, t as InvalidActionInputZodError, v as ab2hex, w as buildOperationSignature, x as buildOperationSignatureMessage, y as buildOperationSignatureParams, A as buildSignedOperation, f as createAction, b as createDocument, a as createExtendedState, c as createReducer, C as createUnsafeReducer, D as createZip, E as documentHelpers, F as generateId, G as getDocumentLastModified, H as getLocalFile, J as getRemoteFile, K as getUnixTimestamp, L as hashDocument, M as hashKey, N as hex2ab, i as isBaseAction, O as isNoopOperation, P as isSameDocument, Q as isUndo, R as isUndoRedo, l as loadFromFile, e as loadFromInput, S as mapSkippedOperations, T as parseResultingState, r as readOnly, U as replayDocument, V as replayOperations, s as saveToFile, d as saveToFileHandle, W as sortMappedOperations, X as sortOperations, Y as validateOperations, Z as verifyOperationSignature } from "./creators-0lHfLHX0.js";
2
- const index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3
- __proto__: null,
4
- InvalidActionInputError,
5
- InvalidActionInputZodError,
6
- ab2hex,
7
- buildOperationSignature,
8
- buildOperationSignatureMessage,
9
- buildOperationSignatureParams,
10
- buildSignedOperation,
11
- createAction,
12
- createDocument,
13
- createExtendedState,
14
- createReducer,
15
- createUnsafeReducer,
16
- createZip,
17
- documentHelpers,
18
- generateId,
19
- getDocumentLastModified,
20
- getLocalFile,
21
- getRemoteFile,
22
- getUnixTimestamp,
23
- hashDocument,
24
- hashKey,
25
- hex2ab,
26
- isBaseAction,
27
- isNoopOperation,
28
- isSameDocument,
29
- isUndo,
30
- isUndoRedo,
31
- loadFromFile,
32
- loadFromInput,
33
- mapSkippedOperations,
34
- parseResultingState,
35
- readOnly,
36
- replayDocument,
37
- replayOperations,
38
- saveToFile,
39
- saveToFileHandle,
40
- sortMappedOperations,
41
- sortOperations,
42
- validateOperations,
43
- verifyOperationSignature
44
- }, Symbol.toStringTag, { value: "Module" }));
45
- export {
46
- index as i
47
- };
48
- //# sourceMappingURL=index-BOhJLvSm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BOhJLvSm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}