document-model 6.0.0-staging.3 → 6.0.0

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 (281) hide show
  1. package/dist/index.d.ts +81 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +229 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/{src/core/node.d.ts → node.d.mts} +25 -23
  6. package/dist/node.d.mts.map +1 -0
  7. package/dist/node.mjs +145 -0
  8. package/dist/node.mjs.map +1 -0
  9. package/package.json +22 -18
  10. package/dist/src/core/actions.d.ts +0 -87
  11. package/dist/src/core/actions.d.ts.map +0 -1
  12. package/dist/src/core/actions.js +0 -187
  13. package/dist/src/core/actions.js.map +0 -1
  14. package/dist/src/core/crypto.d.ts +0 -8
  15. package/dist/src/core/crypto.d.ts.map +0 -1
  16. package/dist/src/core/crypto.js +0 -68
  17. package/dist/src/core/crypto.js.map +0 -1
  18. package/dist/src/core/documents.d.ts +0 -147
  19. package/dist/src/core/documents.d.ts.map +0 -1
  20. package/dist/src/core/documents.js +0 -845
  21. package/dist/src/core/documents.js.map +0 -1
  22. package/dist/src/core/errors.d.ts +0 -21
  23. package/dist/src/core/errors.d.ts.map +0 -1
  24. package/dist/src/core/errors.js +0 -46
  25. package/dist/src/core/errors.js.map +0 -1
  26. package/dist/src/core/files.d.ts +0 -27
  27. package/dist/src/core/files.d.ts.map +0 -1
  28. package/dist/src/core/files.js +0 -90
  29. package/dist/src/core/files.js.map +0 -1
  30. package/dist/src/core/header.d.ts +0 -63
  31. package/dist/src/core/header.d.ts.map +0 -1
  32. package/dist/src/core/header.js +0 -173
  33. package/dist/src/core/header.js.map +0 -1
  34. package/dist/src/core/index.d.ts +0 -15
  35. package/dist/src/core/index.d.ts.map +0 -1
  36. package/dist/src/core/index.js +0 -15
  37. package/dist/src/core/index.js.map +0 -1
  38. package/dist/src/core/logger-types.d.ts +0 -12
  39. package/dist/src/core/logger-types.d.ts.map +0 -1
  40. package/dist/src/core/logger-types.js +0 -2
  41. package/dist/src/core/logger-types.js.map +0 -1
  42. package/dist/src/core/logger.d.ts +0 -27
  43. package/dist/src/core/logger.d.ts.map +0 -1
  44. package/dist/src/core/logger.js +0 -127
  45. package/dist/src/core/logger.js.map +0 -1
  46. package/dist/src/core/node.d.ts.map +0 -1
  47. package/dist/src/core/node.js +0 -155
  48. package/dist/src/core/node.js.map +0 -1
  49. package/dist/src/core/operations.d.ts +0 -50
  50. package/dist/src/core/operations.d.ts.map +0 -1
  51. package/dist/src/core/operations.js +0 -126
  52. package/dist/src/core/operations.js.map +0 -1
  53. package/dist/src/core/ph-types.d.ts +0 -2
  54. package/dist/src/core/ph-types.d.ts.map +0 -1
  55. package/dist/src/core/ph-types.js +0 -2
  56. package/dist/src/core/ph-types.js.map +0 -1
  57. package/dist/src/core/reducer.d.ts +0 -63
  58. package/dist/src/core/reducer.d.ts.map +0 -1
  59. package/dist/src/core/reducer.js +0 -446
  60. package/dist/src/core/reducer.js.map +0 -1
  61. package/dist/src/core/schemas.d.ts +0 -75
  62. package/dist/src/core/schemas.d.ts.map +0 -1
  63. package/dist/src/core/schemas.js +0 -116
  64. package/dist/src/core/schemas.js.map +0 -1
  65. package/dist/src/core/state.d.ts +0 -26
  66. package/dist/src/core/state.d.ts.map +0 -1
  67. package/dist/src/core/state.js +0 -56
  68. package/dist/src/core/state.js.map +0 -1
  69. package/dist/src/core/types.d.ts +0 -2
  70. package/dist/src/core/types.d.ts.map +0 -1
  71. package/dist/src/core/types.js +0 -2
  72. package/dist/src/core/types.js.map +0 -1
  73. package/dist/src/core/utils.d.ts +0 -6
  74. package/dist/src/core/utils.d.ts.map +0 -1
  75. package/dist/src/core/utils.js +0 -15
  76. package/dist/src/core/utils.js.map +0 -1
  77. package/dist/src/core/validation.d.ts +0 -4
  78. package/dist/src/core/validation.d.ts.map +0 -1
  79. package/dist/src/core/validation.js +0 -27
  80. package/dist/src/core/validation.js.map +0 -1
  81. package/dist/src/document-model/actions.d.ts +0 -158
  82. package/dist/src/document-model/actions.d.ts.map +0 -1
  83. package/dist/src/document-model/actions.js +0 -111
  84. package/dist/src/document-model/actions.js.map +0 -1
  85. package/dist/src/document-model/constants.d.ts +0 -6
  86. package/dist/src/document-model/constants.d.ts.map +0 -1
  87. package/dist/src/document-model/constants.js +0 -584
  88. package/dist/src/document-model/constants.js.map +0 -1
  89. package/dist/src/document-model/document-schema.d.ts +0 -69
  90. package/dist/src/document-model/document-schema.d.ts.map +0 -1
  91. package/dist/src/document-model/document-schema.js +0 -43
  92. package/dist/src/document-model/document-schema.js.map +0 -1
  93. package/dist/src/document-model/document-type.d.ts +0 -2
  94. package/dist/src/document-model/document-type.d.ts.map +0 -1
  95. package/dist/src/document-model/document-type.js +0 -2
  96. package/dist/src/document-model/document-type.js.map +0 -1
  97. package/dist/src/document-model/files.d.ts +0 -5
  98. package/dist/src/document-model/files.d.ts.map +0 -1
  99. package/dist/src/document-model/files.js +0 -9
  100. package/dist/src/document-model/files.js.map +0 -1
  101. package/dist/src/document-model/index.d.ts +0 -11
  102. package/dist/src/document-model/index.d.ts.map +0 -1
  103. package/dist/src/document-model/index.js +0 -11
  104. package/dist/src/document-model/index.js.map +0 -1
  105. package/dist/src/document-model/module.d.ts +0 -3
  106. package/dist/src/document-model/module.d.ts.map +0 -1
  107. package/dist/src/document-model/module.js +0 -24
  108. package/dist/src/document-model/module.js.map +0 -1
  109. package/dist/src/document-model/reducers.d.ts +0 -11
  110. package/dist/src/document-model/reducers.d.ts.map +0 -1
  111. package/dist/src/document-model/reducers.js +0 -618
  112. package/dist/src/document-model/reducers.js.map +0 -1
  113. package/dist/src/document-model/schemas.d.ts +0 -189
  114. package/dist/src/document-model/schemas.d.ts.map +0 -1
  115. package/dist/src/document-model/schemas.js +0 -388
  116. package/dist/src/document-model/schemas.js.map +0 -1
  117. package/dist/src/document-model/state.d.ts +0 -15
  118. package/dist/src/document-model/state.d.ts.map +0 -1
  119. package/dist/src/document-model/state.js +0 -75
  120. package/dist/src/document-model/state.js.map +0 -1
  121. package/dist/src/document-model/types.d.ts +0 -584
  122. package/dist/src/document-model/types.d.ts.map +0 -1
  123. package/dist/src/document-model/types.js +0 -2
  124. package/dist/src/document-model/types.js.map +0 -1
  125. package/dist/src/document-model/validation.d.ts +0 -32
  126. package/dist/src/document-model/validation.d.ts.map +0 -1
  127. package/dist/src/document-model/validation.js +0 -166
  128. package/dist/src/document-model/validation.js.map +0 -1
  129. package/dist/src/index.d.ts +0 -6
  130. package/dist/src/index.d.ts.map +0 -1
  131. package/dist/src/index.js +0 -3
  132. package/dist/src/index.js.map +0 -1
  133. package/dist/test/document/crypto.test.d.ts +0 -2
  134. package/dist/test/document/crypto.test.d.ts.map +0 -1
  135. package/dist/test/document/crypto.test.js +0 -192
  136. package/dist/test/document/crypto.test.js.map +0 -1
  137. package/dist/test/document/event-vs-command.test.d.ts +0 -2
  138. package/dist/test/document/event-vs-command.test.d.ts.map +0 -1
  139. package/dist/test/document/event-vs-command.test.js +0 -202
  140. package/dist/test/document/event-vs-command.test.js.map +0 -1
  141. package/dist/test/document/local.test.d.ts +0 -2
  142. package/dist/test/document/local.test.d.ts.map +0 -1
  143. package/dist/test/document/local.test.js +0 -226
  144. package/dist/test/document/local.test.js.map +0 -1
  145. package/dist/test/document/operation-id.test.d.ts +0 -2
  146. package/dist/test/document/operation-id.test.d.ts.map +0 -1
  147. package/dist/test/document/operation-id.test.js +0 -118
  148. package/dist/test/document/operation-id.test.js.map +0 -1
  149. package/dist/test/document/prune.test.d.ts +0 -2
  150. package/dist/test/document/prune.test.d.ts.map +0 -1
  151. package/dist/test/document/prune.test.js +0 -159
  152. package/dist/test/document/prune.test.js.map +0 -1
  153. package/dist/test/document/reducer.test.d.ts +0 -2
  154. package/dist/test/document/reducer.test.d.ts.map +0 -1
  155. package/dist/test/document/reducer.test.js +0 -284
  156. package/dist/test/document/reducer.test.js.map +0 -1
  157. package/dist/test/document/skip-operations.test.d.ts +0 -2
  158. package/dist/test/document/skip-operations.test.d.ts.map +0 -1
  159. package/dist/test/document/skip-operations.test.js +0 -495
  160. package/dist/test/document/skip-operations.test.js.map +0 -1
  161. package/dist/test/document/undo-redo-v2.test.d.ts +0 -2
  162. package/dist/test/document/undo-redo-v2.test.d.ts.map +0 -1
  163. package/dist/test/document/undo-redo-v2.test.js +0 -207
  164. package/dist/test/document/undo-redo-v2.test.js.map +0 -1
  165. package/dist/test/document/undo-redo.test.d.ts +0 -2
  166. package/dist/test/document/undo-redo.test.d.ts.map +0 -1
  167. package/dist/test/document/undo-redo.test.js +0 -413
  168. package/dist/test/document/undo-redo.test.js.map +0 -1
  169. package/dist/test/document/utils.test.d.ts +0 -2
  170. package/dist/test/document/utils.test.d.ts.map +0 -1
  171. package/dist/test/document/utils.test.js +0 -172
  172. package/dist/test/document/utils.test.js.map +0 -1
  173. package/dist/test/document-helpers/addUndo.test.d.ts +0 -2
  174. package/dist/test/document-helpers/addUndo.test.d.ts.map +0 -1
  175. package/dist/test/document-helpers/addUndo.test.js +0 -120
  176. package/dist/test/document-helpers/addUndo.test.js.map +0 -1
  177. package/dist/test/document-helpers/attachBranch.test.d.ts +0 -2
  178. package/dist/test/document-helpers/attachBranch.test.d.ts.map +0 -1
  179. package/dist/test/document-helpers/attachBranch.test.js +0 -364
  180. package/dist/test/document-helpers/attachBranch.test.js.map +0 -1
  181. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts +0 -2
  182. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +0 -1
  183. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +0 -252
  184. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +0 -1
  185. package/dist/test/document-helpers/conflictResolution.test.d.ts +0 -2
  186. package/dist/test/document-helpers/conflictResolution.test.d.ts.map +0 -1
  187. package/dist/test/document-helpers/conflictResolution.test.js +0 -109
  188. package/dist/test/document-helpers/conflictResolution.test.js.map +0 -1
  189. package/dist/test/document-helpers/filterDuplicatedOperations.test.d.ts +0 -2
  190. package/dist/test/document-helpers/filterDuplicatedOperations.test.d.ts.map +0 -1
  191. package/dist/test/document-helpers/filterDuplicatedOperations.test.js +0 -126
  192. package/dist/test/document-helpers/filterDuplicatedOperations.test.js.map +0 -1
  193. package/dist/test/document-helpers/garbageCollect.test.d.ts +0 -2
  194. package/dist/test/document-helpers/garbageCollect.test.d.ts.map +0 -1
  195. package/dist/test/document-helpers/garbageCollect.test.js +0 -136
  196. package/dist/test/document-helpers/garbageCollect.test.js.map +0 -1
  197. package/dist/test/document-helpers/groupOperationsByScope.test.d.ts +0 -2
  198. package/dist/test/document-helpers/groupOperationsByScope.test.d.ts.map +0 -1
  199. package/dist/test/document-helpers/groupOperationsByScope.test.js +0 -102
  200. package/dist/test/document-helpers/groupOperationsByScope.test.js.map +0 -1
  201. package/dist/test/document-helpers/headerRevision.test.d.ts +0 -2
  202. package/dist/test/document-helpers/headerRevision.test.d.ts.map +0 -1
  203. package/dist/test/document-helpers/headerRevision.test.js +0 -203
  204. package/dist/test/document-helpers/headerRevision.test.js.map +0 -1
  205. package/dist/test/document-helpers/merge.test.d.ts +0 -2
  206. package/dist/test/document-helpers/merge.test.d.ts.map +0 -1
  207. package/dist/test/document-helpers/merge.test.js +0 -906
  208. package/dist/test/document-helpers/merge.test.js.map +0 -1
  209. package/dist/test/document-helpers/nextSkipNumber.test.d.ts +0 -2
  210. package/dist/test/document-helpers/nextSkipNumber.test.d.ts.map +0 -1
  211. package/dist/test/document-helpers/nextSkipNumber.test.js +0 -135
  212. package/dist/test/document-helpers/nextSkipNumber.test.js.map +0 -1
  213. package/dist/test/document-helpers/prepareOperations.test.d.ts +0 -2
  214. package/dist/test/document-helpers/prepareOperations.test.d.ts.map +0 -1
  215. package/dist/test/document-helpers/prepareOperations.test.js +0 -304
  216. package/dist/test/document-helpers/prepareOperations.test.js.map +0 -1
  217. package/dist/test/document-helpers/removeExistingOperations.test.d.ts +0 -2
  218. package/dist/test/document-helpers/removeExistingOperations.test.d.ts.map +0 -1
  219. package/dist/test/document-helpers/removeExistingOperations.test.js +0 -177
  220. package/dist/test/document-helpers/removeExistingOperations.test.js.map +0 -1
  221. package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts +0 -2
  222. package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +0 -1
  223. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +0 -148
  224. package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +0 -1
  225. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts +0 -2
  226. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +0 -1
  227. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +0 -200
  228. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +0 -1
  229. package/dist/test/document-helpers/skipHeaderOperations.test.d.ts +0 -2
  230. package/dist/test/document-helpers/skipHeaderOperations.test.d.ts.map +0 -1
  231. package/dist/test/document-helpers/skipHeaderOperations.test.js +0 -72
  232. package/dist/test/document-helpers/skipHeaderOperations.test.js.map +0 -1
  233. package/dist/test/document-helpers/sortOperations.test.d.ts +0 -2
  234. package/dist/test/document-helpers/sortOperations.test.d.ts.map +0 -1
  235. package/dist/test/document-helpers/sortOperations.test.js +0 -101
  236. package/dist/test/document-helpers/sortOperations.test.js.map +0 -1
  237. package/dist/test/document-helpers/split.test.d.ts +0 -2
  238. package/dist/test/document-helpers/split.test.d.ts.map +0 -1
  239. package/dist/test/document-helpers/split.test.js +0 -121
  240. package/dist/test/document-helpers/split.test.js.map +0 -1
  241. package/dist/test/document-helpers/utils.d.ts +0 -15
  242. package/dist/test/document-helpers/utils.d.ts.map +0 -1
  243. package/dist/test/document-helpers/utils.js +0 -61
  244. package/dist/test/document-helpers/utils.js.map +0 -1
  245. package/dist/test/document-model/replay.test.d.ts +0 -2
  246. package/dist/test/document-model/replay.test.d.ts.map +0 -1
  247. package/dist/test/document-model/replay.test.js +0 -139
  248. package/dist/test/document-model/replay.test.js.map +0 -1
  249. package/dist/test/document-model/skip-operations.test.d.ts +0 -2
  250. package/dist/test/document-model/skip-operations.test.d.ts.map +0 -1
  251. package/dist/test/document-model/skip-operations.test.js +0 -214
  252. package/dist/test/document-model/skip-operations.test.js.map +0 -1
  253. package/dist/test/document-model/validation.test.d.ts +0 -2
  254. package/dist/test/document-model/validation.test.d.ts.map +0 -1
  255. package/dist/test/document-model/validation.test.js +0 -451
  256. package/dist/test/document-model/validation.test.js.map +0 -1
  257. package/dist/test/document-model/versioning.test.d.ts +0 -2
  258. package/dist/test/document-model/versioning.test.d.ts.map +0 -1
  259. package/dist/test/document-model/versioning.test.js +0 -93
  260. package/dist/test/document-model/versioning.test.js.map +0 -1
  261. package/dist/test/document-model/zip.test.d.ts +0 -2
  262. package/dist/test/document-model/zip.test.d.ts.map +0 -1
  263. package/dist/test/document-model/zip.test.js +0 -79
  264. package/dist/test/document-model/zip.test.js.map +0 -1
  265. package/dist/test/helpers.d.ts +0 -79
  266. package/dist/test/helpers.d.ts.map +0 -1
  267. package/dist/test/helpers.js +0 -121
  268. package/dist/test/helpers.js.map +0 -1
  269. package/dist/test/index.d.ts +0 -4
  270. package/dist/test/index.d.ts.map +0 -1
  271. package/dist/test/index.js +0 -3
  272. package/dist/test/index.js.map +0 -1
  273. package/dist/test/types.d.ts +0 -6
  274. package/dist/test/types.d.ts.map +0 -1
  275. package/dist/test/types.js +0 -2
  276. package/dist/test/types.js.map +0 -1
  277. package/dist/tsconfig.tsbuildinfo +0 -1
  278. package/dist/vitest.config.d.ts +0 -3
  279. package/dist/vitest.config.d.ts.map +0 -1
  280. package/dist/vitest.config.js +0 -7
  281. package/dist/vitest.config.js.map +0 -1
