document-model 4.1.0-dev.1 → 4.1.0-dev.100

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 +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/core/documents.d.ts +128 -0
  11. package/dist/src/core/documents.d.ts.map +1 -0
  12. package/dist/src/{document/utils/document-helpers.js → core/documents.js} +364 -26
  13. package/dist/src/core/documents.js.map +1 -0
  14. package/dist/src/core/errors.d.ts +21 -0
  15. package/dist/src/core/errors.d.ts.map +1 -0
  16. package/dist/src/core/errors.js +47 -0
  17. package/dist/src/core/errors.js.map +1 -0
  18. package/dist/src/core/files.d.ts +14 -0
  19. package/dist/src/core/files.d.ts.map +1 -0
  20. package/dist/src/core/files.js +74 -0
  21. package/dist/src/core/files.js.map +1 -0
  22. package/dist/src/{document/utils → core}/header.d.ts +3 -35
  23. package/dist/src/core/header.d.ts.map +1 -0
  24. package/dist/src/{document/utils → core}/header.js +6 -19
  25. package/dist/src/core/header.js.map +1 -0
  26. package/dist/src/core/index.d.ts +12 -0
  27. package/dist/src/core/index.d.ts.map +1 -0
  28. package/dist/src/core/index.js +12 -0
  29. package/dist/src/core/index.js.map +1 -0
  30. package/dist/src/{document/utils/file.d.ts → core/node.d.ts} +40 -29
  31. package/dist/src/core/node.d.ts.map +1 -0
  32. package/dist/src/core/node.js +149 -0
  33. package/dist/src/core/node.js.map +1 -0
  34. package/dist/src/core/operations.d.ts +32 -0
  35. package/dist/src/core/operations.d.ts.map +1 -0
  36. package/dist/src/{document/actions → core}/operations.js +11 -59
  37. package/dist/src/core/operations.js.map +1 -0
  38. package/dist/src/core/ph-types.d.ts +259 -0
  39. package/dist/src/core/ph-types.d.ts.map +1 -0
  40. package/dist/src/core/ph-types.js +15 -0
  41. package/dist/src/core/ph-types.js.map +1 -0
  42. package/dist/src/core/reducer.d.ts +61 -0
  43. package/dist/src/core/reducer.d.ts.map +1 -0
  44. package/dist/src/core/reducer.js +416 -0
  45. package/dist/src/core/reducer.js.map +1 -0
  46. package/dist/src/{document/schema/zod.d.ts → core/schemas.d.ts} +50 -24
  47. package/dist/src/core/schemas.d.ts.map +1 -0
  48. package/dist/src/{document/schema/zod.js → core/schemas.js} +24 -27
  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 +500 -0
  55. package/dist/src/core/types.d.ts.map +1 -0
  56. package/dist/src/{document → core}/types.js.map +1 -1
  57. package/dist/src/core/validation.d.ts +4 -0
  58. package/dist/src/core/validation.d.ts.map +1 -0
  59. package/dist/src/{document/utils → core}/validation.js +6 -2
  60. package/dist/src/core/validation.js.map +1 -0
  61. package/dist/src/document-model/actions.d.ts +158 -0
  62. package/dist/src/document-model/actions.d.ts.map +1 -0
  63. package/dist/src/document-model/actions.js +109 -0
  64. package/dist/src/document-model/actions.js.map +1 -0
  65. package/dist/src/document-model/constants.d.ts +7 -0
  66. package/dist/src/document-model/constants.d.ts.map +1 -0
  67. package/dist/src/document-model/{gen/document-model.js → constants.js} +171 -139
  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 +64 -40
  118. package/dist/test/document/undo-redo.test.js.map +1 -1
  119. package/dist/test/document/utils.test.js +51 -41
  120. package/dist/test/document/utils.test.js.map +1 -1
  121. package/dist/test/document-helpers/addUndo.test.js +2 -2
  122. package/dist/test/document-helpers/addUndo.test.js.map +1 -1
  123. package/dist/test/document-helpers/attachBranch.test.js +21 -21
  124. package/dist/test/document-helpers/attachBranch.test.js.map +1 -1
  125. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +1 -1
  126. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +1 -1
  127. package/dist/test/document-helpers/conflictResolution.test.js +11 -11
  128. package/dist/test/document-helpers/conflictResolution.test.js.map +1 -1
  129. package/dist/test/document-helpers/filterDuplicatedOperations.test.js +1 -1
  130. package/dist/test/document-helpers/filterDuplicatedOperations.test.js.map +1 -1
  131. package/dist/test/document-helpers/garbageCollect.test.js +1 -1
  132. package/dist/test/document-helpers/garbageCollect.test.js.map +1 -1
  133. package/dist/test/document-helpers/groupOperationsByScope.test.js +71 -71
  134. package/dist/test/document-helpers/groupOperationsByScope.test.js.map +1 -1
  135. package/dist/test/document-helpers/merge.test.js +126 -126
  136. package/dist/test/document-helpers/merge.test.js.map +1 -1
  137. package/dist/test/document-helpers/nextSkipNumber.test.js +1 -1
  138. package/dist/test/document-helpers/nextSkipNumber.test.js.map +1 -1
  139. package/dist/test/document-helpers/prepareOperations.test.js +1 -1
  140. package/dist/test/document-helpers/prepareOperations.test.js.map +1 -1
  141. package/dist/test/document-helpers/removeExistingOperations.test.js +38 -26
  142. package/dist/test/document-helpers/removeExistingOperations.test.js.map +1 -1
  143. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +16 -16
  144. package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +1 -1
  145. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +22 -22
  146. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +1 -1
  147. package/dist/test/document-helpers/skipHeaderOperations.test.js +34 -41
  148. package/dist/test/document-helpers/skipHeaderOperations.test.js.map +1 -1
  149. package/dist/test/document-helpers/sortOperations.test.js +1 -1
  150. package/dist/test/document-helpers/sortOperations.test.js.map +1 -1
  151. package/dist/test/document-helpers/split.test.js +3 -3
  152. package/dist/test/document-helpers/split.test.js.map +1 -1
  153. package/dist/test/document-helpers/utils.d.ts +2 -1
  154. package/dist/test/document-helpers/utils.d.ts.map +1 -1
  155. package/dist/test/document-helpers/utils.js +13 -8
  156. package/dist/test/document-helpers/utils.js.map +1 -1
  157. package/dist/test/document-model/replay.test.js +21 -25
  158. package/dist/test/document-model/replay.test.js.map +1 -1
  159. package/dist/test/document-model/skip-operations.test.js +93 -96
  160. package/dist/test/document-model/skip-operations.test.js.map +1 -1
  161. package/dist/test/document-model/validation.test.js +10 -13
  162. package/dist/test/document-model/validation.test.js.map +1 -1
  163. package/dist/test/document-model/zip.test.js +20 -21
  164. package/dist/test/document-model/zip.test.js.map +1 -1
  165. package/dist/test/helpers.d.ts +59 -13
  166. package/dist/test/helpers.d.ts.map +1 -1
  167. package/dist/test/helpers.js +58 -11
  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 +27 -21
  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 -16
  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 +0 -346
  208. package/dist/src/document/reducer.js.map +0 -1
  209. package/dist/src/document/schema/types.d.ts +0 -177
  210. package/dist/src/document/schema/types.d.ts.map +0 -1
  211. package/dist/src/document/schema/types.js +0 -2
  212. package/dist/src/document/schema/zod.d.ts.map +0 -1
  213. package/dist/src/document/schema/zod.js.map +0 -1
  214. package/dist/src/document/signal.d.ts +0 -36
  215. package/dist/src/document/signal.d.ts.map +0 -1
  216. package/dist/src/document/signal.js +0 -2
  217. package/dist/src/document/signal.js.map +0 -1
  218. package/dist/src/document/types.d.ts +0 -336
  219. package/dist/src/document/types.d.ts.map +0 -1
  220. package/dist/src/document/types.js +0 -2
  221. package/dist/src/document/utils/base.d.ts +0 -88
  222. package/dist/src/document/utils/base.d.ts.map +0 -1
  223. package/dist/src/document/utils/base.js +0 -335
  224. package/dist/src/document/utils/base.js.map +0 -1
  225. package/dist/src/document/utils/browser.d.ts +0 -18
  226. package/dist/src/document/utils/browser.d.ts.map +0 -1
  227. package/dist/src/document/utils/browser.js +0 -54
  228. package/dist/src/document/utils/browser.js.map +0 -1
  229. package/dist/src/document/utils/crypto.d.ts +0 -11
  230. package/dist/src/document/utils/crypto.d.ts.map +0 -1
  231. package/dist/src/document/utils/crypto.js +0 -80
  232. package/dist/src/document/utils/crypto.js.map +0 -1
  233. package/dist/src/document/utils/document-helpers.d.ts +0 -78
  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 -10
  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 -10
  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 -9
  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 -9
  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 -29
  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 -14
  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 -20
  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 -18
  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 -11
  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 -17
  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 -15
  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 -8
  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 -14
  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 -12
  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/reducer.d.ts +0 -5
  383. package/dist/src/document-model/gen/reducer.d.ts.map +0 -1
  384. package/dist/src/document-model/gen/reducer.js +0 -193
  385. package/dist/src/document-model/gen/reducer.js.map +0 -1
  386. package/dist/src/document-model/gen/schema/types.d.ts +0 -458
  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 -454
  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 -10
  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 -10
  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 -9
  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 -13
  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,88 +0,0 @@
