document-model 4.1.0-dev.8 → 4.1.0-dev.81

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 (442) 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 +183 -0
  5. package/dist/src/core/actions.js.map +1 -0
  6. package/dist/src/core/crypto.d.ts +17 -0
  7. package/dist/src/core/crypto.d.ts.map +1 -0
  8. package/dist/src/core/crypto.js +87 -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} +364 -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 +12 -0
  27. package/dist/src/core/index.d.ts.map +1 -0
  28. package/dist/src/core/index.js +12 -0
  29. package/dist/src/core/index.js.map +1 -0
  30. package/dist/src/{document/utils/file.d.ts → core/node.d.ts} +40 -29
  31. package/dist/src/core/node.d.ts.map +1 -0
  32. package/dist/src/core/node.js +149 -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 +197 -131
  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 +481 -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/validation.d.ts +4 -0
  58. package/dist/src/core/validation.d.ts.map +1 -0
  59. package/dist/src/{document/utils → core}/validation.js +6 -2
  60. package/dist/src/core/validation.js.map +1 -0
  61. package/dist/src/document-model/actions.d.ts +158 -0
  62. package/dist/src/document-model/actions.d.ts.map +1 -0
  63. package/dist/src/document-model/actions.js +109 -0
  64. package/dist/src/document-model/actions.js.map +1 -0
  65. package/dist/src/document-model/constants.d.ts +7 -0
  66. package/dist/src/document-model/constants.d.ts.map +1 -0
  67. package/dist/src/document-model/{gen/document-model.js → constants.js} +35 -3
  68. package/dist/src/document-model/constants.js.map +1 -0
  69. package/dist/src/document-model/files.d.ts +5 -0
  70. package/dist/src/document-model/files.d.ts.map +1 -0
  71. package/dist/src/document-model/files.js +9 -0
  72. package/dist/src/document-model/files.js.map +1 -0
  73. package/dist/src/document-model/index.d.ts +9 -0
  74. package/dist/src/document-model/index.d.ts.map +1 -0
  75. package/dist/src/document-model/index.js +9 -0
  76. package/dist/src/document-model/index.js.map +1 -0
  77. package/dist/src/document-model/module.d.ts +1 -1
  78. package/dist/src/document-model/module.d.ts.map +1 -1
  79. package/dist/src/document-model/module.js +17 -10
  80. package/dist/src/document-model/module.js.map +1 -1
  81. package/dist/src/document-model/reducers.d.ts +11 -0
  82. package/dist/src/document-model/reducers.d.ts.map +1 -0
  83. package/dist/src/document-model/reducers.js +588 -0
  84. package/dist/src/document-model/reducers.js.map +1 -0
  85. package/dist/src/document-model/schemas.d.ts +449 -0
  86. package/dist/src/document-model/schemas.d.ts.map +1 -0
  87. package/dist/src/document-model/{gen/schema/zod.js → schemas.js} +9 -15
  88. package/dist/src/document-model/schemas.js.map +1 -0
  89. package/dist/src/document-model/state.d.ts +11 -0
  90. package/dist/src/document-model/state.d.ts.map +1 -0
  91. package/dist/src/document-model/state.js +61 -0
  92. package/dist/src/document-model/state.js.map +1 -0
  93. package/dist/src/document-model/types.d.ts +671 -3
  94. package/dist/src/document-model/types.d.ts.map +1 -1
  95. package/dist/src/document-model/validation.d.ts +7 -0
  96. package/dist/src/document-model/validation.d.ts.map +1 -0
  97. package/dist/src/document-model/{custom/utils.js → validation.js} +1 -1
  98. package/dist/src/document-model/validation.js.map +1 -0
  99. package/dist/src/index.d.ts +5 -0
  100. package/dist/src/index.d.ts.map +1 -0
  101. package/dist/src/index.js +2 -0
  102. package/dist/src/index.js.map +1 -0
  103. package/dist/test/document/crypto.test.js +39 -61
  104. package/dist/test/document/crypto.test.js.map +1 -1
  105. package/dist/test/document/event-vs-command.test.js +81 -51
  106. package/dist/test/document/event-vs-command.test.js.map +1 -1
  107. package/dist/test/document/local.test.js +27 -45
  108. package/dist/test/document/local.test.js.map +1 -1
  109. package/dist/test/document/operation-id.test.js +4 -7
  110. package/dist/test/document/operation-id.test.js.map +1 -1
  111. package/dist/test/document/prune.test.js +23 -36
  112. package/dist/test/document/prune.test.js.map +1 -1
  113. package/dist/test/document/reducer.test.js +101 -81
  114. package/dist/test/document/reducer.test.js.map +1 -1
  115. package/dist/test/document/skip-operations.test.js +67 -87
  116. package/dist/test/document/skip-operations.test.js.map +1 -1
  117. package/dist/test/document/undo-redo.test.js +60 -36
  118. package/dist/test/document/undo-redo.test.js.map +1 -1
  119. package/dist/test/document/utils.test.js +51 -41
  120. package/dist/test/document/utils.test.js.map +1 -1
  121. package/dist/test/document-helpers/addUndo.test.js +2 -2
  122. package/dist/test/document-helpers/addUndo.test.js.map +1 -1
  123. package/dist/test/document-helpers/attachBranch.test.js +21 -21
  124. package/dist/test/document-helpers/attachBranch.test.js.map +1 -1
  125. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +1 -1
  126. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +1 -1
  127. package/dist/test/document-helpers/conflictResolution.test.js +11 -11
  128. package/dist/test/document-helpers/conflictResolution.test.js.map +1 -1
  129. package/dist/test/document-helpers/filterDuplicatedOperations.test.js +1 -1
  130. package/dist/test/document-helpers/filterDuplicatedOperations.test.js.map +1 -1
  131. package/dist/test/document-helpers/garbageCollect.test.js +1 -1
  132. package/dist/test/document-helpers/garbageCollect.test.js.map +1 -1
  133. package/dist/test/document-helpers/groupOperationsByScope.test.js +71 -71
  134. package/dist/test/document-helpers/groupOperationsByScope.test.js.map +1 -1
  135. package/dist/test/document-helpers/merge.test.js +126 -126
  136. package/dist/test/document-helpers/merge.test.js.map +1 -1
  137. package/dist/test/document-helpers/nextSkipNumber.test.js +1 -1
  138. package/dist/test/document-helpers/nextSkipNumber.test.js.map +1 -1
  139. package/dist/test/document-helpers/prepareOperations.test.js +1 -1
  140. package/dist/test/document-helpers/prepareOperations.test.js.map +1 -1
  141. package/dist/test/document-helpers/removeExistingOperations.test.js +38 -26
  142. package/dist/test/document-helpers/removeExistingOperations.test.js.map +1 -1
  143. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +16 -16
  144. package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +1 -1
  145. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +22 -22
  146. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +1 -1
  147. package/dist/test/document-helpers/skipHeaderOperations.test.js +34 -41
  148. package/dist/test/document-helpers/skipHeaderOperations.test.js.map +1 -1
  149. package/dist/test/document-helpers/sortOperations.test.js +1 -1
  150. package/dist/test/document-helpers/sortOperations.test.js.map +1 -1
  151. package/dist/test/document-helpers/split.test.js +3 -3
  152. package/dist/test/document-helpers/split.test.js.map +1 -1
  153. package/dist/test/document-helpers/utils.d.ts +2 -1
  154. package/dist/test/document-helpers/utils.d.ts.map +1 -1
  155. package/dist/test/document-helpers/utils.js +13 -8
  156. package/dist/test/document-helpers/utils.js.map +1 -1
  157. package/dist/test/document-model/replay.test.js +21 -25
  158. package/dist/test/document-model/replay.test.js.map +1 -1
  159. package/dist/test/document-model/skip-operations.test.js +93 -96
  160. package/dist/test/document-model/skip-operations.test.js.map +1 -1
  161. package/dist/test/document-model/validation.test.js +10 -13
  162. package/dist/test/document-model/validation.test.js.map +1 -1
  163. package/dist/test/document-model/zip.test.js +20 -21
  164. package/dist/test/document-model/zip.test.js.map +1 -1
  165. package/dist/test/helpers.d.ts +42 -8
  166. package/dist/test/helpers.d.ts.map +1 -1
  167. package/dist/test/helpers.js +55 -8
  168. package/dist/test/helpers.js.map +1 -1
  169. package/dist/test/index.d.ts +4 -0
  170. package/dist/test/index.d.ts.map +1 -0
  171. package/dist/test/index.js +3 -0
  172. package/dist/test/index.js.map +1 -0
  173. package/dist/test/types.d.ts +6 -0
  174. package/dist/test/types.d.ts.map +1 -0
  175. package/dist/{src/document/schema → test}/types.js.map +1 -1
  176. package/dist/tsconfig.tsbuildinfo +1 -1
  177. package/dist/vitest.config.d.ts +1 -1
  178. package/dist/vitest.config.d.ts.map +1 -1
  179. package/dist/vitest.config.js +2 -8
  180. package/dist/vitest.config.js.map +1 -1
  181. package/package.json +26 -23
  182. package/dist/index.d.ts +0 -20
  183. package/dist/index.d.ts.map +0 -1
  184. package/dist/index.js +0 -14
  185. package/dist/index.js.map +0 -1
  186. package/dist/src/document/actions/creators.d.ts +0 -51
  187. package/dist/src/document/actions/creators.d.ts.map +0 -1
  188. package/dist/src/document/actions/creators.js +0 -57
  189. package/dist/src/document/actions/creators.js.map +0 -1
  190. package/dist/src/document/actions/operations.d.ts +0 -36
  191. package/dist/src/document/actions/operations.d.ts.map +0 -1
  192. package/dist/src/document/actions/operations.js.map +0 -1
  193. package/dist/src/document/actions/types.d.ts +0 -34
  194. package/dist/src/document/actions/types.d.ts.map +0 -1
  195. package/dist/src/document/actions/types.js +0 -7
  196. package/dist/src/document/actions/types.js.map +0 -1
  197. package/dist/src/document/object.d.ts +0 -124
  198. package/dist/src/document/object.d.ts.map +0 -1
  199. package/dist/src/document/object.js +0 -183
  200. package/dist/src/document/object.js.map +0 -1
  201. package/dist/src/document/ph-types.d.ts +0 -68
  202. package/dist/src/document/ph-types.d.ts.map +0 -1
  203. package/dist/src/document/ph-types.js +0 -2
  204. package/dist/src/document/ph-types.js.map +0 -1
  205. package/dist/src/document/reducer.d.ts +0 -49
  206. package/dist/src/document/reducer.d.ts.map +0 -1
  207. package/dist/src/document/reducer.js.map +0 -1
  208. package/dist/src/document/schema/types.d.ts +0 -176
  209. package/dist/src/document/schema/types.d.ts.map +0 -1
  210. package/dist/src/document/schema/types.js +0 -2
  211. package/dist/src/document/schema/zod.d.ts.map +0 -1
  212. package/dist/src/document/schema/zod.js.map +0 -1
  213. package/dist/src/document/signal.d.ts +0 -36
  214. package/dist/src/document/signal.d.ts.map +0 -1
  215. package/dist/src/document/signal.js +0 -2
  216. package/dist/src/document/signal.js.map +0 -1
  217. package/dist/src/document/types.d.ts +0 -325
  218. package/dist/src/document/types.d.ts.map +0 -1
  219. package/dist/src/document/types.js +0 -2
  220. package/dist/src/document/utils/base.d.ts +0 -88
  221. package/dist/src/document/utils/base.d.ts.map +0 -1
  222. package/dist/src/document/utils/base.js +0 -335
  223. package/dist/src/document/utils/base.js.map +0 -1
  224. package/dist/src/document/utils/browser.d.ts +0 -18
  225. package/dist/src/document/utils/browser.d.ts.map +0 -1
  226. package/dist/src/document/utils/browser.js +0 -54
  227. package/dist/src/document/utils/browser.js.map +0 -1
  228. package/dist/src/document/utils/crypto.d.ts +0 -11
  229. package/dist/src/document/utils/crypto.d.ts.map +0 -1
  230. package/dist/src/document/utils/crypto.js +0 -80
  231. package/dist/src/document/utils/crypto.js.map +0 -1
  232. package/dist/src/document/utils/document-helpers.d.ts.map +0 -1
  233. package/dist/src/document/utils/document-helpers.js.map +0 -1
  234. package/dist/src/document/utils/errors.d.ts +0 -10
  235. package/dist/src/document/utils/errors.d.ts.map +0 -1
  236. package/dist/src/document/utils/errors.js +0 -19
  237. package/dist/src/document/utils/errors.js.map +0 -1
  238. package/dist/src/document/utils/file.d.ts.map +0 -1
  239. package/dist/src/document/utils/file.js +0 -152
  240. package/dist/src/document/utils/file.js.map +0 -1
  241. package/dist/src/document/utils/header.d.ts.map +0 -1
  242. package/dist/src/document/utils/header.js.map +0 -1
  243. package/dist/src/document/utils/node.d.ts +0 -18
  244. package/dist/src/document/utils/node.d.ts.map +0 -1
  245. package/dist/src/document/utils/node.js +0 -62
  246. package/dist/src/document/utils/node.js.map +0 -1
  247. package/dist/src/document/utils/validation.d.ts +0 -3
  248. package/dist/src/document/utils/validation.d.ts.map +0 -1
  249. package/dist/src/document/utils/validation.js.map +0 -1
  250. package/dist/src/document-model/custom/reducers/header.d.ts +0 -3
  251. package/dist/src/document-model/custom/reducers/header.d.ts.map +0 -1
  252. package/dist/src/document-model/custom/reducers/header.js +0 -23
  253. package/dist/src/document-model/custom/reducers/header.js.map +0 -1
  254. package/dist/src/document-model/custom/reducers/module.d.ts +0 -3
  255. package/dist/src/document-model/custom/reducers/module.d.ts.map +0 -1
  256. package/dist/src/document-model/custom/reducers/module.js +0 -41
  257. package/dist/src/document-model/custom/reducers/module.js.map +0 -1
  258. package/dist/src/document-model/custom/reducers/operation-error.d.ts +0 -3
  259. package/dist/src/document-model/custom/reducers/operation-error.d.ts.map +0 -1
  260. package/dist/src/document-model/custom/reducers/operation-error.js +0 -94
  261. package/dist/src/document-model/custom/reducers/operation-error.js.map +0 -1
  262. package/dist/src/document-model/custom/reducers/operation-example.d.ts +0 -3
  263. package/dist/src/document-model/custom/reducers/operation-example.d.ts.map +0 -1
  264. package/dist/src/document-model/custom/reducers/operation-example.js +0 -53
  265. package/dist/src/document-model/custom/reducers/operation-example.js.map +0 -1
  266. package/dist/src/document-model/custom/reducers/operation.d.ts +0 -3
  267. package/dist/src/document-model/custom/reducers/operation.d.ts.map +0 -1
  268. package/dist/src/document-model/custom/reducers/operation.js +0 -125
  269. package/dist/src/document-model/custom/reducers/operation.js.map +0 -1
  270. package/dist/src/document-model/custom/reducers/state.d.ts +0 -3
  271. package/dist/src/document-model/custom/reducers/state.d.ts.map +0 -1
  272. package/dist/src/document-model/custom/reducers/state.js +0 -71
  273. package/dist/src/document-model/custom/reducers/state.js.map +0 -1
  274. package/dist/src/document-model/custom/reducers/versioning.d.ts +0 -8
  275. package/dist/src/document-model/custom/reducers/versioning.d.ts.map +0 -1
  276. package/dist/src/document-model/custom/reducers/versioning.js +0 -23
  277. package/dist/src/document-model/custom/reducers/versioning.js.map +0 -1
  278. package/dist/src/document-model/custom/utils.d.ts +0 -8
  279. package/dist/src/document-model/custom/utils.d.ts.map +0 -1
  280. package/dist/src/document-model/custom/utils.js.map +0 -1
  281. package/dist/src/document-model/gen/actions.d.ts +0 -16
  282. package/dist/src/document-model/gen/actions.d.ts.map +0 -1
  283. package/dist/src/document-model/gen/actions.js +0 -8
  284. package/dist/src/document-model/gen/actions.js.map +0 -1
  285. package/dist/src/document-model/gen/constants.d.ts +0 -7
  286. package/dist/src/document-model/gen/constants.d.ts.map +0 -1
  287. package/dist/src/document-model/gen/constants.js +0 -34
  288. package/dist/src/document-model/gen/constants.js.map +0 -1
  289. package/dist/src/document-model/gen/creators.d.ts +0 -8
  290. package/dist/src/document-model/gen/creators.d.ts.map +0 -1
  291. package/dist/src/document-model/gen/creators.js +0 -8
  292. package/dist/src/document-model/gen/creators.js.map +0 -1
  293. package/dist/src/document-model/gen/document-model.d.ts +0 -3
  294. package/dist/src/document-model/gen/document-model.d.ts.map +0 -1
  295. package/dist/src/document-model/gen/document-model.js.map +0 -1
  296. package/dist/src/document-model/gen/header/actions.d.ts +0 -28
  297. package/dist/src/document-model/gen/header/actions.d.ts.map +0 -1
  298. package/dist/src/document-model/gen/header/actions.js +0 -2
  299. package/dist/src/document-model/gen/header/actions.js.map +0 -1
  300. package/dist/src/document-model/gen/header/creators.d.ts +0 -9
  301. package/dist/src/document-model/gen/header/creators.d.ts.map +0 -1
  302. package/dist/src/document-model/gen/header/creators.js +0 -9
  303. package/dist/src/document-model/gen/header/creators.js.map +0 -1
  304. package/dist/src/document-model/gen/header/object.d.ts +0 -13
  305. package/dist/src/document-model/gen/header/object.d.ts.map +0 -1
  306. package/dist/src/document-model/gen/header/object.js +0 -23
  307. package/dist/src/document-model/gen/header/object.js.map +0 -1
  308. package/dist/src/document-model/gen/header/operations.d.ts +0 -11
  309. package/dist/src/document-model/gen/header/operations.d.ts.map +0 -1
  310. package/dist/src/document-model/gen/header/operations.js +0 -2
  311. package/dist/src/document-model/gen/header/operations.js.map +0 -1
  312. package/dist/src/document-model/gen/module/actions.d.ts +0 -24
  313. package/dist/src/document-model/gen/module/actions.d.ts.map +0 -1
  314. package/dist/src/document-model/gen/module/actions.js +0 -2
  315. package/dist/src/document-model/gen/module/actions.js.map +0 -1
  316. package/dist/src/document-model/gen/module/creators.d.ts +0 -8
  317. package/dist/src/document-model/gen/module/creators.d.ts.map +0 -1
  318. package/dist/src/document-model/gen/module/creators.js +0 -8
  319. package/dist/src/document-model/gen/module/creators.js.map +0 -1
  320. package/dist/src/document-model/gen/module/object.d.ts +0 -12
  321. package/dist/src/document-model/gen/module/object.d.ts.map +0 -1
  322. package/dist/src/document-model/gen/module/object.js +0 -20
  323. package/dist/src/document-model/gen/module/object.js.map +0 -1
  324. package/dist/src/document-model/gen/module/operations.d.ts +0 -10
  325. package/dist/src/document-model/gen/module/operations.d.ts.map +0 -1
  326. package/dist/src/document-model/gen/module/operations.js +0 -2
  327. package/dist/src/document-model/gen/module/operations.js.map +0 -1
  328. package/dist/src/document-model/gen/object.d.ts +0 -29
  329. package/dist/src/document-model/gen/object.d.ts.map +0 -1
  330. package/dist/src/document-model/gen/object.js +0 -46
  331. package/dist/src/document-model/gen/object.js.map +0 -1
  332. package/dist/src/document-model/gen/operation/actions.d.ts +0 -44
  333. package/dist/src/document-model/gen/operation/actions.d.ts.map +0 -1
  334. package/dist/src/document-model/gen/operation/actions.js +0 -2
  335. package/dist/src/document-model/gen/operation/actions.js.map +0 -1
  336. package/dist/src/document-model/gen/operation/creators.d.ts +0 -13
  337. package/dist/src/document-model/gen/operation/creators.d.ts.map +0 -1
  338. package/dist/src/document-model/gen/operation/creators.js +0 -13
  339. package/dist/src/document-model/gen/operation/creators.js.map +0 -1
  340. package/dist/src/document-model/gen/operation/object.d.ts +0 -18
  341. package/dist/src/document-model/gen/operation/object.d.ts.map +0 -1
  342. package/dist/src/document-model/gen/operation/object.js +0 -35
  343. package/dist/src/document-model/gen/operation/object.js.map +0 -1
  344. package/dist/src/document-model/gen/operation/operations.d.ts +0 -15
  345. package/dist/src/document-model/gen/operation/operations.d.ts.map +0 -1
  346. package/dist/src/document-model/gen/operation/operations.js +0 -2
  347. package/dist/src/document-model/gen/operation/operations.js.map +0 -1
  348. package/dist/src/document-model/gen/operation-error/actions.d.ts +0 -32
  349. package/dist/src/document-model/gen/operation-error/actions.d.ts.map +0 -1
  350. package/dist/src/document-model/gen/operation-error/actions.js +0 -2
  351. package/dist/src/document-model/gen/operation-error/actions.js.map +0 -1
  352. package/dist/src/document-model/gen/operation-error/creators.d.ts +0 -10
  353. package/dist/src/document-model/gen/operation-error/creators.d.ts.map +0 -1
  354. package/dist/src/document-model/gen/operation-error/creators.js +0 -10
  355. package/dist/src/document-model/gen/operation-error/creators.js.map +0 -1
  356. package/dist/src/document-model/gen/operation-error/object.d.ts +0 -15
  357. package/dist/src/document-model/gen/operation-error/object.d.ts.map +0 -1
  358. package/dist/src/document-model/gen/operation-error/object.js +0 -26
  359. package/dist/src/document-model/gen/operation-error/object.js.map +0 -1
  360. package/dist/src/document-model/gen/operation-error/operations.d.ts +0 -12
  361. package/dist/src/document-model/gen/operation-error/operations.d.ts.map +0 -1
  362. package/dist/src/document-model/gen/operation-error/operations.js +0 -2
  363. package/dist/src/document-model/gen/operation-error/operations.js.map +0 -1
  364. package/dist/src/document-model/gen/operation-example/actions.d.ts +0 -20
  365. package/dist/src/document-model/gen/operation-example/actions.d.ts.map +0 -1
  366. package/dist/src/document-model/gen/operation-example/actions.js +0 -2
  367. package/dist/src/document-model/gen/operation-example/actions.js.map +0 -1
  368. package/dist/src/document-model/gen/operation-example/creators.d.ts +0 -7
  369. package/dist/src/document-model/gen/operation-example/creators.d.ts.map +0 -1
  370. package/dist/src/document-model/gen/operation-example/creators.js +0 -7
  371. package/dist/src/document-model/gen/operation-example/creators.js.map +0 -1
  372. package/dist/src/document-model/gen/operation-example/object.d.ts +0 -12
  373. package/dist/src/document-model/gen/operation-example/object.d.ts.map +0 -1
  374. package/dist/src/document-model/gen/operation-example/object.js +0 -17
  375. package/dist/src/document-model/gen/operation-example/object.js.map +0 -1
  376. package/dist/src/document-model/gen/operation-example/operations.d.ts +0 -9
  377. package/dist/src/document-model/gen/operation-example/operations.d.ts.map +0 -1
  378. package/dist/src/document-model/gen/operation-example/operations.js +0 -2
  379. package/dist/src/document-model/gen/operation-example/operations.js.map +0 -1
  380. package/dist/src/document-model/gen/reducer.d.ts +0 -5
  381. package/dist/src/document-model/gen/reducer.d.ts.map +0 -1
  382. package/dist/src/document-model/gen/reducer.js +0 -193
  383. package/dist/src/document-model/gen/reducer.js.map +0 -1
  384. package/dist/src/document-model/gen/schema/index.d.ts +0 -3
  385. package/dist/src/document-model/gen/schema/index.d.ts.map +0 -1
  386. package/dist/src/document-model/gen/schema/index.js +0 -3
  387. package/dist/src/document-model/gen/schema/index.js.map +0 -1
  388. package/dist/src/document-model/gen/schema/types.d.ts +0 -457
  389. package/dist/src/document-model/gen/schema/types.d.ts.map +0 -1
  390. package/dist/src/document-model/gen/schema/types.js.map +0 -1
  391. package/dist/src/document-model/gen/schema/zod.d.ts +0 -453
  392. package/dist/src/document-model/gen/schema/zod.d.ts.map +0 -1
  393. package/dist/src/document-model/gen/schema/zod.js.map +0 -1
  394. package/dist/src/document-model/gen/state/actions.d.ts +0 -28
  395. package/dist/src/document-model/gen/state/actions.d.ts.map +0 -1
  396. package/dist/src/document-model/gen/state/actions.js +0 -2
  397. package/dist/src/document-model/gen/state/actions.js.map +0 -1
  398. package/dist/src/document-model/gen/state/creators.d.ts +0 -9
  399. package/dist/src/document-model/gen/state/creators.d.ts.map +0 -1
  400. package/dist/src/document-model/gen/state/creators.js +0 -9
  401. package/dist/src/document-model/gen/state/creators.js.map +0 -1
  402. package/dist/src/document-model/gen/state/object.d.ts +0 -13
  403. package/dist/src/document-model/gen/state/object.d.ts.map +0 -1
  404. package/dist/src/document-model/gen/state/object.js +0 -23
  405. package/dist/src/document-model/gen/state/object.js.map +0 -1
  406. package/dist/src/document-model/gen/state/operations.d.ts +0 -11
  407. package/dist/src/document-model/gen/state/operations.d.ts.map +0 -1
  408. package/dist/src/document-model/gen/state/operations.js +0 -2
  409. package/dist/src/document-model/gen/state/operations.js.map +0 -1
  410. package/dist/src/document-model/gen/types.d.ts +0 -7
  411. package/dist/src/document-model/gen/types.d.ts.map +0 -1
  412. package/dist/src/document-model/gen/types.js.map +0 -1
  413. package/dist/src/document-model/gen/utils.d.ts +0 -11
  414. package/dist/src/document-model/gen/utils.d.ts.map +0 -1
  415. package/dist/src/document-model/gen/utils.js +0 -33
  416. package/dist/src/document-model/gen/utils.js.map +0 -1
  417. package/dist/src/document-model/gen/versioning/actions.d.ts +0 -24
  418. package/dist/src/document-model/gen/versioning/actions.d.ts.map +0 -1
  419. package/dist/src/document-model/gen/versioning/actions.js +0 -2
  420. package/dist/src/document-model/gen/versioning/actions.js.map +0 -1
  421. package/dist/src/document-model/gen/versioning/creators.d.ts +0 -8
  422. package/dist/src/document-model/gen/versioning/creators.d.ts.map +0 -1
  423. package/dist/src/document-model/gen/versioning/creators.js +0 -8
  424. package/dist/src/document-model/gen/versioning/creators.js.map +0 -1
  425. package/dist/src/document-model/gen/versioning/object.d.ts +0 -13
  426. package/dist/src/document-model/gen/versioning/object.d.ts.map +0 -1
  427. package/dist/src/document-model/gen/versioning/object.js +0 -20
  428. package/dist/src/document-model/gen/versioning/object.js.map +0 -1
  429. package/dist/src/document-model/gen/versioning/operations.d.ts +0 -10
  430. package/dist/src/document-model/gen/versioning/operations.d.ts.map +0 -1
  431. package/dist/src/document-model/gen/versioning/operations.js +0 -2
  432. package/dist/src/document-model/gen/versioning/operations.js.map +0 -1
  433. package/dist/test/document/object.test.d.ts +0 -2
  434. package/dist/test/document/object.test.d.ts.map +0 -1
  435. package/dist/test/document/object.test.js +0 -13
  436. package/dist/test/document/object.test.js.map +0 -1
  437. package/dist/test/document-model/object.test.d.ts +0 -2
  438. package/dist/test/document-model/object.test.d.ts.map +0 -1
  439. package/dist/test/document-model/object.test.js +0 -243
  440. package/dist/test/document-model/object.test.js.map +0 -1
  441. /package/dist/src/{document-model/gen/schema → core}/types.js +0 -0
  442. /package/dist/{src/document-model/gen → test}/types.js +0 -0
