document-model 4.1.0-dev.7 → 4.1.0-dev.70

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 (440) 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 +179 -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} +321 -19
  13. package/dist/src/core/documents.js.map +1 -0
  14. package/dist/src/{document/utils → core}/errors.d.ts +2 -1
  15. package/dist/src/core/errors.d.ts.map +1 -0
  16. package/dist/src/{document/utils → core}/errors.js +1 -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 +256 -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 +150 -119
  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 +486 -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 +1 -1
  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 +4 -24
  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.map +0 -1
  235. package/dist/src/document/utils/errors.js.map +0 -1
  236. package/dist/src/document/utils/file.d.ts.map +0 -1
  237. package/dist/src/document/utils/file.js +0 -152
  238. package/dist/src/document/utils/file.js.map +0 -1
  239. package/dist/src/document/utils/header.d.ts.map +0 -1
  240. package/dist/src/document/utils/header.js.map +0 -1
  241. package/dist/src/document/utils/node.d.ts +0 -18
  242. package/dist/src/document/utils/node.d.ts.map +0 -1
  243. package/dist/src/document/utils/node.js +0 -62
  244. package/dist/src/document/utils/node.js.map +0 -1
  245. package/dist/src/document/utils/validation.d.ts +0 -3
  246. package/dist/src/document/utils/validation.d.ts.map +0 -1
  247. package/dist/src/document/utils/validation.js.map +0 -1
  248. package/dist/src/document-model/custom/reducers/header.d.ts +0 -3
  249. package/dist/src/document-model/custom/reducers/header.d.ts.map +0 -1
  250. package/dist/src/document-model/custom/reducers/header.js +0 -23
  251. package/dist/src/document-model/custom/reducers/header.js.map +0 -1
  252. package/dist/src/document-model/custom/reducers/module.d.ts +0 -3
  253. package/dist/src/document-model/custom/reducers/module.d.ts.map +0 -1
  254. package/dist/src/document-model/custom/reducers/module.js +0 -41
  255. package/dist/src/document-model/custom/reducers/module.js.map +0 -1
  256. package/dist/src/document-model/custom/reducers/operation-error.d.ts +0 -3
  257. package/dist/src/document-model/custom/reducers/operation-error.d.ts.map +0 -1
  258. package/dist/src/document-model/custom/reducers/operation-error.js +0 -94
  259. package/dist/src/document-model/custom/reducers/operation-error.js.map +0 -1
  260. package/dist/src/document-model/custom/reducers/operation-example.d.ts +0 -3
  261. package/dist/src/document-model/custom/reducers/operation-example.d.ts.map +0 -1
  262. package/dist/src/document-model/custom/reducers/operation-example.js +0 -53
  263. package/dist/src/document-model/custom/reducers/operation-example.js.map +0 -1
  264. package/dist/src/document-model/custom/reducers/operation.d.ts +0 -3
  265. package/dist/src/document-model/custom/reducers/operation.d.ts.map +0 -1
  266. package/dist/src/document-model/custom/reducers/operation.js +0 -125
  267. package/dist/src/document-model/custom/reducers/operation.js.map +0 -1
  268. package/dist/src/document-model/custom/reducers/state.d.ts +0 -3
  269. package/dist/src/document-model/custom/reducers/state.d.ts.map +0 -1
  270. package/dist/src/document-model/custom/reducers/state.js +0 -71
  271. package/dist/src/document-model/custom/reducers/state.js.map +0 -1
  272. package/dist/src/document-model/custom/reducers/versioning.d.ts +0 -8
  273. package/dist/src/document-model/custom/reducers/versioning.d.ts.map +0 -1
  274. package/dist/src/document-model/custom/reducers/versioning.js +0 -23
  275. package/dist/src/document-model/custom/reducers/versioning.js.map +0 -1
  276. package/dist/src/document-model/custom/utils.d.ts +0 -8
  277. package/dist/src/document-model/custom/utils.d.ts.map +0 -1
  278. package/dist/src/document-model/custom/utils.js.map +0 -1
  279. package/dist/src/document-model/gen/actions.d.ts +0 -16
  280. package/dist/src/document-model/gen/actions.d.ts.map +0 -1
  281. package/dist/src/document-model/gen/actions.js +0 -8
  282. package/dist/src/document-model/gen/actions.js.map +0 -1
  283. package/dist/src/document-model/gen/constants.d.ts +0 -7
  284. package/dist/src/document-model/gen/constants.d.ts.map +0 -1
  285. package/dist/src/document-model/gen/constants.js +0 -34
  286. package/dist/src/document-model/gen/constants.js.map +0 -1
  287. package/dist/src/document-model/gen/creators.d.ts +0 -8
  288. package/dist/src/document-model/gen/creators.d.ts.map +0 -1
  289. package/dist/src/document-model/gen/creators.js +0 -8
  290. package/dist/src/document-model/gen/creators.js.map +0 -1
  291. package/dist/src/document-model/gen/document-model.d.ts +0 -3
  292. package/dist/src/document-model/gen/document-model.d.ts.map +0 -1
  293. package/dist/src/document-model/gen/document-model.js.map +0 -1
  294. package/dist/src/document-model/gen/header/actions.d.ts +0 -28
  295. package/dist/src/document-model/gen/header/actions.d.ts.map +0 -1
  296. package/dist/src/document-model/gen/header/actions.js +0 -2
  297. package/dist/src/document-model/gen/header/actions.js.map +0 -1
  298. package/dist/src/document-model/gen/header/creators.d.ts +0 -9
  299. package/dist/src/document-model/gen/header/creators.d.ts.map +0 -1
  300. package/dist/src/document-model/gen/header/creators.js +0 -9
  301. package/dist/src/document-model/gen/header/creators.js.map +0 -1
  302. package/dist/src/document-model/gen/header/object.d.ts +0 -13
  303. package/dist/src/document-model/gen/header/object.d.ts.map +0 -1
  304. package/dist/src/document-model/gen/header/object.js +0 -23
  305. package/dist/src/document-model/gen/header/object.js.map +0 -1
  306. package/dist/src/document-model/gen/header/operations.d.ts +0 -11
  307. package/dist/src/document-model/gen/header/operations.d.ts.map +0 -1
  308. package/dist/src/document-model/gen/header/operations.js +0 -2
  309. package/dist/src/document-model/gen/header/operations.js.map +0 -1
  310. package/dist/src/document-model/gen/module/actions.d.ts +0 -24
  311. package/dist/src/document-model/gen/module/actions.d.ts.map +0 -1
  312. package/dist/src/document-model/gen/module/actions.js +0 -2
  313. package/dist/src/document-model/gen/module/actions.js.map +0 -1
  314. package/dist/src/document-model/gen/module/creators.d.ts +0 -8
  315. package/dist/src/document-model/gen/module/creators.d.ts.map +0 -1
  316. package/dist/src/document-model/gen/module/creators.js +0 -8
  317. package/dist/src/document-model/gen/module/creators.js.map +0 -1
  318. package/dist/src/document-model/gen/module/object.d.ts +0 -12
  319. package/dist/src/document-model/gen/module/object.d.ts.map +0 -1
  320. package/dist/src/document-model/gen/module/object.js +0 -20
  321. package/dist/src/document-model/gen/module/object.js.map +0 -1
  322. package/dist/src/document-model/gen/module/operations.d.ts +0 -10
  323. package/dist/src/document-model/gen/module/operations.d.ts.map +0 -1
  324. package/dist/src/document-model/gen/module/operations.js +0 -2
  325. package/dist/src/document-model/gen/module/operations.js.map +0 -1
  326. package/dist/src/document-model/gen/object.d.ts +0 -29
  327. package/dist/src/document-model/gen/object.d.ts.map +0 -1
  328. package/dist/src/document-model/gen/object.js +0 -46
  329. package/dist/src/document-model/gen/object.js.map +0 -1
  330. package/dist/src/document-model/gen/operation/actions.d.ts +0 -44
  331. package/dist/src/document-model/gen/operation/actions.d.ts.map +0 -1
  332. package/dist/src/document-model/gen/operation/actions.js +0 -2
  333. package/dist/src/document-model/gen/operation/actions.js.map +0 -1
  334. package/dist/src/document-model/gen/operation/creators.d.ts +0 -13
  335. package/dist/src/document-model/gen/operation/creators.d.ts.map +0 -1
  336. package/dist/src/document-model/gen/operation/creators.js +0 -13
  337. package/dist/src/document-model/gen/operation/creators.js.map +0 -1
  338. package/dist/src/document-model/gen/operation/object.d.ts +0 -18
  339. package/dist/src/document-model/gen/operation/object.d.ts.map +0 -1
  340. package/dist/src/document-model/gen/operation/object.js +0 -35
  341. package/dist/src/document-model/gen/operation/object.js.map +0 -1
  342. package/dist/src/document-model/gen/operation/operations.d.ts +0 -15
  343. package/dist/src/document-model/gen/operation/operations.d.ts.map +0 -1
  344. package/dist/src/document-model/gen/operation/operations.js +0 -2
  345. package/dist/src/document-model/gen/operation/operations.js.map +0 -1
  346. package/dist/src/document-model/gen/operation-error/actions.d.ts +0 -32
  347. package/dist/src/document-model/gen/operation-error/actions.d.ts.map +0 -1
  348. package/dist/src/document-model/gen/operation-error/actions.js +0 -2
  349. package/dist/src/document-model/gen/operation-error/actions.js.map +0 -1
  350. package/dist/src/document-model/gen/operation-error/creators.d.ts +0 -10
  351. package/dist/src/document-model/gen/operation-error/creators.d.ts.map +0 -1
  352. package/dist/src/document-model/gen/operation-error/creators.js +0 -10
  353. package/dist/src/document-model/gen/operation-error/creators.js.map +0 -1
  354. package/dist/src/document-model/gen/operation-error/object.d.ts +0 -15
  355. package/dist/src/document-model/gen/operation-error/object.d.ts.map +0 -1
  356. package/dist/src/document-model/gen/operation-error/object.js +0 -26
  357. package/dist/src/document-model/gen/operation-error/object.js.map +0 -1
  358. package/dist/src/document-model/gen/operation-error/operations.d.ts +0 -12
  359. package/dist/src/document-model/gen/operation-error/operations.d.ts.map +0 -1
  360. package/dist/src/document-model/gen/operation-error/operations.js +0 -2
  361. package/dist/src/document-model/gen/operation-error/operations.js.map +0 -1
  362. package/dist/src/document-model/gen/operation-example/actions.d.ts +0 -20
  363. package/dist/src/document-model/gen/operation-example/actions.d.ts.map +0 -1
  364. package/dist/src/document-model/gen/operation-example/actions.js +0 -2
  365. package/dist/src/document-model/gen/operation-example/actions.js.map +0 -1
  366. package/dist/src/document-model/gen/operation-example/creators.d.ts +0 -7
  367. package/dist/src/document-model/gen/operation-example/creators.d.ts.map +0 -1
  368. package/dist/src/document-model/gen/operation-example/creators.js +0 -7
  369. package/dist/src/document-model/gen/operation-example/creators.js.map +0 -1
  370. package/dist/src/document-model/gen/operation-example/object.d.ts +0 -12
  371. package/dist/src/document-model/gen/operation-example/object.d.ts.map +0 -1
  372. package/dist/src/document-model/gen/operation-example/object.js +0 -17
  373. package/dist/src/document-model/gen/operation-example/object.js.map +0 -1
  374. package/dist/src/document-model/gen/operation-example/operations.d.ts +0 -9
  375. package/dist/src/document-model/gen/operation-example/operations.d.ts.map +0 -1
  376. package/dist/src/document-model/gen/operation-example/operations.js +0 -2
  377. package/dist/src/document-model/gen/operation-example/operations.js.map +0 -1
  378. package/dist/src/document-model/gen/reducer.d.ts +0 -5
  379. package/dist/src/document-model/gen/reducer.d.ts.map +0 -1
  380. package/dist/src/document-model/gen/reducer.js +0 -193
  381. package/dist/src/document-model/gen/reducer.js.map +0 -1
  382. package/dist/src/document-model/gen/schema/index.d.ts +0 -3
  383. package/dist/src/document-model/gen/schema/index.d.ts.map +0 -1
  384. package/dist/src/document-model/gen/schema/index.js +0 -3
  385. package/dist/src/document-model/gen/schema/index.js.map +0 -1
  386. package/dist/src/document-model/gen/schema/types.d.ts +0 -457
  387. package/dist/src/document-model/gen/schema/types.d.ts.map +0 -1
  388. package/dist/src/document-model/gen/schema/types.js.map +0 -1
  389. package/dist/src/document-model/gen/schema/zod.d.ts +0 -453
  390. package/dist/src/document-model/gen/schema/zod.d.ts.map +0 -1
  391. package/dist/src/document-model/gen/schema/zod.js.map +0 -1
  392. package/dist/src/document-model/gen/state/actions.d.ts +0 -28
  393. package/dist/src/document-model/gen/state/actions.d.ts.map +0 -1
  394. package/dist/src/document-model/gen/state/actions.js +0 -2
  395. package/dist/src/document-model/gen/state/actions.js.map +0 -1
  396. package/dist/src/document-model/gen/state/creators.d.ts +0 -9
  397. package/dist/src/document-model/gen/state/creators.d.ts.map +0 -1
  398. package/dist/src/document-model/gen/state/creators.js +0 -9
  399. package/dist/src/document-model/gen/state/creators.js.map +0 -1
  400. package/dist/src/document-model/gen/state/object.d.ts +0 -13
  401. package/dist/src/document-model/gen/state/object.d.ts.map +0 -1
  402. package/dist/src/document-model/gen/state/object.js +0 -23
  403. package/dist/src/document-model/gen/state/object.js.map +0 -1
  404. package/dist/src/document-model/gen/state/operations.d.ts +0 -11
  405. package/dist/src/document-model/gen/state/operations.d.ts.map +0 -1
  406. package/dist/src/document-model/gen/state/operations.js +0 -2
  407. package/dist/src/document-model/gen/state/operations.js.map +0 -1
  408. package/dist/src/document-model/gen/types.d.ts +0 -7
  409. package/dist/src/document-model/gen/types.d.ts.map +0 -1
  410. package/dist/src/document-model/gen/types.js.map +0 -1
  411. package/dist/src/document-model/gen/utils.d.ts +0 -11
  412. package/dist/src/document-model/gen/utils.d.ts.map +0 -1
  413. package/dist/src/document-model/gen/utils.js +0 -33
  414. package/dist/src/document-model/gen/utils.js.map +0 -1
  415. package/dist/src/document-model/gen/versioning/actions.d.ts +0 -24
  416. package/dist/src/document-model/gen/versioning/actions.d.ts.map +0 -1
  417. package/dist/src/document-model/gen/versioning/actions.js +0 -2
  418. package/dist/src/document-model/gen/versioning/actions.js.map +0 -1
  419. package/dist/src/document-model/gen/versioning/creators.d.ts +0 -8
  420. package/dist/src/document-model/gen/versioning/creators.d.ts.map +0 -1
  421. package/dist/src/document-model/gen/versioning/creators.js +0 -8
  422. package/dist/src/document-model/gen/versioning/creators.js.map +0 -1
  423. package/dist/src/document-model/gen/versioning/object.d.ts +0 -13
  424. package/dist/src/document-model/gen/versioning/object.d.ts.map +0 -1
  425. package/dist/src/document-model/gen/versioning/object.js +0 -20
  426. package/dist/src/document-model/gen/versioning/object.js.map +0 -1
  427. package/dist/src/document-model/gen/versioning/operations.d.ts +0 -10
  428. package/dist/src/document-model/gen/versioning/operations.d.ts.map +0 -1
  429. package/dist/src/document-model/gen/versioning/operations.js +0 -2
  430. package/dist/src/document-model/gen/versioning/operations.js.map +0 -1
  431. package/dist/test/document/object.test.d.ts +0 -2
  432. package/dist/test/document/object.test.d.ts.map +0 -1
  433. package/dist/test/document/object.test.js +0 -13
  434. package/dist/test/document/object.test.js.map +0 -1
  435. package/dist/test/document-model/object.test.d.ts +0 -2
  436. package/dist/test/document-model/object.test.d.ts.map +0 -1
  437. package/dist/test/document-model/object.test.js +0 -243
  438. package/dist/test/document-model/object.test.js.map +0 -1
  439. /package/dist/src/{document-model/gen/schema → core}/types.js +0 -0
  440. /package/dist/{src/document-model/gen → test}/types.js +0 -0
