document-drive 1.19.1 → 1.20.1

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 (252) hide show
  1. package/README.md +4 -0
  2. package/dist/index.d.ts +28 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +18 -0
  5. package/dist/src/cache/memory.d.ts +10 -0
  6. package/dist/src/cache/memory.d.ts.map +1 -0
  7. package/dist/src/cache/memory.js +26 -0
  8. package/dist/src/cache/redis.d.ts +14 -0
  9. package/dist/src/cache/redis.d.ts.map +1 -0
  10. package/dist/src/cache/redis.js +40 -0
  11. package/dist/src/cache/types.d.ts +7 -0
  12. package/dist/src/cache/types.d.ts.map +1 -0
  13. package/dist/src/cache/types.js +1 -0
  14. package/dist/src/drive-document-model/constants.d.ts +2 -0
  15. package/dist/src/drive-document-model/constants.d.ts.map +1 -0
  16. package/dist/src/drive-document-model/constants.js +1 -0
  17. package/dist/src/drive-document-model/gen/actions.d.ts +7 -0
  18. package/dist/src/drive-document-model/gen/actions.d.ts.map +1 -0
  19. package/dist/src/drive-document-model/gen/actions.js +2 -0
  20. package/dist/src/drive-document-model/gen/constants.d.ts +7 -0
  21. package/dist/src/drive-document-model/gen/constants.d.ts.map +1 -0
  22. package/dist/src/drive-document-model/gen/constants.js +16 -0
  23. package/dist/src/drive-document-model/gen/creators.d.ts +3 -0
  24. package/dist/src/drive-document-model/gen/creators.d.ts.map +1 -0
  25. package/dist/src/drive-document-model/gen/creators.js +2 -0
  26. package/dist/src/drive-document-model/gen/document-model.d.ts +3 -0
  27. package/dist/src/drive-document-model/gen/document-model.d.ts.map +1 -0
  28. package/dist/src/drive-document-model/gen/document-model.js +210 -0
  29. package/dist/src/drive-document-model/gen/drive/actions.d.ts +12 -0
  30. package/dist/src/drive-document-model/gen/drive/actions.d.ts.map +1 -0
  31. package/dist/src/drive-document-model/gen/drive/actions.js +1 -0
  32. package/dist/src/drive-document-model/gen/drive/creators.d.ts +11 -0
  33. package/dist/src/drive-document-model/gen/drive/creators.d.ts.map +1 -0
  34. package/dist/src/drive-document-model/gen/drive/creators.js +10 -0
  35. package/dist/src/drive-document-model/gen/drive/error.d.ts +2 -0
  36. package/dist/src/drive-document-model/gen/drive/error.d.ts.map +1 -0
  37. package/dist/src/drive-document-model/gen/drive/error.js +1 -0
  38. package/dist/src/drive-document-model/gen/drive/object.d.ts +14 -0
  39. package/dist/src/drive-document-model/gen/drive/object.d.ts.map +1 -0
  40. package/dist/src/drive-document-model/gen/drive/object.js +28 -0
  41. package/dist/src/drive-document-model/gen/drive/operations.d.ts +14 -0
  42. package/dist/src/drive-document-model/gen/drive/operations.d.ts.map +1 -0
  43. package/dist/src/drive-document-model/gen/drive/operations.js +1 -0
  44. package/dist/src/drive-document-model/gen/node/actions.d.ts +11 -0
  45. package/dist/src/drive-document-model/gen/node/actions.d.ts.map +1 -0
  46. package/dist/src/drive-document-model/gen/node/actions.js +1 -0
  47. package/dist/src/drive-document-model/gen/node/creators.d.ts +10 -0
  48. package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -0
  49. package/dist/src/drive-document-model/gen/node/creators.js +9 -0
  50. package/dist/src/drive-document-model/gen/node/error.d.ts +2 -0
  51. package/dist/src/drive-document-model/gen/node/error.d.ts.map +1 -0
  52. package/dist/src/drive-document-model/gen/node/error.js +1 -0
  53. package/dist/src/drive-document-model/gen/node/object.d.ts +13 -0
  54. package/dist/src/drive-document-model/gen/node/object.d.ts.map +1 -0
  55. package/dist/src/drive-document-model/gen/node/object.js +25 -0
  56. package/dist/src/drive-document-model/gen/node/operations.d.ts +13 -0
  57. package/dist/src/drive-document-model/gen/node/operations.d.ts.map +1 -0
  58. package/dist/src/drive-document-model/gen/node/operations.js +1 -0
  59. package/dist/src/drive-document-model/gen/object.d.ts +21 -0
  60. package/dist/src/drive-document-model/gen/object.d.ts.map +1 -0
  61. package/dist/src/drive-document-model/gen/object.js +28 -0
  62. package/dist/src/drive-document-model/gen/reducer.d.ts +4 -0
  63. package/dist/src/drive-document-model/gen/reducer.d.ts.map +1 -0
  64. package/dist/src/drive-document-model/gen/reducer.js +74 -0
  65. package/dist/src/drive-document-model/gen/schema/types.d.ts +176 -0
  66. package/dist/src/drive-document-model/gen/schema/types.d.ts.map +1 -0
  67. package/dist/src/drive-document-model/gen/schema/types.js +1 -0
  68. package/dist/src/drive-document-model/gen/schema/zod.d.ts +87 -0
  69. package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -0
  70. package/dist/src/drive-document-model/gen/schema/zod.js +203 -0
  71. package/dist/src/drive-document-model/gen/types.d.ts +9 -0
  72. package/dist/src/drive-document-model/gen/types.d.ts.map +1 -0
  73. package/dist/src/drive-document-model/gen/types.js +1 -0
  74. package/dist/src/drive-document-model/gen/utils.d.ts +10 -0
  75. package/dist/src/drive-document-model/gen/utils.d.ts.map +1 -0
  76. package/dist/src/drive-document-model/gen/utils.js +27 -0
  77. package/dist/src/drive-document-model/index.d.ts +2 -0
  78. package/dist/src/drive-document-model/index.d.ts.map +1 -0
  79. package/dist/src/drive-document-model/index.js +1 -0
  80. package/dist/src/drive-document-model/module.d.ts +3 -0
  81. package/dist/src/drive-document-model/module.d.ts.map +1 -0
  82. package/dist/src/drive-document-model/module.js +12 -0
  83. package/dist/src/drive-document-model/src/reducers/drive.d.ts +8 -0
  84. package/dist/src/drive-document-model/src/reducers/drive.d.ts.map +1 -0
  85. package/dist/src/drive-document-model/src/reducers/drive.js +37 -0
  86. package/dist/src/drive-document-model/src/reducers/node.d.ts +8 -0
  87. package/dist/src/drive-document-model/src/reducers/node.d.ts.map +1 -0
  88. package/dist/src/drive-document-model/src/reducers/node.js +185 -0
  89. package/dist/src/drive-document-model/src/utils.d.ts +34 -0
  90. package/dist/src/drive-document-model/src/utils.d.ts.map +1 -0
  91. package/dist/src/drive-document-model/src/utils.js +146 -0
  92. package/dist/src/queue/base.d.ts +43 -0
  93. package/dist/src/queue/base.d.ts.map +1 -0
  94. package/dist/src/queue/base.js +241 -0
  95. package/dist/src/queue/redis.d.ts +28 -0
  96. package/dist/src/queue/redis.d.ts.map +1 -0
  97. package/dist/src/queue/redis.js +110 -0
  98. package/dist/src/queue/types.d.ts +55 -0
  99. package/dist/src/queue/types.d.ts.map +1 -0
  100. package/dist/src/queue/types.js +6 -0
  101. package/dist/src/read-mode/errors.d.ts +12 -0
  102. package/dist/src/read-mode/errors.d.ts.map +1 -0
  103. package/dist/src/read-mode/errors.js +17 -0
  104. package/dist/src/read-mode/server.d.ts +4 -0
  105. package/dist/src/read-mode/server.d.ts.map +1 -0
  106. package/dist/src/read-mode/server.js +78 -0
  107. package/dist/src/read-mode/service.d.ts +18 -0
  108. package/dist/src/read-mode/service.d.ts.map +1 -0
  109. package/dist/src/read-mode/service.js +112 -0
  110. package/dist/src/read-mode/types.d.ts +35 -0
  111. package/dist/src/read-mode/types.d.ts.map +1 -0
  112. package/dist/src/read-mode/types.js +1 -0
  113. package/dist/src/server/base-server.d.ts +112 -0
  114. package/dist/src/server/base-server.d.ts.map +1 -0
  115. package/dist/src/server/base-server.js +1280 -0
  116. package/dist/src/server/builder.d.ts +30 -0
  117. package/dist/src/server/builder.d.ts.map +1 -0
  118. package/dist/src/server/builder.js +89 -0
  119. package/dist/src/server/constants.d.ts +2 -0
  120. package/dist/src/server/constants.d.ts.map +1 -0
  121. package/dist/src/server/constants.js +1 -0
  122. package/dist/src/server/error.d.ts +30 -0
  123. package/dist/src/server/error.d.ts.map +1 -0
  124. package/dist/src/server/error.js +47 -0
  125. package/dist/src/server/event-emitter.d.ts +8 -0
  126. package/dist/src/server/event-emitter.d.ts.map +1 -0
  127. package/dist/src/server/event-emitter.js +10 -0
  128. package/dist/src/server/listener/index.d.ts +2 -0
  129. package/dist/src/server/listener/index.d.ts.map +1 -0
  130. package/dist/src/server/listener/index.js +1 -0
  131. package/dist/src/server/listener/listener-manager.d.ts +27 -0
  132. package/dist/src/server/listener/listener-manager.d.ts.map +1 -0
  133. package/dist/src/server/listener/listener-manager.js +401 -0
  134. package/dist/src/server/listener/transmitter/factory.d.ts +8 -0
  135. package/dist/src/server/listener/transmitter/factory.d.ts.map +1 -0
  136. package/dist/src/server/listener/transmitter/factory.js +25 -0
  137. package/dist/src/server/listener/transmitter/internal.d.ts +34 -0
  138. package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -0
  139. package/dist/src/server/listener/transmitter/internal.js +87 -0
  140. package/dist/src/server/listener/transmitter/pull-responder.d.ts +38 -0
  141. package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -0
  142. package/dist/src/server/listener/transmitter/pull-responder.js +256 -0
  143. package/dist/src/server/listener/transmitter/switchboard-push.d.ts +9 -0
  144. package/dist/src/server/listener/transmitter/switchboard-push.d.ts.map +1 -0
  145. package/dist/src/server/listener/transmitter/switchboard-push.js +77 -0
  146. package/dist/src/server/listener/transmitter/types.d.ts +20 -0
  147. package/dist/src/server/listener/transmitter/types.d.ts.map +1 -0
  148. package/dist/src/server/listener/transmitter/types.js +1 -0
  149. package/dist/src/server/listener/util.d.ts +2 -0
  150. package/dist/src/server/listener/util.d.ts.map +1 -0
  151. package/dist/src/server/listener/util.js +22 -0
  152. package/dist/src/server/sync-manager.d.ts +30 -0
  153. package/dist/src/server/sync-manager.d.ts.map +1 -0
  154. package/dist/src/server/sync-manager.js +287 -0
  155. package/dist/src/server/types.d.ts +308 -0
  156. package/dist/src/server/types.d.ts.map +1 -0
  157. package/dist/src/server/types.js +12 -0
  158. package/dist/src/server/utils.d.ts +8 -0
  159. package/dist/src/server/utils.d.ts.map +1 -0
  160. package/dist/src/server/utils.js +47 -0
  161. package/dist/src/storage/base.d.ts +36 -0
  162. package/dist/src/storage/base.d.ts.map +1 -0
  163. package/dist/src/storage/base.js +4 -0
  164. package/dist/src/storage/browser.d.ts +36 -0
  165. package/dist/src/storage/browser.d.ts.map +1 -0
  166. package/dist/src/storage/browser.js +155 -0
  167. package/dist/src/storage/filesystem.d.ts +33 -0
  168. package/dist/src/storage/filesystem.d.ts.map +1 -0
  169. package/dist/src/storage/filesystem.js +197 -0
  170. package/dist/src/storage/memory.d.ts +33 -0
  171. package/dist/src/storage/memory.d.ts.map +1 -0
  172. package/dist/src/storage/memory.js +139 -0
  173. package/dist/src/storage/prisma.d.ts +67 -0
  174. package/dist/src/storage/prisma.d.ts.map +1 -0
  175. package/dist/src/storage/prisma.js +445 -0
  176. package/dist/src/storage/sequelize.d.ts +32 -0
  177. package/dist/src/storage/sequelize.d.ts.map +1 -0
  178. package/dist/src/storage/sequelize.js +373 -0
  179. package/dist/src/storage/types.d.ts +43 -0
  180. package/dist/src/storage/types.d.ts.map +1 -0
  181. package/dist/src/storage/types.js +1 -0
  182. package/dist/src/utils/default-drives-manager.d.ts +29 -0
  183. package/dist/src/utils/default-drives-manager.d.ts.map +1 -0
  184. package/dist/src/utils/default-drives-manager.js +208 -0
  185. package/dist/src/utils/graphql.d.ts +34 -0
  186. package/dist/src/utils/graphql.d.ts.map +1 -0
  187. package/dist/src/utils/graphql.js +183 -0
  188. package/dist/src/utils/logger.d.ts +27 -0
  189. package/dist/src/utils/logger.d.ts.map +1 -0
  190. package/dist/src/utils/logger.js +105 -0
  191. package/dist/src/utils/migrations.d.ts +4 -0
  192. package/dist/src/utils/migrations.d.ts.map +1 -0
  193. package/dist/src/utils/migrations.js +41 -0
  194. package/dist/src/utils/misc.d.ts +11 -0
  195. package/dist/src/utils/misc.d.ts.map +1 -0
  196. package/dist/src/utils/misc.js +43 -0
  197. package/dist/src/utils/run-asap.d.ts +12 -0
  198. package/dist/src/utils/run-asap.d.ts.map +1 -0
  199. package/dist/src/utils/run-asap.js +131 -0
  200. package/dist/test/document-helpers/utils.d.ts +8 -0
  201. package/dist/test/document-helpers/utils.d.ts.map +1 -0
  202. package/dist/test/document-helpers/utils.js +21 -0
  203. package/dist/test/utils.d.ts +48 -0
  204. package/dist/test/utils.d.ts.map +1 -0
  205. package/dist/test/utils.js +132 -0
  206. package/dist/test/vitest-setup.d.ts +2 -0
  207. package/dist/test/vitest-setup.d.ts.map +1 -0
  208. package/dist/test/vitest-setup.js +4 -0
  209. package/dist/tsconfig.tsbuildinfo +1 -0
  210. package/dist/vitest.config.d.ts +3 -0
  211. package/dist/vitest.config.d.ts.map +1 -0
  212. package/dist/vitest.config.js +20 -0
  213. package/package.json +20 -38
  214. package/src/cache/index.ts +0 -2
  215. package/src/cache/memory.ts +0 -33
  216. package/src/cache/redis.ts +0 -56
  217. package/src/cache/types.ts +0 -9
  218. package/src/index.ts +0 -4
  219. package/src/queue/base.ts +0 -320
  220. package/src/queue/index.ts +0 -2
  221. package/src/queue/redis.ts +0 -144
  222. package/src/queue/types.ts +0 -79
  223. package/src/read-mode/errors.ts +0 -19
  224. package/src/read-mode/index.ts +0 -125
  225. package/src/read-mode/service.ts +0 -207
  226. package/src/read-mode/types.ts +0 -108
  227. package/src/server/error.ts +0 -70
  228. package/src/server/index.ts +0 -2444
  229. package/src/server/listener/index.ts +0 -2
  230. package/src/server/listener/manager.ts +0 -652
  231. package/src/server/listener/transmitter/index.ts +0 -4
  232. package/src/server/listener/transmitter/internal.ts +0 -143
  233. package/src/server/listener/transmitter/pull-responder.ts +0 -462
  234. package/src/server/listener/transmitter/switchboard-push.ts +0 -125
  235. package/src/server/listener/transmitter/types.ts +0 -27
  236. package/src/server/types.ts +0 -596
  237. package/src/server/utils.ts +0 -82
  238. package/src/storage/base.ts +0 -81
  239. package/src/storage/browser.ts +0 -238
  240. package/src/storage/filesystem.ts +0 -297
  241. package/src/storage/index.ts +0 -2
  242. package/src/storage/memory.ts +0 -211
  243. package/src/storage/prisma.ts +0 -653
  244. package/src/storage/sequelize.ts +0 -498
  245. package/src/storage/types.ts +0 -97
  246. package/src/utils/default-drives-manager.ts +0 -341
  247. package/src/utils/document-helpers.ts +0 -21
  248. package/src/utils/graphql.ts +0 -301
  249. package/src/utils/index.ts +0 -90
  250. package/src/utils/logger.ts +0 -38
  251. package/src/utils/migrations.ts +0 -58
  252. package/src/utils/run-asap.ts +0 -156
