document-model 5.0.0-staging.9 → 5.0.1-staging.2

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 (447) hide show
  1. package/README.md +24 -24
  2. package/dist/src/core/actions.d.ts +79 -0
  3. package/dist/src/core/actions.d.ts.map +1 -0
  4. package/dist/src/core/actions.js +183 -0
  5. package/dist/src/core/actions.js.map +1 -0
  6. package/dist/src/core/crypto.d.ts +17 -0
  7. package/dist/src/core/crypto.d.ts.map +1 -0
  8. package/dist/src/core/crypto.js +87 -0
  9. package/dist/src/core/crypto.js.map +1 -0
  10. package/dist/src/{document/utils/document-helpers.d.ts → core/documents.d.ts} +51 -11
  11. package/dist/src/core/documents.d.ts.map +1 -0
  12. package/dist/src/{document/utils/document-helpers.js → core/documents.js} +320 -12
  13. package/dist/src/core/documents.js.map +1 -0
  14. package/dist/src/core/errors.d.ts +21 -0
  15. package/dist/src/core/errors.d.ts.map +1 -0
  16. package/dist/src/core/errors.js +47 -0
  17. package/dist/src/core/errors.js.map +1 -0
  18. package/dist/src/core/files.d.ts +14 -0
  19. package/dist/src/core/files.d.ts.map +1 -0
  20. package/dist/src/core/files.js +74 -0
  21. package/dist/src/core/files.js.map +1 -0
  22. package/dist/src/{document/utils → core}/header.d.ts +3 -35
  23. package/dist/src/core/header.d.ts.map +1 -0
  24. package/dist/src/{document/utils → core}/header.js +6 -19
  25. package/dist/src/core/header.js.map +1 -0
  26. package/dist/src/core/index.d.ts +12 -0
  27. package/dist/src/core/index.d.ts.map +1 -0
  28. package/dist/src/core/index.js +12 -0
  29. package/dist/src/core/index.js.map +1 -0
  30. package/dist/src/{document/utils/file.d.ts → core/node.d.ts} +40 -30
  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/{document/actions → core}/operations.d.ts +4 -6
  35. package/dist/src/core/operations.d.ts.map +1 -0
  36. package/dist/src/{document/actions → core}/operations.js +2 -51
  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/{document → core}/reducer.d.ts +23 -12
  43. package/dist/src/core/reducer.d.ts.map +1 -0
  44. package/dist/src/{document → core}/reducer.js +138 -74
  45. package/dist/src/core/reducer.js.map +1 -0
  46. package/dist/src/{document/schema/zod.d.ts → core/schemas.d.ts} +37 -39
  47. package/dist/src/core/schemas.d.ts.map +1 -0
  48. package/dist/src/{document/schema/zod.js → core/schemas.js} +1 -16
  49. package/dist/src/core/schemas.js.map +1 -0
  50. package/dist/src/core/state.d.ts +26 -0
  51. package/dist/src/core/state.d.ts.map +1 -0
  52. package/dist/src/core/state.js +56 -0
  53. package/dist/src/core/state.js.map +1 -0
  54. package/dist/src/core/types.d.ts +481 -0
  55. package/dist/src/core/types.d.ts.map +1 -0
  56. package/dist/src/{document → core}/types.js.map +1 -1
  57. package/dist/src/core/validation.d.ts +4 -0
  58. package/dist/src/core/validation.d.ts.map +1 -0
  59. package/dist/src/{document/utils → core}/validation.js +5 -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/{gen/ph-factories.js → state.js} +16 -15
  92. package/dist/src/document-model/state.js.map +1 -0
  93. package/dist/src/document-model/types.d.ts +670 -2
  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 +4 -8
  104. package/dist/test/document/crypto.test.js.map +1 -1
  105. package/dist/test/document/event-vs-command.test.js +2 -2
  106. package/dist/test/document/event-vs-command.test.js.map +1 -1
  107. package/dist/test/document/local.test.js +2 -3
  108. package/dist/test/document/local.test.js.map +1 -1
  109. package/dist/test/document/operation-id.test.js +3 -4
  110. package/dist/test/document/operation-id.test.js.map +1 -1
  111. package/dist/test/document/prune.test.js +12 -12
  112. package/dist/test/document/prune.test.js.map +1 -1
  113. package/dist/test/document/reducer.test.js +8 -10
  114. package/dist/test/document/reducer.test.js.map +1 -1
  115. package/dist/test/document/skip-operations.test.js +10 -10
  116. package/dist/test/document/skip-operations.test.js.map +1 -1
  117. package/dist/test/document/undo-redo.test.js +5 -7
  118. package/dist/test/document/undo-redo.test.js.map +1 -1
  119. package/dist/test/document/utils.test.js +5 -8
  120. package/dist/test/document/utils.test.js.map +1 -1
  121. package/dist/test/document-helpers/addUndo.test.js +1 -1
  122. package/dist/test/document-helpers/addUndo.test.js.map +1 -1
  123. package/dist/test/document-helpers/attachBranch.test.js +1 -1
  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 +1 -1
  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 +2 -2
  134. package/dist/test/document-helpers/groupOperationsByScope.test.js.map +1 -1
  135. package/dist/test/document-helpers/merge.test.js +1 -1
  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 +2 -3
  142. package/dist/test/document-helpers/removeExistingOperations.test.js.map +1 -1
  143. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +1 -1
  144. package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +1 -1
  145. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +1 -1
  146. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +1 -1
  147. package/dist/test/document-helpers/skipHeaderOperations.test.js +1 -1
  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 +1 -1
  152. package/dist/test/document-helpers/split.test.js.map +1 -1
  153. package/dist/test/document-helpers/utils.d.ts +1 -1
  154. package/dist/test/document-helpers/utils.d.ts.map +1 -1
  155. package/dist/test/document-helpers/utils.js +1 -1
  156. package/dist/test/document-helpers/utils.js.map +1 -1
  157. package/dist/test/document-model/replay.test.js +19 -6
  158. package/dist/test/document-model/replay.test.js.map +1 -1
  159. package/dist/test/document-model/skip-operations.test.js +93 -95
  160. package/dist/test/document-model/skip-operations.test.js.map +1 -1
  161. package/dist/test/document-model/validation.test.js +16 -28
  162. package/dist/test/document-model/validation.test.js.map +1 -1
  163. package/dist/test/document-model/zip.test.js +19 -20
  164. package/dist/test/document-model/zip.test.js.map +1 -1
  165. package/dist/test/helpers.d.ts +9 -9
  166. package/dist/test/helpers.d.ts.map +1 -1
  167. package/dist/test/helpers.js +3 -5
  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 +25 -24
  182. package/dist/index.d.ts +0 -21
  183. package/dist/index.d.ts.map +0 -1
  184. package/dist/index.js +0 -15
  185. package/dist/index.js.map +0 -1
  186. package/dist/src/document/actions/creators.d.ts +0 -52
  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.map +0 -1
  191. package/dist/src/document/actions/operations.js.map +0 -1
  192. package/dist/src/document/actions/types.d.ts +0 -34
  193. package/dist/src/document/actions/types.d.ts.map +0 -1
  194. package/dist/src/document/actions/types.js +0 -7
  195. package/dist/src/document/actions/types.js.map +0 -1
  196. package/dist/src/document/object.d.ts +0 -125
  197. package/dist/src/document/object.d.ts.map +0 -1
  198. package/dist/src/document/object.js +0 -183
  199. package/dist/src/document/object.js.map +0 -1
  200. package/dist/src/document/ph-factories.d.ts +0 -37
  201. package/dist/src/document/ph-factories.d.ts.map +0 -1
  202. package/dist/src/document/ph-factories.js +0 -93
  203. package/dist/src/document/ph-factories.js.map +0 -1
  204. package/dist/src/document/ph-types.d.ts +0 -76
  205. package/dist/src/document/ph-types.d.ts.map +0 -1
  206. package/dist/src/document/ph-types.js +0 -2
  207. package/dist/src/document/ph-types.js.map +0 -1
  208. package/dist/src/document/reducer.d.ts.map +0 -1
  209. package/dist/src/document/reducer.js.map +0 -1
  210. package/dist/src/document/schema/types.d.ts +0 -188
  211. package/dist/src/document/schema/types.d.ts.map +0 -1
  212. package/dist/src/document/schema/types.js +0 -2
  213. package/dist/src/document/schema/zod.d.ts.map +0 -1
  214. package/dist/src/document/schema/zod.js.map +0 -1
  215. package/dist/src/document/signal.d.ts +0 -36
  216. package/dist/src/document/signal.d.ts.map +0 -1
  217. package/dist/src/document/signal.js +0 -2
  218. package/dist/src/document/signal.js.map +0 -1
  219. package/dist/src/document/types.d.ts +0 -314
  220. package/dist/src/document/types.d.ts.map +0 -1
  221. package/dist/src/document/types.js +0 -2
  222. package/dist/src/document/utils/base.d.ts +0 -87
  223. package/dist/src/document/utils/base.d.ts.map +0 -1
  224. package/dist/src/document/utils/base.js +0 -336
  225. package/dist/src/document/utils/base.js.map +0 -1
  226. package/dist/src/document/utils/browser.d.ts +0 -18
  227. package/dist/src/document/utils/browser.d.ts.map +0 -1
  228. package/dist/src/document/utils/browser.js +0 -54
  229. package/dist/src/document/utils/browser.js.map +0 -1
  230. package/dist/src/document/utils/crypto.d.ts +0 -12
  231. package/dist/src/document/utils/crypto.d.ts.map +0 -1
  232. package/dist/src/document/utils/crypto.js +0 -81
  233. package/dist/src/document/utils/crypto.js.map +0 -1
  234. package/dist/src/document/utils/document-helpers.d.ts.map +0 -1
  235. package/dist/src/document/utils/document-helpers.js.map +0 -1
  236. package/dist/src/document/utils/errors.d.ts +0 -10
  237. package/dist/src/document/utils/errors.d.ts.map +0 -1
  238. package/dist/src/document/utils/errors.js +0 -19
  239. package/dist/src/document/utils/errors.js.map +0 -1
  240. package/dist/src/document/utils/file.d.ts.map +0 -1
  241. package/dist/src/document/utils/file.js +0 -152
  242. package/dist/src/document/utils/file.js.map +0 -1
  243. package/dist/src/document/utils/header.d.ts.map +0 -1
  244. package/dist/src/document/utils/header.js.map +0 -1
  245. package/dist/src/document/utils/node.d.ts +0 -18
  246. package/dist/src/document/utils/node.d.ts.map +0 -1
  247. package/dist/src/document/utils/node.js +0 -62
  248. package/dist/src/document/utils/node.js.map +0 -1
  249. package/dist/src/document/utils/validation.d.ts +0 -3
  250. package/dist/src/document/utils/validation.d.ts.map +0 -1
  251. package/dist/src/document/utils/validation.js.map +0 -1
  252. package/dist/src/document-model/custom/reducers/header.d.ts +0 -3
  253. package/dist/src/document-model/custom/reducers/header.d.ts.map +0 -1
  254. package/dist/src/document-model/custom/reducers/header.js +0 -23
  255. package/dist/src/document-model/custom/reducers/header.js.map +0 -1
  256. package/dist/src/document-model/custom/reducers/module.d.ts +0 -3
  257. package/dist/src/document-model/custom/reducers/module.d.ts.map +0 -1
  258. package/dist/src/document-model/custom/reducers/module.js +0 -41
  259. package/dist/src/document-model/custom/reducers/module.js.map +0 -1
  260. package/dist/src/document-model/custom/reducers/operation-error.d.ts +0 -3
  261. package/dist/src/document-model/custom/reducers/operation-error.d.ts.map +0 -1
  262. package/dist/src/document-model/custom/reducers/operation-error.js +0 -94
  263. package/dist/src/document-model/custom/reducers/operation-error.js.map +0 -1
  264. package/dist/src/document-model/custom/reducers/operation-example.d.ts +0 -3
  265. package/dist/src/document-model/custom/reducers/operation-example.d.ts.map +0 -1
  266. package/dist/src/document-model/custom/reducers/operation-example.js +0 -53
  267. package/dist/src/document-model/custom/reducers/operation-example.js.map +0 -1
  268. package/dist/src/document-model/custom/reducers/operation.d.ts +0 -3
  269. package/dist/src/document-model/custom/reducers/operation.d.ts.map +0 -1
  270. package/dist/src/document-model/custom/reducers/operation.js +0 -125
  271. package/dist/src/document-model/custom/reducers/operation.js.map +0 -1
  272. package/dist/src/document-model/custom/reducers/state.d.ts +0 -3
  273. package/dist/src/document-model/custom/reducers/state.d.ts.map +0 -1
  274. package/dist/src/document-model/custom/reducers/state.js +0 -71
  275. package/dist/src/document-model/custom/reducers/state.js.map +0 -1
  276. package/dist/src/document-model/custom/reducers/versioning.d.ts +0 -8
  277. package/dist/src/document-model/custom/reducers/versioning.d.ts.map +0 -1
  278. package/dist/src/document-model/custom/reducers/versioning.js +0 -23
  279. package/dist/src/document-model/custom/reducers/versioning.js.map +0 -1
  280. package/dist/src/document-model/custom/utils.d.ts +0 -8
  281. package/dist/src/document-model/custom/utils.d.ts.map +0 -1
  282. package/dist/src/document-model/custom/utils.js.map +0 -1
  283. package/dist/src/document-model/gen/actions.d.ts +0 -16
  284. package/dist/src/document-model/gen/actions.d.ts.map +0 -1
  285. package/dist/src/document-model/gen/actions.js +0 -8
  286. package/dist/src/document-model/gen/actions.js.map +0 -1
  287. package/dist/src/document-model/gen/constants.d.ts +0 -7
  288. package/dist/src/document-model/gen/constants.d.ts.map +0 -1
  289. package/dist/src/document-model/gen/constants.js +0 -34
  290. package/dist/src/document-model/gen/constants.js.map +0 -1
  291. package/dist/src/document-model/gen/creators.d.ts +0 -8
  292. package/dist/src/document-model/gen/creators.d.ts.map +0 -1
  293. package/dist/src/document-model/gen/creators.js +0 -8
  294. package/dist/src/document-model/gen/creators.js.map +0 -1
  295. package/dist/src/document-model/gen/document-model.d.ts +0 -3
  296. package/dist/src/document-model/gen/document-model.d.ts.map +0 -1
  297. package/dist/src/document-model/gen/document-model.js.map +0 -1
  298. package/dist/src/document-model/gen/header/actions.d.ts +0 -28
  299. package/dist/src/document-model/gen/header/actions.d.ts.map +0 -1
  300. package/dist/src/document-model/gen/header/actions.js +0 -2
  301. package/dist/src/document-model/gen/header/actions.js.map +0 -1
  302. package/dist/src/document-model/gen/header/creators.d.ts +0 -9
  303. package/dist/src/document-model/gen/header/creators.d.ts.map +0 -1
  304. package/dist/src/document-model/gen/header/creators.js +0 -9
  305. package/dist/src/document-model/gen/header/creators.js.map +0 -1
  306. package/dist/src/document-model/gen/header/object.d.ts +0 -13
  307. package/dist/src/document-model/gen/header/object.d.ts.map +0 -1
  308. package/dist/src/document-model/gen/header/object.js +0 -23
  309. package/dist/src/document-model/gen/header/object.js.map +0 -1
  310. package/dist/src/document-model/gen/header/operations.d.ts +0 -11
  311. package/dist/src/document-model/gen/header/operations.d.ts.map +0 -1
  312. package/dist/src/document-model/gen/header/operations.js +0 -2
  313. package/dist/src/document-model/gen/header/operations.js.map +0 -1
  314. package/dist/src/document-model/gen/module/actions.d.ts +0 -24
  315. package/dist/src/document-model/gen/module/actions.d.ts.map +0 -1
  316. package/dist/src/document-model/gen/module/actions.js +0 -2
  317. package/dist/src/document-model/gen/module/actions.js.map +0 -1
  318. package/dist/src/document-model/gen/module/creators.d.ts +0 -8
  319. package/dist/src/document-model/gen/module/creators.d.ts.map +0 -1
  320. package/dist/src/document-model/gen/module/creators.js +0 -8
  321. package/dist/src/document-model/gen/module/creators.js.map +0 -1
  322. package/dist/src/document-model/gen/module/object.d.ts +0 -12
  323. package/dist/src/document-model/gen/module/object.d.ts.map +0 -1
  324. package/dist/src/document-model/gen/module/object.js +0 -20
  325. package/dist/src/document-model/gen/module/object.js.map +0 -1
  326. package/dist/src/document-model/gen/module/operations.d.ts +0 -10
  327. package/dist/src/document-model/gen/module/operations.d.ts.map +0 -1
  328. package/dist/src/document-model/gen/module/operations.js +0 -2
  329. package/dist/src/document-model/gen/module/operations.js.map +0 -1
  330. package/dist/src/document-model/gen/object.d.ts +0 -28
  331. package/dist/src/document-model/gen/object.d.ts.map +0 -1
  332. package/dist/src/document-model/gen/object.js +0 -46
  333. package/dist/src/document-model/gen/object.js.map +0 -1
  334. package/dist/src/document-model/gen/operation/actions.d.ts +0 -44
  335. package/dist/src/document-model/gen/operation/actions.d.ts.map +0 -1
  336. package/dist/src/document-model/gen/operation/actions.js +0 -2
  337. package/dist/src/document-model/gen/operation/actions.js.map +0 -1
  338. package/dist/src/document-model/gen/operation/creators.d.ts +0 -13
  339. package/dist/src/document-model/gen/operation/creators.d.ts.map +0 -1
  340. package/dist/src/document-model/gen/operation/creators.js +0 -13
  341. package/dist/src/document-model/gen/operation/creators.js.map +0 -1
  342. package/dist/src/document-model/gen/operation/object.d.ts +0 -17
  343. package/dist/src/document-model/gen/operation/object.d.ts.map +0 -1
  344. package/dist/src/document-model/gen/operation/object.js +0 -35
  345. package/dist/src/document-model/gen/operation/object.js.map +0 -1
  346. package/dist/src/document-model/gen/operation/operations.d.ts +0 -15
  347. package/dist/src/document-model/gen/operation/operations.d.ts.map +0 -1
  348. package/dist/src/document-model/gen/operation/operations.js +0 -2
  349. package/dist/src/document-model/gen/operation/operations.js.map +0 -1
  350. package/dist/src/document-model/gen/operation-error/actions.d.ts +0 -32
  351. package/dist/src/document-model/gen/operation-error/actions.d.ts.map +0 -1
  352. package/dist/src/document-model/gen/operation-error/actions.js +0 -2
  353. package/dist/src/document-model/gen/operation-error/actions.js.map +0 -1
  354. package/dist/src/document-model/gen/operation-error/creators.d.ts +0 -10
  355. package/dist/src/document-model/gen/operation-error/creators.d.ts.map +0 -1
  356. package/dist/src/document-model/gen/operation-error/creators.js +0 -10
  357. package/dist/src/document-model/gen/operation-error/creators.js.map +0 -1
  358. package/dist/src/document-model/gen/operation-error/object.d.ts +0 -14
  359. package/dist/src/document-model/gen/operation-error/object.d.ts.map +0 -1
  360. package/dist/src/document-model/gen/operation-error/object.js +0 -26
  361. package/dist/src/document-model/gen/operation-error/object.js.map +0 -1
  362. package/dist/src/document-model/gen/operation-error/operations.d.ts +0 -12
  363. package/dist/src/document-model/gen/operation-error/operations.d.ts.map +0 -1
  364. package/dist/src/document-model/gen/operation-error/operations.js +0 -2
  365. package/dist/src/document-model/gen/operation-error/operations.js.map +0 -1
  366. package/dist/src/document-model/gen/operation-example/actions.d.ts +0 -20
  367. package/dist/src/document-model/gen/operation-example/actions.d.ts.map +0 -1
  368. package/dist/src/document-model/gen/operation-example/actions.js +0 -2
  369. package/dist/src/document-model/gen/operation-example/actions.js.map +0 -1
  370. package/dist/src/document-model/gen/operation-example/creators.d.ts +0 -7
  371. package/dist/src/document-model/gen/operation-example/creators.d.ts.map +0 -1
  372. package/dist/src/document-model/gen/operation-example/creators.js +0 -7
  373. package/dist/src/document-model/gen/operation-example/creators.js.map +0 -1
  374. package/dist/src/document-model/gen/operation-example/object.d.ts +0 -11
  375. package/dist/src/document-model/gen/operation-example/object.d.ts.map +0 -1
  376. package/dist/src/document-model/gen/operation-example/object.js +0 -17
  377. package/dist/src/document-model/gen/operation-example/object.js.map +0 -1
  378. package/dist/src/document-model/gen/operation-example/operations.d.ts +0 -9
  379. package/dist/src/document-model/gen/operation-example/operations.d.ts.map +0 -1
  380. package/dist/src/document-model/gen/operation-example/operations.js +0 -2
  381. package/dist/src/document-model/gen/operation-example/operations.js.map +0 -1
  382. package/dist/src/document-model/gen/ph-factories.d.ts +0 -27
  383. package/dist/src/document-model/gen/ph-factories.d.ts.map +0 -1
  384. package/dist/src/document-model/gen/ph-factories.js.map +0 -1
  385. package/dist/src/document-model/gen/reducer.d.ts +0 -5
  386. package/dist/src/document-model/gen/reducer.d.ts.map +0 -1
  387. package/dist/src/document-model/gen/reducer.js +0 -193
  388. package/dist/src/document-model/gen/reducer.js.map +0 -1
  389. package/dist/src/document-model/gen/schema/index.d.ts +0 -3
  390. package/dist/src/document-model/gen/schema/index.d.ts.map +0 -1
  391. package/dist/src/document-model/gen/schema/index.js +0 -3
  392. package/dist/src/document-model/gen/schema/index.js.map +0 -1
  393. package/dist/src/document-model/gen/schema/types.d.ts +0 -457
  394. package/dist/src/document-model/gen/schema/types.d.ts.map +0 -1
  395. package/dist/src/document-model/gen/schema/types.js.map +0 -1
  396. package/dist/src/document-model/gen/schema/zod.d.ts +0 -453
  397. package/dist/src/document-model/gen/schema/zod.d.ts.map +0 -1
  398. package/dist/src/document-model/gen/schema/zod.js.map +0 -1
  399. package/dist/src/document-model/gen/state/actions.d.ts +0 -28
  400. package/dist/src/document-model/gen/state/actions.d.ts.map +0 -1
  401. package/dist/src/document-model/gen/state/actions.js +0 -2
  402. package/dist/src/document-model/gen/state/actions.js.map +0 -1
  403. package/dist/src/document-model/gen/state/creators.d.ts +0 -9
  404. package/dist/src/document-model/gen/state/creators.d.ts.map +0 -1
  405. package/dist/src/document-model/gen/state/creators.js +0 -9
  406. package/dist/src/document-model/gen/state/creators.js.map +0 -1
  407. package/dist/src/document-model/gen/state/object.d.ts +0 -13
  408. package/dist/src/document-model/gen/state/object.d.ts.map +0 -1
  409. package/dist/src/document-model/gen/state/object.js +0 -23
  410. package/dist/src/document-model/gen/state/object.js.map +0 -1
  411. package/dist/src/document-model/gen/state/operations.d.ts +0 -11
  412. package/dist/src/document-model/gen/state/operations.d.ts.map +0 -1
  413. package/dist/src/document-model/gen/state/operations.js +0 -2
  414. package/dist/src/document-model/gen/state/operations.js.map +0 -1
  415. package/dist/src/document-model/gen/types.d.ts +0 -7
  416. package/dist/src/document-model/gen/types.d.ts.map +0 -1
  417. package/dist/src/document-model/gen/types.js.map +0 -1
  418. package/dist/src/document-model/gen/utils.d.ts +0 -10
  419. package/dist/src/document-model/gen/utils.d.ts.map +0 -1
  420. package/dist/src/document-model/gen/utils.js +0 -31
  421. package/dist/src/document-model/gen/utils.js.map +0 -1
  422. package/dist/src/document-model/gen/versioning/actions.d.ts +0 -24
  423. package/dist/src/document-model/gen/versioning/actions.d.ts.map +0 -1
  424. package/dist/src/document-model/gen/versioning/actions.js +0 -2
  425. package/dist/src/document-model/gen/versioning/actions.js.map +0 -1
  426. package/dist/src/document-model/gen/versioning/creators.d.ts +0 -8
  427. package/dist/src/document-model/gen/versioning/creators.d.ts.map +0 -1
  428. package/dist/src/document-model/gen/versioning/creators.js +0 -8
  429. package/dist/src/document-model/gen/versioning/creators.js.map +0 -1
  430. package/dist/src/document-model/gen/versioning/object.d.ts +0 -12
  431. package/dist/src/document-model/gen/versioning/object.d.ts.map +0 -1
  432. package/dist/src/document-model/gen/versioning/object.js +0 -20
  433. package/dist/src/document-model/gen/versioning/object.js.map +0 -1
  434. package/dist/src/document-model/gen/versioning/operations.d.ts +0 -10
  435. package/dist/src/document-model/gen/versioning/operations.d.ts.map +0 -1
  436. package/dist/src/document-model/gen/versioning/operations.js +0 -2
  437. package/dist/src/document-model/gen/versioning/operations.js.map +0 -1
  438. package/dist/test/document/object.test.d.ts +0 -2
  439. package/dist/test/document/object.test.d.ts.map +0 -1
  440. package/dist/test/document/object.test.js +0 -13
  441. package/dist/test/document/object.test.js.map +0 -1
  442. package/dist/test/document-model/object.test.d.ts +0 -2
  443. package/dist/test/document-model/object.test.d.ts.map +0 -1
  444. package/dist/test/document-model/object.test.js +0 -243
  445. package/dist/test/document-model/object.test.js.map +0 -1
  446. /package/dist/src/{document-model/gen/schema → core}/types.js +0 -0
  447. /package/dist/{src/document-model/gen → test}/types.js +0 -0