@@ -1,99 +1,66 @@
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 { DocumentActionSchema } from "./schema/zod.js";
5
- import { getDocumentLastModified, hashDocumentStateForScope, isDocumentAction, isUndo, isUndoRedo, parseResultingState, replayOperations, } from "./utils/base.js";
6
- import { generateId } from "./utils/crypto.js";
7
- import { diffOperations, garbageCollect, garbageCollectDocumentOperations, skipHeaderOperations, sortOperations, } from "./utils/document-helpers.js";
8
- /**
9
- * Gets the next revision number based on the provided action.
10
- *
11
- * @param state The current state of the document.
12
- * @param operation The action being applied to the document.
13
- * @returns The next revision number.
14
- */
15
- function getNextRevision(document, operation) {
16
- let latestOperationIndex;
17
- if ("index" in operation) {
18
- latestOperationIndex = operation.index;
19
- }
20
- else {
21
- latestOperationIndex =
22
- document.operations[operation.scope].at(-1)?.index ?? -1;
23
- }
24
- return (latestOperationIndex ?? -1) + 1;
25
- }
26
- /**
27
- * Updates the document header with the latest revision number and
28
- * date of last modification.
29
- *
30
- * @param state The current state of the document.
31
- * @param operation The action being applied to the document.
32
- * @returns The updated document state.
33
- */
34
- export function updateHeader(document, action) {
35
- const header = {
36
- ...document.header,
37
- revision: {
38
- ...document.header.revision,
39
- [action.scope]: getNextRevision(document, action),
40
- },
41
- lastModifiedAtUtcIso: getDocumentLastModified(document),
42
- };
43
- return {
44
- ...document,
45
- header,
46
- };
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);
47
12
  }
