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,4 +1,268 @@
1
- import stringify from "safe-stable-stringify";
1
+ import stringifyJson, { stringify } from "safe-stable-stringify";
2
+ import { hashBrowser } from "./crypto.js";
3
+ import { HashMismatchError } from "./errors.js";
4
+ import { createPresignedHeader } from "./header.js";
5
+ import { generateId } from "./utils.js";
6
+ export function isNoopOperation(op) {
7
+ return (op.type === "NOOP" &&
8
+ op.skip !== undefined &&
9
+ op.skip > 0 &&
10
+ op.hash !== undefined);
11
+ }
12
+ export function isUndoRedo(action) {
13
+ return ["UNDO", "REDO"].includes(action.type);
14
+ }
15
+ export function isUndo(action) {
16
+ return action.type === "UNDO";
17
+ }
18
+ export function isDocumentAction(action) {
19
+ return ["SET_NAME", "UNDO", "REDO", "PRUNE", "LOAD_STATE"].includes(action.type);
20
+ }
21
+ /**
22
+ * Important note: it is the responsibility of the caller to set the document type
23
+ * on the header.
24
+ */
25
+ export function baseCreateDocument(createState, initialState) {
26
+ const state = createState(initialState);
27
+ const header = createPresignedHeader();
28
+ const phDocument = {
29
+ header,
30
+ state,
31
+ initialState: state,
32
+ operations: { global: [], local: [] },
33
+ clipboard: [],
34
+ };
35
+ return phDocument;
36
+ }
37
+ export function hashDocumentStateForScope(document, scope = "global") {
38
+ const stateString = stringifyJson(document.state[scope] || "");
39
+ return hashBrowser(stateString);
40
+ }
41
+ export function readOnly(value) {
42
+ return Object.freeze(value);
43
+ }
44
+ /**
45
+ * Maps skipped operations in an array of operations.
46
+ * Skipped operations are operations that are ignored during processing.
47
+ * @param operations - The array of operations to map.
48
+ * @param skippedHeadOperations - The number of operations to skip at the head of the array of operations.
49
+ * @returns An array of mapped operations with ignore flag indicating if the operation is skipped.
50
+ * @throws Error if the operation index is invalid and there are missing operations.
51
+ */
52
+ export function mapSkippedOperations(operations, skippedHeadOperations) {
53
+ const ops = [...operations];
54
+ let skipped = skippedHeadOperations || 0;
55
+ let latestOpIndex = ops.length > 0 ? ops[ops.length - 1].index : 0;
56
+ const scopeOpsWithIgnore = [];
57
+ for (const operation of ops.reverse()) {
58
+ if (skipped > 0) {
59
+ const operationsDiff = latestOpIndex - operation.index;
60
+ skipped -= operationsDiff;
61
+ }
62
+ if (skipped < 0) {
63
+ throw new Error("Invalid operation index, missing operations");
64
+ }
65
+ const mappedOp = {
66
+ ignore: skipped > 0,
67
+ operation,
68
+ };
69
+ // here we add 1 to the skip number because we want to get the number of
70
+ // operations that we want to move the pointer back to get the latest valid operation
71
+ // operation.skip = 1 means that we want to move the pointer back 2 operations to get to the latest valid operation
72
+ const operationSkip = operation.skip > 0 ? operation.skip + 1 : 0;
73
+ if (operationSkip > 0 && operationSkip > skipped) {
74
+ const skipDiff = operationSkip - skipped;
75
+ skipped = skipped + skipDiff;
76
+ }
77
+ latestOpIndex = operation.index;
78
+ scopeOpsWithIgnore.push(mappedOp);
79
+ }
80
+ return scopeOpsWithIgnore.reverse();
81
+ }
82
+ // Flattens the mapped operations (with ignore flag) from all scopes into
83
+ // a single array and sorts them by timestamp
84
+ export function sortMappedOperations(operations) {
85
+ return Object.values(operations)
86
+ .flatMap((array) => array)
87
+ .sort((a, b) => new Date(a.operation.timestampUtcMs).getTime() -
88
+ new Date(b.operation.timestampUtcMs).getTime());
89
+ }
90
+ // Default createState function that just returns the state as-is
91
+ const defaultCreateState = (state) => {
92
+ return state;
93
+ };
94
+ // Runs the operations on the initial data using the
95
+ // provided document reducer.
96
+ // This rebuilds the document according to the provided actions.
97
+ export function replayDocument(initialState, operations, reducer, dispatch, header, skipHeaderOperations = {}, options) {
98
+ const { checkHashes = true, reuseOperationResultingState, operationResultingStateParser = parseResultingState, } = options || {};
99
+ let documentState = initialState;
100
+ const operationsToReplay = [];
101
+ // Initialize with all scopes found in operations, plus global and local for backward compatibility
102
+ const allScopes = new Set([...Object.keys(operations), "global", "local"]);
103
+ const initialOperations = {};
104
+ for (const scope of allScopes) {
105
+ initialOperations[scope] = [];
106
+ }
107
+ // if operation resulting state is to be used then
108
+ // looks for the last operation with state of each
109
+ // scope to use it as the starting point and only
110
+ // replay operations that follow it
111
+ if (reuseOperationResultingState) {
112
+ for (const [scope, scopeOperations] of Object.entries(operations)) {
113
+ if (!scopeOperations) {
114
+ continue;
115
+ }
116
+ const index = scopeOperations.findLastIndex((s) => !!s.resultingState);
117
+ if (index < 0) {
118
+ operationsToReplay.push(...scopeOperations);
119
+ continue;
120
+ }
121
+ const opWithState = scopeOperations[index];
122
+ if (!opWithState || !opWithState.resultingState)
123
+ continue;
124
+ try {
125
+ const scopeState = operationResultingStateParser(opWithState.resultingState);
126
+ documentState = {
127
+ ...documentState,
128
+ // TODO how to deal with attachments?
129
+ [scope]: scopeState,
130
+ };
131
+ const scopeInitialOps = initialOperations[scope];
132
+ if (scopeInitialOps) {
133
+ scopeInitialOps.push(...scopeOperations.slice(0, index + 1));
134
+ }
135
+ operationsToReplay.push(...scopeOperations.slice(index + 1));
136
+ }
137
+ catch {
138
+ /* if parsing fails then keeps replays all scope operations */
139
+ operationsToReplay.push(...scopeOperations);
140
+ }
141
+ }
142
+ }
143
+ else {
144
+ operationsToReplay.push(...Object.values(operations).flatMap((ops) => ops || []));
145
+ }
146
+ // builds a new document from the initial data
147
+ const document = baseCreateDocument((defaultCreateState), documentState);
148
+ if (header?.slug) {
149
+ document.header.slug = header.slug;
150
+ }
151
+ document.initialState = initialState;
152
+ document.operations = initialOperations;
153
+ let result = document;
154
+ // if there are operations left without resulting state
155
+ // then replays them
156
+ if (operationsToReplay.length) {
157
+ result = operationsToReplay.reduce((document, operation) => {
158
+ const doc = reducer(document, operation.action, dispatch, {
159
+ ignoreSkipOperations: true,
160
+ checkHashes,
161
+ replayOptions: {
162
+ operation,
163
+ },
164
+ });
165
+ return doc;
166
+ }, document);
167
+ }
168
+ // if not then updates the document header according
169
+ // to the latest operation of each scope
170
+ else {
171
+ for (const scopeOperations of Object.values(initialOperations)) {
172
+ if (!scopeOperations) {
173
+ continue;
174
+ }
175
+ const lastOperation = scopeOperations.at(-1);
176
+ if (lastOperation) {
177
+ result = updateHeaderRevision(result, lastOperation.action.scope);
178
+ }
179
+ }
180
+ }
181
+ // if hash generation was skipped then checks if the hash
182
+ // of each scope matches the hash of last operation
183
+ if (!checkHashes) {
184
+ for (const scope of Object.keys(result.state)) {
185
+ for (let i = operationsToReplay.length - 1; i >= 0; i--) {
186
+ const operation = operationsToReplay[i];
187
+ if (operation.action.scope !== scope) {
188
+ continue;
189
+ }
190
+ if (operation.hash !== hashDocumentStateForScope(result, scope)) {
191
+ throw new HashMismatchError(scope, result, operation);
192
+ }
193
+ else {
194
+ break;
195
+ }
196
+ }
197
+ }
198
+ }
199
+ // reuses operation timestamp if provided
200
+ // Initialize with all scopes from both result.operations and input operations
201
+ const allResultScopes = new Set([
202
+ ...Object.keys(result.operations),
203
+ ...Object.keys(operations),
204
+ "global",
205
+ "local",
206
+ ]);
207
+ const initialResultOperations = {};
208
+ for (const scope of allResultScopes) {
209
+ initialResultOperations[scope] = [];
210
+ }
211
+ // Iterate over all scopes (not just result.operations) to preserve empty scopes
212
+ const resultOperations = Array.from(allResultScopes).reduce((acc, scope) => {
213
+ const scopeOps = result.operations[scope] || [];
214
+ return {
215
+ ...acc,
216
+ [scope]: [
217
+ ...scopeOps.map((operation, index) => {
218
+ return {
219
+ ...operation,
220
+ timestamp: operations[scope]?.[index]?.timestampUtcMs ??
221
+ operation.timestampUtcMs,
222
+ };
223
+ }),
224
+ ],
225
+ };
226
+ }, initialResultOperations);
227
+ // gets the last modified timestamp from the latest operation
228
+ const lastModified = header
229
+ ? header.lastModifiedAtUtcIso
230
+ : Object.values(resultOperations).reduce((acc, curr) => {
231
+ if (!curr) {
232
+ return acc;
233
+ }
234
+ const operation = curr.at(-1);
235
+ if (operation) {
236
+ if (operation.timestampUtcMs > acc) {
237
+ return operation.timestampUtcMs;
238
+ }
239
+ }
240
+ return acc;
241
+ }, document.header.lastModifiedAtUtcIso);
242
+ if (header) {
243
+ result.header = {
244
+ ...header,
245
+ revision: result.header.revision,
246
+ lastModifiedAtUtcIso: lastModified,
247
+ };
248
+ }
249
+ return {
250
+ ...result,
251
+ operations: resultOperations,
252
+ };
253
+ }
254
+ export function parseResultingState(state) {
255
+ const stateType = typeof state;
256
+ if (stateType === "string") {
257
+ return JSON.parse(state);
258
+ }
259
+ else if (stateType === "object") {
260
+ return state;
261
+ }
262
+ else {
263
+ throw new Error(`Providing resulting state is of type: ${stateType}`);
264
+ }
265
+ }
2
266
  export var IntegrityIssueType;
