document-model 4.1.0-dev.12 → 4.1.0-dev.121

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 (458) hide show
  1. package/README.md +24 -24
  2. package/dist/src/core/actions.d.ts +79 -0
  3. package/dist/src/core/actions.d.ts.map +1 -0
  4. package/dist/src/core/actions.js +184 -0
  5. package/dist/src/core/actions.js.map +1 -0
  6. package/dist/src/core/crypto.d.ts +8 -0
  7. package/dist/src/core/crypto.d.ts.map +1 -0
  8. package/dist/src/core/crypto.js +68 -0
  9. package/dist/src/core/crypto.js.map +1 -0
  10. package/dist/src/{document/utils/document-helpers.d.ts → core/documents.d.ts} +57 -21
  11. package/dist/src/core/documents.d.ts.map +1 -0
  12. package/dist/src/{document/utils/document-helpers.js → core/documents.js} +365 -26
  13. package/dist/src/core/documents.js.map +1 -0
  14. package/dist/src/core/errors.d.ts +21 -0
  15. package/dist/src/core/errors.d.ts.map +1 -0
  16. package/dist/src/core/errors.js +47 -0
  17. package/dist/src/core/errors.js.map +1 -0
  18. package/dist/src/core/files.d.ts +14 -0
  19. package/dist/src/core/files.d.ts.map +1 -0
  20. package/dist/src/core/files.js +74 -0
  21. package/dist/src/core/files.js.map +1 -0
  22. package/dist/src/{document/utils → core}/header.d.ts +3 -35
  23. package/dist/src/core/header.d.ts.map +1 -0
  24. package/dist/src/{document/utils → core}/header.js +6 -19
  25. package/dist/src/core/header.js.map +1 -0
  26. package/dist/src/core/index.d.ts +13 -0
  27. package/dist/src/core/index.d.ts.map +1 -0
  28. package/dist/src/core/index.js +13 -0
  29. package/dist/src/core/index.js.map +1 -0
  30. package/dist/src/{document/utils/file.d.ts → core/node.d.ts} +34 -31
  31. package/dist/src/core/node.d.ts.map +1 -0
  32. package/dist/src/core/node.js +139 -0
  33. package/dist/src/core/node.js.map +1 -0
  34. package/dist/src/core/operations.d.ts +32 -0
  35. package/dist/src/core/operations.d.ts.map +1 -0
  36. package/dist/src/{document/actions → core}/operations.js +11 -59
  37. package/dist/src/core/operations.js.map +1 -0
  38. package/dist/src/core/ph-types.d.ts +259 -0
  39. package/dist/src/core/ph-types.d.ts.map +1 -0
  40. package/dist/src/core/ph-types.js +15 -0
  41. package/dist/src/core/ph-types.js.map +1 -0
  42. package/dist/src/core/reducer.d.ts +61 -0
  43. package/dist/src/core/reducer.d.ts.map +1 -0
  44. package/dist/src/{document → core}/reducer.js +168 -105
  45. package/dist/src/core/reducer.js.map +1 -0
  46. package/dist/src/{document/schema/zod.d.ts → core/schemas.d.ts} +37 -10
  47. package/dist/src/core/schemas.d.ts.map +1 -0
  48. package/dist/src/{document/schema/zod.js → core/schemas.js} +23 -26
  49. package/dist/src/core/schemas.js.map +1 -0
  50. package/dist/src/core/state.d.ts +26 -0
  51. package/dist/src/core/state.d.ts.map +1 -0
  52. package/dist/src/core/state.js +56 -0
  53. package/dist/src/core/state.js.map +1 -0
  54. package/dist/src/core/types.d.ts +504 -0
  55. package/dist/src/core/types.d.ts.map +1 -0
  56. package/dist/src/{document → core}/types.js.map +1 -1
  57. package/dist/src/core/utils.d.ts +2 -0
  58. package/dist/src/core/utils.d.ts.map +1 -0
  59. package/dist/src/core/utils.js +7 -0
  60. package/dist/src/core/utils.js.map +1 -0
  61. package/dist/src/core/validation.d.ts +4 -0
  62. package/dist/src/core/validation.d.ts.map +1 -0
  63. package/dist/src/{document/utils → core}/validation.js +6 -2
  64. package/dist/src/core/validation.js.map +1 -0
  65. package/dist/src/document-model/actions.d.ts +158 -0
  66. package/dist/src/document-model/actions.d.ts.map +1 -0
  67. package/dist/src/document-model/actions.js +109 -0
  68. package/dist/src/document-model/actions.js.map +1 -0
  69. package/dist/src/document-model/constants.d.ts +6 -0
  70. package/dist/src/document-model/constants.d.ts.map +1 -0
  71. package/dist/src/document-model/{gen/document-model.js → constants.js} +34 -3
  72. package/dist/src/document-model/constants.js.map +1 -0
  73. package/dist/src/document-model/document-schema.d.ts +263 -0
  74. package/dist/src/document-model/document-schema.d.ts.map +1 -0
  75. package/dist/src/document-model/document-schema.js +43 -0
  76. package/dist/src/document-model/document-schema.js.map +1 -0
  77. package/dist/src/document-model/document-type.d.ts +2 -0
  78. package/dist/src/document-model/document-type.d.ts.map +1 -0
  79. package/dist/src/document-model/document-type.js +2 -0
  80. package/dist/src/document-model/document-type.js.map +1 -0
  81. package/dist/src/document-model/files.d.ts +5 -0
  82. package/dist/src/document-model/files.d.ts.map +1 -0
  83. package/dist/src/document-model/files.js +9 -0
  84. package/dist/src/document-model/files.js.map +1 -0
  85. package/dist/src/document-model/index.d.ts +11 -0
  86. package/dist/src/document-model/index.d.ts.map +1 -0
  87. package/dist/src/document-model/index.js +11 -0
  88. package/dist/src/document-model/index.js.map +1 -0
  89. package/dist/src/document-model/module.d.ts +1 -1
  90. package/dist/src/document-model/module.d.ts.map +1 -1
  91. package/dist/src/document-model/module.js +21 -10
  92. package/dist/src/document-model/module.js.map +1 -1
  93. package/dist/src/document-model/reducers.d.ts +11 -0
  94. package/dist/src/document-model/reducers.d.ts.map +1 -0
  95. package/dist/src/document-model/reducers.js +588 -0
  96. package/dist/src/document-model/reducers.js.map +1 -0
  97. package/dist/src/document-model/schemas.d.ts +449 -0
  98. package/dist/src/document-model/schemas.d.ts.map +1 -0
  99. package/dist/src/document-model/{gen/schema/zod.js → schemas.js} +9 -15
  100. package/dist/src/document-model/schemas.js.map +1 -0
  101. package/dist/src/document-model/state.d.ts +15 -0
  102. package/dist/src/document-model/state.d.ts.map +1 -0
  103. package/dist/src/document-model/state.js +75 -0
  104. package/dist/src/document-model/state.js.map +1 -0
  105. package/dist/src/document-model/types.d.ts +675 -3
  106. package/dist/src/document-model/types.d.ts.map +1 -1
  107. package/dist/src/document-model/validation.d.ts +7 -0
  108. package/dist/src/document-model/validation.d.ts.map +1 -0
  109. package/dist/src/document-model/{custom/utils.js → validation.js} +1 -1
  110. package/dist/src/document-model/validation.js.map +1 -0
  111. package/dist/src/index.d.ts +6 -0
  112. package/dist/src/index.d.ts.map +1 -0
  113. package/dist/src/index.js +3 -0
  114. package/dist/src/index.js.map +1 -0
  115. package/dist/test/document/crypto.test.js +20 -34
  116. package/dist/test/document/crypto.test.js.map +1 -1
  117. package/dist/test/document/event-vs-command.test.js +81 -51
  118. package/dist/test/document/event-vs-command.test.js.map +1 -1
  119. package/dist/test/document/local.test.js +27 -45
  120. package/dist/test/document/local.test.js.map +1 -1
  121. package/dist/test/document/operation-id.test.js +4 -7
  122. package/dist/test/document/operation-id.test.js.map +1 -1
  123. package/dist/test/document/prune.test.js +23 -36
  124. package/dist/test/document/prune.test.js.map +1 -1
  125. package/dist/test/document/reducer.test.js +101 -81
  126. package/dist/test/document/reducer.test.js.map +1 -1
  127. package/dist/test/document/skip-operations.test.js +67 -87
  128. package/dist/test/document/skip-operations.test.js.map +1 -1
  129. package/dist/test/document/undo-redo.test.js +60 -36
  130. package/dist/test/document/undo-redo.test.js.map +1 -1
  131. package/dist/test/document/utils.test.js +53 -46
  132. package/dist/test/document/utils.test.js.map +1 -1
  133. package/dist/test/document-helpers/addUndo.test.js +2 -2
  134. package/dist/test/document-helpers/addUndo.test.js.map +1 -1
  135. package/dist/test/document-helpers/attachBranch.test.js +21 -21
  136. package/dist/test/document-helpers/attachBranch.test.js.map +1 -1
  137. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +1 -1
  138. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +1 -1
  139. package/dist/test/document-helpers/conflictResolution.test.js +11 -11
  140. package/dist/test/document-helpers/conflictResolution.test.js.map +1 -1
  141. package/dist/test/document-helpers/filterDuplicatedOperations.test.js +1 -1
  142. package/dist/test/document-helpers/filterDuplicatedOperations.test.js.map +1 -1
  143. package/dist/test/document-helpers/garbageCollect.test.js +1 -1
  144. package/dist/test/document-helpers/garbageCollect.test.js.map +1 -1
  145. package/dist/test/document-helpers/groupOperationsByScope.test.js +71 -71
  146. package/dist/test/document-helpers/groupOperationsByScope.test.js.map +1 -1
  147. package/dist/test/document-helpers/merge.test.js +126 -126
  148. package/dist/test/document-helpers/merge.test.js.map +1 -1
  149. package/dist/test/document-helpers/nextSkipNumber.test.js +1 -1
  150. package/dist/test/document-helpers/nextSkipNumber.test.js.map +1 -1
  151. package/dist/test/document-helpers/prepareOperations.test.js +1 -1
  152. package/dist/test/document-helpers/prepareOperations.test.js.map +1 -1
  153. package/dist/test/document-helpers/removeExistingOperations.test.js +38 -26
  154. package/dist/test/document-helpers/removeExistingOperations.test.js.map +1 -1
  155. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +16 -16
  156. package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +1 -1
  157. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +22 -22
  158. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +1 -1
  159. package/dist/test/document-helpers/skipHeaderOperations.test.js +34 -41
  160. package/dist/test/document-helpers/skipHeaderOperations.test.js.map +1 -1
  161. package/dist/test/document-helpers/sortOperations.test.js +1 -1
  162. package/dist/test/document-helpers/sortOperations.test.js.map +1 -1
  163. package/dist/test/document-helpers/split.test.js +3 -3
  164. package/dist/test/document-helpers/split.test.js.map +1 -1
  165. package/dist/test/document-helpers/utils.d.ts +2 -1
  166. package/dist/test/document-helpers/utils.d.ts.map +1 -1
  167. package/dist/test/document-helpers/utils.js +13 -8
  168. package/dist/test/document-helpers/utils.js.map +1 -1
  169. package/dist/test/document-model/replay.test.js +21 -25
  170. package/dist/test/document-model/replay.test.js.map +1 -1
  171. package/dist/test/document-model/skip-operations.test.js +93 -96
  172. package/dist/test/document-model/skip-operations.test.js.map +1 -1
  173. package/dist/test/document-model/validation.test.js +10 -13
  174. package/dist/test/document-model/validation.test.js.map +1 -1
  175. package/dist/test/document-model/zip.test.js +20 -21
  176. package/dist/test/document-model/zip.test.js.map +1 -1
  177. package/dist/test/helpers.d.ts +42 -8
  178. package/dist/test/helpers.d.ts.map +1 -1
  179. package/dist/test/helpers.js +55 -8
  180. package/dist/test/helpers.js.map +1 -1
  181. package/dist/test/index.d.ts +4 -0
  182. package/dist/test/index.d.ts.map +1 -0
  183. package/dist/test/index.js +3 -0
  184. package/dist/test/index.js.map +1 -0
  185. package/dist/test/types.d.ts +6 -0
  186. package/dist/test/types.d.ts.map +1 -0
  187. package/dist/{src/document/schema → test}/types.js.map +1 -1
  188. package/dist/tsconfig.tsbuildinfo +1 -1
  189. package/dist/vitest.config.d.ts +1 -1
  190. package/dist/vitest.config.d.ts.map +1 -1
  191. package/dist/vitest.config.js +2 -8
  192. package/dist/vitest.config.js.map +1 -1
  193. package/package.json +27 -24
  194. package/dist/index.d.ts +0 -21
  195. package/dist/index.d.ts.map +0 -1
  196. package/dist/index.js +0 -15
  197. package/dist/index.js.map +0 -1
  198. package/dist/src/document/actions/creators.d.ts +0 -51
  199. package/dist/src/document/actions/creators.d.ts.map +0 -1
  200. package/dist/src/document/actions/creators.js +0 -57
  201. package/dist/src/document/actions/creators.js.map +0 -1
  202. package/dist/src/document/actions/operations.d.ts +0 -36
  203. package/dist/src/document/actions/operations.d.ts.map +0 -1
  204. package/dist/src/document/actions/operations.js.map +0 -1
  205. package/dist/src/document/actions/types.d.ts +0 -34
  206. package/dist/src/document/actions/types.d.ts.map +0 -1
  207. package/dist/src/document/actions/types.js +0 -7
  208. package/dist/src/document/actions/types.js.map +0 -1
  209. package/dist/src/document/object.d.ts +0 -124
  210. package/dist/src/document/object.d.ts.map +0 -1
  211. package/dist/src/document/object.js +0 -183
  212. package/dist/src/document/object.js.map +0 -1
  213. package/dist/src/document/ph-factories.d.ts +0 -7
  214. package/dist/src/document/ph-factories.d.ts.map +0 -1
  215. package/dist/src/document/ph-factories.js +0 -40
  216. package/dist/src/document/ph-factories.js.map +0 -1
  217. package/dist/src/document/ph-types.d.ts +0 -68
  218. package/dist/src/document/ph-types.d.ts.map +0 -1
  219. package/dist/src/document/ph-types.js +0 -2
  220. package/dist/src/document/ph-types.js.map +0 -1
  221. package/dist/src/document/reducer.d.ts +0 -49
  222. package/dist/src/document/reducer.d.ts.map +0 -1
  223. package/dist/src/document/reducer.js.map +0 -1
  224. package/dist/src/document/schema/types.d.ts +0 -176
  225. package/dist/src/document/schema/types.d.ts.map +0 -1
  226. package/dist/src/document/schema/types.js +0 -2
  227. package/dist/src/document/schema/zod.d.ts.map +0 -1
  228. package/dist/src/document/schema/zod.js.map +0 -1
  229. package/dist/src/document/signal.d.ts +0 -36
  230. package/dist/src/document/signal.d.ts.map +0 -1
  231. package/dist/src/document/signal.js +0 -2
  232. package/dist/src/document/signal.js.map +0 -1
  233. package/dist/src/document/types.d.ts +0 -338
  234. package/dist/src/document/types.d.ts.map +0 -1
  235. package/dist/src/document/types.js +0 -2
  236. package/dist/src/document/utils/base.d.ts +0 -88
  237. package/dist/src/document/utils/base.d.ts.map +0 -1
  238. package/dist/src/document/utils/base.js +0 -335
  239. package/dist/src/document/utils/base.js.map +0 -1
  240. package/dist/src/document/utils/browser.d.ts +0 -18
  241. package/dist/src/document/utils/browser.d.ts.map +0 -1
  242. package/dist/src/document/utils/browser.js +0 -54
  243. package/dist/src/document/utils/browser.js.map +0 -1
  244. package/dist/src/document/utils/crypto.d.ts +0 -11
  245. package/dist/src/document/utils/crypto.d.ts.map +0 -1
  246. package/dist/src/document/utils/crypto.js +0 -78
  247. package/dist/src/document/utils/crypto.js.map +0 -1
  248. package/dist/src/document/utils/document-helpers.d.ts.map +0 -1
  249. package/dist/src/document/utils/document-helpers.js.map +0 -1
  250. package/dist/src/document/utils/errors.d.ts +0 -10
  251. package/dist/src/document/utils/errors.d.ts.map +0 -1
  252. package/dist/src/document/utils/errors.js +0 -19
  253. package/dist/src/document/utils/errors.js.map +0 -1
  254. package/dist/src/document/utils/file.d.ts.map +0 -1
  255. package/dist/src/document/utils/file.js +0 -152
  256. package/dist/src/document/utils/file.js.map +0 -1
  257. package/dist/src/document/utils/header.d.ts.map +0 -1
  258. package/dist/src/document/utils/header.js.map +0 -1
  259. package/dist/src/document/utils/node.d.ts +0 -18
  260. package/dist/src/document/utils/node.d.ts.map +0 -1
  261. package/dist/src/document/utils/node.js +0 -62
  262. package/dist/src/document/utils/node.js.map +0 -1
  263. package/dist/src/document/utils/validation.d.ts +0 -3
  264. package/dist/src/document/utils/validation.d.ts.map +0 -1
  265. package/dist/src/document/utils/validation.js.map +0 -1
  266. package/dist/src/document-model/custom/reducers/header.d.ts +0 -3
  267. package/dist/src/document-model/custom/reducers/header.d.ts.map +0 -1
  268. package/dist/src/document-model/custom/reducers/header.js +0 -23
  269. package/dist/src/document-model/custom/reducers/header.js.map +0 -1
  270. package/dist/src/document-model/custom/reducers/module.d.ts +0 -3
  271. package/dist/src/document-model/custom/reducers/module.d.ts.map +0 -1
  272. package/dist/src/document-model/custom/reducers/module.js +0 -41
  273. package/dist/src/document-model/custom/reducers/module.js.map +0 -1
  274. package/dist/src/document-model/custom/reducers/operation-error.d.ts +0 -3
  275. package/dist/src/document-model/custom/reducers/operation-error.d.ts.map +0 -1
  276. package/dist/src/document-model/custom/reducers/operation-error.js +0 -94
  277. package/dist/src/document-model/custom/reducers/operation-error.js.map +0 -1
  278. package/dist/src/document-model/custom/reducers/operation-example.d.ts +0 -3
  279. package/dist/src/document-model/custom/reducers/operation-example.d.ts.map +0 -1
  280. package/dist/src/document-model/custom/reducers/operation-example.js +0 -53
  281. package/dist/src/document-model/custom/reducers/operation-example.js.map +0 -1
  282. package/dist/src/document-model/custom/reducers/operation.d.ts +0 -3
  283. package/dist/src/document-model/custom/reducers/operation.d.ts.map +0 -1
  284. package/dist/src/document-model/custom/reducers/operation.js +0 -125
  285. package/dist/src/document-model/custom/reducers/operation.js.map +0 -1
  286. package/dist/src/document-model/custom/reducers/state.d.ts +0 -3
  287. package/dist/src/document-model/custom/reducers/state.d.ts.map +0 -1
  288. package/dist/src/document-model/custom/reducers/state.js +0 -71
  289. package/dist/src/document-model/custom/reducers/state.js.map +0 -1
  290. package/dist/src/document-model/custom/reducers/versioning.d.ts +0 -8
  291. package/dist/src/document-model/custom/reducers/versioning.d.ts.map +0 -1
  292. package/dist/src/document-model/custom/reducers/versioning.js +0 -23
  293. package/dist/src/document-model/custom/reducers/versioning.js.map +0 -1
  294. package/dist/src/document-model/custom/utils.d.ts +0 -8
  295. package/dist/src/document-model/custom/utils.d.ts.map +0 -1
  296. package/dist/src/document-model/custom/utils.js.map +0 -1
  297. package/dist/src/document-model/gen/actions.d.ts +0 -16
  298. package/dist/src/document-model/gen/actions.d.ts.map +0 -1
  299. package/dist/src/document-model/gen/actions.js +0 -8
  300. package/dist/src/document-model/gen/actions.js.map +0 -1
  301. package/dist/src/document-model/gen/constants.d.ts +0 -7
  302. package/dist/src/document-model/gen/constants.d.ts.map +0 -1
  303. package/dist/src/document-model/gen/constants.js +0 -34
  304. package/dist/src/document-model/gen/constants.js.map +0 -1
  305. package/dist/src/document-model/gen/creators.d.ts +0 -8
  306. package/dist/src/document-model/gen/creators.d.ts.map +0 -1
  307. package/dist/src/document-model/gen/creators.js +0 -8
  308. package/dist/src/document-model/gen/creators.js.map +0 -1
  309. package/dist/src/document-model/gen/document-model.d.ts +0 -3
  310. package/dist/src/document-model/gen/document-model.d.ts.map +0 -1
  311. package/dist/src/document-model/gen/document-model.js.map +0 -1
  312. package/dist/src/document-model/gen/header/actions.d.ts +0 -28
  313. package/dist/src/document-model/gen/header/actions.d.ts.map +0 -1
  314. package/dist/src/document-model/gen/header/actions.js +0 -2
  315. package/dist/src/document-model/gen/header/actions.js.map +0 -1
  316. package/dist/src/document-model/gen/header/creators.d.ts +0 -9
  317. package/dist/src/document-model/gen/header/creators.d.ts.map +0 -1
  318. package/dist/src/document-model/gen/header/creators.js +0 -9
  319. package/dist/src/document-model/gen/header/creators.js.map +0 -1
  320. package/dist/src/document-model/gen/header/object.d.ts +0 -13
  321. package/dist/src/document-model/gen/header/object.d.ts.map +0 -1
  322. package/dist/src/document-model/gen/header/object.js +0 -23
  323. package/dist/src/document-model/gen/header/object.js.map +0 -1
  324. package/dist/src/document-model/gen/header/operations.d.ts +0 -11
  325. package/dist/src/document-model/gen/header/operations.d.ts.map +0 -1
  326. package/dist/src/document-model/gen/header/operations.js +0 -2
  327. package/dist/src/document-model/gen/header/operations.js.map +0 -1
  328. package/dist/src/document-model/gen/module/actions.d.ts +0 -24
  329. package/dist/src/document-model/gen/module/actions.d.ts.map +0 -1
  330. package/dist/src/document-model/gen/module/actions.js +0 -2
  331. package/dist/src/document-model/gen/module/actions.js.map +0 -1
  332. package/dist/src/document-model/gen/module/creators.d.ts +0 -8
  333. package/dist/src/document-model/gen/module/creators.d.ts.map +0 -1
  334. package/dist/src/document-model/gen/module/creators.js +0 -8
  335. package/dist/src/document-model/gen/module/creators.js.map +0 -1
  336. package/dist/src/document-model/gen/module/object.d.ts +0 -12
  337. package/dist/src/document-model/gen/module/object.d.ts.map +0 -1
  338. package/dist/src/document-model/gen/module/object.js +0 -20
  339. package/dist/src/document-model/gen/module/object.js.map +0 -1
  340. package/dist/src/document-model/gen/module/operations.d.ts +0 -10
  341. package/dist/src/document-model/gen/module/operations.d.ts.map +0 -1
  342. package/dist/src/document-model/gen/module/operations.js +0 -2
  343. package/dist/src/document-model/gen/module/operations.js.map +0 -1
  344. package/dist/src/document-model/gen/object.d.ts +0 -29
  345. package/dist/src/document-model/gen/object.d.ts.map +0 -1
  346. package/dist/src/document-model/gen/object.js +0 -46
  347. package/dist/src/document-model/gen/object.js.map +0 -1
  348. package/dist/src/document-model/gen/operation/actions.d.ts +0 -44
  349. package/dist/src/document-model/gen/operation/actions.d.ts.map +0 -1
  350. package/dist/src/document-model/gen/operation/actions.js +0 -2
  351. package/dist/src/document-model/gen/operation/actions.js.map +0 -1
  352. package/dist/src/document-model/gen/operation/creators.d.ts +0 -13
  353. package/dist/src/document-model/gen/operation/creators.d.ts.map +0 -1
  354. package/dist/src/document-model/gen/operation/creators.js +0 -13
  355. package/dist/src/document-model/gen/operation/creators.js.map +0 -1
  356. package/dist/src/document-model/gen/operation/object.d.ts +0 -18
  357. package/dist/src/document-model/gen/operation/object.d.ts.map +0 -1
  358. package/dist/src/document-model/gen/operation/object.js +0 -35
  359. package/dist/src/document-model/gen/operation/object.js.map +0 -1
  360. package/dist/src/document-model/gen/operation/operations.d.ts +0 -15
  361. package/dist/src/document-model/gen/operation/operations.d.ts.map +0 -1
  362. package/dist/src/document-model/gen/operation/operations.js +0 -2
  363. package/dist/src/document-model/gen/operation/operations.js.map +0 -1
  364. package/dist/src/document-model/gen/operation-error/actions.d.ts +0 -32
  365. package/dist/src/document-model/gen/operation-error/actions.d.ts.map +0 -1
  366. package/dist/src/document-model/gen/operation-error/actions.js +0 -2
  367. package/dist/src/document-model/gen/operation-error/actions.js.map +0 -1
  368. package/dist/src/document-model/gen/operation-error/creators.d.ts +0 -10
  369. package/dist/src/document-model/gen/operation-error/creators.d.ts.map +0 -1
  370. package/dist/src/document-model/gen/operation-error/creators.js +0 -10
  371. package/dist/src/document-model/gen/operation-error/creators.js.map +0 -1
  372. package/dist/src/document-model/gen/operation-error/object.d.ts +0 -15
  373. package/dist/src/document-model/gen/operation-error/object.d.ts.map +0 -1
  374. package/dist/src/document-model/gen/operation-error/object.js +0 -26
  375. package/dist/src/document-model/gen/operation-error/object.js.map +0 -1
  376. package/dist/src/document-model/gen/operation-error/operations.d.ts +0 -12
  377. package/dist/src/document-model/gen/operation-error/operations.d.ts.map +0 -1
  378. package/dist/src/document-model/gen/operation-error/operations.js +0 -2
  379. package/dist/src/document-model/gen/operation-error/operations.js.map +0 -1
  380. package/dist/src/document-model/gen/operation-example/actions.d.ts +0 -20
  381. package/dist/src/document-model/gen/operation-example/actions.d.ts.map +0 -1
  382. package/dist/src/document-model/gen/operation-example/actions.js +0 -2
  383. package/dist/src/document-model/gen/operation-example/actions.js.map +0 -1
  384. package/dist/src/document-model/gen/operation-example/creators.d.ts +0 -7
  385. package/dist/src/document-model/gen/operation-example/creators.d.ts.map +0 -1
  386. package/dist/src/document-model/gen/operation-example/creators.js +0 -7
  387. package/dist/src/document-model/gen/operation-example/creators.js.map +0 -1
  388. package/dist/src/document-model/gen/operation-example/object.d.ts +0 -12
  389. package/dist/src/document-model/gen/operation-example/object.d.ts.map +0 -1
  390. package/dist/src/document-model/gen/operation-example/object.js +0 -17
  391. package/dist/src/document-model/gen/operation-example/object.js.map +0 -1
  392. package/dist/src/document-model/gen/operation-example/operations.d.ts +0 -9
  393. package/dist/src/document-model/gen/operation-example/operations.d.ts.map +0 -1
  394. package/dist/src/document-model/gen/operation-example/operations.js +0 -2
  395. package/dist/src/document-model/gen/operation-example/operations.js.map +0 -1
  396. package/dist/src/document-model/gen/reducer.d.ts +0 -5
  397. package/dist/src/document-model/gen/reducer.d.ts.map +0 -1
  398. package/dist/src/document-model/gen/reducer.js +0 -193
  399. package/dist/src/document-model/gen/reducer.js.map +0 -1
  400. package/dist/src/document-model/gen/schema/index.d.ts +0 -3
  401. package/dist/src/document-model/gen/schema/index.d.ts.map +0 -1
  402. package/dist/src/document-model/gen/schema/index.js +0 -3
  403. package/dist/src/document-model/gen/schema/index.js.map +0 -1
  404. package/dist/src/document-model/gen/schema/types.d.ts +0 -457
  405. package/dist/src/document-model/gen/schema/types.d.ts.map +0 -1
  406. package/dist/src/document-model/gen/schema/types.js.map +0 -1
  407. package/dist/src/document-model/gen/schema/zod.d.ts +0 -453
  408. package/dist/src/document-model/gen/schema/zod.d.ts.map +0 -1
  409. package/dist/src/document-model/gen/schema/zod.js.map +0 -1
  410. package/dist/src/document-model/gen/state/actions.d.ts +0 -28
  411. package/dist/src/document-model/gen/state/actions.d.ts.map +0 -1
  412. package/dist/src/document-model/gen/state/actions.js +0 -2
  413. package/dist/src/document-model/gen/state/actions.js.map +0 -1
  414. package/dist/src/document-model/gen/state/creators.d.ts +0 -9
  415. package/dist/src/document-model/gen/state/creators.d.ts.map +0 -1
  416. package/dist/src/document-model/gen/state/creators.js +0 -9
  417. package/dist/src/document-model/gen/state/creators.js.map +0 -1
  418. package/dist/src/document-model/gen/state/object.d.ts +0 -13
  419. package/dist/src/document-model/gen/state/object.d.ts.map +0 -1
  420. package/dist/src/document-model/gen/state/object.js +0 -23
  421. package/dist/src/document-model/gen/state/object.js.map +0 -1
  422. package/dist/src/document-model/gen/state/operations.d.ts +0 -11
  423. package/dist/src/document-model/gen/state/operations.d.ts.map +0 -1
  424. package/dist/src/document-model/gen/state/operations.js +0 -2
  425. package/dist/src/document-model/gen/state/operations.js.map +0 -1
  426. package/dist/src/document-model/gen/types.d.ts +0 -7
  427. package/dist/src/document-model/gen/types.d.ts.map +0 -1
  428. package/dist/src/document-model/gen/types.js.map +0 -1
  429. package/dist/src/document-model/gen/utils.d.ts +0 -11
  430. package/dist/src/document-model/gen/utils.d.ts.map +0 -1
  431. package/dist/src/document-model/gen/utils.js +0 -33
  432. package/dist/src/document-model/gen/utils.js.map +0 -1
  433. package/dist/src/document-model/gen/versioning/actions.d.ts +0 -24
  434. package/dist/src/document-model/gen/versioning/actions.d.ts.map +0 -1
  435. package/dist/src/document-model/gen/versioning/actions.js +0 -2
  436. package/dist/src/document-model/gen/versioning/actions.js.map +0 -1
  437. package/dist/src/document-model/gen/versioning/creators.d.ts +0 -8
  438. package/dist/src/document-model/gen/versioning/creators.d.ts.map +0 -1
  439. package/dist/src/document-model/gen/versioning/creators.js +0 -8
  440. package/dist/src/document-model/gen/versioning/creators.js.map +0 -1
  441. package/dist/src/document-model/gen/versioning/object.d.ts +0 -13
  442. package/dist/src/document-model/gen/versioning/object.d.ts.map +0 -1
  443. package/dist/src/document-model/gen/versioning/object.js +0 -20
  444. package/dist/src/document-model/gen/versioning/object.js.map +0 -1
  445. package/dist/src/document-model/gen/versioning/operations.d.ts +0 -10
  446. package/dist/src/document-model/gen/versioning/operations.d.ts.map +0 -1
  447. package/dist/src/document-model/gen/versioning/operations.js +0 -2
  448. package/dist/src/document-model/gen/versioning/operations.js.map +0 -1
  449. package/dist/test/document/object.test.d.ts +0 -2
  450. package/dist/test/document/object.test.d.ts.map +0 -1
  451. package/dist/test/document/object.test.js +0 -13
  452. package/dist/test/document/object.test.js.map +0 -1
  453. package/dist/test/document-model/object.test.d.ts +0 -2
  454. package/dist/test/document-model/object.test.d.ts.map +0 -1
  455. package/dist/test/document-model/object.test.js +0 -243
  456. package/dist/test/document-model/object.test.js.map +0 -1
  457. /package/dist/src/{document-model/gen/schema → core}/types.js +0 -0
  458. /package/dist/{src/document-model/gen → test}/types.js +0 -0