@@ -0,0 +1,48 @@
1
+ import { BaseDocumentDriveServer } from "#server/base-server";
2
+ import { Action, ActionFromDocument, DocumentModelModule, Operation, OperationFromDocument, PHDocument, PHReducer } from "document-model";
3
+ import { ExpectStatic } from "vitest";
4
+ export declare const baseDocumentModels: DocumentModelModule[];
5
+ export declare function expectUUID(expect: ExpectStatic): unknown;
6
+ export declare function expectUTCTimestamp(expect: ExpectStatic): unknown;
7
+ export declare function buildOperation(reducer: PHReducer, document: PHDocument, action: Action, index?: number): Operation;
8
+ export declare function buildOperations(reducer: PHReducer, document: PHDocument, actions: Array<Action>): Operation[];
9
+ export declare function buildOperationAndDocument<TDocument extends PHDocument>(reducer: PHReducer<TDocument>, document: TDocument, action: ActionFromDocument<TDocument>, index?: number): {
10
+ document: TDocument;
11
+ operation: OperationFromDocument<TDocument>;
12
+ };
13
+ export declare class BasicClient {
14
+ private server;
15
+ private driveId;
16
+ private documentId;
17
+ private document;
18
+ private reducer;
19
+ private unsyncedOperations;
20
+ constructor(server: BaseDocumentDriveServer, driveId: string, documentId: string, document: PHDocument, reducer: PHReducer);
21
+ getDocument(): PHDocument;
22
+ clearUnsyncedOperations(): void;
23
+ pushOperationsToServer(): Promise<import("../src/server/types.js").IOperationResult>;
24
+ syncDocument(): Promise<PHDocument>;
25
+ dispatchDocumentAction(action: Action): {
26
+ document: PHDocument;
27
+ operation: Operation;
28
+ };
29
+ }
30
+ export declare class DriveBasicClient {
31
+ private server;
32
+ private driveId;
33
+ private document;
34
+ private reducer;
35
+ private unsyncedOperations;
36
+ constructor(server: BaseDocumentDriveServer, driveId: string, document: PHDocument, reducer: PHReducer);
37
+ getDocument(): PHDocument;
38
+ getUnsyncedOperations(): Operation[];
39
+ setUnsyncedOperations(operations: Operation[]): void;
40
+ clearUnsyncedOperations(): void;
41
+ pushOperationsToServer(): Promise<import("../src/server/types.js").DriveOperationResult>;
42
+ syncDocument(): Promise<PHDocument>;
43
+ dispatchDriveAction(action: Action): {
44
+ document: PHDocument;
45
+ operation: Operation;
46
+ };
47
+ }
48
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../test/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,MAAM,EACN,kBAAkB,EAElB,mBAAmB,EACnB,SAAS,EACT,qBAAqB,EACrB,UAAU,EACV,SAAS,EACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,eAAO,MAAM,kBAAkB,EAG1B,mBAAmB,EAAE,CAAC;AAE3B,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAIxD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,SAAS,CAQX;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,GACrB,SAAS,EAAE,CAWb;AAED,wBAAgB,yBAAyB,CAAC,SAAS,SAAS,UAAU,EACpE,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,EAC7B,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,kBAAkB,CAAC,SAAS,CAAC,EACrC,KAAK,CAAC,EAAE,MAAM,GACb;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;CAC7C,CAYA;AAED,qBAAa,WAAW;IAIpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAElB,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,OAAO;IATjB,OAAO,CAAC,kBAAkB,CAAmB;gBAGnC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAElB,QAAQ,EAAE,UAAU,EAEpB,OAAO,EAAE,SAAS;IAG5B,WAAW;IAIX,uBAAuB;IAIjB,sBAAsB;IActB,YAAY;IAuBlB,sBAAsB,CAAC,MAAM,EAAE,MAAM;kBAMvB,UAAU;mBACT,SAAS;;CAQzB;AAED,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAEf,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,OAAO;IARjB,OAAO,CAAC,kBAAkB,CAAmB;gBAGnC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,MAAM,EAEf,QAAQ,EAAE,UAAU,EAEpB,OAAO,EAAE,SAAS;IAG5B,WAAW;IAIX,qBAAqB;IAIrB,qBAAqB,CAAC,UAAU,EAAE,SAAS,EAAE;IAI7C,uBAAuB;IAIjB,sBAAsB;IAatB,YAAY;IAoBlB,mBAAmB,CAAC,MAAM,EAAE,MAAM;kBAMpB,UAAU;mBACT,SAAS;;CAQzB"}
@@ -0,0 +1,132 @@
1
+ import { driveDocumentModelModule } from "#drive-document-model/module";
2
+ import { documentModelDocumentModelModule, } from "document-model";
3
+ export const baseDocumentModels = [
4
+ driveDocumentModelModule,
5
+ documentModelDocumentModelModule,
6
+ ];
7
+ export function expectUUID(expect) {
8
+ return expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i);
9
+ }
10
+ export function expectUTCTimestamp(expect) {
11
+ return expect.stringMatching(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/i);
12
+ }
13
+ export function buildOperation(reducer, document, action, index) {
14
+ const newDocument = reducer(document, action);
15
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
16
+ const operation = newDocument.operations[action.scope]
17
+ .slice()
18
+ .pop();
19
+ return { ...operation, index: index ?? operation.index };
20
+ }
21
+ export function buildOperations(reducer, document, actions) {
22
+ const operations = [];
23
+ for (const action of actions) {
24
+ document = reducer(document, action);
25
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
26
+ const operation = document.operations[action.scope]
27
+ .slice()
28
+ .pop();
29
+ operations.push(operation);
30
+ }
31
+ return operations;
32
+ }
33
+ export function buildOperationAndDocument(reducer, document, action, index) {
34
+ const newDocument = reducer(document, action);
35
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
36
+ const operation = newDocument.operations[action.scope].slice().pop();
37
+ return {
38
+ document: newDocument,
39
+ operation: {
40
+ ...operation,
41
+ index: index ?? operation.index,
42
+ },
43
+ };
44
+ }
45
+ export class BasicClient {
46
+ server;
47
+ driveId;
48
+ documentId;
49
+ document;
50
+ reducer;
51
+ unsyncedOperations = [];
52
+ constructor(server, driveId, documentId, document, reducer) {
53
+ this.server = server;
54
+ this.driveId = driveId;
55
+ this.documentId = documentId;
56
+ this.document = document;
57
+ this.reducer = reducer;
58
+ }
59
+ getDocument() {
60
+ return this.document;
61
+ }
62
+ clearUnsyncedOperations() {
63
+ this.unsyncedOperations = [];
64
+ }
65
+ async pushOperationsToServer() {
66
+ const result = await this.server.addOperations(this.driveId, this.documentId, this.unsyncedOperations);
67
+ if (result.status === "SUCCESS") {
68
+ this.unsyncedOperations = [];
69
+ }
70
+ return result;
71
+ }
72
+ async syncDocument() {
73
+ this.clearUnsyncedOperations();
74
+ const remoteDocument = await this.server.getDocument(this.driveId, this.documentId);
75
+ const remoteDocumentOperations = Object.values(remoteDocument.operations).flat();
76
+ const result = await this.server._processOperations(this.driveId, this.documentId, this.document, remoteDocumentOperations);
77
+ this.document = result.document;
78
+ return this.document;
79
+ }
80
+ dispatchDocumentAction(action) {
81
+ const result = buildOperationAndDocument(this.reducer, this.document, action);
82
+ this.document = { ...result.document };
83
+ this.unsyncedOperations.push({ ...result.operation });
84
+ return result;
85
+ }
86
+ }
87
+ export class DriveBasicClient {
88
+ server;
89
+ driveId;
90
+ document;
91
+ reducer;
92
+ unsyncedOperations = [];
93
+ constructor(server, driveId, document, reducer) {
94
+ this.server = server;
95
+ this.driveId = driveId;
96
+ this.document = document;
97
+ this.reducer = reducer;
98
+ }
99
+ getDocument() {
100
+ return this.document;
101
+ }
102
+ getUnsyncedOperations() {
103
+ return this.unsyncedOperations;
104
+ }
105
+ setUnsyncedOperations(operations) {
106
+ this.unsyncedOperations = operations;
107
+ }
108
+ clearUnsyncedOperations() {
109
+ this.unsyncedOperations = [];
110
+ }
111
+ async pushOperationsToServer() {
112
+ const result = await this.server.addDriveOperations(this.driveId, this.unsyncedOperations);
113
+ if (result.status === "SUCCESS") {
114
+ this.unsyncedOperations = [];
115
+ }
116
+ return result;
117
+ }
118
+ async syncDocument() {
119
+ this.clearUnsyncedOperations();
120
+ const remoteDocument = await this.server.getDrive(this.driveId);
121
+ const remoteDocumentOperations = Object.values(remoteDocument.operations).flat();
122
+ const result = await this.server._processOperations(this.driveId, undefined, this.document, remoteDocumentOperations);
123
+ this.document = result.document;
124
+ return this.document;
125
+ }
126
+ dispatchDriveAction(action) {
127
+ const result = buildOperationAndDocument(this.reducer, this.document, action);
128
+ this.document = { ...result.document };
129
+ this.unsyncedOperations.push({ ...result.operation });
130
+ return result;
131
+ }
132
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=vitest-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest-setup.d.ts","sourceRoot":"","sources":["../../test/vitest-setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ if (typeof window === "undefined") {
2
+ import("fake-indexeddb/auto");
3
+ }
4
+ export {};