3
267
  (function (IntegrityIssueType) {
4
268
  IntegrityIssueType["UNEXPECTED_INDEX"] = "UNEXPECTED_INDEX";
@@ -70,23 +334,34 @@ export function addUndo(sortedOperations) {
70
334
  const latestOperation = operationsCopy[operationsCopy.length - 1];
71
335
  if (!latestOperation)
72
336
  return operationsCopy;
73
- if (latestOperation.type === "NOOP") {
337
+ if (latestOperation.action.type === "NOOP") {
74
338
  operationsCopy.push({
75
339
  ...latestOperation,
76
340
  index: latestOperation.index,
77
- type: "NOOP",
78
341
  skip: nextSkipNumber(sortedOperations),
342
+ action: {
343
+ ...latestOperation.action,
344
+ // TODO: this will break the signature...
345
+ id: generateId(),
346
+ timestampUtcMs: new Date().toISOString(),
347
+ type: "NOOP",
348
+ },
79
349
  });
80
350
  }
81
351
  else {
82
352
  operationsCopy.push({
83
- type: "NOOP",
353
+ id: generateId(),
354
+ timestampUtcMs: new Date().toISOString(),
84
355
  index: latestOperation.index + 1,
85
- timestamp: new Date().toISOString(),
86
- input: {},
87
356
  skip: 1,
88
- scope: latestOperation.scope,
89
357
  hash: latestOperation.hash,
358
+ action: {
359
+ id: generateId(),
360
+ timestampUtcMs: new Date().toISOString(),
361
+ type: "NOOP",
362
+ input: {},
363
+ scope: latestOperation.action.scope,
364
+ },
90
365
  });
91
366
  }
92
367
  return operationsCopy;
@@ -106,8 +381,8 @@ export function sortOperations(operations) {
106
381
  // merge => [0:0, 1:0, 6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
107
382
  export function reshuffleByTimestamp(startIndex, opsA, opsB) {
108
383
  return [...opsA, ...opsB]
109
- .sort((a, b) => new Date(a.timestamp || "").getTime() -
110
- new Date(b.timestamp || "").getTime())
384
+ .sort((a, b) => new Date(a.timestampUtcMs || "").getTime() -
385
+ new Date(b.timestampUtcMs || "").getTime())
111
386
  .map((op, i) => ({
112
387
  ...op,
113
388
  index: startIndex.index + i,
@@ -116,8 +391,8 @@ export function reshuffleByTimestamp(startIndex, opsA, opsB) {
116
391
  }
117
392
  export function reshuffleByTimestampAndIndex(startIndex, opsA, opsB) {
118
393
  return [...opsA, ...opsB]
119
- .sort((a, b) => new Date(a.timestamp || "").getTime() -
120
- new Date(b.timestamp || "").getTime())
394
+ .sort((a, b) => new Date(a.timestampUtcMs || "").getTime() -
395
+ new Date(b.timestampUtcMs || "").getTime())
121
396
  .sort((a, b) => a.index - b.index)
122
397
  .map((op, i) => ({
123
398
  ...op,
@@ -127,7 +402,23 @@ export function reshuffleByTimestampAndIndex(startIndex, opsA, opsB) {
127
402
  }
128
403
  // TODO: implement better operation equality function
129
404
  export function operationsAreEqual(op1, op2) {
130
- return stringify(op1) === stringify(op2);
405
+ const a = op1;
406
+ const b = op2;
407
+ const aComparable = {
408
+ index: a.index,
409
+ skip: a.skip,
410
+ type: a.type ?? null,
411
+ scope: a.scope ?? null,
412
+ input: a.input ?? null,
413
+ };
414
+ const bComparable = {
415
+ index: b.index,
416
+ skip: b.skip,
417
+ type: b.type ?? null,
418
+ scope: b.scope ?? null,
419
+ input: b.input ?? null,
420
+ };
421
+ return stringify(aComparable) === stringify(bComparable);
131
422
  }
132
423
  // [T0:0 T1:0 T2:0 T3:0] + [B4:0 B5:0] = [T0:0 T1:0 T2:0 T3:0 B4:0 B5:0]
133
424
  // [T0:0 T1:0 T2:0 T3:0] + [B3:0 B4:0] = [T0:0 T1:0 T2:0 B3:0 B4:0]
@@ -272,10 +563,10 @@ export function checkOperationsIntegrity(operations) {
272
563
  }
273
564
  export function groupOperationsByScope(operations) {
274
565
  const result = operations.reduce((acc, operation) => {
275
- if (!acc[operation.scope]) {
276
- acc[operation.scope] = [];
566
+ if (!acc[operation.action.scope]) {
567
+ acc[operation.action.scope] = [];
277
568
  }
278
- acc[operation.scope]?.push(operation);
569
+ acc[operation.action.scope]?.push(operation);
279
570
  return acc;
280
571
  }, {});
281
572
  return result;
@@ -325,14 +616,14 @@ export function prepareOperations(operationsHistory, newOperations) {
325
616
  export function removeExistingOperations(newOperations, operationsHistory) {
326
617
  return newOperations.filter((newOperation) => {
327
618
  return !operationsHistory.some((historyOperation) => {
328
- return ((newOperation.type === "NOOP" &&
619
+ return ((newOperation.action.type === "NOOP" &&
329
620
  newOperation.skip === 0 &&
330
621
  newOperation.index === historyOperation.index) ||
331
622
  (newOperation.index === historyOperation.index &&
332
623
  newOperation.skip === historyOperation.skip &&
333
- newOperation.scope === historyOperation.scope &&
624
+ newOperation.action.scope === historyOperation.action.scope &&
334
625
  newOperation.hash === historyOperation.hash &&
335
- newOperation.type === historyOperation.type));
626
+ newOperation.action.type === historyOperation.action.type));
336
627
  });
337
628
  });
338
629
  }
@@ -360,6 +651,9 @@ export function skipHeaderOperations(operations, skipHeaderOperation) {
360
651
  export function garbageCollectDocumentOperations(documentOperations) {
361
652
  const clearedOperations = Object.entries(documentOperations).reduce((acc, entry) => {
362
653
  const [scope, ops] = entry;
654
+ if (!ops) {
655
+ return acc;
656
+ }
363
657
  return {
364
658
  ...acc,
365
659
  [scope]: garbageCollect(sortOperations(ops)),
@@ -388,13 +682,18 @@ export function filterDocumentOperationsResultingState(documentOperations) {
388
682
  return {};
389
683
  }
390
684
  const entries = Object.entries(documentOperations);
391
- return entries.reduce((acc, [scope, operations]) => ({
392
- ...acc,
393
- [scope]: operations.map((op) => {
394
- const { resultingState, ...restProps } = op;
395
- return restProps;
396
- }),
397
- }), {});
685
+ return entries.reduce((acc, [scope, operations]) => {
686
+ if (!operations) {
687
+ return acc;
688
+ }
689
+ return {
690
+ ...acc,
691
+ [scope]: operations.map((op) => {
692
+ const { resultingState, ...restProps } = op;
693
+ return restProps;
694
+ }),
695
+ };
696
+ }, {});
398
697
  }
399
698
  /**
400
699
  * Calculates the difference between two arrays of operations.
@@ -408,4 +707,44 @@ export function filterDocumentOperationsResultingState(documentOperations) {
408
707
  export function diffOperations(clearedOperationsA, clearedOperationsB) {
409
708
  return clearedOperationsA.filter((operationA) => !clearedOperationsB.some((operationB) => operationA.index === operationB.index));
410
709
  }
411
- //# sourceMappingURL=document-helpers.js.map
710
+ // it's operations, falling back to the initial state
711
+ export function getDocumentLastModified(document) {
712
+ const sortedOperations = sortOperations(Object.values(document.operations).flatMap((ops) => ops || []));
713
+ return (sortedOperations.at(-1)?.timestampUtcMs ||
714
+ document.header.lastModifiedAtUtcIso);
715
+ }
716
+ /**
717
+ * Gets the next revision number based on the provided scope.
718
+ *
719
+ * @param state The current state of the document.
720
+ * @param scope The scope of the operation.
721
+ * @returns The next revision number.
722
+ */
723
+ function getNextRevision(document, scope) {
724
+ const scopeOperations = document.operations[scope];
725
+ const latestOperationIndex = scopeOperations?.at(-1)?.index ?? -1;
726
+ return (latestOperationIndex ?? -1) + 1;
727
+ }
728
+ /**
729
+ * Updates the document header with the latest revision number and
730
+ * date of last modification.
731
+ *
732
+ * @param state The current state of the document.
733
+ * @param operation The action being applied to the document.
734
+ * @returns The updated document state.
735
+ */
736
+ export function updateHeaderRevision(document, scope) {
737
+ const header = {
738
+ ...document.header,
739
+ revision: {
740
+ ...document.header.revision,
741
+ [scope]: getNextRevision(document, scope),
742
+ },
743
+ lastModifiedAtUtcIso: getDocumentLastModified(document),
744
+ };
745
+ return {
746
+ ...document,
747
+ header,
748
+ };
749
+ }
750
+ //# sourceMappingURL=documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../../src/core/documents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { ZodIssue } from "zod";
2
+ import type { Operation, PHDocument } from "./ph-types.js";
3
+ export declare const FileSystemError: Error;
4
+ export declare class InvalidActionInputError extends Error {
5
+ data: unknown;
6
+ constructor(data: unknown);
7
+ }
8
+ export declare class InvalidActionInputZodError extends InvalidActionInputError {
9
+ issues: ZodIssue[];
10
+ constructor(issues: ZodIssue[]);
11
+ }
12
+ export declare class HashMismatchError extends Error {
13
+ protected _scope: string;
14
+ protected _document: PHDocument;
15
+ protected _operation: Operation;
16
+ constructor(scope: string, document: PHDocument, operation: Operation);
17
+ get document(): PHDocument;
18
+ get scope(): string;
19
+ get operation(): Operation;
20
+ }
21
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3D,eAAO,MAAM,eAAe,OAA0C,CAAC;AAEvE,qBAAa,uBAAwB,SAAQ,KAAK;IACzC,IAAI,EAAE,OAAO,CAAC;gBACT,IAAI,EAAE,OAAO;CAO1B;AAED,qBAAa,0BAA2B,SAAQ,uBAAuB;IAC9D,MAAM,EAAE,QAAQ,EAAE,CAAC;gBAEd,MAAM,EAAE,QAAQ,EAAE;CAK/B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;gBAEpB,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS;IAerE,IAAI,QAAQ,eAEX;IAED,IAAI,KAAK,WAER;IAED,IAAI,SAAS,cAEZ;CACF"}
@@ -0,0 +1,47 @@
1
+ export const FileSystemError = new Error("File system not available.");
2
+ export class InvalidActionInputError extends Error {
3
+ data;
4
+ constructor(data) {
5
+ super();
6
+ this.name = "InvalidActionInputError";
7
+ this.data = data;
8
+ this.message =
9
+ this.message || `Invalid action input: ${JSON.stringify(data, null, 2)}`;
10
+ }
11
+ }
12
+ export class InvalidActionInputZodError extends InvalidActionInputError {
13
+ issues;
14
+ constructor(issues) {
15
+ super(issues);
16
+ this.issues = issues;
17
+ this.name = "InvalidActionInputZodError";
18
+ }
19
+ }
20
+ export class HashMismatchError extends Error {
21
+ _scope;
22
+ _document;
23
+ _operation;
24
+ constructor(scope, document, operation) {
25
+ super();
26
+ this.name = "HashMismatchError";
27
+ this._document = document;
28
+ this._scope = scope;
29
+ this._operation = operation;
30
+ this.message = JSON.stringify({
31
+ error: `Hash mismatch on document ${document.header.id}, scope ${scope}, index ${operation.index}`,
32
+ document,
33
+ scope,
34
+ operation,
35
+ });
36
+ }
37
+ get document() {
38
+ return this._document;
39
+ }
40
+ get scope() {
41
+ return this._scope;
42
+ }
43
+ get operation() {
44
+ return this._operation;
45
+ }
46
+ }
47
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAEvE,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACzC,IAAI,CAAU;IACrB,YAAY,IAAa;QACvB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO;YACV,IAAI,CAAC,OAAO,IAAI,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAC7E,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,uBAAuB;IAC9D,MAAM,CAAa;IAE1B,YAAY,MAAkB;QAC5B,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAChC,MAAM,CAAS;IACf,SAAS,CAAa;IACtB,UAAU,CAAY;IAEhC,YAAY,KAAa,EAAE,QAAoB,EAAE,SAAoB;QACnE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC5B,KAAK,EAAE,6BAA6B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,WAAW,SAAS,CAAC,KAAK,EAAE;YAClG,QAAQ;YACR,KAAK;YACL,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import JSZip from "jszip";
2
+ import type { PHBaseState, PHDocument } from "./ph-types.js";
3
+ import type { FileInput, Reducer, ReplayDocumentOptions } from "./types.js";
4
+ export declare function writeFileBrowser(path: string, name: string, stream: Uint8Array): Promise<string>;
5
+ export declare function readFileBrowser(path: string): void;
6
+ export declare function fetchFileBrowser(url: string): Promise<{
7
+ data: Buffer;
8
+ mimeType?: string;
9
+ }>;
10
+ export declare const getFileBrowser: (file: string) => Promise<void>;
11
+ export declare function createZip(document: PHDocument): JSZip;
12
+ export declare function baseSaveToFileHandle(document: PHDocument, input: FileSystemFileHandle): Promise<void>;
13
+ export declare function baseLoadFromInput<TState extends PHBaseState>(input: FileInput, reducer: Reducer<TState>, options?: ReplayDocumentOptions): Promise<PHDocument<TState>>;
14
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/core/files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAEV,WAAW,EACX,UAAU,EAEX,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAG5E,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,QAE3C;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAE9C;AAED,eAAO,MAAM,cAAc,GAAU,MAAM,MAAM,kBAEhD,CAAC;AAEF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,SAkB7C;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,oBAAoB,iBAO5B;AAED,wBAAsB,iBAAiB,CAAC,MAAM,SAAS,WAAW,EAChE,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAI7B"}