@@ -1,42 +1,14 @@
1
1
  import { castDraft, create, unsafe } from "mutative";
2
- import { loadStateOperation, pruneOperation, redoOperation, setNameOperation, undoOperation, } from "./actions/operations.js";
3
- import { LOAD_STATE, PRUNE, REDO, SET_NAME, UNDO } from "./actions/types.js";
4
- import { operationFromAction, operationFromOperation } from "./ph-factories.js";
5
- import { DocumentActionSchema } from "./schema/zod.js";
6
- import { getDocumentLastModified, hashDocumentStateForScope, isDocumentAction, isUndo, isUndoRedo, parseResultingState, replayOperations, } from "./utils/base.js";
7
- import { diffOperations, garbageCollect, garbageCollectDocumentOperations, skipHeaderOperations, sortOperations, } from "./utils/document-helpers.js";
8
- /**
9
- * Gets the next revision number based on the provided scope.
10
- *
11
- * @param state The current state of the document.
12
- * @param scope The scope of the operation.
13
- * @returns The next revision number.
14
- */
15
- function getNextRevision(document, scope) {
16
- const latestOperationIndex = document.operations[scope].at(-1)?.index ?? -1;
17
- return (latestOperationIndex ?? -1) + 1;
18
- }
19
- /**
20
- * Updates the document header with the latest revision number and
21
- * date of last modification.
22
- *
23
- * @param state The current state of the document.
24
- * @param operation The action being applied to the document.
25
- * @returns The updated document state.
26
- */
27
- export function updateHeaderRevision(document, scope) {
28
- const header = {
29
- ...document.header,
30
- revision: {
31
- ...document.header.revision,
32
- [scope]: getNextRevision(document, scope),
33
- },
34
- lastModifiedAtUtcIso: getDocumentLastModified(document),
35
- };
36
- return {
37
- ...document,
38
- header,
39
- };
2
+ import { actionFromAction, loadState, operationFromAction, operationFromOperation, } from "./actions.js";
3
+ import { diffOperations, garbageCollect, garbageCollectDocumentOperations, hashDocumentStateForScope, isDocumentAction, isUndo, isUndoRedo, parseResultingState, replayDocument, skipHeaderOperations, sortOperations, updateHeaderRevision, } from "./documents.js";
4
+ import { loadStateOperation, redoOperation, setNameOperation, undoOperation, } from "./operations.js";
5
+ import { DocumentActionSchema } from "./schemas.js";
6
+ // This rebuilds the document according to the provided actions.
7
+ export function replayOperations(initialState, clearedOperations, stateReducer, dispatch, header, documentReducer = baseReducer, skipHeaderOperations = {}, options) {
8
+ // wraps the provided custom reducer with the
9
+ // base document reducer
10
+ const wrappedReducer = createReducer(stateReducer, documentReducer);
11
+ return replayDocument(initialState, clearedOperations, wrappedReducer, dispatch, header, skipHeaderOperations, options);
40
12
  }
41
13
  /**
42
14
  * Updates the operations history of the document based on the provided action.
@@ -51,11 +23,14 @@ export function updateHeaderRevision(document, scope) {
51
23
  function updateOperationsForAction(document, action, reuseLastOperationIndex = false, skip = 0) {
52
24
  // UNDO, REDO and PRUNE are meta operations
53
25
  // that alter the operations history themselves
54
- if ([UNDO, REDO, PRUNE].includes(action.type)) {
26
+ if (["UNDO", "REDO", "PRUNE"].includes(action.type)) {
55
27
  return document;
56
28
  }
57
29
  const scope = action.scope;
58
- const operations = document.operations[scope].slice();
30
+ let operations = [];
31
+ if (document.operations[scope]) {
32
+ operations = document.operations[scope].slice();
33
+ }
59
34
  const latestOperation = operations.sort((a, b) => a.index - b.index).at(-1);
60
35
  const lastOperationIndex = latestOperation?.index ?? -1;
61
36
  const index = reuseLastOperationIndex
@@ -71,13 +46,11 @@ function updateOperationsForAction(document, action, reuseLastOperationIndex = f
71
46
  };
72
47
  }
73
48
  function updateOperationsForOperation(document, operation, reuseLastOperationIndex = false, skip = 0) {
74
- // UNDO, REDO and PRUNE are meta operations
75
- // that alter the operations history themselves
76
- if ([UNDO, REDO, PRUNE].includes(operation.type)) {
77
- return document;
78
- }
79
- const scope = operation.scope;
80
- const operations = document.operations[scope].slice();
49
+ const scope = operation.action.scope;
50
+ const scopeOperations = document.operations[scope];
51
+ const operations = scopeOperations
52
+ ? scopeOperations.slice()
53
+ : [];
81
54
  const latestOperation = operations.sort((a, b) => a.index - b.index).at(-1);
82
55
  const lastOperationIndex = latestOperation?.index ?? -1;
83
56
  const nextIndex = reuseLastOperationIndex
@@ -104,13 +77,11 @@ function updateOperationsForOperation(document, operation, reuseLastOperationInd
104
77
  * @param reuseLastOperationIndex Whether to reuse the last operation index (used when a an UNDO operation is performed after an existing one).
105
78
  * @returns The updated document state.
106
79
  */
107
- export function updateDocument(document, action, skip = 0, reuseLastOperationIndex = false) {
108
- // duck type -- this determines if it's an operation or an action
109
- // TEMPORARY
80
+ export function updateDocument(document, action, reuseLastOperationIndex = false, skip = 0, operation) {
110
81
  let newDocument;
111
- if ("index" in action) {
82
+ if (operation) {
112
83
  // operation
113
- newDocument = updateOperationsForOperation(document, action, reuseLastOperationIndex, skip);
84
+ newDocument = updateOperationsForOperation(document, operation, reuseLastOperationIndex, skip);
114
85
  }
115
86
  else {
116
87
  // action
@@ -131,12 +102,12 @@ function _baseReducer(document, action, wrappedReducer) {
131
102
  // throws if action is not valid base action
132
103
  const parsedAction = DocumentActionSchema().parse(action);
133
104
  switch (parsedAction.type) {
134
- case SET_NAME:
105
+ case "SET_NAME":
135
106
  return setNameOperation(document, parsedAction.input);
136
- case PRUNE:
107
+ case "PRUNE":
137
108
  return pruneOperation(document, parsedAction.input, wrappedReducer);
138
- case LOAD_STATE:
139
- return loadStateOperation(document, parsedAction.input.state);
109
+ case "LOAD_STATE":
110
+ return loadStateOperation(document, parsedAction.input);
140
111
  default:
141
112
  return document;
142
113
  }
@@ -151,9 +122,9 @@ function _baseReducer(document, action, wrappedReducer) {
151
122
  */
152
123
  export function processUndoRedo(document, action, skip) {
153
124
  switch (action.type) {
154
- case UNDO:
125
+ case "UNDO":
155
126
  return undoOperation(document, action, skip);
156
- case REDO:
127
+ case "REDO":
157
128
  return redoOperation(document, action, skip);
158
129
  default:
159
130
  return { document, action, skip, reuseLastOperationIndex: false };
@@ -161,15 +132,20 @@ export function processUndoRedo(document, action, skip) {
161
132
  }
162
133
  function processSkipOperation(document, action, customReducer, skipValue, reuseOperationResultingState = false, resultingStateParser = parseResultingState) {
163
134
  const scope = action.scope;
164
- const latestOperation = document.operations[scope].at(-1);
135
+ const scopeOperations = document.operations[scope];
136
+ if (!scopeOperations) {
137
+ return document;
138
+ }
139
+ const latestOperation = scopeOperations.at(-1);
165
140
  if (!latestOperation)
166
141
  return document;
167
142
  const documentOperations = garbageCollectDocumentOperations({
168
143
  ...document.operations,
169
- [scope]: skipHeaderOperations(document.operations[scope], latestOperation),
144
+ [scope]: skipHeaderOperations(scopeOperations, latestOperation),
170
145
  });
171
146
  let scopeState = undefined;
172
- const lastRemainingOperation = documentOperations[scope].at(-1);
147
+ const documentScopeOps = documentOperations[scope];
148
+ const lastRemainingOperation = documentScopeOps?.at(-1);
173
149
  // if the last operation has the resulting state and
174
150
  // reuseOperationResultingState is true then reuses it
175
151
  // instead of replaying the operations from the beginning
@@ -178,11 +154,9 @@ function processSkipOperation(document, action, customReducer, skipValue, reuseO
178
154
  }
179
155
  else {
180
156
  const { state } = replayOperations(document.initialState, documentOperations, customReducer, undefined, undefined, undefined, undefined, {
181
- reuseHash: true,
182
157
  reuseOperationResultingState,
183
158
  operationResultingStateParser: resultingStateParser,
184
159
  });
185
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
186
160
  scopeState = state[scope];
187
161
  }
188
162
  return {
@@ -197,20 +171,27 @@ function processSkipOperation(document, action, customReducer, skipValue, reuseO
197
171
  };
198
172
  }
199
173
  function processUndoOperation(document, scope, customReducer, reuseOperationResultingState = false, resultingStateParser = parseResultingState) {
200
- const operations = [...document.operations[scope]];
174
+ const scopeOperations = document.operations[scope];
175
+ if (!scopeOperations) {
176
+ return document;
177
+ }
178
+ const operations = [...scopeOperations];
201
179
  const sortedOperations = sortOperations(operations);
202
180
  sortedOperations.pop();
203
181
  const documentOperations = garbageCollectDocumentOperations({
204
182
  ...document.operations,
205
183
  });
206
- const clearedOperations = [...documentOperations[scope]];
184
+ const documentScopeOps = documentOperations[scope];
185
+ if (!documentScopeOps) {
186
+ return document;
187
+ }
188
+ const clearedOperations = [...documentScopeOps];
207
189
  const diff = diffOperations(garbageCollect(sortedOperations), clearedOperations);
208
190
  const doc = replayOperations(document.initialState, documentOperations, customReducer, undefined, undefined, undefined, undefined, {
209
- reuseHash: true,
210
191
  reuseOperationResultingState,
211
192
  operationResultingStateParser: resultingStateParser,
212
193
  });
213
- const clipboard = sortOperations([...document.clipboard, ...diff].filter((op) => op.type !== "NOOP")).reverse();
194
+ const clipboard = sortOperations([...document.clipboard, ...diff].filter((op) => op.action.type !== "NOOP")).reverse();
214
195
  return { ...doc, clipboard };
215
196
  }
216
197
  /**
@@ -226,19 +207,14 @@ function processUndoOperation(document, scope, customReducer, reuseOperationResu
226
207
  * @returns The new state of the document.
227
208
  */
228
209
  export function baseReducer(document, action, customReducer, dispatch, options = {}) {
229
- const { skip, ignoreSkipOperations = false, reuseHash = false, reuseOperationResultingState = false, operationResultingStateParser, } = options;
230
- let _action = { ...action };
231
- let skipValue = skip || 0;
210
+ const { skip, ignoreSkipOperations = false, reuseOperationResultingState = false, operationResultingStateParser, pruneOnSkip = true, } = options;
211
+ let _action = actionFromAction(action);
212
+ let skipValue = skip ?? options.replayOptions?.operation.skip ?? 0;
232
213
  let newDocument = {
233
214
  ...document,
234
215
  };
235
216
  let reuseLastOperationIndex = false;
236
- const shouldProcessSkipOperation = !ignoreSkipOperations &&
237
- (skipValue > 0 ||
238
- ("index" in _action &&
239
- "skip" in _action &&
240
- typeof _action.skip === "number" &&
241
- _action.skip > 0));
217
+ const shouldProcessSkipOperation = !ignoreSkipOperations && skipValue > 0;
242
218
  if (isUndoRedo(_action)) {
243
219
  const { skip: calculatedSkip, action: transformedAction, document: processedDocument, reuseLastOperationIndex: reuseIndex, } = processUndoRedo(document, _action, skipValue);
244
220
  _action = transformedAction;
@@ -259,14 +235,25 @@ export function baseReducer(document, action, customReducer, dispatch, options =
259
235
  }
260
236
  // updates the document revision number, last modified date
261
237
  // and operation history
262
- newDocument = updateDocument(newDocument, _action, skipValue, reuseLastOperationIndex);
263
- const isUndoAction = isUndo(action);
264
- if (isUndoAction) {
238
+ newDocument = updateDocument(newDocument, _action, reuseLastOperationIndex, skipValue, options.replayOptions?.operation);
239
+ // Only process undo for actual UNDO actions, not for NOOP operations
240
+ // NOOP operations with skip > 0 will have their clipboard populated server-side
241
+ if (isUndo(action)) {
265
242
  const result = processUndoOperation(newDocument, action.scope, customReducer);
266
243
  return result;
267
244
  }
268
245
  if (shouldProcessSkipOperation) {
269
- newDocument = processSkipOperation(newDocument, _action, customReducer, skipValue, reuseOperationResultingState, operationResultingStateParser);
246
+ const processed = processSkipOperation(newDocument, _action, customReducer, skipValue, reuseOperationResultingState, operationResultingStateParser);
247
+ // Preserve operations when pruneOnSkip is false
248
+ if (!pruneOnSkip) {
249
+ newDocument = {
250
+ ...processed,
251
+ operations: newDocument.operations,
252
+ };
253
+ }
254
+ else {
255
+ newDocument = processed;
256
+ }
270
257
  }
271
258
  // wraps the custom reducer with Mutative to avoid
272
259
  // mutation bugs and allow writing reducers with
@@ -296,19 +283,31 @@ export function baseReducer(document, action, customReducer, dispatch, options =
296
283
  catch (error) {
297
284
  // if the reducer throws an error then we should keep the previous state (before replayOperations)
298
285
  // and remove skip number from action/operation
299
- const lastOperationIndex = newDocument.operations[_action.scope].length - 1;
300
- draft.operations[_action.scope][lastOperationIndex].error = error.message;
301
- draft.operations[_action.scope][lastOperationIndex].skip = 0;
286
+ const actionScopeOps = newDocument.operations[_action.scope];
287
+ if (!actionScopeOps) {
288
+ throw new Error(`No operations found for scope: ${_action.scope}`);
289
+ }
290
+ const lastOperationIndex = actionScopeOps.length - 1;
291
+ const draftScopeOps = draft.operations[_action.scope];
292
+ if (!draftScopeOps) {
293
+ throw new Error(`No operations found in draft for scope: ${_action.scope}`);
294
+ }
295
+ draftScopeOps[lastOperationIndex].error = error.message;
296
+ draftScopeOps[lastOperationIndex].skip = 0;
302
297
  if (shouldProcessSkipOperation) {
303
298
  draft.state = castDraft({
304
299
  ...document.state,
305
300
  });
301
+ const documentScopeOps = document.operations[_action.scope];
302
+ if (!documentScopeOps) {
303
+ throw new Error(`No operations found for scope: ${_action.scope}`);
304
+ }
306
305
  draft.operations = castDraft({
307
306
  ...document.operations,
308
307
  [_action.scope]: [
309
- ...document.operations[_action.scope],
308
+ ...documentScopeOps,
310
309
  {
311
- ...draft.operations[_action.scope][lastOperationIndex],
310
+ ...draftScopeOps[lastOperationIndex],
312
311
  },
313
312
  ],
314
313
  });
@@ -317,37 +316,101 @@ export function baseReducer(document, action, customReducer, dispatch, options =
317
316
  });
318
317
  // updates the document history
319
318
  // meta operations are not added to the operations history
320
- if ([UNDO, REDO, PRUNE].includes(_action.type)) {
319
+ if (["UNDO", "REDO", "PRUNE"].includes(_action.type)) {
321
320
  return newDocument;
322
321
  }
323
322
  // if reuseHash is true, checks if the action has
324
323
  // an hash and uses it instead of generating it
325
324
  const scope = _action.scope || "global";
326
- const hash = reuseHash && Object.prototype.hasOwnProperty.call(_action, "hash")
327
- ? _action.hash
328
- : hashDocumentStateForScope(newDocument, scope);
325
+ let hash = hashDocumentStateForScope(newDocument, scope);
326
+ if (options.replayOptions?.operation.hash &&
327
+ options.replayOptions.operation.hash !== "") {
328
+ hash = options.replayOptions.operation.hash;
329
+ }
329
330
  // updates the last operation with the hash of the resulting state
330
- const lastOperation = newDocument.operations[scope].at(-1);
331
+ const scopeOperations = newDocument.operations[scope];
332
+ const lastOperation = scopeOperations?.at(-1);
331
333
  if (lastOperation) {
332
334
  lastOperation.hash = hash;
333
335
  if (reuseOperationResultingState) {
334
- lastOperation.resultingState = JSON.stringify(
335
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
336
- newDocument.state[scope]);
337
- }
338
- // if the action has attachments then adds them to the document
339
- if (!isDocumentAction(_action) && _action.attachments) {
340
- _action.attachments.forEach((attachment) => {
341
- const { hash, ...file } = attachment;
342
- if (!newDocument.attachments) {
343
- newDocument.attachments = {};
344
- }
345
- newDocument.attachments[hash] = {
346
- ...file,
347
- };
348
- });
336
+ lastOperation.resultingState = JSON.stringify(newDocument.state[scope]);
349
337
  }
350
338
  }
351
339
  return newDocument;
352
340
  }
341
+ /**
342
+ * Helper function to create a document model reducer.
343
+ *
344
+ * @remarks
345
+ * This function creates a new reducer that wraps the provided `reducer` with
346
+ * `documentReducer`, adding support for document actions:
347
+ * - `SET_NAME`
348
+ * - `UNDO`
349
+ * - `REDO`
350
+ * - `PRUNE`
351
+ *
352
+ * It also updates the document-related attributes on every operation.
353
+ *
354
+ * @param reducer - The custom reducer to wrap.
355
+ * @param documentReducer - The document reducer to use.
356
+ *
357
+ * @returns The new reducer.
358
+ */
359
+ export function createReducer(stateReducer, documentReducer = baseReducer) {
360
+ const reducer = (document, action, dispatch, options) => {
361
+ return documentReducer(document, action, stateReducer, dispatch, options);
362
+ };
363
+ return reducer;
364
+ }
365
+ export function pruneOperation(document, input, wrappedReducer) {
366
+ const operations = document.operations.global;
367
+ if (!operations) {
368
+ throw new Error("No global operations found");
369
+ }
370
+ let { start, end } = input;
371
+ start = start || 0;
372
+ end = end || operations.length;
373
+ const actionsToPrune = operations.slice(start, end);
374
+ const actionsToKeepStart = operations.slice(0, start);
375
+ const actionsToKeepEnd = operations.slice(end);
376
+ // runs all operations from the initial state to
377
+ // the end of prune to get name and data
378
+ const newDocument = replayOperations(document.initialState, {
379
+ ...document.operations,
380
+ global: actionsToKeepStart.concat(actionsToPrune),
381
+ }, wrappedReducer);
382
+ const newState = newDocument.state;
383
+ const name = newDocument.header.name;
384
+ // the new operation has the index of the first pruned operation
385
+ const loadStateIndex = actionsToKeepStart.length;
386
+ // if and operation is pruned then reuses the timestamp of the last operation
387
+ // if not then assigns the timestamp of the following unpruned operation
388
+ const loadStateTimestamp = actionsToKeepStart.length
389
+ ? actionsToKeepStart[actionsToKeepStart.length - 1].timestampUtcMs
390
+ : actionsToKeepEnd.length
391
+ ? actionsToKeepEnd[0].timestampUtcMs
392
+ : new Date().toISOString();
393
+ const action = loadState({ name, ...newState }, actionsToPrune.length);
394
+ // replaces pruned operations with LOAD_STATE
395
+ return replayOperations(document.initialState, {
396
+ ...document.operations,
397
+ global: [
398
+ ...actionsToKeepStart,
399
+ {
400
+ skip: 0,
401
+ ...action,
402
+ action,
403
+ timestampUtcMs: loadStateTimestamp,
404
+ index: loadStateIndex,
405
+ hash: hashDocumentStateForScope({ state: newState }, "global"),
406
+ },
407
+ ...actionsToKeepEnd
408
+ // updates the index for all the following operations
409
+ .map((action, index) => ({
410
+ ...action,
411
+ index: loadStateIndex + index + 1,
412
+ })),
413
+ ],
414
+ }, wrappedReducer);
415
+ }
353
416
  //# sourceMappingURL=reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../../src/core/reducer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { type Action, type DocumentFile, type LoadStateAction, type LoadStateActionInput, type LoadStateActionStateInput, type Operation, type PruneAction, type PruneActionInput, type RedoAction, type SetNameAction, type SetNameOperation, type UndoAction } from "./types.js";
2
+ import type { DocumentFile, LoadStateActionInput, LoadStateActionStateInput, PruneActionInput, SchemaLoadStateAction, SchemaPruneAction, SchemaRedoAction, SchemaSetNameAction, SchemaUndoAction } from "./types.js";
3
3
  type Properties<T> = Required<{
4
4
  [K in keyof T]: z.ZodType<T[K], any, T[K]>;
5
5
  }>;
@@ -11,88 +11,115 @@ export declare const PruneSchema: z.ZodEnum<["PRUNE"]>;
11
11
  export declare const RedoSchema: z.ZodEnum<["REDO"]>;
12
12
  export declare const Set_NameSchema: z.ZodEnum<["SET_NAME"]>;
13
13
  export declare const UndoSchema: z.ZodEnum<["UNDO"]>;
14
- export declare function ActionSchema(): z.ZodObject<Properties<Action>>;
15
14
  export declare function OperationScopeSchema(): z.ZodString;
16
15
  export declare function DocumentActionSchema(): z.ZodUnion<[z.ZodObject<Required<{
16
+ id: z.ZodType<string, any, string>;
17
+ timestampUtcMs: z.ZodType<string, any, string>;
17
18
  input: z.ZodType<LoadStateActionInput, any, LoadStateActionInput>;
18
19
  type: z.ZodType<"LOAD_STATE", any, "LOAD_STATE">;
19
20
  scope: z.ZodType<string, any, string>;
20
21
  }>, z.UnknownKeysParam, z.ZodTypeAny, {
22
+ id: import("./types.js").Scalars["String"]["output"];
23
+ timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
21
24
  input: LoadStateActionInput;
22
25
  type: import("./types.js").Load_State;
23
26
  scope: string;
24
27
  }, {
28
+ id: import("./types.js").Scalars["String"]["output"];
29
+ timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
25
30
  input: LoadStateActionInput;
26
31
  type: import("./types.js").Load_State;
27
32
  scope: string;
28
33
  }>, z.ZodObject<Required<{
34
+ id: z.ZodType<string, any, string>;
35
+ timestampUtcMs: z.ZodType<string, any, string>;
29
36
  input: z.ZodType<PruneActionInput, any, PruneActionInput>;
30
37
  type: z.ZodType<"PRUNE", any, "PRUNE">;
31
38
  scope: z.ZodType<string, any, string>;
32
39
  }>, z.UnknownKeysParam, z.ZodTypeAny, {
40
+ id: import("./types.js").Scalars["String"]["output"];
41
+ timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
33
42
  input: PruneActionInput;
34
43
  type: import("./types.js").Prune;
35
44
  scope: string;
36
45
  }, {
46
+ id: import("./types.js").Scalars["String"]["output"];
47
+ timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
37
48
  input: PruneActionInput;
38
49
  type: import("./types.js").Prune;
39
50
  scope: string;
40
51
  }>, z.ZodObject<Required<{
52
+ id: z.ZodType<string, any, string>;
53
+ timestampUtcMs: z.ZodType<string, any, string>;
41
54
  input: z.ZodType<number, any, number>;
42
55
  type: z.ZodType<"REDO", any, "REDO">;
43
56
  scope: z.ZodType<string, any, string>;
44
57
  }>, z.UnknownKeysParam, z.ZodTypeAny, {
58
+ id: import("./types.js").Scalars["String"]["output"];
59
+ timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
45
60
  input: import("./types.js").Scalars["Int"]["input"];
46
61
  type: import("./types.js").Redo;
47
62
  scope: string;
48
63
  }, {
64
+ id: import("./types.js").Scalars["String"]["output"];
65
+ timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
49
66
  input: import("./types.js").Scalars["Int"]["input"];
50
67
  type: import("./types.js").Redo;
51
68
  scope: string;
52
69
  }>, z.ZodObject<Required<{
70
+ id: z.ZodType<string, any, string>;
71
+ timestampUtcMs: z.ZodType<string, any, string>;
53
72
  input: z.ZodType<string, any, string>;
54
73
  type: z.ZodType<"SET_NAME", any, "SET_NAME">;
55
74
  scope: z.ZodType<"global", any, "global">;
56
75
  }>, z.UnknownKeysParam, z.ZodTypeAny, {
76
+ id: import("./types.js").Scalars["String"]["output"];
77
+ timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
57
78
  input: import("./types.js").Scalars["String"]["input"];
58
79
  type: import("./types.js").Set_Name;
59
80
  scope: "global";
60
81
  }, {
82
+ id: import("./types.js").Scalars["String"]["output"];
83
+ timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
61
84
  input: import("./types.js").Scalars["String"]["input"];
62
85
  type: import("./types.js").Set_Name;
63
86
  scope: "global";
64
87
  }>, z.ZodObject<Required<{
88
+ id: z.ZodType<string, any, string>;
89
+ timestampUtcMs: z.ZodType<string, any, string>;
65
90
  input: z.ZodType<number, any, number>;
66
91
  type: z.ZodType<"UNDO", any, "UNDO">;
67
92
  scope: z.ZodType<string, any, string>;
68
93
  }>, z.UnknownKeysParam, z.ZodTypeAny, {
94
+ id: import("./types.js").Scalars["String"]["output"];
95
+ timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
69
96
  input: import("./types.js").Scalars["Int"]["input"];
70
97
  type: import("./types.js").Undo;
71
98
  scope: string;
72
99
  }, {
100
+ id: import("./types.js").Scalars["String"]["output"];
101
+ timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
73
102
  input: import("./types.js").Scalars["Int"]["input"];
74
103
  type: import("./types.js").Undo;
75
104
  scope: string;
76
105
  }>]>;
77
106
  export declare function DocumentFileSchema(): z.ZodObject<Properties<DocumentFile>>;
78
- export declare function LoadStateActionSchema(): z.ZodObject<Properties<LoadStateAction>>;
107
+ export declare function LoadStateActionSchema(): z.ZodObject<Properties<SchemaLoadStateAction>>;
79
108
  export declare function LoadStateActionInputSchema(): z.ZodObject<Properties<LoadStateActionInput>>;
80
109
  export declare function LoadStateActionStateInputSchema(): z.ZodObject<Properties<LoadStateActionStateInput>>;
81
- export declare function OperationSchema(): z.ZodObject<Properties<Operation>>;
82
- export declare function PruneActionSchema(): z.ZodObject<Properties<PruneAction>>;
110
+ export declare function PruneActionSchema(): z.ZodObject<Properties<SchemaPruneAction>>;
83
111
  export declare function PruneActionInputSchema(): z.ZodObject<Properties<PruneActionInput>>;
84
112
  export declare const RedoActionInputSchema: (params?: z.RawCreateParams & {
85
113
  coerce?: boolean;
86
114
  }) => z.ZodNumber;
87
- export declare function RedoActionSchema(): z.ZodObject<Properties<RedoAction>>;
115
+ export declare function RedoActionSchema(): z.ZodObject<Properties<SchemaRedoAction>>;
88
116
  export declare const SetNameActionInputSchema: (params?: z.RawCreateParams & {
89
117
  coerce?: true;
90
118
  }) => z.ZodString;
91
- export declare function SetNameActionSchema(): z.ZodObject<Properties<SetNameAction>>;
92
- export declare function SetNameOperationSchema(): z.ZodObject<Properties<SetNameOperation>>;
119
+ export declare function SetNameActionSchema(): z.ZodObject<Properties<SchemaSetNameAction>>;
93
120
  export declare const UndoActionInputSchema: (params?: z.RawCreateParams & {
94
121
  coerce?: boolean;
95
122
  }) => z.ZodNumber;
96
- export declare function UndoActionSchema(): z.ZodObject<Properties<UndoAction>>;
123
+ export declare function UndoActionSchema(): z.ZodObject<Properties<SchemaUndoAction>>;
97
124
  export {};
98
- //# sourceMappingURL=zod.d.ts.map
125
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/core/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,KAAK,UAAU,CAAC,CAAC,IAAI,QAAQ,CAAC;KAC3B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C,CAAC,CAAC;AAEH,KAAK,iBAAiB,GAAG,EAAE,CAAC;AAE5B,eAAO,MAAM,mBAAmB,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,iBACnB,CAAC;AAEhC,eAAO,MAAM,uBAAuB,gDAEI,CAAC;AAEzC,eAAO,MAAM,gBAAgB,2BAAyB,CAAC;AAEvD,eAAO,MAAM,WAAW,sBAAoB,CAAC;AAE7C,eAAO,MAAM,UAAU,qBAAmB,CAAC;AAE3C,eAAO,MAAM,cAAc,yBAAuB,CAAC;AAEnD,eAAO,MAAM,UAAU,qBAAmB,CAAC;AAE3C,wBAAgB,oBAAoB,IAAI,CAAC,CAAC,SAAS,CAElD;AAED,wBAAgB,oBAAoB;;;;;;;QA+DjC,sCAAkB;oBAEN,wCACA;;;;;QAHZ,sCAAkB;oBAEN,wCACA;;;;;;;;;;;QA+BuB,sCAAkB;oBAC7B,wCAErB;;;;;QAHgC,sCAAkB;oBAC7B,wCAErB;;;;;;;;;;;QAYuD,sCAAkB;oBAEvE,wCACA;WAAoB,mCAC5B;;;;QAJ6D,sCAAkB;oBAEvE,wCACA;WAAoB,mCAC5B;;;;;;;;;;QAKsB,sCAAkB;oBAA6B,wCAAoB;WAAoB,sCAAkB;;;;QAAzG,sCAAkB;oBAA6B,wCAAoB;WAAoB,sCAAkB;;;;;;;;;;QAA0Y,sCAAkB;oBAA6B,wCAAoB;WAAoB,mCAAe;;;;QAAtG,sCAAkB;oBAA6B,wCAAoB;WAAoB,mCAAe;;;KAjH9mB;AAED,wBAAgB,kBAAkB,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAQ1E;AAED,wBAAgB,qBAAqB,IAAI,CAAC,CAAC,SAAS,CAClD,UAAU,CAAC,qBAAqB,CAAC,CAClC,CAQA;AAED,wBAAgB,0BAA0B,IAAI,CAAC,CAAC,SAAS,CACvD,UAAU,CAAC,oBAAoB,CAAC,CACjC,CAKA;AAED,wBAAgB,+BAA+B,IAAI,CAAC,CAAC,SAAS,CAC5D,UAAU,CAAC,yBAAyB,CAAC,CACtC,CAKA;AAED,wBAAgB,iBAAiB,IAAI,CAAC,CAAC,SAAS,CAC9C,UAAU,CAAC,iBAAiB,CAAC,CAC9B,CAQA;AAED,wBAAgB,sBAAsB,IAAI,CAAC,CAAC,SAAS,CACnD,UAAU,CAAC,gBAAgB,CAAC,CAC7B,CAKA;AAED,eAAO,MAAM,qBAAqB;UAkD8v0C,CAAC;iBAlDpv0C,CAAC;AAE9C,wBAAgB,gBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAQ5E;AAED,eAAO,MAAM,wBAAwB;UAsC+p0C,CAAC;iBAtCrp0C,CAAC;AAEjD,wBAAgB,mBAAmB,IAAI,CAAC,CAAC,SAAS,CAChD,UAAU,CAAC,mBAAmB,CAAC,CAChC,CAQA;AAeD,eAAO,MAAM,qBAAqB;UAW8v0C,CAAC;iBAXpv0C,CAAC;AAE9C,wBAAgB,gBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAQ5E"}