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,4 +1,4 @@
1
- import { generateUUID } from "#utils/env";
1
+ import { generateUUIDBrowser } from "./crypto.js";
2
2
  /**
3
3
  * Generates a deterministic payload from signing parameters
4
4
  */
@@ -16,20 +16,7 @@ export class PublicKeySigner {
16
16
  }
17
17
  #initCrypto() {
18
18
  return new Promise((resolve, reject) => {
19
- if (typeof window === "undefined") {
20
- import("node:crypto")
21
- .then((module) => {
22
- resolve(module.webcrypto.subtle);
23
- })
24
- .catch(reject);
25
- }
26
- else {
27
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
28
- if (!window.crypto?.subtle) {
29
- reject(new Error("Crypto module not available"));
30
- }
31
- resolve(window.crypto.subtle);
32
- }
19
+ resolve(crypto.subtle);
33
20
  });
34
21
  }
35
22
  async publicKey() {
@@ -48,7 +35,7 @@ export class PublicKeySigner {
48
35
  }
49
36
  let isValid;
50
37
  try {
51
- isValid = await subtleCrypto.verify("Ed25519", this.publicCryptoKey, signature, data);
38
+ isValid = await subtleCrypto.verify("Ed25519", this.publicCryptoKey, new Uint8Array(signature), new Uint8Array(data));
52
39
  }
53
40
  catch (error) {
54
41
  throw new Error("invalid signature");
@@ -125,7 +112,7 @@ export const validateHeader = async (header) => {
125
112
  *
126
113
  * @returns An unsigned header for a document.
127
114
  */
128
- export const createUnsignedHeader = (id = generateUUID(), documentType = "") => {
115
+ export const createPresignedHeader = (id = generateUUIDBrowser(), documentType = "") => {
129
116
  return {
130
117
  id,
131
118
  sig: {
@@ -158,7 +145,7 @@ export const createSignedHeader = async (unsignedHeader, documentType, signer) =
158
145
  const parameters = {
159
146
  documentType,
160
147
  createdAtUtcIso: unsignedHeader.createdAtUtcIso,
161
- nonce: generateUUID(),
148
+ nonce: generateUUIDBrowser(),
162
149
  };
163
150
  const signature = await sign(parameters, signer);
164
151
  const publicKey = await signer.publicKey();
@@ -193,7 +180,7 @@ export const createSignedHeader = async (unsignedHeader, documentType, signer) =
193
180
  * some are not. See the PHDocumentHeader type for more information.
194
181
  */
195
182
  export const createSignedHeaderForSigner = async (documentType, signer) => {
196
- const unsignedHeader = createUnsignedHeader();
183
+ const unsignedHeader = createPresignedHeader();
197
184
  const signedHeader = await createSignedHeader(unsignedHeader, documentType, signer);
198
185
  return signedHeader;
199
186
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/core/header.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export * from "./actions.js";
2
+ export * from "./crypto.js";
3
+ export * from "./documents.js";
4
+ export * from "./errors.js";
5
+ export * from "./files.js";
6
+ export * from "./header.js";
7
+ export * from "./operations.js";
8
+ export * from "./reducer.js";
9
+ export * from "./schemas.js";
10
+ export * from "./state.js";
11
+ export * from "./validation.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export * from "./actions.js";
2
+ export * from "./crypto.js";
3
+ export * from "./documents.js";
4
+ export * from "./errors.js";
5
+ export * from "./files.js";
6
+ export * from "./header.js";
7
+ export * from "./operations.js";
8
+ export * from "./reducer.js";
9
+ export * from "./schemas.js";
10
+ export * from "./state.js";
11
+ export * from "./validation.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
@@ -1,24 +1,18 @@
1
- import { type PHBaseState } from "#document/ph-types.js";
2
- import { type Reducer } from "#document/types.js";
3
- import JSZip from "jszip";
4
- import { type AttachmentInput, type PHDocument } from "../types.js";
5
- import { type ReplayDocumentOptions } from "./base.js";
6
- export type FileInput = string | number[] | Uint8Array | ArrayBuffer | Blob;
7
- export declare function createZip(document: PHDocument): JSZip;
1
+ import type { BinaryLike, RandomUUIDOptions } from "node:crypto";
2
+ import type { PHBaseState, PHDocument } from "./ph-types.js";
3
+ import type { AttachmentInput, Reducer, ReplayDocumentOptions } from "./types.js";
8
4
  /**
9
- * Saves a document to a ZIP file.
10
- *
11
- * @remarks
12
- * This function creates a ZIP file containing the document's state, operations,
13
- * and file attachments. The file is saved to the specified path.
14
- *
15
- * @param document - The document to save to the file.
16
- * @param path - The path to save the file to.
17
- * @param extension - The extension to use for the file.
18
- * @returns A promise that resolves to the path of the saved file.
5
+ * Reads an attachment from a file and returns its base64-encoded data and MIME type.
6
+ * @param path - The path of the attachment file to read.
7
+ * @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.
19
8
  */
20
- export declare function baseSaveToFile(document: PHDocument, path: string, extension: string, name?: string): Promise<string>;
21
- export declare function baseSaveToFileHandle(document: PHDocument, input: FileSystemFileHandle): Promise<void>;
9
+ export declare function getLocalFile(path: string): Promise<AttachmentInput>;
10
+ /**
11
+ * Fetches an attachment from a URL and returns its base64-encoded data and MIME type.
12
+ * @param url - The URL of the attachment to fetch.
13
+ * @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.
14
+ */
15
+ export declare function getRemoteFile(url: string): Promise<AttachmentInput>;
22
16
  /**
23
17
  * Loads a document from a ZIP file.
24
18
  *
@@ -34,18 +28,34 @@ export declare function baseSaveToFileHandle(document: PHDocument, input: FileSy
34
28
  * @returns A promise that resolves to the document state after applying all the operations.
35
29
  * @throws An error if the initial state or the operations history is not found in the ZIP file.
36
30
  */
37
- export declare function baseLoadFromFile<TState extends PHBaseState>(path: string, reducer: Reducer<TState>, options?: ReplayDocumentOptions): Promise<PHDocument<TState>>;
38
- export declare function baseLoadFromInput<TState extends PHBaseState>(input: FileInput, reducer: Reducer<TState>, options?: ReplayDocumentOptions): Promise<PHDocument<TState>>;
31
+ export declare function baseLoadFromFile<TState extends PHBaseState = PHBaseState>(path: string, reducer: Reducer<TState>, options?: ReplayDocumentOptions): Promise<PHDocument<TState>>;
39
32
  /**
40
- * Fetches an attachment from a URL and returns its base64-encoded data and MIME type.
41
- * @param url - The URL of the attachment to fetch.
42
- * @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.
33
+ * Saves a document to a ZIP file.
34
+ *
35
+ * @remarks
36
+ * This function creates a ZIP file containing the document's state, operations,
37
+ * and file attachments. The file is saved to the specified path.
38
+ *
39
+ * @param document - The document to save to the file.
40
+ * @param path - The path to save the file to.
41
+ * @param extension - The extension to use for the file.
42
+ * @returns A promise that resolves to the path of the saved file.
43
43
  */
44
- export declare function getRemoteFile(url: string): Promise<AttachmentInput>;
44
+ export declare function baseSaveToFile(document: PHDocument, path: string, extension: string, name?: string): Promise<string>;
45
45
  /**
46
- * Reads an attachment from a file and returns its base64-encoded data and MIME type.
47
- * @param path - The path of the attachment file to read.
48
- * @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.
46
+ * This should never be linked to directly. Instead, use the `#utils/misc`
47
+ * module. This will automatically pick the correct implementation for the
48
+ * current environment. See package.json for the mapping.
49
+ *
50
+ * Generates a secure UUID.
49
51
  */
50
- export declare function getLocalFile(path: string): Promise<AttachmentInput>;
51
- //# sourceMappingURL=file.d.ts.map
52
+ export declare function generateUUIDNode(options?: RandomUUIDOptions): `${string}-${string}-${string}-${string}-${string}`;
53
+ export declare function writeFileNode(path: string, name: string, data: Uint8Array): Promise<string>;
54
+ export declare function readFileNode(path: string): NonSharedBuffer;
55
+ export declare function fetchFileNode(url: string): Promise<{
56
+ buffer: Buffer;
57
+ mimeType?: string;
58
+ }>;
59
+ export declare const getFileNode: (file: string) => Promise<NonSharedBuffer>;
60
+ export declare const hashNode: (data: BinaryLike, algorithm?: string, encoding?: "base64" | "hex", _params?: Record<string, unknown>) => string;
61
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/core/node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMjE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAEV,eAAe,EACf,OAAO,EACP,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAUpB;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAMzE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAWzE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,SAAS,WAAW,GAAG,WAAW,EAExC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAG7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,mBAgBd;AACD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,iBAAiB,uDAE3D;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,mBAExC;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBhD;AAED,eAAO,MAAM,WAAW,GAAU,MAAM,MAAM,6BAE7C,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,MAAM,UAAU,EAChB,kBAAkB,EAClB,WAAU,QAAQ,GAAG,KAAgB,EACrC,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAelC,CAAC"}
@@ -0,0 +1,149 @@
1
+ import mime from "mime/lite";
2
+ import { createHash, randomUUID } from "node:crypto";
3
+ import fs from "node:fs";
4
+ import https from "node:https";
5
+ import { join } from "node:path";
6
+ import { baseLoadFromInput, createZip } from "./files.js";
7
+ function getFileAttributes(file) {
8
+ const extension = file.replace(/^.*\./, "") || undefined;
9
+ const fileName = file.replace(/^.*[/\\]/, "") || undefined;
10
+ return { extension, fileName };
11
+ }
12
+ /**
13
+ * Reads an attachment from a file and returns its base64-encoded data and MIME type.
14
+ * @param path - The path of the attachment file to read.
15
+ * @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.
16
+ */
17
+ export async function getLocalFile(path) {
18
+ const buffer = await getFileNode(path);
19
+ const mimeType = mime.getType(path) || "application/octet-stream";
20
+ const attributes = getFileAttributes(path);
21
+ const data = buffer.toString("base64");
22
+ return { data, hash: hashNode(data), mimeType, ...attributes };
23
+ }
24
+ /**
25
+ * Fetches an attachment from a URL and returns its base64-encoded data and MIME type.
26
+ * @param url - The URL of the attachment to fetch.
27
+ * @returns A Promise that resolves to an object containing the base64-encoded data and MIME type of the attachment.
28
+ */
29
+ export async function getRemoteFile(url) {
30
+ const { buffer, mimeType = "application/octet-stream" } = await fetchFileNode(url);
31
+ const attributes = getFileAttributes(url);
32
+ const data = buffer.toString("base64");
33
+ return {
34
+ data,
35
+ hash: hashNode(data),
36
+ mimeType,
37
+ ...attributes,
38
+ };
39
+ }
40
+ /**
41
+ * Loads a document from a ZIP file.
42
+ *
43
+ * @remarks
44
+ * This function reads a ZIP file and returns the document state after
45
+ * applying all the operations. The reducer is used to apply the operations.
46
+ *
47
+ * @typeParam S - The type of the state object.
48
+ * @typeParam A - The type of the actions that can be applied to the state object.
49
+ *
50
+ * @param path - The path to the ZIP file.
51
+ * @param reducer - The reducer to apply the operations to the state object.
52
+ * @returns A promise that resolves to the document state after applying all the operations.
53
+ * @throws An error if the initial state or the operations history is not found in the ZIP file.
54
+ */
55
+ export async function baseLoadFromFile(path, reducer, options) {
56
+ const file = readFileNode(path);
57
+ return baseLoadFromInput(file, reducer, options);
58
+ }
59
+ /**
60
+ * Saves a document to a ZIP file.
61
+ *
62
+ * @remarks
63
+ * This function creates a ZIP file containing the document's state, operations,
64
+ * and file attachments. The file is saved to the specified path.
65
+ *
66
+ * @param document - The document to save to the file.
67
+ * @param path - The path to save the file to.
68
+ * @param extension - The extension to use for the file.
69
+ * @returns A promise that resolves to the path of the saved file.
70
+ */
71
+ export async function baseSaveToFile(document, path, extension, name) {
72
+ // create zip file
73
+ const zip = createZip(document);
74
+ const file = await zip.generateAsync({
75
+ type: "uint8array",
76
+ streamFiles: true,
77
+ });
78
+ const fileName = name ?? document.header.name;
79
+ const fileExtension = `.${extension}.phd`;
80
+ return writeFileNode(path, fileName.endsWith(fileExtension) ? fileName : `${fileName}${fileExtension}`, file);
81
+ }
82
+ /**
83
+ * This should never be linked to directly. Instead, use the `#utils/misc`
84
+ * module. This will automatically pick the correct implementation for the
85
+ * current environment. See package.json for the mapping.
86
+ *
87
+ * Generates a secure UUID.
88
+ */
89
+ export function generateUUIDNode(options) {
90
+ return randomUUID(options);
91
+ }
92
+ export function writeFileNode(path, name, data) {
93
+ const filePath = join(path, name);
94
+ fs.mkdirSync(path, { recursive: true });
95
+ return new Promise((resolve, reject) => {
96
+ try {
97
+ fs.writeFile(filePath, data, {}, (err) => {
98
+ if (err) {
99
+ reject(err);
100
+ }
101
+ else {
102
+ resolve(filePath);
103
+ }
104
+ });
105
+ }
106
+ catch (error) {
107
+ if (error instanceof Error) {
108
+ reject(error);
109
+ }
110
+ else {
111
+ reject(new Error(String(error)));
112
+ }
113
+ }
114
+ });
115
+ }
116
+ export function readFileNode(path) {
117
+ return fs.readFileSync(path);
118
+ }
119
+ export function fetchFileNode(url) {
120
+ return new Promise((resolve, reject) => {
121
+ https
122
+ .get(url, (resp) => {
123
+ const data = [];
124
+ const mimeType = resp.headers["content-type"];
125
+ resp.on("data", (chunk) => {
126
+ data.push(chunk);
127
+ });
128
+ resp.on("end", () => {
129
+ resolve({ buffer: Buffer.concat(data), mimeType });
130
+ });
131
+ })
132
+ .on("error", (err) => {
133
+ reject(err);
134
+ });
135
+ });
136
+ }
137
+ export const getFileNode = async (file) => {
138
+ return readFileNode(file);
139
+ };
140
+ export const hashNode = (data, algorithm = "sha1", encoding = "base64", _params) => {
141
+ if (!["sha1", "sha256", "sha512"].includes(algorithm)) {
142
+ throw new Error(`Hashing algorithm not supported: "${algorithm}". Available: sha1, sha256, sha512`);
143
+ }
144
+ if (!["base64", "hex"].includes(encoding)) {
145
+ throw new Error(`Hash encoding not supported: "${encoding}". Available: base64, hex`);
146
+ }
147
+ return createHash(algorithm).update(data).digest(encoding);
148
+ };
149
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/core/node.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- import { type PHBaseState } from "#document/ph-types.js";
2
- import { type LoadStateActionInput, type PruneActionInput } from "../schema/types.js";
3
- import { type Action, type PHDocument, type StateReducer } from "../types.js";
1
+ import type { Action, PHBaseState, PHDocument } from "./ph-types.js";
2
+ import type { LoadStateActionInput } from "./types.js";
4
3
  export declare function setNameOperation<TDocument extends PHDocument>(document: TDocument, name: string): TDocument & {
5
4
  header: {
6
5
  name: string;
7
6
  id: string;
8
- sig: import("#document/ph-types.js").PHDocumentSignatureInfo;
7
+ sig: import("./ph-types.js").PHDocumentSignatureInfo;
9
8
  documentType: string;
10
9
  createdAtUtcIso: string;
11
10
  slug: string;
@@ -14,7 +13,7 @@ export declare function setNameOperation<TDocument extends PHDocument>(document:
14
13
  [scope: string]: number;
15
14
  };
16
15
  lastModifiedAtUtcIso: string;
17
- meta?: import("#document/ph-types.js").PHDocumentMeta;
16
+ meta?: import("./ph-types.js").PHDocumentMeta;
18
17
  };
19
18
  };
20
19
  export declare function undoOperation<TDocument extends PHDocument>(document: TDocument, action: Action, skip: number): {
@@ -29,6 +28,5 @@ export declare function redoOperation<TDocument extends PHDocument>(document: TD
29
28
  skip: number;
30
29
  reuseLastOperationIndex: boolean;
31
30
  };
32
- export declare function pruneOperation<TState extends PHBaseState = PHBaseState>(document: PHDocument<TState>, input: PruneActionInput, wrappedReducer: StateReducer<TState>): PHDocument<TState>;
33
31
  export declare function loadStateOperation<TState extends PHBaseState>(document: PHDocument<TState>, action: LoadStateActionInput): PHDocument<TState>;
34
32
  //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/core/operations.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,UAAU,EAC3D,QAAQ,EAAE,SAAS,EACnB,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;EAGb;AAED,wBAAgB,aAAa,CAAC,SAAS,SAAS,UAAU,EACxD,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB,EAAE,OAAO,CAAC;CAClC,CA8CA;AAED,wBAAgB,aAAa,CAAC,SAAS,SAAS,UAAU,EACxD,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB,EAAE,OAAO,CAAC;CAClC,CA8CA;AAED,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,WAAW,EAC3D,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,EAC5B,MAAM,EAAE,oBAAoB,GAC3B,UAAU,CAAC,MAAM,CAAC,CAMpB"}
@@ -1,7 +1,6 @@
1
1
  import { castDraft, create } from "mutative";
2
- import { hashDocumentStateForScope, replayOperations } from "../utils/base.js";
3
- import { nextSkipNumber, sortOperations } from "../utils/document-helpers.js";
4
- import { loadState, noop } from "./creators.js";
2
+ import { noop } from "./actions.js";
3
+ import { nextSkipNumber, sortOperations } from "./documents.js";
5
4
  // updates the name of the document
6
5
  export function setNameOperation(document, name) {
7
6
  return { ...document, header: { ...document.header, name } };
@@ -75,54 +74,6 @@ export function redoOperation(document, action, skip) {
75
74
  });
76
75
  });
77
76
  }
78
- export function pruneOperation(document, input, wrappedReducer) {
79
- const operations = document.operations.global;
80
- let { start, end } = input;
81
- start = start || 0;
82
- end = end || operations.length;
83
- const actionsToPrune = operations.slice(start, end);
84
- const actionsToKeepStart = operations.slice(0, start);
85
- const actionsToKeepEnd = operations.slice(end);
86
- // runs all operations from the initial state to
87
- // the end of prune to get name and data
88
- const newDocument = replayOperations(document.initialState, {
89
- ...document.operations,
90
- global: actionsToKeepStart.concat(actionsToPrune),
91
- }, wrappedReducer);
92
- const newState = newDocument.state;
93
- const name = newDocument.header.name;
94
- // the new operation has the index of the first pruned operation
95
- const loadStateIndex = actionsToKeepStart.length;
96
- // if and operation is pruned then reuses the timestamp of the last operation
97
- // if not then assigns the timestamp of the following unpruned operation
98
- const loadStateTimestamp = actionsToKeepStart.length
99
- ? actionsToKeepStart[actionsToKeepStart.length - 1].timestampUtcMs
100
- : actionsToKeepEnd.length
101
- ? actionsToKeepEnd[0].timestampUtcMs
102
- : new Date().toISOString();
103
- const action = loadState({ name, ...newState }, actionsToPrune.length);
104
- // replaces pruned operations with LOAD_STATE
105
- return replayOperations(document.initialState, {
106
- ...document.operations,
107
- global: [
108
- ...actionsToKeepStart,
109
- {
110
- skip: 0,
111
- ...action,
112
- action,
113
- timestampUtcMs: loadStateTimestamp,
114
- index: loadStateIndex,
115
- hash: hashDocumentStateForScope({ state: newState }, "global"),
116
- },
117
- ...actionsToKeepEnd
118
- // updates the index for all the following operations
119
- .map((action, index) => ({
120
- ...action,
121
- index: loadStateIndex + index + 1,
122
- })),
123
- ],
124
- }, wrappedReducer);
125
- }
126
77
  export function loadStateOperation(document, action) {
127
78
  return {
128
79
  ...document,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/core/operations.ts"],"names":[],"mappings":"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"}