48
13
  /**
49
14
  * Updates the operations history of the document based on the provided action.
50
15
  *
51
16
  * @param state The current state of the document.
52
- * @param actionOrOperation The action being applied to the document.
17
+ * @param action The action being applied to the document.
18
+ * @param index The index of the operation to update.
53
19
  * @param skip The number of operations to skip before applying the action.
54
20
  * @param reuseLastOperationIndex Whether to reuse the last operation index (used when a an UNDO operation is performed after an existing one).
55
21
  * @returns The updated document state.
56
22
  */
57
- function updateOperations(document, actionOrOperation, skip = 0, reuseLastOperationIndex = false) {
23
+ function updateOperationsForAction(document, action, reuseLastOperationIndex = false, skip = 0) {
58
24
  // UNDO, REDO and PRUNE are meta operations
59
25
  // that alter the operations history themselves
60
- if ("type" in actionOrOperation &&
61
- [UNDO, REDO, PRUNE].includes(actionOrOperation.type)) {
26
+ if (["UNDO", "REDO", "PRUNE"].includes(action.type)) {
62
27
  return document;
63
28
  }
64
- const { scope } = actionOrOperation;
65
- const operations = document.operations[scope].slice();
66
- let operationId;
29
+ const scope = action.scope;
30
+ let operations = [];
31
+ if (document.operations[scope]) {
32
+ operations = document.operations[scope].slice();
33
+ }
67
34
  const latestOperation = operations.sort((a, b) => a.index - b.index).at(-1);
68
35
  const lastOperationIndex = latestOperation?.index ?? -1;
69
- let nextIndex = reuseLastOperationIndex
36
+ const index = reuseLastOperationIndex
70
37
  ? lastOperationIndex
71
38
  : lastOperationIndex + 1;
72
- let timestamp = new Date().toISOString();
73
- if ("index" in actionOrOperation) {
74
- if (actionOrOperation.index - skip > nextIndex) {
75
- throw new Error(`Missing operations: expected ${nextIndex} with skip 0 or equivalent, got index ${actionOrOperation.index} with skip ${skip}`);
76
- }
77
- nextIndex = actionOrOperation.index;
78
- operationId = actionOrOperation.id;
79
- timestamp = actionOrOperation.timestamp;
80
- }
81
- else {
82
- operationId =
83
- "id" in actionOrOperation
84
- ? actionOrOperation.id
85
- : generateId();
39
+ const newOperation = operationFromAction(action, index, skip);
40
+ operations.push(newOperation);
41
+ // adds the action to the operations history with
42
+ // the latest index and current timestamp
43
+ return {
44
+ ...document,
45
+ operations: { ...document.operations, [scope]: operations },
46
+ };
47
+ }
48
+ function updateOperationsForOperation(document, operation, reuseLastOperationIndex = false, skip = 0) {
49
+ const scope = operation.action.scope;
50
+ const scopeOperations = document.operations[scope];
51
+ const operations = scopeOperations
52
+ ? scopeOperations.slice()
53
+ : [];
54
+ const latestOperation = operations.sort((a, b) => a.index - b.index).at(-1);
55
+ const lastOperationIndex = latestOperation?.index ?? -1;
56
+ const nextIndex = reuseLastOperationIndex
57
+ ? lastOperationIndex
58
+ : lastOperationIndex + 1;
59
+ if (operation.index - skip > nextIndex) {
60
+ throw new Error(`Missing operations: expected ${nextIndex} with skip 0 or equivalent, got index ${operation.index} with skip ${skip}`);
86
61
  }
87
- operations.push({
88
- ...actionOrOperation,
89
- id: operationId,
90
- index: nextIndex,
91
- timestamp,
92
- hash: "",
93
- scope,
94
- skip,
95
- error: undefined,
96
- });
62
+ const newOperation = operationFromOperation(operation, skip);
63
+ operations.push(newOperation);
97
64
  // adds the action to the operations history with
98
65
  // the latest index and current timestamp
99
66
  return {
@@ -110,9 +77,17 @@ function updateOperations(document, actionOrOperation, skip = 0, reuseLastOperat
110
77
  * @param reuseLastOperationIndex Whether to reuse the last operation index (used when a an UNDO operation is performed after an existing one).
111
78
  * @returns The updated document state.
112
79
  */
113
- export function updateDocument(document, action, skip = 0, reuseLastOperationIndex = false) {
114
- let newDocument = updateOperations(document, action, skip, reuseLastOperationIndex);
115
- newDocument = updateHeader(newDocument, action);
80
+ export function updateDocument(document, action, reuseLastOperationIndex = false, skip = 0, operation) {
81
+ let newDocument;
82
+ if (operation) {
83
+ // operation
84
+ newDocument = updateOperationsForOperation(document, operation, reuseLastOperationIndex, skip);
85
+ }
86
+ else {
87
+ // action
88
+ newDocument = updateOperationsForAction(document, action, reuseLastOperationIndex, skip);
89
+ }
90
+ newDocument = updateHeaderRevision(newDocument, action.scope);
116
91
  return newDocument;
117
92
  }
118
93
  /**
@@ -127,12 +102,12 @@ function _baseReducer(document, action, wrappedReducer) {
127
102
  // throws if action is not valid base action
128
103
  const parsedAction = DocumentActionSchema().parse(action);
129
104
  switch (parsedAction.type) {
130
- case SET_NAME:
105
+ case "SET_NAME":
131
106
  return setNameOperation(document, parsedAction.input);
132
- case PRUNE:
107
+ case "PRUNE":
133
108
  return pruneOperation(document, parsedAction.input, wrappedReducer);
134
- case LOAD_STATE:
135
- return loadStateOperation(document, parsedAction.input.state);
109
+ case "LOAD_STATE":
110
+ return loadStateOperation(document, parsedAction.input);
136
111
  default:
137
112
  return document;
138
113
  }
@@ -147,9 +122,9 @@ function _baseReducer(document, action, wrappedReducer) {
147
122
  */
148
123
  export function processUndoRedo(document, action, skip) {
149
124
  switch (action.type) {
150
- case UNDO:
125
+ case "UNDO":
151
126
  return undoOperation(document, action, skip);
152
- case REDO:
127
+ case "REDO":
153
128
  return redoOperation(document, action, skip);
154
129
  default:
155
130
  return { document, action, skip, reuseLastOperationIndex: false };
@@ -157,15 +132,20 @@ export function processUndoRedo(document, action, skip) {
157
132
  }
158
133
  function processSkipOperation(document, action, customReducer, skipValue, reuseOperationResultingState = false, resultingStateParser = parseResultingState) {
159
134
  const scope = action.scope;
160
- 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);
161
140
  if (!latestOperation)
162
141
  return document;
163
142
  const documentOperations = garbageCollectDocumentOperations({
164
143
  ...document.operations,
165
- [scope]: skipHeaderOperations(document.operations[scope], latestOperation),
144
+ [scope]: skipHeaderOperations(scopeOperations, latestOperation),
166
145
  });
167
146
  let scopeState = undefined;
168
- const lastRemainingOperation = documentOperations[scope].at(-1);
147
+ const documentScopeOps = documentOperations[scope];
148
+ const lastRemainingOperation = documentScopeOps?.at(-1);
169
149
  // if the last operation has the resulting state and
170
150
  // reuseOperationResultingState is true then reuses it
171
151
  // instead of replaying the operations from the beginning
@@ -174,11 +154,9 @@ function processSkipOperation(document, action, customReducer, skipValue, reuseO
174
154
  }
175
155
  else {
176
156
  const { state } = replayOperations(document.initialState, documentOperations, customReducer, undefined, undefined, undefined, undefined, {
177
- reuseHash: true,
178
157
  reuseOperationResultingState,
179
158
  operationResultingStateParser: resultingStateParser,
180
159
  });
181
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
182
160
  scopeState = state[scope];
183
161
  }
184
162
  return {
@@ -193,20 +171,27 @@ function processSkipOperation(document, action, customReducer, skipValue, reuseO
193
171
  };
194
172
  }
195
173
  function processUndoOperation(document, scope, customReducer, reuseOperationResultingState = false, resultingStateParser = parseResultingState) {
196
- const operations = [...document.operations[scope]];
174
+ const scopeOperations = document.operations[scope];
175
+ if (!scopeOperations) {
176
+ return document;
177
+ }
178
+ const operations = [...scopeOperations];
197
179
  const sortedOperations = sortOperations(operations);
198
180
  sortedOperations.pop();
199
181
  const documentOperations = garbageCollectDocumentOperations({
200
182
  ...document.operations,
201
183
  });
202
- const clearedOperations = [...documentOperations[scope]];
184
+ const documentScopeOps = documentOperations[scope];
185
+ if (!documentScopeOps) {
186
+ return document;
187
+ }
188
+ const clearedOperations = [...documentScopeOps];
203
189
  const diff = diffOperations(garbageCollect(sortedOperations), clearedOperations);
204
190
  const doc = replayOperations(document.initialState, documentOperations, customReducer, undefined, undefined, undefined, undefined, {
205
- reuseHash: true,
206
191
  reuseOperationResultingState,
207
192
  operationResultingStateParser: resultingStateParser,
208
193
  });
209
- 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();
210
195
  return { ...doc, clipboard };
211
196
  }
212
197
  /**
@@ -222,19 +207,14 @@ function processUndoOperation(document, scope, customReducer, reuseOperationResu
222
207
  * @returns The new state of the document.
223
208
  */
224
209
  export function baseReducer(document, action, customReducer, dispatch, options = {}) {
225
- const { skip, ignoreSkipOperations = false, reuseHash = false, reuseOperationResultingState = false, operationResultingStateParser, } = options;
226
- let _action = { ...action };
227
- 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;
228
213
  let newDocument = {
229
214
  ...document,
230
215
  };
231
216
  let reuseLastOperationIndex = false;
232
- const shouldProcessSkipOperation = !ignoreSkipOperations &&
233
- (skipValue > 0 ||
234
- ("index" in _action &&
235
- "skip" in _action &&
236
- typeof _action.skip === "number" &&
237
- _action.skip > 0));
217
+ const shouldProcessSkipOperation = !ignoreSkipOperations && skipValue > 0;
238
218
  if (isUndoRedo(_action)) {
239
219
  const { skip: calculatedSkip, action: transformedAction, document: processedDocument, reuseLastOperationIndex: reuseIndex, } = processUndoRedo(document, _action, skipValue);
240
220
  _action = transformedAction;
@@ -255,14 +235,24 @@ export function baseReducer(document, action, customReducer, dispatch, options =
255
235
  }
256
236
  // updates the document revision number, last modified date
257
237
  // and operation history
258
- newDocument = updateDocument(newDocument, _action, skipValue, reuseLastOperationIndex);
238
+ newDocument = updateDocument(newDocument, _action, reuseLastOperationIndex, skipValue, options.replayOptions?.operation);
259
239
  const isUndoAction = isUndo(action);
260
240
  if (isUndoAction) {
261
241
  const result = processUndoOperation(newDocument, action.scope, customReducer);
262
242
  return result;
263
243
  }
264
244
  if (shouldProcessSkipOperation) {
265
- newDocument = processSkipOperation(newDocument, _action, customReducer, skipValue, reuseOperationResultingState, operationResultingStateParser);
245
+ const processed = processSkipOperation(newDocument, _action, customReducer, skipValue, reuseOperationResultingState, operationResultingStateParser);
246
+ // Preserve operations when pruneOnSkip is false
247
+ if (!pruneOnSkip) {
248
+ newDocument = {
249
+ ...processed,
250
+ operations: newDocument.operations,
251
+ };
252
+ }
253
+ else {
254
+ newDocument = processed;
255
+ }
266
256
  }
267
257
  // wraps the custom reducer with Mutative to avoid
268
258
  // mutation bugs and allow writing reducers with
@@ -292,19 +282,31 @@ export function baseReducer(document, action, customReducer, dispatch, options =
292
282
  catch (error) {
293
283
  // if the reducer throws an error then we should keep the previous state (before replayOperations)
294
284
  // and remove skip number from action/operation
295
- const lastOperationIndex = newDocument.operations[_action.scope].length - 1;
296
- draft.operations[_action.scope][lastOperationIndex].error = error.message;
297
- draft.operations[_action.scope][lastOperationIndex].skip = 0;
285
+ const actionScopeOps = newDocument.operations[_action.scope];
286
+ if (!actionScopeOps) {
287
+ throw new Error(`No operations found for scope: ${_action.scope}`);
288
+ }
289
+ const lastOperationIndex = actionScopeOps.length - 1;
290
+ const draftScopeOps = draft.operations[_action.scope];
291
+ if (!draftScopeOps) {
292
+ throw new Error(`No operations found in draft for scope: ${_action.scope}`);
293
+ }
294
+ draftScopeOps[lastOperationIndex].error = error.message;
295
+ draftScopeOps[lastOperationIndex].skip = 0;
298
296
  if (shouldProcessSkipOperation) {
299
297
  draft.state = castDraft({
300
298
  ...document.state,
301
299
  });
300
+ const documentScopeOps = document.operations[_action.scope];
301
+ if (!documentScopeOps) {
302
+ throw new Error(`No operations found for scope: ${_action.scope}`);
303
+ }
302
304
  draft.operations = castDraft({
303
305
  ...document.operations,
304
306
  [_action.scope]: [
305
- ...document.operations[_action.scope],
307
+ ...documentScopeOps,
306
308
  {
307
- ...draft.operations[_action.scope][lastOperationIndex],
309
+ ...draftScopeOps[lastOperationIndex],
308
310
  },
309
311
  ],
310
312
  });
@@ -313,37 +315,101 @@ export function baseReducer(document, action, customReducer, dispatch, options =
313
315
  });
314
316
  // updates the document history
315
317
  // meta operations are not added to the operations history
316
- if ([UNDO, REDO, PRUNE].includes(_action.type)) {
318
+ if (["UNDO", "REDO", "PRUNE"].includes(_action.type)) {
317
319
  return newDocument;
318
320
  }
319
321
  // if reuseHash is true, checks if the action has
320
322
  // an hash and uses it instead of generating it
321
323
  const scope = _action.scope || "global";
322
- const hash = reuseHash && Object.prototype.hasOwnProperty.call(_action, "hash")
323
- ? _action.hash
324
- : hashDocumentStateForScope(newDocument, scope);
324
+ let hash = hashDocumentStateForScope(newDocument, scope);
325
+ if (options.replayOptions?.operation.hash &&
326
+ options.replayOptions.operation.hash !== "") {
327
+ hash = options.replayOptions.operation.hash;
328
+ }
325
329
  // updates the last operation with the hash of the resulting state
326
- const lastOperation = newDocument.operations[scope].at(-1);
330
+ const scopeOperations = newDocument.operations[scope];
331
+ const lastOperation = scopeOperations?.at(-1);
327
332
  if (lastOperation) {
328
333
  lastOperation.hash = hash;
329
334
  if (reuseOperationResultingState) {
330
- lastOperation.resultingState = JSON.stringify(
331
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
332
- newDocument.state[scope]);
333
- }
334
- // if the action has attachments then adds them to the document
335
- if (!isDocumentAction(_action) && _action.attachments) {
336
- _action.attachments.forEach((attachment) => {
337
- const { hash, ...file } = attachment;
338
- if (!newDocument.attachments) {
339
- newDocument.attachments = {};
340
- }
341
- newDocument.attachments[hash] = {
342
- ...file,
343
- };
344
- });
335
+ lastOperation.resultingState = JSON.stringify(newDocument.state[scope]);
345
336
  }
346
337
  }
347
338
  return newDocument;
348
339
  }
340
+ /**
341
+ * Helper function to create a document model reducer.
342
+ *
343
+ * @remarks
344
+ * This function creates a new reducer that wraps the provided `reducer` with
345
+ * `documentReducer`, adding support for document actions:
346
+ * - `SET_NAME`
347
+ * - `UNDO`
348
+ * - `REDO`
349
+ * - `PRUNE`
350
+ *
351
+ * It also updates the document-related attributes on every operation.
352
+ *
353
+ * @param reducer - The custom reducer to wrap.
354
+ * @param documentReducer - The document reducer to use.
355
+ *
356
+ * @returns The new reducer.
357
+ */
358
+ export function createReducer(stateReducer, documentReducer = baseReducer) {
359
+ const reducer = (document, action, dispatch, options) => {
360
+ return documentReducer(document, action, stateReducer, dispatch, options);
361
+ };
362
+ return reducer;
363
+ }
364
+ export function pruneOperation(document, input, wrappedReducer) {
365
+ const operations = document.operations.global;
366
+ if (!operations) {
367
+ throw new Error("No global operations found");
368
+ }
369
+ let { start, end } = input;
370
+ start = start || 0;
371
+ end = end || operations.length;
372
+ const actionsToPrune = operations.slice(start, end);
373
+ const actionsToKeepStart = operations.slice(0, start);
374
+ const actionsToKeepEnd = operations.slice(end);
375
+ // runs all operations from the initial state to
376
+ // the end of prune to get name and data
377
+ const newDocument = replayOperations(document.initialState, {
378
+ ...document.operations,
379
+ global: actionsToKeepStart.concat(actionsToPrune),
380
+ }, wrappedReducer);
381
+ const newState = newDocument.state;
382
+ const name = newDocument.header.name;
383
+ // the new operation has the index of the first pruned operation
384
+ const loadStateIndex = actionsToKeepStart.length;
385
+ // if and operation is pruned then reuses the timestamp of the last operation
386
+ // if not then assigns the timestamp of the following unpruned operation
387
+ const loadStateTimestamp = actionsToKeepStart.length
388
+ ? actionsToKeepStart[actionsToKeepStart.length - 1].timestampUtcMs
389
+ : actionsToKeepEnd.length
390
+ ? actionsToKeepEnd[0].timestampUtcMs
391
+ : new Date().toISOString();
392
+ const action = loadState({ name, ...newState }, actionsToPrune.length);
393
+ // replaces pruned operations with LOAD_STATE
394
+ return replayOperations(document.initialState, {
395
+ ...document.operations,
396
+ global: [
397
+ ...actionsToKeepStart,
398
+ {
399
+ skip: 0,
400
+ ...action,
401
+ action,
402
+ timestampUtcMs: loadStateTimestamp,
403
+ index: loadStateIndex,
404
+ hash: hashDocumentStateForScope({ state: newState }, "global"),
405
+ },
406
+ ...actionsToKeepEnd
407
+ // updates the index for all the following operations
408
+ .map((action, index) => ({
409
+ ...action,
410
+ index: loadStateIndex + index + 1,
411
+ })),
412
+ ],
413
+ }, wrappedReducer);
414
+ }
349
415
  //# sourceMappingURL=reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../../src/core/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,cAAc,EACd,gCAAgC,EAChC,yBAAyB,EACzB,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAWpD,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAC9B,YAAoB,EACpB,iBAAqC,EACrC,YAAkC,EAClC,QAAyB,EACzB,MAAyB,EACzB,eAAe,GAAG,WAAW,EAC7B,uBAA6C,EAAE,EAC/C,OAA+B;IAE/B,6CAA6C;IAC7C,wBAAwB;IACxB,MAAM,cAAc,GAAG,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAEpE,OAAO,cAAc,CACnB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,MAAM,EACN,oBAAoB,EACpB,OAAO,CACR,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,yBAAyB,CAChC,QAAmB,EACnB,MAAc,EACd,uBAAuB,GAAG,KAAK,EAC/B,IAAI,GAAG,CAAC;IAER,2CAA2C;IAC3C,+CAA+C;IAC/C,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAE3B,IAAI,UAAU,GAAgB,EAAE,CAAC;IACjC,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,kBAAkB,GAAG,eAAe,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,uBAAuB;QACnC,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAE3B,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9D,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE9B,iDAAiD;IACjD,yCAAyC;IACzC,OAAO;QACL,GAAG,QAAQ;QACX,UAAU,EAAE,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,QAAmB,EACnB,SAAoB,EACpB,uBAAuB,GAAG,KAAK,EAC/B,IAAI,GAAG,CAAC;IAER,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;IACrC,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,UAAU,GAAgB,eAAe;QAC7C,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE;QACzB,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,kBAAkB,GAAG,eAAe,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;IAExD,MAAM,SAAS,GAAG,uBAAuB;QACvC,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAE3B,IAAI,SAAS,CAAC,KAAK,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,gCAAgC,SAAS,yCAAyC,SAAS,CAAC,KAAK,cAAc,IAAI,EAAE,CACtH,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7D,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE9B,iDAAiD;IACjD,yCAAyC;IACzC,OAAO;QACL,GAAG,QAAQ;QACX,UAAU,EAAE,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE;KAC5D,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAmB,EACnB,MAAc,EACd,uBAAuB,GAAG,KAAK,EAC/B,IAAI,GAAG,CAAC,EACR,SAAqB;IAErB,IAAI,WAAsB,CAAC;IAC3B,IAAI,SAAS,EAAE,CAAC;QACd,YAAY;QACZ,WAAW,GAAG,4BAA4B,CACxC,QAAQ,EACR,SAAS,EACT,uBAAuB,EACvB,IAAI,CACQ,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,SAAS;QACT,WAAW,GAAG,yBAAyB,CACrC,QAAQ,EACR,MAAM,EACN,uBAAuB,EACvB,IAAI,CACQ,CAAC;IACjB,CAAC;IAED,WAAW,GAAG,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAc,CAAC;IAC3E,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CACnB,QAA4B,EAC5B,MAAc,EACd,cAAoC;IAEpC,4CAA4C;IAC5C,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE1D,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACxD,KAAK,OAAO;YACV,OAAO,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACtE,KAAK,YAAY;YACf,OAAO,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1D;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,QAA4B,EAC5B,MAAc,EACd,IAAY;IAOZ,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,KAAK,MAAM;YACT,OAAO,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C;YACE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAA4B,EAC5B,MAAc,EACd,aAAmC,EACnC,SAAiB,EACjB,4BAA4B,GAAG,KAAK,EACpC,oBAAoB,GAAG,mBAAmB;IAE1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAE3B,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,eAAe,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,IAAI,CAAC,eAAe;QAAE,OAAO,QAAQ,CAAC;IAEtC,MAAM,kBAAkB,GAAG,gCAAgC,CAAC;QAC1D,GAAG,QAAQ,CAAC,UAAU;QACtB,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC,eAAe,EAAE,eAAe,CAAC;KAChE,CAAC,CAAC;IAEH,IAAI,UAAU,GAAY,SAAS,CAAC;IACpC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,sBAAsB,GAAG,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAExD,oDAAoD;IACpD,sDAAsD;IACtD,yDAAyD;IACzD,IAAI,4BAA4B,IAAI,sBAAsB,EAAE,cAAc,EAAE,CAAC;QAC3E,UAAU,GAAG,oBAAoB,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAChC,QAAQ,CAAC,YAAY,EACrB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT;YACE,4BAA4B;YAC5B,6BAA6B,EAAE,oBAAoB;SACpD,CACF,CAAC;QAEF,UAAU,GAAI,KAAiC,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,GAAG,QAAQ;QACX,KAAK,EAAE;YACL,GAAG,QAAQ,CAAC,KAAK;YACjB,CAAC,KAAK,CAAC,EAAE,UAAU;SACpB;QACD,UAAU,EAAE,gCAAgC,CAAC;YAC3C,GAAG,QAAQ,CAAC,UAAU;SACvB,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAA4B,EAC5B,KAAa,EACb,aAAmC,EACnC,4BAA4B,GAAG,KAAK,EACpC,oBAAoB,GAAG,mBAAmB;IAE1C,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAEpD,gBAAgB,CAAC,GAAG,EAAE,CAAC;IAEvB,MAAM,kBAAkB,GAAG,gCAAgC,CAAC;QAC1D,GAAG,QAAQ,CAAC,UAAU;KACvB,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,iBAAiB,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,cAAc,CACzB,cAAc,CAAC,gBAAgB,CAAC,EAChC,iBAAiB,CAClB,CAAC;IAEF,MAAM,GAAG,GAAG,gBAAgB,CAC1B,QAAQ,CAAC,YAAY,EACrB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT;QACE,4BAA4B;QAC5B,6BAA6B,EAAE,oBAAoB;KACpD,CACF,CAAC;IAEF,MAAM,SAAS,GAAG,cAAc,CAC9B,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAC3E,CAAC,OAAO,EAAE,CAAC;IAEZ,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,EAAwB,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CACzB,QAA4B,EAC5B,MAAc,EACd,aAAmC,EACnC,QAAyB,EACzB,UAA0B,EAAE;IAE5B,MAAM,EACJ,IAAI,EACJ,oBAAoB,GAAG,KAAK,EAC5B,4BAA4B,GAAG,KAAK,EACpC,6BAA6B,EAC7B,WAAW,GAAG,IAAI,GACnB,GAAG,OAAO,CAAC;IAEZ,IAAI,OAAO,GAAW,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,SAAS,GAAG,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC;IACnE,IAAI,WAAW,GAAG;QAChB,GAAG,QAAQ;KACZ,CAAC;IACF,IAAI,uBAAuB,GAAG,KAAK,CAAC;IAEpC,MAAM,0BAA0B,GAAG,CAAC,oBAAoB,IAAI,SAAS,GAAG,CAAC,CAAC;IAE1E,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,EACJ,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,iBAAiB,EAC3B,uBAAuB,EAAE,UAAU,GACpC,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAElD,OAAO,GAAG,iBAAiB,CAAC;QAC5B,SAAS,GAAG,cAAc,CAAC;QAC3B,WAAW,GAAG,iBAAiB,CAAC;QAChC,uBAAuB,GAAG,UAAU,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,WAAW,GAAG;YACZ,GAAG,WAAW;YACd,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,mCAAmC;IACnC,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IAClE,CAAC;IAED,2DAA2D;IAC3D,wBAAwB;IACxB,WAAW,GAAG,cAAc,CAC1B,WAAW,EACX,OAAO,EACP,uBAAuB,EACvB,SAAS,EACT,OAAO,CAAC,aAAa,EAAE,SAAS,CACjC,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAEpC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,oBAAoB,CACjC,WAAW,EACX,MAAM,CAAC,KAAK,EACZ,aAAa,CACd,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,0BAA0B,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,oBAAoB,CACpC,WAAW,EACX,OAAO,EACP,aAAa,EACb,SAAS,EACT,4BAA4B,EAC5B,6BAA6B,CAC9B,CAAC;QAEF,gDAAgD;QAChD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG;gBACZ,GAAG,SAAS;gBACZ,UAAU,EAAE,WAAW,CAAC,UAAU;aACnC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,gDAAgD;IAChD,gBAAgB;IAChB,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1C,6CAA6C;QAC7C,iBAAiB;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAE/D,mEAAmE;YAEnE,oDAAoD;YACpD,mDAAmD;YACnD,IAAI,QAAQ,EAAE,CAAC;gBACb,wCAAwC;gBACxC,MAAM,CAAC,GAAG,EAAE;oBACV,qDAAqD;oBACrD,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAClC,kCAAkC;gBACpC,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,iBAAiB;gBACjB,oDAAoD;gBACpD,MAAM;YACR,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kGAAkG;YAClG,+CAA+C;YAC/C,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7D,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;YACrD,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CACb,2CAA2C,OAAO,CAAC,KAAK,EAAE,CAC3D,CAAC;YACJ,CAAC;YACD,aAAa,CAAC,kBAAkB,CAAC,CAAC,KAAK,GAAI,KAAe,CAAC,OAAO,CAAC;YAEnE,aAAa,CAAC,kBAAkB,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YAE3C,IAAI,0BAA0B,EAAE,CAAC;gBAC/B,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;oBACtB,GAAG,QAAQ,CAAC,KAAK;iBAClB,CAAC,CAAC;gBACH,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5D,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrE,CAAC;gBACD,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;oBAC3B,GAAG,QAAQ,CAAC,UAAU;oBACtB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACf,GAAG,gBAAgB;wBACnB;4BACE,GAAG,aAAa,CAAC,kBAAkB,CAAC;yBACrC;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,+BAA+B;IAC/B,0DAA0D;IAC1D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,iDAAiD;IACjD,+CAA+C;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;IACxC,IAAI,IAAI,GAAG,yBAAyB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACzD,IACE,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI;QACrC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,KAAK,EAAE,EAC3C,CAAC;QACD,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED,kEAAkE;IAClE,MAAM,eAAe,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,aAAa,EAAE,CAAC;QAClB,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;QAE1B,IAAI,4BAA4B,EAAE,CAAC;YACjC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAC1C,WAAW,CAAC,KAAiC,CAAC,KAAK,CAAC,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAC3B,YAAkC,EAClC,eAAe,GAAG,WAAW;IAE7B,MAAM,OAAO,GAAoB,CAC/B,QAA4B,EAC5B,MAAc,EACd,QAAyB,EACzB,OAAwB,EACxB,EAAE;QACF,OAAO,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAA4B,EAC5B,KAAuB,EACvB,cAAoC;IAEpC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;IAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3B,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;IACnB,GAAG,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;IAE/B,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE/C,gDAAgD;IAChD,wCAAwC;IACxC,MAAM,WAAW,GAAG,gBAAgB,CAClC,QAAQ,CAAC,YAAY,EACrB;QACE,GAAG,QAAQ,CAAC,UAAU;QACtB,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC;KAClD,EACD,cAAc,CACf,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC;IACnC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;IAErC,gEAAgE;IAChE,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAEjD,6EAA6E;IAC7E,wEAAwE;IACxE,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,MAAM;QAClD,CAAC,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,cAAc;QAClE,CAAC,CAAC,gBAAgB,CAAC,MAAM;YACvB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,cAAc;YACpC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvE,6CAA6C;IAC7C,OAAO,gBAAgB,CACrB,QAAQ,CAAC,YAAY,EACrB;QACE,GAAG,QAAQ,CAAC,UAAU;QACtB,MAAM,EAAE;YACN,GAAG,kBAAkB;YACrB;gBACE,IAAI,EAAE,CAAC;gBACP,GAAG,MAAM;gBACT,MAAM;gBACN,cAAc,EAAE,kBAAkB;gBAClC,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,yBAAyB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC;aAC/D;YACD,GAAG,gBAAgB;gBACjB,qDAAqD;iBACpD,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACvB,GAAG,MAAM;gBACT,KAAK,EAAE,cAAc,GAAG,KAAK,GAAG,CAAC;aAClC,CAAC,CAAC;SACN;KACF,EACD,cAAc,CACf,CAAC;AACJ,CAAC"}
@@ -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"}