1
- import { type PHDocumentHeader } from "#document/ph-types.js";
2
- import { baseReducer } from "../reducer.js";
3
- import { type UndoAction, type UndoRedoAction } from "../schema/types.js";
4
- import { type SignalDispatch } from "../signal.js";
5
- import { type BaseAction, type CreateState, type DocumentAction, type DocumentOperations, type DocumentOperationsIgnoreMap, type ExtendedState, type ExtendedStateFromDocument, type GlobalStateFromDocument, type LocalStateFromDocument, type MappedOperation, type Operation, type OperationScope, type OperationsFromDocument, type PartialState, type PHDocument, type Reducer, type ReducerOptions, type StateReducer } from "../types.js";
6
- export declare function isNoopOperation<TOp extends {
7
- type: string;
8
- skip: number;
9
- hash: string;
10
- }>(op: Partial<TOp>): boolean;
11
- export declare function isUndoRedo(action: BaseAction<string, unknown>): action is UndoRedoAction;
12
- export declare function isUndo(action: BaseAction<string, unknown>): action is UndoAction;
13
- export declare function isDocumentAction(action: BaseAction<string, unknown>): action is DocumentAction;
14
- /**
15
- * Helper function to be used by action creators.
16
- *
17
- * @remarks
18
- * Creates an action with the given type and input properties. The input
19
- * properties default to an empty object.
20
- *
21
- * @typeParam A - Type of the action to be returned.
22
- *
23
- * @param type - The type of the action.
24
- * @param input - The input properties of the action.
25
- * @param attachments - The attachments included in the action.
26
- * @param validator - The validator to use for the input properties.
27
- * @param scope - The scope of the action, can either be 'global' or 'local'.
28
- * @param skip - The number of operations to skip before this new action is applied.
29
- *
30
- * @throws Error if the type is empty or not a string.
31
- *
32
- * @returns The new action.
33
- */
34
- export declare function createAction<TAction extends BaseAction<string, unknown>>(type: TAction["type"], input?: TAction["input"], attachments?: TAction["attachments"], validator?: () => {
35
- parse(v: unknown): TAction["input"];
36
- }, scope?: OperationScope): TAction;
37
- /**
38
- * Helper function to create a document model reducer.
39
- *
40
- * @remarks
41
- * This function creates a new reducer that wraps the provided `reducer` with
42
- * `documentReducer`, adding support for document actions:
43
- * - `SET_NAME`
44
- * - `UNDO`
45
- * - `REDO`
46
- * - `PRUNE`
47
- *
48
- * It also updates the document-related attributes on every operation.
49
- *
50
- * @param reducer - The custom reducer to wrap.
51
- * @param documentReducer - The document reducer to use.
52
- *
53
- * @returns The new reducer.
54
- */
55
- export declare function createReducer<TDocument extends PHDocument>(stateReducer: StateReducer<TDocument>, documentReducer?: typeof baseReducer): Reducer<TDocument>;
56
- export declare function baseCreateExtendedState<TDocument extends PHDocument>(initialState?: Partial<ExtendedState<PartialState<GlobalStateFromDocument<TDocument>>, PartialState<LocalStateFromDocument<TDocument>>>>, createState?: CreateState<TDocument>): ExtendedStateFromDocument<TDocument>;
57
- /**
58
- * Important note: it is the responsibility of the caller to set the document type
59
- * on the header.
60
- */
61
- export declare function baseCreateDocument<TDocument extends PHDocument>(initialState?: Partial<ExtendedStateFromDocument<TDocument>>, createState?: CreateState<TDocument>): TDocument;
62
- export declare function hashDocumentStateForScope(document: {
63
- state: {
64
- [key in OperationScope]: unknown;
65
- };
66
- }, scope?: OperationScope): string;
67
- export declare function readOnly<T>(value: T): Readonly<T>;
68
- /**
69
- * Maps skipped operations in an array of operations.
70
- * Skipped operations are operations that are ignored during processing.
71
- * @param operations - The array of operations to map.
72
- * @param skippedHeadOperations - The number of operations to skip at the head of the array of operations.
73
- * @returns An array of mapped operations with ignore flag indicating if the operation is skipped.
74
- * @throws Error if the operation index is invalid and there are missing operations.
75
- */
76
- export declare function mapSkippedOperations(operations: Operation[], skippedHeadOperations?: number): MappedOperation[];
77
- export declare function sortMappedOperations(operations: DocumentOperationsIgnoreMap): MappedOperation<import("../types.js").Action<string, unknown, OperationScope>>[];
78
- export declare function getDocumentLastModified(document: PHDocument): string;
79
- export declare function replayOperations<TDocument extends PHDocument>(initialState: ExtendedStateFromDocument<TDocument>, clearedOperations: OperationsFromDocument<TDocument>, stateReducer: StateReducer<TDocument>, dispatch?: SignalDispatch, header?: PHDocumentHeader, documentReducer?: typeof baseReducer, skipHeaderOperations?: SkipHeaderOperations, options?: ReducerOptions): TDocument;
80
- export type SkipHeaderOperations = Partial<Record<OperationScope, number>>;
81
- export type ReplayDocumentOptions = {
82
- checkHashes?: boolean;
83
- reuseOperationResultingState?: boolean;
84
- operationResultingStateParser?: <TState>(state: string) => TState;
85
- };
86
- export declare function replayDocument<TDocument extends PHDocument>(initialState: ExtendedStateFromDocument<TDocument>, operations: DocumentOperations, reducer: Reducer<TDocument>, dispatch?: SignalDispatch, header?: PHDocumentHeader, skipHeaderOperations?: SkipHeaderOperations, options?: ReplayDocumentOptions): TDocument;
87
- export declare function parseResultingState<TState>(state: string | null | undefined): TState;
88
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/base.ts"],"names":[],"mappings":"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"}
@@ -1,335 +0,0 @@
1
- import { hash } from "#utils/env";
2
- import stringifyJson from "safe-stable-stringify";
3
- import { ZodError } from "zod";
4
- import { LOAD_STATE, NOOP, PRUNE, REDO, SET_NAME, UNDO, } from "../actions/types.js";
5
- import { baseReducer, updateHeader } from "../reducer.js";
6
- import { sortOperations } from "./document-helpers.js";
7
- import { InvalidActionInputError, InvalidActionInputZodError, } from "./errors.js";
8
- import { createUnsignedHeader } from "./header.js";
9
- export function isNoopOperation(op) {
10
- return (op.type === NOOP &&
11
- op.skip !== undefined &&
12
- op.skip > 0 &&
13
- op.hash !== undefined);
14
- }
15
- export function isUndoRedo(action) {
16
- return [UNDO, REDO].includes(action.type);
17
- }
18
- export function isUndo(action) {
19
- return action.type === UNDO;
20
- }
21
- export function isDocumentAction(action) {
22
- return [SET_NAME, UNDO, REDO, PRUNE, LOAD_STATE].includes(action.type);
23
- }
24
- /**
25
- * Helper function to be used by action creators.
26
- *
27
- * @remarks
28
- * Creates an action with the given type and input properties. The input
29
- * properties default to an empty object.
30
- *
31
- * @typeParam A - Type of the action to be returned.
32
- *
33
- * @param type - The type of the action.
34
- * @param input - The input properties of the action.
35
- * @param attachments - The attachments included in the action.
36
- * @param validator - The validator to use for the input properties.
37
- * @param scope - The scope of the action, can either be 'global' or 'local'.
38
- * @param skip - The number of operations to skip before this new action is applied.
39
- *
40
- * @throws Error if the type is empty or not a string.
41
- *
42
- * @returns The new action.
43
- */
44
- export function createAction(type, input, attachments, validator, scope = "global") {
45
- if (!type) {
46
- throw new Error("Empty action type");
47
- }
48
- if (typeof type !== "string") {
49
- throw new Error(`Invalid action type: ${JSON.stringify(type)}`);
50
- }
51
- const action = {
52
- type,
53
- input,
54
- scope,
55
- };
56
- if (attachments) {
57
- action.attachments = attachments;
58
- }
59
- try {
60
- validator?.().parse(action.input);
61
- }
62
- catch (error) {
63
- if (error instanceof ZodError) {
64
- throw new InvalidActionInputZodError(error.issues);
65
- }
66
- else {
67
- throw new InvalidActionInputError(error);
68
- }
69
- }
70
- return action;
71
- }
72
- /**
73
- * Helper function to create a document model reducer.
74
- *
75
- * @remarks
76
- * This function creates a new reducer that wraps the provided `reducer` with
77
- * `documentReducer`, adding support for document actions:
78
- * - `SET_NAME`
79
- * - `UNDO`
80
- * - `REDO`
81
- * - `PRUNE`
82
- *
83
- * It also updates the document-related attributes on every operation.
84
- *
85
- * @param reducer - The custom reducer to wrap.
86
- * @param documentReducer - The document reducer to use.
87
- *
88
- * @returns The new reducer.
89
- */
90
- export function createReducer(stateReducer, documentReducer = baseReducer) {
91
- const reducer = (document, action, dispatch, options) => {
92
- return documentReducer(document, action, stateReducer, dispatch, options);
93
- };
94
- return reducer;
95
- }
96
- export function baseCreateExtendedState(initialState, createState) {
97
- return {
98
- state: createState?.(initialState?.state) ??
99
- (initialState?.state ?? {
100
- global: {},
101
- local: {},
102
- }),
103
- };
104
- }
105
- /**
106
- * Important note: it is the responsibility of the caller to set the document type
107
- * on the header.
108
- */
109
- export function baseCreateDocument(initialState, createState) {
110
- const state = baseCreateExtendedState(initialState, createState);
111
- const header = createUnsignedHeader();
112
- return {
113
- ...state,
114
- header,
115
- initialState: state,
116
- operations: { global: [], local: [] },
117
- clipboard: [],
118
- attachments: {},
119
- };
120
- }
121
- export function hashDocumentStateForScope(document, scope = "global") {
122
- const stateString = stringifyJson(document.state[scope] || "");
123
- return hash(stateString);
124
- }
125
- export function readOnly(value) {
126
- return Object.freeze(value);
127
- }
128
- /**
129
- * Maps skipped operations in an array of operations.
130
- * Skipped operations are operations that are ignored during processing.
131
- * @param operations - The array of operations to map.
132
- * @param skippedHeadOperations - The number of operations to skip at the head of the array of operations.
133
- * @returns An array of mapped operations with ignore flag indicating if the operation is skipped.
134
- * @throws Error if the operation index is invalid and there are missing operations.
135
- */
136
- export function mapSkippedOperations(operations, skippedHeadOperations) {
137
- const ops = [...operations];
138
- let skipped = skippedHeadOperations || 0;
139
- let latestOpIndex = ops.length > 0 ? ops[ops.length - 1].index : 0;
140
- const scopeOpsWithIgnore = [];
141
- for (const operation of ops.reverse()) {
142
- if (skipped > 0) {
143
- const operationsDiff = latestOpIndex - operation.index;
144
- skipped -= operationsDiff;
145
- }
146
- if (skipped < 0) {
147
- throw new Error("Invalid operation index, missing operations");
148
- }
149
- const mappedOp = {
150
- ignore: skipped > 0,
151
- operation,
152
- };
153
- // here we add 1 to the skip number because we want to get the number of
154
- // operations that we want to move the pointer back to get the latest valid operation
155
- // operation.skip = 1 means that we want to move the pointer back 2 operations to get to the latest valid operation
156
- const operationSkip = operation.skip > 0 ? operation.skip + 1 : 0;
157
- if (operationSkip > 0 && operationSkip > skipped) {
158
- const skipDiff = operationSkip - skipped;
159
- skipped = skipped + skipDiff;
160
- }
161
- latestOpIndex = operation.index;
162
- scopeOpsWithIgnore.push(mappedOp);
163
- }
164
- return scopeOpsWithIgnore.reverse();
165
- }
166
- // Flattens the mapped operations (with ignore flag) from all scopes into
167
- // a single array and sorts them by timestamp
168
- export function sortMappedOperations(operations) {
169
- return Object.values(operations)
170
- .flatMap((array) => array)
171
- .sort((a, b) => new Date(a.operation.timestamp).getTime() -
172
- new Date(b.operation.timestamp).getTime());
173
- }
174
- // gets the last modified timestamp of a document from§
175
- // it's operations, falling back to the initial state
176
- export function getDocumentLastModified(document) {
177
- const sortedOperations = sortOperations(Object.values(document.operations).flat());
178
- return (sortedOperations.at(-1).timestamp || document.header.lastModifiedAtUtcIso);
179
- }
180
- // Runs the operations on the initial data using the
181
- // provided reducer, wrapped with the document reducer.
182
- // This rebuilds the document according to the provided actions.
183
- export function replayOperations(initialState, clearedOperations, stateReducer, dispatch, header, documentReducer = baseReducer, skipHeaderOperations = {}, options) {
184
- // wraps the provided custom reducer with the
185
- // base document reducer
186
- const wrappedReducer = createReducer(stateReducer, documentReducer);
187
- return replayDocument(initialState, clearedOperations, wrappedReducer, dispatch, header, skipHeaderOperations, options);
188
- }
189
- // Runs the operations on the initial data using the
190
- // provided document reducer.
191
- // This rebuilds the document according to the provided actions.
192
- export function replayDocument(initialState, operations, reducer, dispatch, header, skipHeaderOperations = {}, options) {
193
- const { checkHashes = true, reuseOperationResultingState, operationResultingStateParser = parseResultingState, } = options || {};
194
- let documentState = initialState;
195
- const operationsToReplay = [];
196
- const initialOperations = {
197
- global: [],
198
- local: [],
199
- };
200
- // if operation resulting state is to be used then
201
- // looks for the last operation with state of each
202
- // scope to use it as the starting point and only
203
- // replay operations that follow it
204
- if (reuseOperationResultingState) {
205
- for (const [scope, scopeOperations] of Object.entries(operations)) {
206
- const index = scopeOperations.findLastIndex((s) => !!s.resultingState);
207
- if (index < 0) {
208
- operationsToReplay.push(...scopeOperations);
209
- continue;
210
- }
211
- const opWithState = scopeOperations[index];
212
- if (!opWithState.resultingState)
213
- continue;
214
- try {
215
- const scopeState = operationResultingStateParser(opWithState.resultingState);
216
- documentState = {
217
- ...documentState,
218
- state: {
219
- ...documentState.state,
220
- // TODO how to deal with attachments?
221
- [scope]: scopeState,
222
- },
223
- };
224
- initialOperations[scope].push(...scopeOperations.slice(0, index + 1));
225
- operationsToReplay.push(...scopeOperations.slice(index + 1));
226
- }
227
- catch {
228
- /* if parsing fails then keeps replays all scope operations */
229
- operationsToReplay.push(...scopeOperations);
230
- }
231
- }
232
- }
233
- else {
234
- operationsToReplay.push(...Object.values(operations).flat());
235
- }
236
- // builds a new document from the initial data
237
- const document = baseCreateDocument(documentState);
238
- if (header?.slug) {
239
- document.header.slug = header.slug;
240
- }
241
- document.initialState = initialState;
242
- document.operations = initialOperations;
243
- let result = document;
244
- // if there are operations left without resulting state
245
- // then replays them
246
- if (operationsToReplay.length) {
247
- result = operationsToReplay.reduce((document, operation) => {
248
- const doc = reducer(document, operation, dispatch, {
249
- skip: operation.skip,
250
- ignoreSkipOperations: true,
251
- reuseHash: !checkHashes,
252
- });
253
- return doc;
254
- }, document);
255
- }
256
- // if not then updates the document header according
257
- // to the latest operation of each scope
258
- else {
259
- for (const scopeOperations of Object.values(initialOperations)) {
260
- const lastOperation = scopeOperations.at(-1);
261
- if (lastOperation) {
262
- result = updateHeader(result, lastOperation);
263
- }
264
- }
265
- }
266
- // if hash generation was skipped then checks if the hash
267
- // of each scope matches the hash of last operation
268
- if (!checkHashes) {
269
- for (const scope of Object.keys(result.state)) {
270
- for (let i = operationsToReplay.length - 1; i >= 0; i--) {
271
- const operation = operationsToReplay[i];
272
- if (operation.scope !== scope) {
273
- continue;
274
- }
275
- if (operation.hash !== hashDocumentStateForScope(result, scope)) {
276
- throw new Error(`Hash mismatch for scope ${scope}`);
277
- }
278
- else {
279
- break;
280
- }
281
- }
282
- }
283
- }
284
- // reuses operation timestamp if provided
285
- const resultOperations = Object.keys(result.operations).reduce((acc, key) => {
286
- const scope = key;
287
- return {
288
- ...acc,
289
- [scope]: [
290
- ...result.operations[scope].map((operation, index) => {
291
- return {
292
- ...operation,
293
- timestamp: operations[scope][index]?.timestamp ?? operation.timestamp,
294
- };
295
- }),
296
- ],
297
- };
298
- }, { global: [], local: [] });
299
- // gets the last modified timestamp from the latest operation
300
- const lastModified = header
301
- ? header.lastModifiedAtUtcIso
302
- : Object.values(resultOperations).reduce((acc, curr) => {
303
- const operation = curr.at(-1);
304
- if (operation) {
305
- if (operation.timestamp > acc) {
306
- return operation.timestamp;
307
- }
308
- }
309
- return acc;
310
- }, document.header.lastModifiedAtUtcIso);
311
- if (header) {
312
- result.header = {
313
- ...header,
314
- revision: result.header.revision,
315
- lastModifiedAtUtcIso: lastModified,
316
- };
317
- }
318
- return {
319
- ...result,
320
- operations: resultOperations,
321
- };
322
- }
323
- export function parseResultingState(state) {
324
- const stateType = typeof state;
325
- if (stateType === "string") {
326
- return JSON.parse(state);
327
- }
328
- else if (stateType === "object") {
329
- return state;
330
- }
331
- else {
332
- throw new Error(`Providing resulting state is of type: ${stateType}`);
333
- }
334
- }
335
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/document/utils/base.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { Buffer } from "buffer";
2
- /**
3
- * This should never be linked to directly. Instead, use the `#utils/misc`
4
- * module. This will automatically pick the correct implementation for the
5
- * current environment. See package.json for the mapping.
6
- *
7
- * Generates a secure UUID.
8
- */
9
- export declare function generateUUID(): `${string}-${string}-${string}-${string}-${string}`;
10
- export declare function writeFile(path: string, name: string, stream: Uint8Array): Promise<string>;
11
- export declare function readFile(path: string): void;
12
- export declare function fetchFile(url: string): Promise<{
13
- data: Buffer;
14
- mimeType?: string;
15
- }>;
16
- export declare const getFile: (file: string) => Promise<void>;
17
- export declare const hash: (data: string | Uint8Array | ArrayBufferView | DataView, algorithm?: string) => string;
18
- //# sourceMappingURL=browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKrC;;;;;;GAMG;AACH,wBAAgB,YAAY,wDAO3B;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,QAEpC;AAED,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAE9C;AAED,eAAO,MAAM,OAAO,GAAU,MAAM,MAAM,kBAEzC,CAAC;AAEF,eAAO,MAAM,IAAI,GACf,MAAM,MAAM,GAAG,UAAU,GAAG,eAAe,GAAG,QAAQ,EACtD,kBAAkB,WAQnB,CAAC"}
@@ -1,54 +0,0 @@
1
- import { createHash as createSha1Hash } from "sha1-uint8array";
2
- const FileSystemError = new Error("File system not available.");
3
- /**
4
- * This should never be linked to directly. Instead, use the `#utils/misc`
5
- * module. This will automatically pick the correct implementation for the
6
- * current environment. See package.json for the mapping.
7
- *
8
- * Generates a secure UUID.
9
- */
10
- export function generateUUID() {
11
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
12
- if (typeof crypto === "undefined" || !crypto.randomUUID) {
13
- throw new Error("generateUUID is not available in unsecure contexts.");
14
- }
15
- return crypto.randomUUID();
16
- }
17
- export function writeFile(path, name, stream) {
18
- throw FileSystemError;
19
- }
20
- export function readFile(path) {
21
- throw FileSystemError;
22
- }
23
- export function fetchFile(url) {
24
- throw FileSystemError;
25
- }
26
- export const getFile = async (file) => {
27
- return readFile(file);
28
- };
29
- export const hash = (data, algorithm = "sha1") => {
30
- if (!["sha1"].includes(algorithm)) {
31
- throw new Error("Hashing algorithm not supported: Available: sha1");
32
- }
33
- const hash = hashUIntArray(data);
34
- return uint8ArrayToBase64(hash);
35
- };
36
- function uint8ArrayToBase64(uint8Array) {
37
- // Convert the Uint8Array to a binary string
38
- let binaryString = "";
39
- for (let i = 0; i < uint8Array.length; i++) {
40
- binaryString += String.fromCharCode(uint8Array[i]);
41
- }
42
- // Encode the binary string to base64
43
- const base64String = btoa(binaryString);
44
- return base64String;
45
- }
46
- function hashUIntArray(data, algorithm = "sha1") {
47
- if (!["sha1"].includes(algorithm)) {
48
- throw new Error("Hashing algorithm not supported: Available: sha1");
49
- }
50
- return createSha1Hash("sha1")
51
- .update(data)
52
- .digest();
53
- }
54
- //# sourceMappingURL=browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../../src/document/utils/browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY;IAC1B,uEAAuE;IACvE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,IAAY,EACZ,MAAkB;IAElB,MAAM,eAAe,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,eAAe,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,GAAW;IAEX,MAAM,eAAe,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC5C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,IAAsD,EACtD,SAAS,GAAG,MAAM,EAClB,EAAE;IACF,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,SAAS,kBAAkB,CAAC,UAAsB;IAChD,4CAA4C;IAC5C,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,qCAAqC;IACrC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACxC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CACpB,IAA2C,EAC3C,SAAS,GAAG,MAAM;IAElB,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,cAAc,CAAC,MAAM,CAAC;SAC1B,MAAM,CAAC,IAAc,CAAC;SACtB,MAAM,EAAE,CAAC;AACd,CAAC"}
@@ -1,11 +0,0 @@
1
- import { type ActionFromDocument, type ActionSigner, type Operation, type OperationFromDocument, type OperationSignatureContext, type OperationSigningHandler, type OperationVerificationHandler, type PHDocument, type Reducer, type Signature } from "../types.js";
2
- export declare function generateId(method?: "UUIDv4"): string;
3
- export declare function getUnixTimestamp(date: Date | string): string;
4
- export declare function buildOperationSignatureParams({ documentId, signer, operation, previousStateHash, }: OperationSignatureContext): [string, string, string, string];
5
- export declare function buildOperationSignatureMessage(params: [string, string, string, string]): Uint8Array;
6
- export declare function ab2hex(ab: ArrayBuffer | ArrayBufferView): string;
7
- export declare function hex2ab(hex: string): Uint8Array<ArrayBuffer>;
8
- export declare function buildOperationSignature(context: OperationSignatureContext, signMethod: OperationSigningHandler): Promise<Signature>;
9
- export declare function buildSignedOperation<TDocument extends PHDocument>(action: ActionFromDocument<TDocument> | OperationFromDocument<TDocument>, reducer: Reducer<TDocument>, document: TDocument, context: Omit<OperationSignatureContext, "operation" | "previousStateHash">, signHandler: OperationSigningHandler): Promise<Operation>;
10
- export declare function verifyOperationSignature(signature: Signature, signer: Omit<ActionSigner, "signatures">, verifyHandler: OperationVerificationHandler): Promise<boolean>;
11
- //# sourceMappingURL=crypto.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../../src/document/utils/crypto.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAErB,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAQpD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,UAAU,EACV,MAAM,EACN,SAAS,EACT,iBAAiB,GAClB,EAAE,yBAAyB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAW9D;AAID,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACvC,UAAU,CAIZ;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,CAKhE;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,2BAMjC;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,yBAAyB,EAClC,UAAU,EAAE,uBAAuB,GAClC,OAAO,CAAC,SAAS,CAAC,CAKpB;AAED,wBAAsB,oBAAoB,CAAC,SAAS,SAAS,UAAU,EACrE,MAAM,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,qBAAqB,CAAC,SAAS,CAAC,EACxE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,IAAI,CAAC,yBAAyB,EAAE,WAAW,GAAG,mBAAmB,CAAC,EAC3E,WAAW,EAAE,uBAAuB,sBAgCrC;AAED,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,EACxC,aAAa,EAAE,4BAA4B,oBAO5C"}
@@ -1,80 +0,0 @@
1
- import { generateUUID, hash } from "#utils/env";
2
- import stringifyJson from "safe-stable-stringify";
3
- export function generateId(method) {
4
- if (method && method.toString() !== "UUIDv4") {
5
- throw new Error(`Id generation method not supported: "${method.toString()}"`);
6
- }
7
- return generateUUID();
8
- }
9
- export function getUnixTimestamp(date) {
10
- return (new Date(date).getTime() / 1000).toFixed(0);
11
- }
12
- export function buildOperationSignatureParams({ documentId, signer, operation, previousStateHash, }) {
13
- const { timestamp, scope, id, type } = operation;
14
- return [
15
- getUnixTimestamp(timestamp), // timestamp,
16
- signer.app.key, // signer public key
17
- hash(
18
- // hash (docID, scope, operationID, operationName, operationInput)
19
- [documentId, scope, id, type, stringifyJson(operation.input)].join("")),
20
- previousStateHash, // state hash that the operation was applied to
21
- ];
22
- }
23
- const textEncode = new TextEncoder();
24
- export function buildOperationSignatureMessage(params) {
25
- const message = params.join("");
26
- const prefix = "\x19Signed Operation:\n" + message.length.toString();
27
- return textEncode.encode(prefix + message);
28
- }
29
- export function ab2hex(ab) {
30
- const view = ArrayBuffer.isView(ab) ? ab : new Uint8Array(ab);
31
- return Array.prototype.map
32
- .call(view, (x) => ("00" + x.toString(16)).slice(-2))
33
- .join("");
34
- }
35
- export function hex2ab(hex) {
36
- return new Uint8Array(hex.match(/[\da-f]{2}/gi)?.map(function (h) {
37
- return parseInt(h, 16);
38
- }) ?? []);
39
- }
40
- export async function buildOperationSignature(context, signMethod) {
41
- const params = buildOperationSignatureParams(context);
42
- const message = buildOperationSignatureMessage(params);
43
- const signature = await signMethod(message);
44
- return [...params, `0x${ab2hex(signature)}`];
45
- }
46
- export async function buildSignedOperation(action, reducer, document, context, signHandler) {
47
- const result = reducer(document, action, undefined, {
48
- reuseHash: true,
49
- reuseOperationResultingState: true,
50
- });
51
- const operation = result.operations[action.scope].at(-1);
52
- if (!operation) {
53
- throw new Error("Action was not applied");
54
- }
55
- const previousStateHash = result.operations[action.scope].at(-2)?.hash ?? "";
56
- const signature = await buildOperationSignature({
57
- ...context,
58
- operation,
59
- previousStateHash,
60
- }, signHandler);
61
- return {
62
- ...operation,
63
- context: {
64
- ...operation.context,
65
- signer: {
66
- ...operation.context?.signer,
67
- ...context.signer,
68
- signatures: [...(context.signer.signatures ?? []), signature],
69
- },
70
- },
71
- };
72
- }
73
- export async function verifyOperationSignature(signature, signer, verifyHandler) {
74
- const publicKey = signer.app.key;
75
- const params = signature.slice(0, 4);
76
- const signatureBytes = hex2ab(signature[4]);
77
- const expectedMessage = buildOperationSignatureMessage(params);
78
- return verifyHandler(publicKey, signatureBytes, expectedMessage);
79
- }
80
- //# sourceMappingURL=crypto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../../src/document/utils/crypto.ts"],"names":[],"mappings":"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"}