@@ -1,5 +1,267 @@
1
- import stringify from "safe-stable-stringify";
2
- import { generateId } from "./crypto.js";
1
+ import stringifyJson, { stringify } from "safe-stable-stringify";
2
+ import { generateId, hashBrowser } from "./crypto.js";
3
+ import { HashMismatchError } from "./errors.js";
4
+ import { createPresignedHeader } from "./header.js";
5
+ export function isNoopOperation(op) {
6
+ return (op.type === "NOOP" &&
7
+ op.skip !== undefined &&
8
+ op.skip > 0 &&
9
+ op.hash !== undefined);
10
+ }
11
+ export function isUndoRedo(action) {
12
+ return ["UNDO", "REDO"].includes(action.type);
13
+ }
14
+ export function isUndo(action) {
15
+ return action.type === "UNDO";
16
+ }
17
+ export function isDocumentAction(action) {
18
+ return ["SET_NAME", "UNDO", "REDO", "PRUNE", "LOAD_STATE"].includes(action.type);
19
+ }
20
+ /**
21
+ * Important note: it is the responsibility of the caller to set the document type
22
+ * on the header.
23
+ */
24
+ export function baseCreateDocument(createState, initialState) {
25
+ const state = createState(initialState);
26
+ const header = createPresignedHeader();
27
+ const phDocument = {
28
+ header,
29
+ state,
30
+ initialState: state,
31
+ operations: { global: [], local: [] },
32
+ clipboard: [],
33
+ };
34
+ return phDocument;
35
+ }
36
+ export function hashDocumentStateForScope(document, scope = "global") {
37
+ const stateString = stringifyJson(document.state[scope] || "");
38
+ return hashBrowser(stateString);
39
+ }
40
+ export function readOnly(value) {
41
+ return Object.freeze(value);
42
+ }
43
+ /**
44
+ * Maps skipped operations in an array of operations.
45
+ * Skipped operations are operations that are ignored during processing.
46
+ * @param operations - The array of operations to map.
47
+ * @param skippedHeadOperations - The number of operations to skip at the head of the array of operations.
48
+ * @returns An array of mapped operations with ignore flag indicating if the operation is skipped.
49
+ * @throws Error if the operation index is invalid and there are missing operations.
50
+ */
51
+ export function mapSkippedOperations(operations, skippedHeadOperations) {
52
+ const ops = [...operations];
53
+ let skipped = skippedHeadOperations || 0;
54
+ let latestOpIndex = ops.length > 0 ? ops[ops.length - 1].index : 0;
55
+ const scopeOpsWithIgnore = [];
56
+ for (const operation of ops.reverse()) {
57
+ if (skipped > 0) {
58
+ const operationsDiff = latestOpIndex - operation.index;
59
+ skipped -= operationsDiff;
60
+ }
61
+ if (skipped < 0) {
62
+ throw new Error("Invalid operation index, missing operations");
63
+ }
64
+ const mappedOp = {
65
+ ignore: skipped > 0,
66
+ operation,
67
+ };
68
+ // here we add 1 to the skip number because we want to get the number of
69
+ // operations that we want to move the pointer back to get the latest valid operation
70
+ // operation.skip = 1 means that we want to move the pointer back 2 operations to get to the latest valid operation
71
+ const operationSkip = operation.skip > 0 ? operation.skip + 1 : 0;
72
+ if (operationSkip > 0 && operationSkip > skipped) {
73
+ const skipDiff = operationSkip - skipped;
74
+ skipped = skipped + skipDiff;
75
+ }
76
+ latestOpIndex = operation.index;
77
+ scopeOpsWithIgnore.push(mappedOp);
78
+ }
79
+ return scopeOpsWithIgnore.reverse();
80
+ }
81
+ // Flattens the mapped operations (with ignore flag) from all scopes into
82
+ // a single array and sorts them by timestamp
83
+ export function sortMappedOperations(operations) {
84
+ return Object.values(operations)
85
+ .flatMap((array) => array)
86
+ .sort((a, b) => new Date(a.operation.timestampUtcMs).getTime() -
87
+ new Date(b.operation.timestampUtcMs).getTime());
88
+ }
89
+ // Default createState function that just returns the state as-is
90
+ const defaultCreateState = (state) => {
91
+ return state;
92
+ };
93
+ // Runs the operations on the initial data using the
94
+ // provided document reducer.
95
+ // This rebuilds the document according to the provided actions.
96
+ export function replayDocument(initialState, operations, reducer, dispatch, header, skipHeaderOperations = {}, options) {
97
+ const { checkHashes = true, reuseOperationResultingState, operationResultingStateParser = parseResultingState, } = options || {};
98
+ let documentState = initialState;
99
+ const operationsToReplay = [];
100
+ // Initialize with all scopes found in operations, plus global and local for backward compatibility
101
+ const allScopes = new Set([...Object.keys(operations), "global", "local"]);
102
+ const initialOperations = {};
103
+ for (const scope of allScopes) {
104
+ initialOperations[scope] = [];
105
+ }
106
+ // if operation resulting state is to be used then
107
+ // looks for the last operation with state of each
108
+ // scope to use it as the starting point and only
109
+ // replay operations that follow it
110
+ if (reuseOperationResultingState) {
111
+ for (const [scope, scopeOperations] of Object.entries(operations)) {
112
+ if (!scopeOperations) {
113
+ continue;
114
+ }
115
+ const index = scopeOperations.findLastIndex((s) => !!s.resultingState);
116
+ if (index < 0) {
117
+ operationsToReplay.push(...scopeOperations);
118
+ continue;
119
+ }
120
+ const opWithState = scopeOperations[index];
121
+ if (!opWithState || !opWithState.resultingState)
122
+ continue;
123
+ try {
124
+ const scopeState = operationResultingStateParser(opWithState.resultingState);
125
+ documentState = {
126
+ ...documentState,
127
+ // TODO how to deal with attachments?
128
+ [scope]: scopeState,
129
+ };
130
+ const scopeInitialOps = initialOperations[scope];
131
+ if (scopeInitialOps) {
132
+ scopeInitialOps.push(...scopeOperations.slice(0, index + 1));
133
+ }
134
+ operationsToReplay.push(...scopeOperations.slice(index + 1));
135
+ }
136
+ catch {
137
+ /* if parsing fails then keeps replays all scope operations */
138
+ operationsToReplay.push(...scopeOperations);
139
+ }
140
+ }
141
+ }
142
+ else {
143
+ operationsToReplay.push(...Object.values(operations).flatMap((ops) => ops || []));
144
+ }
145
+ // builds a new document from the initial data
146
+ const document = baseCreateDocument((defaultCreateState), documentState);
147
+ if (header?.slug) {
148
+ document.header.slug = header.slug;
149
+ }
150
+ document.initialState = initialState;
151
+ document.operations = initialOperations;
152
+ let result = document;
153
+ // if there are operations left without resulting state
154
+ // then replays them
155
+ if (operationsToReplay.length) {
156
+ result = operationsToReplay.reduce((document, operation) => {
157
+ const doc = reducer(document, operation.action, dispatch, {
158
+ ignoreSkipOperations: true,
159
+ checkHashes,
160
+ replayOptions: {
161
+ operation,
162
+ },
163
+ });
164
+ return doc;
165
+ }, document);
166
+ }
167
+ // if not then updates the document header according
168
+ // to the latest operation of each scope
169
+ else {
170
+ for (const scopeOperations of Object.values(initialOperations)) {
171
+ if (!scopeOperations) {
172
+ continue;
173
+ }
174
+ const lastOperation = scopeOperations.at(-1);
175
+ if (lastOperation) {
176
+ result = updateHeaderRevision(result, lastOperation.action.scope);
177
+ }
178
+ }
179
+ }
180
+ // if hash generation was skipped then checks if the hash
181
+ // of each scope matches the hash of last operation
182
+ if (!checkHashes) {
183
+ for (const scope of Object.keys(result.state)) {
184
+ for (let i = operationsToReplay.length - 1; i >= 0; i--) {
185
+ const operation = operationsToReplay[i];
186
+ if (operation.action.scope !== scope) {
187
+ continue;
188
+ }
189
+ if (operation.hash !== hashDocumentStateForScope(result, scope)) {
190
+ throw new HashMismatchError(scope, result, operation);
191
+ }
192
+ else {
193
+ break;
194
+ }
195
+ }
196
+ }
197
+ }
198
+ // reuses operation timestamp if provided
199
+ // Initialize with all scopes from both result.operations and input operations
200
+ const allResultScopes = new Set([
201
+ ...Object.keys(result.operations),
202
+ ...Object.keys(operations),
203
+ "global",
204
+ "local",
205
+ ]);
206
+ const initialResultOperations = {};
207
+ for (const scope of allResultScopes) {
208
+ initialResultOperations[scope] = [];
209
+ }
210
+ // Iterate over all scopes (not just result.operations) to preserve empty scopes
211
+ const resultOperations = Array.from(allResultScopes).reduce((acc, scope) => {
212
+ const scopeOps = result.operations[scope] || [];
213
+ return {
214
+ ...acc,
215
+ [scope]: [
216
+ ...scopeOps.map((operation, index) => {
217
+ return {
218
+ ...operation,
219
+ timestamp: operations[scope]?.[index]?.timestampUtcMs ??
220
+ operation.timestampUtcMs,
221
+ };
222
+ }),
223
+ ],
224
+ };
225
+ }, initialResultOperations);
226
+ // gets the last modified timestamp from the latest operation
227
+ const lastModified = header
228
+ ? header.lastModifiedAtUtcIso
229
+ : Object.values(resultOperations).reduce((acc, curr) => {
230
+ if (!curr) {
231
+ return acc;
232
+ }
233
+ const operation = curr.at(-1);
234
+ if (operation) {
235
+ if (operation.timestampUtcMs > acc) {
236
+ return operation.timestampUtcMs;
237
+ }
238
+ }
239
+ return acc;
240
+ }, document.header.lastModifiedAtUtcIso);
241
+ if (header) {
242
+ result.header = {
243
+ ...header,
244
+ revision: result.header.revision,
245
+ lastModifiedAtUtcIso: lastModified,
246
+ };
247
+ }
248
+ return {
249
+ ...result,
250
+ operations: resultOperations,
251
+ };
252
+ }
253
+ export function parseResultingState(state) {
254
+ const stateType = typeof state;
255
+ if (stateType === "string") {
256
+ return JSON.parse(state);
257
+ }
258
+ else if (stateType === "object") {
259
+ return state;
260
+ }
261
+ else {
262
+ throw new Error(`Providing resulting state is of type: ${stateType}`);
263
+ }
264
+ }
3
265
  export var IntegrityIssueType;