@@ -1,4 +1,240 @@
1
- import stringify from "safe-stable-stringify";
1
+ import stringifyJson, { stringify } from "safe-stable-stringify";
2
+ import { generateId, hashBrowser } from "./crypto.js";
3
+ import { createPresignedHeader } from "./header.js";
4
+ export function isNoopOperation(op) {
5
+ return (op.type === "NOOP" &&
6
+ op.skip !== undefined &&
7
+ op.skip > 0 &&
8
+ op.hash !== undefined);
9
+ }
10
+ export function isUndoRedo(action) {
11
+ return ["UNDO", "REDO"].includes(action.type);
12
+ }
13
+ export function isUndo(action) {
14
+ return action.type === "UNDO";
15
+ }
16
+ export function isDocumentAction(action) {
17
+ return ["SET_NAME", "UNDO", "REDO", "PRUNE", "LOAD_STATE"].includes(action.type);
18
+ }
19
+ /**
20
+ * Important note: it is the responsibility of the caller to set the document type
21
+ * on the header.
22
+ */
23
+ export function baseCreateDocument(createState, initialState) {
24
+ const state = createState(initialState);
25
+ const header = createPresignedHeader();
26
+ const phDocument = {
27
+ header,
28
+ state,
29
+ initialState: state,
30
+ operations: { global: [], local: [] },
31
+ clipboard: [],
32
+ };
33
+ return phDocument;
34
+ }
35
+ export function hashDocumentStateForScope(document, scope = "global") {
36
+ const stateString = stringifyJson(document.state[scope] || "");
37
+ return hashBrowser(stateString);
38
+ }
39
+ export function readOnly(value) {
40
+ return Object.freeze(value);
41
+ }
42
+ /**
43
+ * Maps skipped operations in an array of operations.
44
+ * Skipped operations are operations that are ignored during processing.
45
+ * @param operations - The array of operations to map.
46
+ * @param skippedHeadOperations - The number of operations to skip at the head of the array of operations.
47
+ * @returns An array of mapped operations with ignore flag indicating if the operation is skipped.
48
+ * @throws Error if the operation index is invalid and there are missing operations.
49
+ */
50
+ export function mapSkippedOperations(operations, skippedHeadOperations) {
51
+ const ops = [...operations];
52
+ let skipped = skippedHeadOperations || 0;
53
+ let latestOpIndex = ops.length > 0 ? ops[ops.length - 1].index : 0;
54
+ const scopeOpsWithIgnore = [];
55
+ for (const operation of ops.reverse()) {
56
+ if (skipped > 0) {
57
+ const operationsDiff = latestOpIndex - operation.index;
58
+ skipped -= operationsDiff;
59
+ }
60
+ if (skipped < 0) {
61
+ throw new Error("Invalid operation index, missing operations");
62
+ }
63
+ const mappedOp = {
64
+ ignore: skipped > 0,
65
+ operation,
66
+ };
67
+ // here we add 1 to the skip number because we want to get the number of
68
+ // operations that we want to move the pointer back to get the latest valid operation
69
+ // operation.skip = 1 means that we want to move the pointer back 2 operations to get to the latest valid operation
70
+ const operationSkip = operation.skip > 0 ? operation.skip + 1 : 0;
71
+ if (operationSkip > 0 && operationSkip > skipped) {
72
+ const skipDiff = operationSkip - skipped;
73
+ skipped = skipped + skipDiff;
74
+ }
75
+ latestOpIndex = operation.index;
76
+ scopeOpsWithIgnore.push(mappedOp);
77
+ }
78
+ return scopeOpsWithIgnore.reverse();
79
+ }
80
+ // Flattens the mapped operations (with ignore flag) from all scopes into
81
+ // a single array and sorts them by timestamp
82
+ export function sortMappedOperations(operations) {
83
+ return Object.values(operations)
84
+ .flatMap((array) => array)
85
+ .sort((a, b) => new Date(a.operation.timestampUtcMs).getTime() -
86
+ new Date(b.operation.timestampUtcMs).getTime());
87
+ }
88
+ // Default createState function that just returns the state as-is
89
+ const defaultCreateState = (state) => {
90
+ return state;
91
+ };
92
+ // Runs the operations on the initial data using the
93
+ // provided document reducer.
94
+ // This rebuilds the document according to the provided actions.
95
+ export function replayDocument(initialState, operations, reducer, dispatch, header, skipHeaderOperations = {}, options) {
96
+ const { checkHashes = true, reuseOperationResultingState, operationResultingStateParser = parseResultingState, } = options || {};
97
+ let documentState = initialState;
98
+ const operationsToReplay = [];
99
+ const initialOperations = {
100
+ global: [],
101
+ local: [],
102
+ };
103
+ // if operation resulting state is to be used then
104
+ // looks for the last operation with state of each
105
+ // scope to use it as the starting point and only
106
+ // replay operations that follow it
107
+ if (reuseOperationResultingState) {
108
+ for (const [scope, scopeOperations] of Object.entries(operations)) {
109
+ const index = scopeOperations.findLastIndex((s) => !!s.resultingState);
110
+ if (index < 0) {
111
+ operationsToReplay.push(...scopeOperations);
112
+ continue;
113
+ }
114
+ const opWithState = scopeOperations[index];
115
+ if (!opWithState.resultingState)
116
+ continue;
117
+ try {
118
+ const scopeState = operationResultingStateParser(opWithState.resultingState);
119
+ documentState = {
120
+ ...documentState,
121
+ // TODO how to deal with attachments?
122
+ [scope]: scopeState,
123
+ };
124
+ initialOperations[scope].push(...scopeOperations.slice(0, index + 1));
125
+ operationsToReplay.push(...scopeOperations.slice(index + 1));
126
+ }
127
+ catch {
128
+ /* if parsing fails then keeps replays all scope operations */
129
+ operationsToReplay.push(...scopeOperations);
130
+ }
131
+ }
132
+ }
133
+ else {
134
+ operationsToReplay.push(...Object.values(operations).flat());
135
+ }
136
+ // builds a new document from the initial data
137
+ const document = baseCreateDocument((defaultCreateState), documentState);
138
+ if (header?.slug) {
139
+ document.header.slug = header.slug;
140
+ }
141
+ document.initialState = initialState;
142
+ document.operations = initialOperations;
143
+ let result = document;
144
+ // if there are operations left without resulting state
145
+ // then replays them
146
+ if (operationsToReplay.length) {
147
+ result = operationsToReplay.reduce((document, operation) => {
148
+ const doc = reducer(document, operation.action, dispatch, {
149
+ ignoreSkipOperations: true,
150
+ checkHashes,
151
+ replayOptions: {
152
+ operation,
153
+ },
154
+ });
155
+ return doc;
156
+ }, document);
157
+ }
158
+ // if not then updates the document header according
159
+ // to the latest operation of each scope
160
+ else {
161
+ for (const scopeOperations of Object.values(initialOperations)) {
162
+ const lastOperation = scopeOperations.at(-1);
163
+ if (lastOperation) {
164
+ result = updateHeaderRevision(result, lastOperation.action.scope);
165
+ }
166
+ }
167
+ }
168
+ // if hash generation was skipped then checks if the hash
169
+ // of each scope matches the hash of last operation
170
+ if (!checkHashes) {
171
+ for (const scope of Object.keys(result.state)) {
172
+ for (let i = operationsToReplay.length - 1; i >= 0; i--) {
173
+ const operation = operationsToReplay[i];
174
+ if (operation.action.scope !== scope) {
175
+ continue;
176
+ }
177
+ if (operation.hash !== hashDocumentStateForScope(result, scope)) {
178
+ throw new Error(`Hash mismatch for scope ${scope}`);
179
+ }
180
+ else {
181
+ break;
182
+ }
183
+ }
184
+ }
185
+ }
186
+ // reuses operation timestamp if provided
187
+ const resultOperations = Object.keys(result.operations).reduce((acc, key) => {
188
+ const scope = key;
189
+ return {
190
+ ...acc,
191
+ [scope]: [
192
+ ...result.operations[scope].map((operation, index) => {
193
+ return {
194
+ ...operation,
195
+ timestamp: operations[scope][index]?.timestampUtcMs ??
196
+ operation.timestampUtcMs,
197
+ };
198
+ }),
199
+ ],
200
+ };
201
+ }, { global: [], local: [] });
202
+ // gets the last modified timestamp from the latest operation
203
+ const lastModified = header
204
+ ? header.lastModifiedAtUtcIso
205
+ : Object.values(resultOperations).reduce((acc, curr) => {
206
+ const operation = curr.at(-1);
207
+ if (operation) {
208
+ if (operation.timestampUtcMs > acc) {
209
+ return operation.timestampUtcMs;
210
+ }
211
+ }
212
+ return acc;
213
+ }, document.header.lastModifiedAtUtcIso);
214
+ if (header) {
215
+ result.header = {
216
+ ...header,
217
+ revision: result.header.revision,
218
+ lastModifiedAtUtcIso: lastModified,
219
+ };
220
+ }
221
+ return {
222
+ ...result,
223
+ operations: resultOperations,
224
+ };
225
+ }
226
+ export function parseResultingState(state) {
227
+ const stateType = typeof state;
228
+ if (stateType === "string") {
229
+ return JSON.parse(state);
230
+ }
231
+ else if (stateType === "object") {
232
+ return state;
233
+ }
234
+ else {
235
+ throw new Error(`Providing resulting state is of type: ${stateType}`);
236
+ }
237
+ }
2
238
  export var IntegrityIssueType;