@@ -1,127 +0,0 @@
1
- const tokenSub = /@([a-zA-Z0-9_]+)/g;
2
- const dtf = new Intl.DateTimeFormat(undefined, {
3
- hour12: false,
4
- hour: "2-digit",
5
- minute: "2-digit",
6
- second: "2-digit",
7
- fractionalSecondDigits: 2,
8
- });
9
- const formatMessage = (tagString, message, replacements) => {
10
- const meta = {};
11
- const uniqueTokens = [];
12
- let results;
13
- while ((results = tokenSub.exec(message)) !== null) {
14
- const tokenName = results[1];
15
- const index = uniqueTokens.indexOf(tokenName);
16
- if (index === -1) {
17
- uniqueTokens.push(tokenName);
18
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
19
- const replacement = replacements[uniqueTokens.length - 1];
20
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21
- meta[tokenName] = replacement;
22
- }
23
- }
24
- // replace
25
- for (const [key, value] of Object.entries(meta)) {
26
- let stringValue;
27
- if (!value) {
28
- stringValue = "null";
29
- }
30
- else if (typeof value === "string") {
31
- stringValue = value;
32
- }
33
- else if (typeof value === "object") {
34
- stringValue = JSON.stringify(value);
35
- }
36
- else if (typeof value === "function") {
37
- // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
38
- const name = value.name;
39
- stringValue = name ? `${name}()` : "anonymous()";
40
- }
41
- else {
42
- stringValue = String(value);
43
- }
44
- message = message.replaceAll(`@${key}`, stringValue);
45
- }
46
- if (tagString.length > 0) {
47
- message = `${tagString} ${message}`;
48
- }
49
- // timestamp
50
- const now = new Date();
51
- const timestamp = dtf.format(now);
52
- meta["timestamp"] = timestamp;
53
- return [message, meta];
54
- };
55
- const LOG_LEVELS = {
56
- verbose: 0,
57
- debug: 1,
58
- info: 2,
59
- warn: 3,
60
- error: 4,
61
- };
62
- export class ConsoleLogger {
63
- #tags;
64
- #tagString;
65
- #level = LOG_LEVELS.info;
66
- errorHandler;
67
- constructor(tags, handler) {
68
- this.#tags = tags || [];
69
- this.#tagString = this.#tags.map((tag) => `[${tag}]`).join("");
70
- this.errorHandler = handler ?? (() => { });
71
- }
72
- get level() {
73
- return Object.keys(LOG_LEVELS).find((key) => LOG_LEVELS[key] === this.#level);
74
- }
75
- set level(value) {
76
- this.#level = LOG_LEVELS[value];
77
- }
78
- child(tags) {
79
- const logger = new ConsoleLogger([...this.#tags, ...tags], this.errorHandler);
80
- logger.level = this.level;
81
- return logger;
82
- }
83
- verbose(message, ...replacements) {
84
- if (this.#level <= LOG_LEVELS.verbose) {
85
- const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
86
- console.debug(`[${meta["timestamp"]}] ${formattedMessage}`);
87
- }
88
- }
89
- debug(message, ...replacements) {
90
- if (this.#level <= LOG_LEVELS.debug) {
91
- const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
92
- console.debug(`[${meta["timestamp"]}] ${formattedMessage}`);
93
- }
94
- }
95
- info(message, ...replacements) {
96
- if (this.#level <= LOG_LEVELS.info) {
97
- const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
98
- console.info(`[${meta["timestamp"]}] ${formattedMessage}`);
99
- }
100
- }
101
- warn(message, ...replacements) {
102
- if (this.#level <= LOG_LEVELS.warn) {
103
- const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
104
- console.warn(`[${meta["timestamp"]}] ${formattedMessage}`);
105
- }
106
- }
107
- error(message, ...replacements) {
108
- if (this.#level <= LOG_LEVELS.error) {
109
- const [formattedMessage, meta] = formatMessage(this.#tagString, message, replacements);
110
- console.error(`[${meta["timestamp"]}] ${formattedMessage}`);
111
- }
112
- }
113
- }
114
- // Singleton instance
115
- export const logger = new ConsoleLogger();
116
- // Global configuration
117
- export const setLogLevel = (level) => {
118
- logger.level = level;
119
- };
120
- export const setErrorHandler = (handler) => {
121
- logger.errorHandler = handler;
122
- };
123
- // Backwards-compatible factory function
124
- export const childLogger = (tags) => {
125
- return logger.child(tags);
126
- };
127
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/logger.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/core/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EACf,WAAW,EACX,UAAU,EACV,OAAO,EACP,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AASpB;;;;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;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,mBAgBlB;AAED,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,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"}
@@ -1,155 +0,0 @@
1
- import mime from "mime/lite";
2
- import { createHash } from "node:crypto";
3
- import fs from "node:fs";
4
- import https from "node:https";
5
- import { join } from "node:path";
6
- import { baseLoadFromInput, createMinimalZip, 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 ? `.${extension}.phd` : ".phd";
80
- return writeFileNode(path, fileName.endsWith(fileExtension) ? fileName : `${fileName}${fileExtension}`, file);
81
- }
82
- /**
83
- * Saves a minimal document backup to a .phd file.
84
- * Used when the full document is not available (e.g., in onOperations handler).
85
- * Creates a file with minimal header and empty operations.
86
- */
87
- export async function baseMinimalSaveToFile(data, path, extension) {
88
- const zip = createMinimalZip(data);
89
- const file = await zip.generateAsync({
90
- type: "uint8array",
91
- streamFiles: true,
92
- });
93
- const fileExtension = extension ? `.${extension}.phd` : ".phd";
94
- return writeFileNode(path, data.name.endsWith(fileExtension)
95
- ? data.name
96
- : `${data.name}${fileExtension}`, file);
97
- }
98
- export function writeFileNode(path, name, data) {
99
- const filePath = join(path, name);
100
- fs.mkdirSync(path, { recursive: true });
101
- return new Promise((resolve, reject) => {
102
- try {
103
- fs.writeFile(filePath, data, {}, (err) => {
104
- if (err) {
105
- reject(err);
106
- }
107
- else {
108
- resolve(filePath);
109
- }
110
- });
111
- }
112
- catch (error) {
113
- if (error instanceof Error) {
114
- reject(error);
115
- }
116
- else {
117
- reject(new Error(String(error)));
118
- }
119
- }
120
- });
121
- }
122
- export function readFileNode(path) {
123
- return fs.readFileSync(path);
124
- }
125
- export function fetchFileNode(url) {
126
- return new Promise((resolve, reject) => {
127
- https
128
- .get(url, (resp) => {
129
- const data = [];
130
- const mimeType = resp.headers["content-type"];
131
- resp.on("data", (chunk) => {
132
- data.push(chunk);
133
- });
134
- resp.on("end", () => {
135
- resolve({ buffer: Buffer.concat(data), mimeType });
136
- });
137
- })
138
- .on("error", (err) => {
139
- reject(err);
140
- });
141
- });
142
- }
143
- export const getFileNode = async (file) => {
144
- return readFileNode(file);
145
- };
146
- export const hashNode = (data, algorithm = "sha1", encoding = "base64", _params) => {
147
- if (!["sha1", "sha256", "sha512"].includes(algorithm)) {
148
- throw new Error(`Hashing algorithm not supported: "${algorithm}". Available: sha1, sha256, sha512`);
149
- }
150
- if (!["base64", "hex"].includes(encoding)) {
151
- throw new Error(`Hash encoding not supported: "${encoding}". Available: base64, hex`);
152
- }
153
- return createHash(algorithm).update(data).digest(encoding);
154
- };
155
- //# sourceMappingURL=node.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/core/node.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import type { Action, PHBaseState, PHDocument } from "./ph-types.js";
2
- import type { LoadStateActionInput } from "./types.js";
3
- export declare function setNameOperation<TDocument extends PHDocument>(document: TDocument, input: {
4
- name: string;
5
- }): TDocument & {
6
- header: {
7
- name: string;
8
- id: string;
9
- sig: import("./ph-types.js").PHDocumentSignatureInfo;
10
- documentType: string;
11
- createdAtUtcIso: string;
12
- slug: string;
13
- branch: string;
14
- revision: {
15
- [scope: string]: number;
16
- };
17
- lastModifiedAtUtcIso: string;
18
- protocolVersions?: {
19
- [key: string]: number;
20
- };
21
- meta?: import("./ph-types.js").PHDocumentMeta;
22
- };
23
- };
24
- export declare function undoOperation<TDocument extends PHDocument>(document: TDocument, action: Action, skip: number): {
25
- document: TDocument;
26
- action: Action;
27
- skip: number;
28
- reuseLastOperationIndex: boolean;
29
- };
30
- /**
31
- * V2 of undoOperation for protocol version 2+.
32
- * Key differences from undoOperation:
33
- * - Never reuses operation index (always increments)
34
- * - Always sets skip=1 (consecutive NOOPs are handled during rebuild/GC)
35
- * - No complex skip calculation - simpler model where each UNDO is independent
36
- */
37
- export declare function undoOperationV2<TDocument extends PHDocument>(document: TDocument, action: Action, skip: number): {
38
- document: TDocument;
39
- action: Action;
40
- skip: number;
41
- reuseLastOperationIndex: false;
42
- };
43
- export declare function redoOperation<TDocument extends PHDocument>(document: TDocument, action: Action, skip: number): {
44
- document: TDocument;
45
- action: Action;
46
- skip: number;
47
- reuseLastOperationIndex: boolean;
48
- };
49
- export declare function loadStateOperation<TState extends PHBaseState>(document: PHDocument<TState>, action: LoadStateActionInput): PHDocument<TState>;
50
- //# sourceMappingURL=operations.d.ts.map
@@ -1 +0,0 @@
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,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;EAGxB;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;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,SAAS,UAAU,EAC1D,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,KAAK,CAAC;CAChC,CAuCA;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,CAoDA;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,126 +0,0 @@
1
- import { castDraft, create } from "mutative";
2
- import { noop } from "./actions.js";
3
- import { nextSkipNumber, sortOperations } from "./documents.js";
4
- // updates the name of the document
5
- export function setNameOperation(document, input) {
6
- return { ...document, header: { ...document.header, name: input.name } };
7
- }
8
- export function undoOperation(document, action, skip) {
9
- // const scope = action.scope;
10
- const { scope } = action;
11
- const defaultResult = {
12
- document,
13
- action,
14
- skip,
15
- reuseLastOperationIndex: false,
16
- };
17
- return create(defaultResult, (draft) => {
18
- const operations = [...document.operations[scope]];
19
- const sortedOperations = sortOperations(operations);
20
- draft.action = noop(scope);
21
- const lastOperation = sortedOperations.at(-1);
22
- let nextIndex = lastOperation?.index ?? -1;
23
- const isNewNoop = lastOperation?.action.type !== "NOOP";
24
- if (isNewNoop) {
25
- nextIndex = nextIndex + 1;
26
- }
27
- else {
28
- draft.reuseLastOperationIndex = true;
29
- }
30
- const nextOperationHistory = isNewNoop
31
- ? [...sortedOperations, { index: nextIndex, skip: 0 }]
32
- : sortedOperations;
33
- draft.skip = nextSkipNumber(nextOperationHistory);
34
- if (lastOperation && draft.skip > lastOperation.skip + 1) {
35
- // there's an overlap with a previous skip operation
36
- // (add 1 to the skip value because we are adding a new operation to the history)
37
- draft.skip = draft.skip + 1;
38
- }
39
- if (draft.skip < 0) {
40
- throw new Error(`Cannot undo: you can't undo more operations than the ones in the scope history`);
41
- }
42
- });
43
- }
44
- /**
45
- * V2 of undoOperation for protocol version 2+.
46
- * Key differences from undoOperation:
47
- * - Never reuses operation index (always increments)
48
- * - Always sets skip=1 (consecutive NOOPs are handled during rebuild/GC)
49
- * - No complex skip calculation - simpler model where each UNDO is independent
50
- */
51
- export function undoOperationV2(document, action, skip) {
52
- const { scope } = action;
53
- const defaultResult = {
54
- document,
55
- action,
56
- skip,
57
- reuseLastOperationIndex: false,
58
- };
59
- return create(defaultResult, (draft) => {
60
- const operations = document.operations[scope] || [];
61
- const sortedOperations = sortOperations([...operations]);
62
- // Count non-NOOP operations to determine if there's anything to undo
63
- const nonNoopOps = sortedOperations.filter((op) => op.action.type !== "NOOP");
64
- // Count consecutive NOOPs at the end (these represent pending undos)
65
- let noopChainLength = 0;
66
- for (let i = sortedOperations.length - 1; i >= 0; i--) {
67
- if (sortedOperations[i].action.type === "NOOP") {
68
- noopChainLength++;
69
- }
70
- else {
71
- break;
72
- }
73
- }
74
- // Check if we can undo: need more non-NOOP ops than the current NOOP chain
75
- if (nonNoopOps.length <= noopChainLength) {
76
- throw new Error(`Cannot undo: no more operations to undo in scope history`);
77
- }
78
- draft.action = noop(scope);
79
- draft.skip = 1;
80
- });
81
- }
82
- export function redoOperation(document, action, skip) {
83
- const { scope, input } = action;
84
- const defaultResult = {
85
- document,
86
- action,
87
- skip,
88
- reuseLastOperationIndex: false,
89
- };
90
- return create(defaultResult, (draft) => {
91
- if (draft.skip > 0) {
92
- throw new Error(`Cannot redo: skip value from reducer cannot be used with REDO action`);
93
- }
94
- // Handle both object format { count: number } and legacy number format
95
- const count = typeof input === "object" && input !== null && "count" in input
96
- ? input.count
97
- : input;
98
- if (typeof count !== "number" || count > 1) {
99
- throw new Error(`Cannot redo: you can only redo one operation at a time`);
100
- }
101
- if (typeof count !== "number" || count < 1) {
102
- throw new Error(`Invalid REDO action: invalid redo input value`);
103
- }
104
- if (draft.document.clipboard.length < 1) {
105
- throw new Error(`Cannot redo: no operations in the clipboard`);
106
- }
107
- const operationIndex = draft.document.clipboard.findLastIndex((op) => op.action.scope === scope);
108
- if (operationIndex < 0) {
109
- throw new Error(`Cannot redo: no operations in clipboard for scope "${scope}"`);
110
- }
111
- const operation = draft.document.clipboard.splice(operationIndex, 1)[0];
112
- draft.action = castDraft({
113
- type: operation.action.type,
114
- scope: operation.action.scope,
115
- input: operation.action.input,
116
- });
117
- });
118
- }
119
- export function loadStateOperation(document, action) {
120
- return {
121
- ...document,
122
- header: { ...document.header, name: action.state.name },
123
- state: action.state.data,
124
- };
125
- }
126
- //# sourceMappingURL=operations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/core/operations.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export type * from "@powerhousedao/shared/document-model/core/ph-types";
2
- //# sourceMappingURL=ph-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ph-types.d.ts","sourceRoot":"","sources":["../../../src/core/ph-types.ts"],"names":[],"mappings":"AAOA,mBAAmB,oDAAoD,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ph-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ph-types.js","sourceRoot":"","sources":["../../../src/core/ph-types.ts"],"names":[],"mappings":""}
@@ -1,63 +0,0 @@
1
- import { type OperationContext } from "./actions.js";
2
- import type { Action, DocumentOperations, Operation, PHBaseState, PHDocument, PHDocumentHeader } from "./ph-types.js";
3
- import type { PruneActionInput, Reducer, ReducerOptions, ReplayDocumentOptions, SignalDispatch, SkipHeaderOperations, StateReducer } from "./types.js";
4
- export declare function replayOperations<TState extends PHBaseState = PHBaseState>(initialState: TState, clearedOperations: DocumentOperations, stateReducer: StateReducer<TState>, header: PHDocumentHeader, dispatch?: SignalDispatch, documentReducer?: typeof baseReducer, skipHeaderOperations?: SkipHeaderOperations, options?: ReplayDocumentOptions): PHDocument<TState>;
5
- /**
6
- * Updates the document state based on the provided action.
7
- *
8
- * @param state The current state of the document.
9
- * @param action The action being applied to the document.
10
- * @param skip The number of operations to skip before applying the action.
11
- * @param reuseLastOperationIndex Whether to reuse the last operation index (used when a an UNDO operation is performed after an existing one).
12
- * @param context The operation context for deterministic ID generation.
13
- * @returns The updated document state.
14
- */
15
- export declare function updateDocument<TDocument extends PHDocument>(document: TDocument, action: Action, reuseLastOperationIndex: boolean, skip: number, context: OperationContext, operation?: Operation, skipIndexValidation?: boolean): TDocument;
16
- /**
17
- * Processes an UNDO or REDO action.
18
- *
19
- * @param document The current state of the document.
20
- * @param action The action being applied to the document.
21
- * @param skip The number of operations to skip before applying the action.
22
- * @returns The updated document, calculated skip value and transformed action (if applied).
23
- */
24
- export declare function processUndoRedo<TState extends PHBaseState = PHBaseState>(document: PHDocument<TState>, action: Action, skip: number, protocolVersion?: number): {
25
- document: PHDocument<TState>;
26
- action: Action;
27
- skip: number;
28
- reuseLastOperationIndex: boolean;
29
- };
30
- /**
31
- * Base document reducer that wraps a custom document reducer and handles
32
- * document-level actions such as undo, redo, prune, and set name.
33
- *
34
- * @template TGlobalState - The type of the state of the custom reducer.
35
- * @template TAction - The type of the actions of the custom reducer.
36
- * @param state - The current state of the document.
37
- * @param action - The action object to apply to the state.
38
- * @param customReducer - The custom reducer that implements the application logic
39
- * specific to the document's state.
40
- * @returns The new state of the document.
41
- */
42
- export declare function baseReducer<TState extends PHBaseState = PHBaseState>(document: PHDocument<TState>, action: Action, customReducer: StateReducer<TState>, dispatch?: SignalDispatch, options?: ReducerOptions): PHDocument<TState>;
43
- /**
44
- * Helper function to create a document model reducer.
45
- *
46
- * @remarks
47
- * This function creates a new reducer that wraps the provided `reducer` with
48
- * `documentReducer`, adding support for document actions:
49
- * - `SET_NAME`
50
- * - `UNDO`
51
- * - `REDO`
52
- * - `PRUNE`
53
- *
54
- * It also updates the document-related attributes on every operation.
55
- *
56
- * @param reducer - The custom reducer to wrap.
57
- * @param documentReducer - The document reducer to use.
58
- *
59
- * @returns The new reducer.
60
- */
61
- export declare function createReducer<TState extends PHBaseState = PHBaseState>(stateReducer: StateReducer<TState>, documentReducer?: typeof baseReducer): Reducer<TState>;
62
- export declare function pruneOperation<TState extends PHBaseState = PHBaseState>(document: PHDocument<TState>, input: PruneActionInput, wrappedReducer: StateReducer<TState>): PHDocument<TState>;
63
- //# sourceMappingURL=reducer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../src/core/reducer.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AAuBtB,OAAO,KAAK,EACV,MAAM,EACN,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,UAAU,EACV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW,EACvE,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,kBAAkB,EACrC,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,EAClC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,CAAC,EAAE,cAAc,EACzB,eAAe,qBAAc,EAC7B,oBAAoB,GAAE,oBAAyB,EAC/C,OAAO,CAAC,EAAE,qBAAqB,GAC9B,UAAU,CAAC,MAAM,CAAC,CAcpB;AAmFD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,SAAS,SAAS,UAAU,EACzD,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,MAAM,EACd,uBAAuB,EAAE,OAAO,EAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,gBAAgB,EACzB,SAAS,CAAC,EAAE,SAAS,EACrB,mBAAmB,CAAC,EAAE,OAAO,GAC5B,SAAS,CA6BX;AA+BD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW,EACtE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,eAAe,SAAI,GAClB;IACD,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAYA;AAqHD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW,EAClE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,EAC5B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,EACnC,QAAQ,CAAC,EAAE,cAAc,EACzB,OAAO,GAAE,cAAmB,GAC3B,UAAU,CAAC,MAAM,CAAC,CA+OpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW,EACpE,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,EAClC,eAAe,qBAAc,GAC5B,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,wBAAgB,cAAc,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW,EACrE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,EAC5B,KAAK,EAAE,gBAAgB,EACvB,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,GACnC,UAAU,CAAC,MAAM,CAAC,CAoEpB"}