4
266
  (function (IntegrityIssueType) {
5
267
  IntegrityIssueType["UNEXPECTED_INDEX"] = "UNEXPECTED_INDEX";
@@ -139,7 +401,6 @@ export function reshuffleByTimestampAndIndex(startIndex, opsA, opsB) {
139
401
  }
140
402
  // TODO: implement better operation equality function
141
403
  export function operationsAreEqual(op1, op2) {
142
- /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */
143
404
  const a = op1;
144
405
  const b = op2;
145
406
  const aComparable = {
@@ -156,7 +417,6 @@ export function operationsAreEqual(op1, op2) {
156
417
  scope: b.scope ?? null,
157
418
  input: b.input ?? null,
158
419
  };
159
- /* eslint-enable @typescript-eslint/no-unsafe-assignment */
160
420
  return stringify(aComparable) === stringify(bComparable);
161
421
  }
162
422
  // [T0:0 T1:0 T2:0 T3:0] + [B4:0 B5:0] = [T0:0 T1:0 T2:0 T3:0 B4:0 B5:0]
@@ -390,6 +650,9 @@ export function skipHeaderOperations(operations, skipHeaderOperation) {
390
650
  export function garbageCollectDocumentOperations(documentOperations) {
391
651
  const clearedOperations = Object.entries(documentOperations).reduce((acc, entry) => {
392
652
  const [scope, ops] = entry;
653
+ if (!ops) {
654
+ return acc;
655
+ }
393
656
  return {
394
657
  ...acc,
395
658
  [scope]: garbageCollect(sortOperations(ops)),
@@ -418,13 +681,18 @@ export function filterDocumentOperationsResultingState(documentOperations) {
418
681
  return {};
419
682
  }
420
683
  const entries = Object.entries(documentOperations);
421
- return entries.reduce((acc, [scope, operations]) => ({
422
- ...acc,
423
- [scope]: operations.map((op) => {
424
- const { resultingState, ...restProps } = op;
425
- return restProps;
426
- }),
427
- }), {});
684
+ return entries.reduce((acc, [scope, operations]) => {
685
+ if (!operations) {
686
+ return acc;
687
+ }
688
+ return {
689
+ ...acc,
690
+ [scope]: operations.map((op) => {
691
+ const { resultingState, ...restProps } = op;
692
+ return restProps;
693
+ }),
694
+ };
695
+ }, {});
428
696
  }
429
697
  /**
430
698
  * Calculates the difference between two arrays of operations.
@@ -438,4 +706,44 @@ export function filterDocumentOperationsResultingState(documentOperations) {
438
706
  export function diffOperations(clearedOperationsA, clearedOperationsB) {
439
707
  return clearedOperationsA.filter((operationA) => !clearedOperationsB.some((operationB) => operationA.index === operationB.index));
440
708
  }
441
- //# sourceMappingURL=document-helpers.js.map
709
+ // it's operations, falling back to the initial state
710
+ export function getDocumentLastModified(document) {
711
+ const sortedOperations = sortOperations(Object.values(document.operations).flatMap((ops) => ops || []));
712
+ return (sortedOperations.at(-1)?.timestampUtcMs ||
713
+ document.header.lastModifiedAtUtcIso);
714
+ }
715
+ /**
716
+ * Gets the next revision number based on the provided scope.
717
+ *
718
+ * @param state The current state of the document.
719
+ * @param scope The scope of the operation.
720
+ * @returns The next revision number.
721
+ */
722
+ function getNextRevision(document, scope) {
723
+ const scopeOperations = document.operations[scope];
724
+ const latestOperationIndex = scopeOperations?.at(-1)?.index ?? -1;
725
+ return (latestOperationIndex ?? -1) + 1;
726
+ }
727
+ /**
728
+ * Updates the document header with the latest revision number and
729
+ * date of last modification.
730
+ *
731
+ * @param state The current state of the document.
732
+ * @param operation The action being applied to the document.
733
+ * @returns The updated document state.
734
+ */
735
+ export function updateHeaderRevision(document, scope) {
736
+ const header = {
737
+ ...document.header,
738
+ revision: {
739
+ ...document.header.revision,
740
+ [scope]: getNextRevision(document, scope),
741
+ },
742
+ lastModifiedAtUtcIso: getDocumentLastModified(document),
743
+ };
744
+ return {
745
+ ...document,
746
+ header,
747
+ };
748
+ }
749
+ //# 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"}
@@ -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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,sCAAsC,EACtC,gCAAgC,EAChC,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQ9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,IAAY,EACZ,MAAkB;IAElB,MAAM,eAAe,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,eAAe,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,GAAW;IAEX,MAAM,eAAe,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IACnD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,QAAoB;IAC5C,kBAAkB;IAClB,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IAExB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,GAAG,CAAC,IAAI,CACN,iBAAiB,EACjB,IAAI,CAAC,SAAS,CACZ,sCAAsC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC3D,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAoB,EACpB,KAA2B;IAE3B,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;IAC9C,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAgB,EAChB,OAAwB,EACxB,OAA+B;IAE/B,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IACxB,MAAM,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,GAAU,EACV,OAAwB,EACxB,OAA+B;IAE/B,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAW,CAAC;IAE3D,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,MAAM,GAAiC,SAAS,CAAC;IACrD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAqB,CAAC;IAC3E,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAC3B,MAAM,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CACd,CAAC;IAExB,MAAM,iBAAiB,GAAG,gCAAgC,CAAC,UAAU,CAAC,CAAC;IAEvE,MAAM,eAAe,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,0FAA0F;IAC1F,0FAA0F;IAC1F,+DAA+D;IAC/D,IAAI,MAAM,GAAG,cAAc,CACzB,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,MAAM,EACN,EAAE,EACF,OAAO,CACR,CAAC;IAEF,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG;YACP,GAAG,MAAM;YACT,MAAM;SACP,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -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"}