3
239
  (function (IntegrityIssueType) {
4
240
  IntegrityIssueType["UNEXPECTED_INDEX"] = "UNEXPECTED_INDEX";
@@ -70,23 +306,34 @@ export function addUndo(sortedOperations) {
70
306
  const latestOperation = operationsCopy[operationsCopy.length - 1];
71
307
  if (!latestOperation)
72
308
  return operationsCopy;
73
- if (latestOperation.type === "NOOP") {
309
+ if (latestOperation.action.type === "NOOP") {
74
310
  operationsCopy.push({
75
311
  ...latestOperation,
76
312
  index: latestOperation.index,
77
- type: "NOOP",
78
313
  skip: nextSkipNumber(sortedOperations),
314
+ action: {
315
+ ...latestOperation.action,
316
+ // TODO: this will break the signature...
317
+ id: generateId(),
318
+ timestampUtcMs: new Date().toISOString(),
319
+ type: "NOOP",
320
+ },
79
321
  });
80
322
  }
81
323
  else {
82
324
  operationsCopy.push({
83
- type: "NOOP",
325
+ id: generateId(),
326
+ timestampUtcMs: new Date().toISOString(),
84
327
  index: latestOperation.index + 1,
85
- timestamp: new Date().toISOString(),
86
- input: {},
87
328
  skip: 1,
88
- scope: latestOperation.scope,
89
329
  hash: latestOperation.hash,
330
+ action: {
331
+ id: generateId(),
332
+ timestampUtcMs: new Date().toISOString(),
333
+ type: "NOOP",
334
+ input: {},
335
+ scope: latestOperation.action.scope,
336
+ },
90
337
  });
91
338
  }
92
339
  return operationsCopy;
@@ -106,8 +353,8 @@ export function sortOperations(operations) {
106
353
  // merge => [0:0, 1:0, 6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
107
354
  export function reshuffleByTimestamp(startIndex, opsA, opsB) {
108
355
  return [...opsA, ...opsB]
109
- .sort((a, b) => new Date(a.timestamp || "").getTime() -
110
- new Date(b.timestamp || "").getTime())
356
+ .sort((a, b) => new Date(a.timestampUtcMs || "").getTime() -
357
+ new Date(b.timestampUtcMs || "").getTime())
111
358
  .map((op, i) => ({
112
359
  ...op,
113
360
  index: startIndex.index + i,
@@ -116,8 +363,8 @@ export function reshuffleByTimestamp(startIndex, opsA, opsB) {
116
363
  }
117
364
  export function reshuffleByTimestampAndIndex(startIndex, opsA, opsB) {
118
365
  return [...opsA, ...opsB]
119
- .sort((a, b) => new Date(a.timestamp || "").getTime() -
120
- new Date(b.timestamp || "").getTime())
366
+ .sort((a, b) => new Date(a.timestampUtcMs || "").getTime() -
367
+ new Date(b.timestampUtcMs || "").getTime())
121
368
  .sort((a, b) => a.index - b.index)
122
369
  .map((op, i) => ({
123
370
  ...op,
@@ -127,7 +374,23 @@ export function reshuffleByTimestampAndIndex(startIndex, opsA, opsB) {
127
374
  }
128
375
  // TODO: implement better operation equality function
129
376
  export function operationsAreEqual(op1, op2) {
130
- return stringify(op1) === stringify(op2);
377
+ const a = op1;
378
+ const b = op2;
379
+ const aComparable = {
380
+ index: a.index,
381
+ skip: a.skip,
382
+ type: a.type ?? null,
383
+ scope: a.scope ?? null,
384
+ input: a.input ?? null,
385
+ };
386
+ const bComparable = {
387
+ index: b.index,
388
+ skip: b.skip,
389
+ type: b.type ?? null,
390
+ scope: b.scope ?? null,
391
+ input: b.input ?? null,
392
+ };
393
+ return stringify(aComparable) === stringify(bComparable);
131
394
  }
132
395
  // [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
396
  // [T0:0 T1:0 T2:0 T3:0] + [B3:0 B4:0] = [T0:0 T1:0 T2:0 B3:0 B4:0]
@@ -272,10 +535,10 @@ export function checkOperationsIntegrity(operations) {
272
535
  }
273
536
  export function groupOperationsByScope(operations) {
274
537
  const result = operations.reduce((acc, operation) => {
275
- if (!acc[operation.scope]) {
276
- acc[operation.scope] = [];
538
+ if (!acc[operation.action.scope]) {
539
+ acc[operation.action.scope] = [];
277
540
  }
278
- acc[operation.scope]?.push(operation);
541
+ acc[operation.action.scope]?.push(operation);
279
542
  return acc;
280
543
  }, {});
281
544
  return result;
@@ -325,14 +588,14 @@ export function prepareOperations(operationsHistory, newOperations) {
325
588
  export function removeExistingOperations(newOperations, operationsHistory) {
326
589
  return newOperations.filter((newOperation) => {
327
590
  return !operationsHistory.some((historyOperation) => {
328
- return ((newOperation.type === "NOOP" &&
591
+ return ((newOperation.action.type === "NOOP" &&
329
592
  newOperation.skip === 0 &&
330
593
  newOperation.index === historyOperation.index) ||
331
594
  (newOperation.index === historyOperation.index &&
332
595
  newOperation.skip === historyOperation.skip &&
333
- newOperation.scope === historyOperation.scope &&
596
+ newOperation.action.scope === historyOperation.action.scope &&
334
597
  newOperation.hash === historyOperation.hash &&
335
- newOperation.type === historyOperation.type));
598
+ newOperation.action.type === historyOperation.action.type));
336
599
  });
337
600
  });
338
601
  }
@@ -408,4 +671,43 @@ export function filterDocumentOperationsResultingState(documentOperations) {
408
671
  export function diffOperations(clearedOperationsA, clearedOperationsB) {
409
672
  return clearedOperationsA.filter((operationA) => !clearedOperationsB.some((operationB) => operationA.index === operationB.index));
410
673
  }
411
- //# sourceMappingURL=document-helpers.js.map
674
+ // it's operations, falling back to the initial state
675
+ export function getDocumentLastModified(document) {
676
+ const sortedOperations = sortOperations(Object.values(document.operations).flat());
677
+ return (sortedOperations.at(-1).timestampUtcMs ||
678
+ document.header.lastModifiedAtUtcIso);
679
+ }
680
+ /**
681
+ * Gets the next revision number based on the provided scope.
682
+ *
683
+ * @param state The current state of the document.
684
+ * @param scope The scope of the operation.
685
+ * @returns The next revision number.
686
+ */
687
+ function getNextRevision(document, scope) {
688
+ const latestOperationIndex = document.operations[scope].at(-1)?.index ?? -1;
689
+ return (latestOperationIndex ?? -1) + 1;
690
+ }
691
+ /**
692
+ * Updates the document header with the latest revision number and
693
+ * date of last modification.
694
+ *
695
+ * @param state The current state of the document.
696
+ * @param operation The action being applied to the document.
697
+ * @returns The updated document state.
698
+ */
699
+ export function updateHeaderRevision(document, scope) {
700
+ const header = {
701
+ ...document.header,
702
+ revision: {
703
+ ...document.header.revision,
704
+ [scope]: getNextRevision(document, scope),
705
+ },
706
+ lastModifiedAtUtcIso: getDocumentLastModified(document),
707
+ };
708
+ return {
709
+ ...document,
710
+ header,
711
+ };
712
+ }
713
+ //# 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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"}
@@ -1,4 +1,5 @@
1
- import { type ZodIssue } from "zod";
1
+ import type { ZodIssue } from "zod";
2
+ export declare const FileSystemError: Error;
2
3
  export declare class InvalidActionInputError extends Error {
3
4
  data: unknown;
4
5
  constructor(data: unknown);
@@ -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;AAEpC,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"}
@@ -1,3 +1,4 @@
1
+ export const FileSystemError = new Error("File system not available.");
1
2
  export class InvalidActionInputError extends Error {
2
3
  data;
3
4
  constructor(data) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"AAEA,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"}
@@ -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"}
@@ -0,0 +1,74 @@
1
+ import JSZip from "jszip";
2
+ import { filterDocumentOperationsResultingState, garbageCollectDocumentOperations, replayDocument, } from "./documents.js";
3
+ import { FileSystemError } from "./errors.js";
4
+ import { validateOperations } from "./validation.js";
5
+ export function writeFileBrowser(path, name, stream) {
6
+ throw FileSystemError;
7
+ }
8
+ export function readFileBrowser(path) {
9
+ throw FileSystemError;
10
+ }
11
+ export function fetchFileBrowser(url) {
12
+ throw FileSystemError;
13
+ }
14
+ export const getFileBrowser = async (file) => {
15
+ return readFileBrowser(file);
16
+ };
17
+ export function createZip(document) {
18
+ // create zip file
19
+ const zip = new JSZip();
20
+ const header = document.header;
21
+ zip.file("header.json", JSON.stringify(header, null, 2));
22
+ zip.file("state.json", JSON.stringify(document.initialState || {}, null, 2));
23
+ zip.file("current-state.json", JSON.stringify(document.state || {}, null, 2));
24
+ zip.file("operations.json", JSON.stringify(filterDocumentOperationsResultingState(document.operations), null, 2));
25
+ return zip;
26
+ }
27
+ export async function baseSaveToFileHandle(document, input) {
28
+ const zip = createZip(document);
29
+ const blob = await zip.generateAsync({ type: "blob" });
30
+ const writable = await input.createWritable();
31
+ await writable.write(blob);
32
+ await writable.close();
33
+ }
34
+ export async function baseLoadFromInput(input, reducer, options) {
35
+ const zip = new JSZip();
36
+ await zip.loadAsync(input);
37
+ return loadFromZip(zip, reducer, options);
38
+ }
39
+ async function loadFromZip(zip, reducer, options) {
40
+ const initialStateZip = zip.file("state.json");
41
+ if (!initialStateZip) {
42
+ throw new Error("Initial state not found");
43
+ }
44
+ const initialStateStr = await initialStateZip.async("string");
45
+ const initialState = JSON.parse(initialStateStr);
46
+ const headerZip = zip.file("header.json");
47
+ let header = undefined;
48
+ if (headerZip) {
49
+ header = JSON.parse(await headerZip.async("string"));
50
+ }
51
+ const operationsZip = zip.file("operations.json");
52
+ if (!operationsZip) {
53
+ throw new Error("Operations history not found");
54
+ }
55
+ const operations = JSON.parse(await operationsZip.async("string"));
56
+ const clearedOperations = garbageCollectDocumentOperations(operations);
57
+ const operationsError = validateOperations(clearedOperations);
58
+ if (operationsError.length) {
59
+ const errorMessages = operationsError.map((err) => err.message);
60
+ throw new Error(errorMessages.join("\n"));
61
+ }
62
+ // TODO: There is a race condition here where operations are replayed and do not necessary
63
+ // result in the same lastModified value. This will be fixed once the header replaces this
64
+ // information as it is explicitly set below to the saved time.
65
+ let result = replayDocument(initialState, clearedOperations, reducer, undefined, header, {}, options);
66
+ if (header) {
67
+ result = {
68
+ ...result,
69
+ header,
70
+ };
71
+ }
72
+ return result;
73
+ }
74
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/core/files.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,5 @@
1
- import { type PHDocumentHeader } from "#document/ph-types.js";
2
- /**
3
- * Parameters used in a document signature.
4
- */
5
- export type SigningParameters = {
6
- documentType: string;
7
- createdAtUtcIso: string;
8
- /**
9
- * The nonce can act as both a salt and a typical nonce.
10
- */
11
- nonce: string;
12
- };
13
- /**
14
- * Describes a signer. This may only have a public key for verification.
15
- */
16
- export interface ISigner {
17
- /** The corresponding public key */
18
- publicKey(): Promise<JsonWebKey>;
19
- /**
20
- * Signs data.
21
- *
22
- * @param data - The data to sign.
23
- *
24
- * @returns The signature of the data.
25
- */
26
- sign: (data: Uint8Array) => Promise<Uint8Array>;
27
- /**
28
- * Verifies a signature.
29
- *
30
- * @param data - The data to verify.
31
- * @param signature - The signature to verify.
32
- */
33
- verify: (data: Uint8Array, signature: Uint8Array) => Promise<void>;
34
- }
1
+ import type { PHDocumentHeader } from "./ph-types.js";
2
+ import type { ISigner, SigningParameters } from "./types.js";
35
3
  /**
36
4
  * A signer that uses a public key to verify data.
37
5
  */
@@ -73,7 +41,7 @@ export declare const validateHeader: (header: PHDocumentHeader) => Promise<void>
73
41
  *
74
42
  * @returns An unsigned header for a document.
75
43
  */
76
- export declare const createUnsignedHeader: (id?: string, documentType?: string) => PHDocumentHeader;
44
+ export declare const createPresignedHeader: (id?: string, documentType?: string) => PHDocumentHeader;
77
45
  /**
78
46
  * Creates a new, signed header for a document. This will replace the id of the
79
47
  * document.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/core/header.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAQ7D;;GAEG;AACH,qBAAa,eAAgB,YAAW,OAAO;;IAG7C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACvD,SAAS,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC;gBAErC,SAAS,EAAE,UAAU;IAW3B,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAIhC,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAI3C,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CA+BrE;AAeD;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,GACf,YAAY,iBAAiB,EAC7B,QAAQ,OAAO,KACd,OAAO,CAAC,MAAM,CAehB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,GACjB,YAAY,iBAAiB,EAC7B,WAAW,MAAM,EACjB,QAAQ,OAAO,KACd,OAAO,CAAC,IAAI,CAcd,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,gBAAgB,KACvB,OAAO,CAAC,IAAI,CAYd,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,KAAI,MAA8B,EAClC,qBAAiB,KAChB,gBAkBF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAC7B,gBAAgB,gBAAgB,EAChC,cAAc,MAAM,EACpB,QAAQ,OAAO,KACd,OAAO,CAAC,gBAAgB,CA8B1B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,GACtC,cAAc,MAAM,EACpB,QAAQ,OAAO,KACd,OAAO,CAAC,gBAAgB,CAS1B,CAAC"}