document-drive 4.0.1 → 4.1.0-dev.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 (264) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/prisma/schema.prisma +1 -2
  6. package/dist/src/drive-document-model/gen/document-model.js +3 -3
  7. package/dist/src/drive-document-model/gen/document-model.js.map +1 -1
  8. package/dist/src/drive-document-model/gen/drive/actions.d.ts +9 -9
  9. package/dist/src/drive-document-model/gen/drive/actions.d.ts.map +1 -1
  10. package/dist/src/drive-document-model/gen/node/actions.d.ts +8 -8
  11. package/dist/src/drive-document-model/gen/node/actions.d.ts.map +1 -1
  12. package/dist/src/drive-document-model/gen/node/creators.d.ts +6 -2
  13. package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -1
  14. package/dist/src/drive-document-model/gen/node/creators.js +8 -1
  15. package/dist/src/drive-document-model/gen/node/creators.js.map +1 -1
  16. package/dist/src/drive-document-model/gen/reducer.d.ts.map +1 -1
  17. package/dist/src/drive-document-model/gen/reducer.js.map +1 -1
  18. package/dist/src/drive-document-model/gen/schema/types.d.ts +1 -14
  19. package/dist/src/drive-document-model/gen/schema/types.d.ts.map +1 -1
  20. package/dist/src/drive-document-model/gen/schema/zod.d.ts +1 -5
  21. package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -1
  22. package/dist/src/drive-document-model/gen/schema/zod.js +0 -12
  23. package/dist/src/drive-document-model/gen/schema/zod.js.map +1 -1
  24. package/dist/src/drive-document-model/gen/types.d.ts +13 -4
  25. package/dist/src/drive-document-model/gen/types.d.ts.map +1 -1
  26. package/dist/src/drive-document-model/gen/types.js.map +1 -1
  27. package/dist/src/drive-document-model/module.d.ts +2 -1
  28. package/dist/src/drive-document-model/module.d.ts.map +1 -1
  29. package/dist/src/drive-document-model/src/reducers/node.d.ts.map +1 -1
  30. package/dist/src/drive-document-model/src/reducers/node.js +1 -25
  31. package/dist/src/drive-document-model/src/reducers/node.js.map +1 -1
  32. package/dist/src/drive-document-model/src/tests/actions.test.js +1 -23
  33. package/dist/src/drive-document-model/src/tests/actions.test.js.map +1 -1
  34. package/dist/src/drive-document-model/src/tests/base.test.js +0 -32
  35. package/dist/src/drive-document-model/src/tests/base.test.js.map +1 -1
  36. package/dist/src/drive-document-model/src/tests/utils.test.js +7 -37
  37. package/dist/src/drive-document-model/src/tests/utils.test.js.map +1 -1
  38. package/dist/src/drive-document-model/src/utils.d.ts +2 -8
  39. package/dist/src/drive-document-model/src/utils.d.ts.map +1 -1
  40. package/dist/src/drive-document-model/src/utils.js +6 -55
  41. package/dist/src/drive-document-model/src/utils.js.map +1 -1
  42. package/dist/src/processors/types.d.ts +2 -1
  43. package/dist/src/processors/types.d.ts.map +1 -1
  44. package/dist/src/queue/base.d.ts +6 -27
  45. package/dist/src/queue/base.d.ts.map +1 -1
  46. package/dist/src/queue/base.js +15 -203
  47. package/dist/src/queue/base.js.map +1 -1
  48. package/dist/src/queue/event.d.ts +41 -0
  49. package/dist/src/queue/event.d.ts.map +1 -0
  50. package/dist/src/queue/event.js +222 -0
  51. package/dist/src/queue/event.js.map +1 -0
  52. package/dist/src/queue/redis.d.ts +1 -27
  53. package/dist/src/queue/redis.d.ts.map +1 -1
  54. package/dist/src/queue/redis.js +122 -110
  55. package/dist/src/queue/redis.js.map +1 -1
  56. package/dist/src/queue/types.d.ts +18 -12
  57. package/dist/src/queue/types.d.ts.map +1 -1
  58. package/dist/src/queue/types.js +3 -0
  59. package/dist/src/queue/types.js.map +1 -1
  60. package/dist/src/server/base-server.d.ts +87 -11
  61. package/dist/src/server/base-server.d.ts.map +1 -1
  62. package/dist/src/server/base-server.js +549 -250
  63. package/dist/src/server/base-server.js.map +1 -1
  64. package/dist/src/server/builder.js +2 -2
  65. package/dist/src/server/builder.js.map +1 -1
  66. package/dist/src/server/error.d.ts +3 -3
  67. package/dist/src/server/error.d.ts.map +1 -1
  68. package/dist/src/server/error.js +2 -2
  69. package/dist/src/server/error.js.map +1 -1
  70. package/dist/src/server/listener/listener-manager.d.ts +5 -6
  71. package/dist/src/server/listener/listener-manager.d.ts.map +1 -1
  72. package/dist/src/server/listener/listener-manager.js +62 -79
  73. package/dist/src/server/listener/listener-manager.js.map +1 -1
  74. package/dist/src/server/listener/transmitter/internal.d.ts +3 -3
  75. package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -1
  76. package/dist/src/server/listener/transmitter/internal.js +18 -13
  77. package/dist/src/server/listener/transmitter/internal.js.map +1 -1
  78. package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -1
  79. package/dist/src/server/listener/transmitter/pull-responder.js +14 -8
  80. package/dist/src/server/listener/transmitter/pull-responder.js.map +1 -1
  81. package/dist/src/server/listener/transmitter/switchboard-push.d.ts.map +1 -1
  82. package/dist/src/server/listener/transmitter/switchboard-push.js +13 -8
  83. package/dist/src/server/listener/transmitter/switchboard-push.js.map +1 -1
  84. package/dist/src/server/sync-manager.d.ts +8 -10
  85. package/dist/src/server/sync-manager.d.ts.map +1 -1
  86. package/dist/src/server/sync-manager.js +62 -147
  87. package/dist/src/server/sync-manager.js.map +1 -1
  88. package/dist/src/server/sync-unit-map.d.ts +137 -0
  89. package/dist/src/server/sync-unit-map.d.ts.map +1 -0
  90. package/dist/src/server/sync-unit-map.js +234 -0
  91. package/dist/src/server/sync-unit-map.js.map +1 -0
  92. package/dist/src/server/types.d.ts +116 -33
  93. package/dist/src/server/types.d.ts.map +1 -1
  94. package/dist/src/server/types.js.map +1 -1
  95. package/dist/src/server/utils.d.ts +10 -1
  96. package/dist/src/server/utils.d.ts.map +1 -1
  97. package/dist/src/server/utils.js +44 -1
  98. package/dist/src/server/utils.js.map +1 -1
  99. package/dist/src/storage/browser.d.ts +7 -2
  100. package/dist/src/storage/browser.d.ts.map +1 -1
  101. package/dist/src/storage/browser.js +80 -22
  102. package/dist/src/storage/browser.js.map +1 -1
  103. package/dist/src/storage/filesystem.d.ts +7 -2
  104. package/dist/src/storage/filesystem.d.ts.map +1 -1
  105. package/dist/src/storage/filesystem.js +79 -22
  106. package/dist/src/storage/filesystem.js.map +1 -1
  107. package/dist/src/storage/memory.d.ts +7 -2
  108. package/dist/src/storage/memory.d.ts.map +1 -1
  109. package/dist/src/storage/memory.js +76 -22
  110. package/dist/src/storage/memory.js.map +1 -1
  111. package/dist/src/storage/prisma/client/edge.js +5 -4
  112. package/dist/src/storage/prisma/client/index-browser.js +2 -1
  113. package/dist/src/storage/prisma/client/index.d.ts +58 -249
  114. package/dist/src/storage/prisma/client/index.js +5 -4
  115. package/dist/src/storage/prisma/client/package.json +1 -1
  116. package/dist/src/storage/prisma/client/schema.prisma +2 -3
  117. package/dist/src/storage/prisma/client/wasm.js +2 -1
  118. package/dist/src/storage/prisma/prisma.d.ts +9 -4
  119. package/dist/src/storage/prisma/prisma.d.ts.map +1 -1
  120. package/dist/src/storage/prisma/prisma.js +119 -51
  121. package/dist/src/storage/prisma/prisma.js.map +1 -1
  122. package/dist/src/storage/types.d.ts +43 -4
  123. package/dist/src/storage/types.d.ts.map +1 -1
  124. package/dist/src/storage/utils.d.ts +3 -0
  125. package/dist/src/storage/utils.d.ts.map +1 -1
  126. package/dist/src/storage/utils.js +14 -0
  127. package/dist/src/storage/utils.js.map +1 -1
  128. package/dist/src/utils/gql-transformations.d.ts +14 -5
  129. package/dist/src/utils/gql-transformations.d.ts.map +1 -1
  130. package/dist/src/utils/gql-transformations.js +1 -0
  131. package/dist/src/utils/gql-transformations.js.map +1 -1
  132. package/dist/src/utils/migrations.d.ts.map +1 -1
  133. package/dist/src/utils/migrations.js.map +1 -1
  134. package/dist/src/utils/misc.d.ts +2 -0
  135. package/dist/src/utils/misc.d.ts.map +1 -1
  136. package/dist/src/utils/misc.js +4 -0
  137. package/dist/src/utils/misc.js.map +1 -1
  138. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  139. package/package.json +4 -4
  140. package/dist/test/cache.test.d.ts +0 -2
  141. package/dist/test/cache.test.d.ts.map +0 -1
  142. package/dist/test/cache.test.js +0 -281
  143. package/dist/test/cache.test.js.map +0 -1
  144. package/dist/test/default-remote-drives.test.d.ts +0 -2
  145. package/dist/test/default-remote-drives.test.d.ts.map +0 -1
  146. package/dist/test/default-remote-drives.test.js +0 -446
  147. package/dist/test/default-remote-drives.test.js.map +0 -1
  148. package/dist/test/document-helpers/addUndo.test.d.ts +0 -2
  149. package/dist/test/document-helpers/addUndo.test.d.ts.map +0 -1
  150. package/dist/test/document-helpers/addUndo.test.js +0 -120
  151. package/dist/test/document-helpers/addUndo.test.js.map +0 -1
  152. package/dist/test/document-helpers/attachBranch.test.d.ts +0 -2
  153. package/dist/test/document-helpers/attachBranch.test.d.ts.map +0 -1
  154. package/dist/test/document-helpers/attachBranch.test.js +0 -333
  155. package/dist/test/document-helpers/attachBranch.test.js.map +0 -1
  156. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts +0 -2
  157. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.d.ts.map +0 -1
  158. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +0 -252
  159. package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +0 -1
  160. package/dist/test/document-helpers/garbageCollect.test.d.ts +0 -2
  161. package/dist/test/document-helpers/garbageCollect.test.d.ts.map +0 -1
  162. package/dist/test/document-helpers/garbageCollect.test.js +0 -136
  163. package/dist/test/document-helpers/garbageCollect.test.js.map +0 -1
  164. package/dist/test/document-helpers/groupOperationsByScope.test.d.ts +0 -2
  165. package/dist/test/document-helpers/groupOperationsByScope.test.d.ts.map +0 -1
  166. package/dist/test/document-helpers/groupOperationsByScope.test.js +0 -98
  167. package/dist/test/document-helpers/groupOperationsByScope.test.js.map +0 -1
  168. package/dist/test/document-helpers/merge.test.d.ts +0 -2
  169. package/dist/test/document-helpers/merge.test.d.ts.map +0 -1
  170. package/dist/test/document-helpers/merge.test.js +0 -757
  171. package/dist/test/document-helpers/merge.test.js.map +0 -1
  172. package/dist/test/document-helpers/nextSkipNumber.test.d.ts +0 -2
  173. package/dist/test/document-helpers/nextSkipNumber.test.d.ts.map +0 -1
  174. package/dist/test/document-helpers/nextSkipNumber.test.js +0 -123
  175. package/dist/test/document-helpers/nextSkipNumber.test.js.map +0 -1
  176. package/dist/test/document-helpers/prepareOperations.test.d.ts +0 -2
  177. package/dist/test/document-helpers/prepareOperations.test.d.ts.map +0 -1
  178. package/dist/test/document-helpers/prepareOperations.test.js +0 -304
  179. package/dist/test/document-helpers/prepareOperations.test.js.map +0 -1
  180. package/dist/test/document-helpers/removeExistingOperations.test.d.ts +0 -2
  181. package/dist/test/document-helpers/removeExistingOperations.test.d.ts.map +0 -1
  182. package/dist/test/document-helpers/removeExistingOperations.test.js +0 -150
  183. package/dist/test/document-helpers/removeExistingOperations.test.js.map +0 -1
  184. package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts +0 -2
  185. package/dist/test/document-helpers/reshuffleByTimestamp.test.d.ts.map +0 -1
  186. package/dist/test/document-helpers/reshuffleByTimestamp.test.js +0 -148
  187. package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +0 -1
  188. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts +0 -2
  189. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.d.ts.map +0 -1
  190. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +0 -200
  191. package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +0 -1
  192. package/dist/test/document-helpers/sortOperations.test.d.ts +0 -2
  193. package/dist/test/document-helpers/sortOperations.test.d.ts.map +0 -1
  194. package/dist/test/document-helpers/sortOperations.test.js +0 -101
  195. package/dist/test/document-helpers/sortOperations.test.js.map +0 -1
  196. package/dist/test/document-helpers/split.test.d.ts +0 -2
  197. package/dist/test/document-helpers/split.test.d.ts.map +0 -1
  198. package/dist/test/document-helpers/split.test.js +0 -121
  199. package/dist/test/document-helpers/split.test.js.map +0 -1
  200. package/dist/test/document-helpers/utils.d.ts +0 -8
  201. package/dist/test/document-helpers/utils.d.ts.map +0 -1
  202. package/dist/test/document-helpers/utils.js +0 -22
  203. package/dist/test/document-helpers/utils.js.map +0 -1
  204. package/dist/test/drive-operations.test.d.ts +0 -2
  205. package/dist/test/drive-operations.test.d.ts.map +0 -1
  206. package/dist/test/drive-operations.test.js +0 -145
  207. package/dist/test/drive-operations.test.js.map +0 -1
  208. package/dist/test/graphql.test.d.ts +0 -2
  209. package/dist/test/graphql.test.d.ts.map +0 -1
  210. package/dist/test/graphql.test.js +0 -10
  211. package/dist/test/graphql.test.js.map +0 -1
  212. package/dist/test/internal-listener.test.d.ts +0 -2
  213. package/dist/test/internal-listener.test.d.ts.map +0 -1
  214. package/dist/test/internal-listener.test.js +0 -277
  215. package/dist/test/internal-listener.test.js.map +0 -1
  216. package/dist/test/queue.test.d.ts +0 -2
  217. package/dist/test/queue.test.d.ts.map +0 -1
  218. package/dist/test/queue.test.js +0 -338
  219. package/dist/test/queue.test.js.map +0 -1
  220. package/dist/test/read-mode.test.d.ts +0 -2
  221. package/dist/test/read-mode.test.d.ts.map +0 -1
  222. package/dist/test/read-mode.test.js +0 -578
  223. package/dist/test/read-mode.test.js.map +0 -1
  224. package/dist/test/server/driveOperationsConflictResolution.test.d.ts +0 -2
  225. package/dist/test/server/driveOperationsConflictResolution.test.d.ts.map +0 -1
  226. package/dist/test/server/driveOperationsConflictResolution.test.js +0 -460
  227. package/dist/test/server/driveOperationsConflictResolution.test.js.map +0 -1
  228. package/dist/test/server/mergeOperations.test.d.ts +0 -2
  229. package/dist/test/server/mergeOperations.test.d.ts.map +0 -1
  230. package/dist/test/server/mergeOperations.test.js +0 -107
  231. package/dist/test/server/mergeOperations.test.js.map +0 -1
  232. package/dist/test/server/processOperations.test.d.ts +0 -2
  233. package/dist/test/server/processOperations.test.d.ts.map +0 -1
  234. package/dist/test/server/processOperations.test.js +0 -380
  235. package/dist/test/server/processOperations.test.js.map +0 -1
  236. package/dist/test/server.test.d.ts +0 -2
  237. package/dist/test/server.test.d.ts.map +0 -1
  238. package/dist/test/server.test.js +0 -899
  239. package/dist/test/server.test.js.map +0 -1
  240. package/dist/test/signature-migration.test.d.ts +0 -2
  241. package/dist/test/signature-migration.test.d.ts.map +0 -1
  242. package/dist/test/signature-migration.test.js +0 -239
  243. package/dist/test/signature-migration.test.js.map +0 -1
  244. package/dist/test/storage.test.d.ts +0 -2
  245. package/dist/test/storage.test.d.ts.map +0 -1
  246. package/dist/test/storage.test.js +0 -523
  247. package/dist/test/storage.test.js.map +0 -1
  248. package/dist/test/utils.d.ts +0 -48
  249. package/dist/test/utils.d.ts.map +0 -1
  250. package/dist/test/utils.js +0 -133
  251. package/dist/test/utils.js.map +0 -1
  252. package/dist/test/utils.test.d.ts +0 -2
  253. package/dist/test/utils.test.d.ts.map +0 -1
  254. package/dist/test/utils.test.js +0 -89
  255. package/dist/test/utils.test.js.map +0 -1
  256. package/dist/test/vitest-setup.d.ts +0 -2
  257. package/dist/test/vitest-setup.d.ts.map +0 -1
  258. package/dist/test/vitest-setup.js +0 -5
  259. package/dist/test/vitest-setup.js.map +0 -1
  260. package/dist/tsconfig.tsbuildinfo +0 -1
  261. package/dist/vitest.config.d.ts +0 -3
  262. package/dist/vitest.config.d.ts.map +0 -1
  263. package/dist/vitest.config.js +0 -27
  264. package/dist/vitest.config.js.map +0 -1
@@ -1,523 +0,0 @@
1
- import { existsSync, rmSync } from "fs";
2
- import path from "path";
3
- import { describe, it } from "vitest";
4
- import { createDocument, generateId, } from "../../document-model/index.js";
5
- import InMemoryCache from "../src/cache/memory.js";
6
- import { createDocument as createDriveDocument } from "../src/drive-document-model/gen/utils.js";
7
- import { BrowserStorage } from "../src/storage/browser.js";
8
- import { FilesystemStorage } from "../src/storage/filesystem.js";
9
- import { MemoryStorage } from "../src/storage/memory.js";
10
- import { PrismaClient } from "../src/storage/prisma/client/index.js";
11
- import { PrismaStorage } from "../src/storage/prisma/prisma.js";
12
- const storageImplementations = [
13
- ["Memory Storage", () => Promise.resolve(new MemoryStorage())],
14
- [
15
- "File System Storage",
16
- () => {
17
- const basePath = path.join(__dirname, "test-storage");
18
- // delete the base path
19
- if (existsSync(basePath)) {
20
- rmSync(basePath, { recursive: true, force: true });
21
- }
22
- return Promise.resolve(new FilesystemStorage(basePath));
23
- },
24
- ],
25
- [
26
- "Browser Storage",
27
- async () => {
28
- const storage = new BrowserStorage();
29
- await storage.clear();
30
- return storage;
31
- },
32
- ],
33
- [
34
- "PrismaStorage",
35
- async () => {
36
- const prisma = new PrismaClient();
37
- await prisma.$executeRawUnsafe('DELETE FROM "Attachment";');
38
- await prisma.$executeRawUnsafe('DELETE FROM "Operation";');
39
- await prisma.$executeRawUnsafe('DELETE FROM "Document";');
40
- await prisma.$executeRawUnsafe('DELETE FROM "DriveDocument";');
41
- await prisma.$executeRawUnsafe('DELETE FROM "Drive";');
42
- return new PrismaStorage(prisma, new InMemoryCache());
43
- },
44
- ],
45
- /*[
46
- "IPFSStorage",
47
- async () => {
48
- const helia = await createHelia();
49
- return new IPFSStorage(helia);
50
- },
51
- ],*/
52
- ];
53
- describe.each(storageImplementations)("%s", async (_, buildStorage) => {
54
- it("should correctly check for non-existent document", async ({ expect }) => {
55
- const storage = await buildStorage();
56
- const id = generateId();
57
- const result = await storage.exists(id);
58
- expect(result).toBe(false);
59
- });
60
- it("should allow creating a document", async ({ expect }) => {
61
- const storage = await buildStorage();
62
- const document = createDocument();
63
- const id = document.header.id;
64
- await storage.create(document);
65
- const result = await storage.exists(id);
66
- expect(result).toBe(true);
67
- });
68
- it("should disallow creating a document with an invalid id", async ({ expect, }) => {
69
- const storage = await buildStorage();
70
- const document = createDocument();
71
- document.header.id = "test!\\";
72
- await expect(async () => await storage.create(document)).rejects.toThrow();
73
- });
74
- it("should not change the state of a document to match id", async ({ expect, }) => {
75
- const storage = await buildStorage();
76
- const document = createDocument();
77
- const id = document.header.id;
78
- document.initialState.state.global.id = "FOOOP";
79
- await storage.create(document);
80
- const result = await storage.get(id);
81
- expect(result.initialState.state.global.id).toBe("FOOOP");
82
- });
83
- it("should throw a DocumentAlreadyExistsError when creating a document if the document already exists", async ({ expect, }) => {
84
- const storage = await buildStorage();
85
- const document = createDocument();
86
- const id = document.header.id;
87
- await storage.create(document);
88
- try {
89
- await storage.create(document);
90
- throw new Error("Document should not be created");
91
- }
92
- catch (e) {
93
- expect(e.documentId).toBe(id);
94
- }
95
- });
96
- it("should throw a DocumentAlreadyExistsError when creating a drive with a slug that already exists", async ({ expect, }) => {
97
- const storage = await buildStorage();
98
- const a = createDriveDocument();
99
- a.header.slug = "test";
100
- const idA = a.header.id;
101
- await storage.create(a);
102
- // different id, but same slug
103
- const b = createDriveDocument();
104
- b.header.slug = "test";
105
- const idB = b.header.id;
106
- try {
107
- await storage.create(b);
108
- throw new Error("Document should not be created");
109
- }
110
- catch (e) {
111
- expect(e.documentId).toBe(idB);
112
- }
113
- });
114
- it("should allow getting a document", async ({ expect }) => {
115
- const storage = await buildStorage();
116
- const document = createDocument();
117
- const id = document.header.id;
118
- await storage.create(document);
119
- const result = await storage.get(id);
120
- // Storage implementations are free to return documents with or without populated state + meta.
121
- // Prisma storage always returns an undefined state, but other storage
122
- // implementations return the state. The storage layers have always been
123
- // tested through the drive server, and the drive server (base-server.ts)
124
- // replays the operations to get the state, if it doesn't exist.
125
- //
126
- // Also: we give storage implementations authority to set the created timestamp (like a postgres timestamp).
127
- // So we compare every field except for a few...
128
- const { state, header: { createdAtUtcIso, meta, ...headerRest }, ...rest } = document;
129
- const { state: _state, header: { createdAtUtcIso: _createdAtUtcIso, meta: _meta, ...headerRestResult }, ...restResult } = result;
130
- expect(restResult).toEqual(rest);
131
- expect(headerRestResult).toEqual(headerRest);
132
- });
133
- it("should throw a DocumentNotFoundError if the document is not found", async ({ expect, }) => {
134
- const storage = await buildStorage();
135
- const id = generateId();
136
- try {
137
- await storage.get(id);
138
- throw new Error("Document should not be found");
139
- }
140
- catch (e) {
141
- expect(e.documentId).toBe(id);
142
- }
143
- });
144
- it("should throw a DocumentNotFoundError if the document is not found by slug", async ({ expect, }) => {
145
- const storage = await buildStorage();
146
- const slug = generateId();
147
- try {
148
- await storage.getBySlug(slug);
149
- throw new Error("Document should not be found");
150
- }
151
- catch (e) {
152
- expect(e.documentId).toBe(slug);
153
- }
154
- });
155
- it("should allow deleting a document", async ({ expect }) => {
156
- const storage = await buildStorage();
157
- const document = createDocument();
158
- const id = document.header.id;
159
- await storage.create(document);
160
- const result = await storage.delete(id);
161
- expect(result).toBe(true);
162
- const result2 = await storage.exists(id);
163
- expect(result2).toBe(false);
164
- const result3 = await storage.delete(id);
165
- expect(result3).toBe(false);
166
- });
167
- it("should delete documents from all drives when deleted", async ({ expect, }) => {
168
- const storage = await buildStorage();
169
- const document = createDocument();
170
- const documentId = document.header.id;
171
- await storage.create(document);
172
- const driveA = createDriveDocument();
173
- const driveAId = driveA.header.id;
174
- await storage.create(driveA);
175
- await storage.addChild(driveAId, documentId);
176
- const driveB = createDriveDocument();
177
- const driveBId = driveB.header.id;
178
- await storage.create(driveB);
179
- await storage.addChild(driveBId, documentId);
180
- const result = await storage.delete(documentId);
181
- expect(result).toBe(true);
182
- const childrenA = await storage.getChildren(driveAId);
183
- expect(childrenA).toEqual([]);
184
- const childrenB = await storage.getChildren(driveBId);
185
- expect(childrenB).toEqual([]);
186
- });
187
- it("should allow getting all parents of a document", async ({ expect }) => {
188
- const storage = await buildStorage();
189
- const document = createDocument();
190
- const childId = document.header.id;
191
- await storage.create(document);
192
- let parents = await storage.getParents(childId);
193
- expect(parents).toEqual([]);
194
- const driveA = createDriveDocument();
195
- const driveAId = driveA.header.id;
196
- await storage.create(driveA);
197
- const driveB = createDriveDocument();
198
- const driveBId = driveB.header.id;
199
- await storage.create(driveB);
200
- await storage.addChild(driveAId, childId);
201
- await storage.addChild(driveBId, childId);
202
- parents = await storage.getParents(childId);
203
- // order doesn't matter
204
- expect(parents).toEqual(expect.arrayContaining([driveAId, driveBId]));
205
- });
206
- it("should update the parents of a document when a parent is deleted", async ({ expect, }) => {
207
- const storage = await buildStorage();
208
- const document = createDocument();
209
- const childId = document.header.id;
210
- await storage.create(document);
211
- const driveA = createDriveDocument();
212
- const driveAId = driveA.header.id;
213
- await storage.create(driveA);
214
- const driveB = createDriveDocument();
215
- const driveBId = driveB.header.id;
216
- await storage.create(driveB);
217
- await storage.addChild(driveAId, childId);
218
- await storage.addChild(driveBId, childId);
219
- await storage.delete(driveAId);
220
- const parents = await storage.getParents(childId);
221
- expect(parents).toEqual([driveBId]);
222
- });
223
- it("should, when deleting a document, also delete all child documents that were only a child of that document", async ({ expect, }) => {
224
- const storage = await buildStorage();
225
- const child = createDocument();
226
- const childId = child.header.id;
227
- await storage.create(child);
228
- const drive = createDriveDocument();
229
- const driveId = drive.header.id;
230
- await storage.create(drive);
231
- await storage.addChild(driveId, childId);
232
- await storage.delete(driveId);
233
- const result = await storage.exists(childId);
234
- expect(result).toBe(false);
235
- });
236
- it("should allow creating and retrieving a document with a slug", async ({ expect, }) => {
237
- const storage = await buildStorage();
238
- const slug = `test-slug-${generateId()}`;
239
- const document = createDriveDocument();
240
- const id = document.header.id;
241
- document.header.slug = slug;
242
- await storage.create(document);
243
- const result = await storage.getBySlug(slug);
244
- expect(result.header.slug).toBe(slug);
245
- });
246
- it("the id should be used as the slug if no slug is provided", async ({ expect, }) => {
247
- const storage = await buildStorage();
248
- const document = createDriveDocument();
249
- const id = document.header.id;
250
- document.header.slug = "";
251
- await storage.create(document);
252
- const result = await storage.getBySlug(id);
253
- expect(result).toBeTruthy();
254
- });
255
- it("should reject invalid slugs", async ({ expect }) => {
256
- const storage = await buildStorage();
257
- const invalidSlugs = [
258
- "test/slug",
259
- "test\\slug",
260
- "test.slug",
261
- "test slug",
262
- "test!slug",
263
- "test@slug",
264
- "test#slug",
265
- "test$slug",
266
- "test%slug",
267
- "test^slug",
268
- "test&slug",
269
- "test*slug",
270
- "test(slug",
271
- "test)slug",
272
- "test+slug",
273
- "test=slug",
274
- "test{slug",
275
- "test}slug",
276
- "test[slug",
277
- "test]slug",
278
- "test:slug",
279
- "test;slug",
280
- "test'slug",
281
- 'test"slug',
282
- "test<slug",
283
- "test>slug",
284
- "test,slug",
285
- "test?slug",
286
- "test|slug",
287
- "test~slug",
288
- "test`slug",
289
- ];
290
- for (const invalidSlug of invalidSlugs) {
291
- const document = createDriveDocument();
292
- document.header.slug = invalidSlug;
293
- await expect(async () => await storage.create(document)).rejects.toThrow();
294
- }
295
- const validSlugs = [
296
- "test-slug",
297
- "test_slug",
298
- "test123",
299
- "123test",
300
- "testSlug",
301
- "test-slug-123",
302
- "test_slug_123",
303
- "test-slug_123",
304
- ];
305
- for (const validSlug of validSlugs) {
306
- const validDocument = createDriveDocument();
307
- validDocument.header.slug = validSlug;
308
- await storage.create(validDocument);
309
- const result = await storage.getBySlug(validSlug);
310
- expect(result).toBeTruthy();
311
- await storage.delete(validSlug);
312
- }
313
- });
314
- it("should allow removing a document and then adding a new document with the same id and slug", async ({ expect, }) => {
315
- const storage = await buildStorage();
316
- const document = createDocument();
317
- const slug = (document.header.slug = "test-slug");
318
- const id = document.header.id;
319
- await storage.create(document);
320
- await storage.delete(id);
321
- const newDocument = createDocument();
322
- newDocument.header.slug = slug;
323
- newDocument.header.id = id;
324
- await storage.create(newDocument);
325
- const result = await storage.getBySlug(slug);
326
- expect(result).toBeTruthy();
327
- });
328
- it("should return documents with matching document model type", async ({ expect, }) => {
329
- const storage = await buildStorage();
330
- // create docs of different types
331
- const document1 = createDocument();
332
- const document2 = createDriveDocument();
333
- const document3 = createDocument();
334
- const id1 = document1.header.id;
335
- const id2 = document2.header.id;
336
- const id3 = document3.header.id;
337
- await storage.create(document1);
338
- await storage.create(document2);
339
- await storage.create(document3);
340
- const result = await storage.findByType("powerhouse/document-drive");
341
- expect(result.documents.length).toBe(1);
342
- expect(result.documents[0]).toBe(id2);
343
- const result2 = await storage.findByType("powerhouse/document-model");
344
- expect(result2.documents.length).toBe(2);
345
- expect(result2.documents).toContain(id1);
346
- expect(result2.documents).toContain(id3);
347
- });
348
- it("should allow paginating documents by type", async ({ expect }) => {
349
- const storage = await buildStorage();
350
- // create 10 documents of the same type with generated IDs
351
- const documentIds = [];
352
- for (let i = 0; i < 10; i++) {
353
- const document = createDocument();
354
- const id = document.header.id;
355
- documentIds.push(id);
356
- await storage.create(document);
357
- }
358
- // pull by 2s
359
- let nextCursor = undefined;
360
- let documentsPulled = 0;
361
- // Keep pulling until we get all documents
362
- while (documentsPulled < 10) {
363
- const result = await storage.findByType("powerhouse/document-model", 2, nextCursor);
364
- expect(result.documents.length).toBeGreaterThan(0);
365
- expect(result.documents.length).toBeLessThanOrEqual(2);
366
- // Verify that the documents we got are in our created list
367
- for (const id of result.documents) {
368
- expect(documentIds.includes(id)).toBe(true);
369
- }
370
- documentsPulled += result.documents.length;
371
- nextCursor = result.nextCursor;
372
- // Break if no more cursor
373
- if (!nextCursor)
374
- break;
375
- }
376
- expect(documentsPulled).toBe(10);
377
- });
378
- it("should allow associating a document with another document", async ({ expect, }) => {
379
- const storage = await buildStorage();
380
- // for now, we only allow documents to be associated with drives
381
- const drive = createDriveDocument();
382
- const driveId = drive.header.id;
383
- await storage.create(drive);
384
- const document = createDocument();
385
- const documentId = document.header.id;
386
- await storage.create(document);
387
- await storage.addChild(driveId, documentId);
388
- const children = await storage.getChildren(driveId);
389
- expect(children).toEqual([documentId]);
390
- });
391
- it("should not allow self associations", async ({ expect }) => {
392
- const storage = await buildStorage();
393
- const document = createDocument();
394
- const documentId = document.header.id;
395
- await storage.create(document);
396
- await expect(storage.addChild(documentId, documentId)).rejects.toThrow();
397
- });
398
- it("should not allow circular associations", async ({ expect }) => {
399
- const storage = await buildStorage();
400
- const drive = createDriveDocument();
401
- const driveId = drive.header.id;
402
- await storage.create(drive);
403
- const document = createDocument();
404
- const documentId = document.header.id;
405
- await storage.create(document);
406
- await storage.addChild(driveId, documentId);
407
- await expect(storage.addChild(documentId, driveId)).rejects.toThrow();
408
- });
409
- it("should allow removing a child from a drive", async ({ expect }) => {
410
- const storage = await buildStorage();
411
- const drive = createDriveDocument();
412
- const driveId = drive.header.id;
413
- await storage.create(drive);
414
- const document = createDocument();
415
- const documentId = document.header.id;
416
- await storage.create(document);
417
- await storage.addChild(driveId, documentId);
418
- const result = await storage.removeChild(driveId, documentId);
419
- expect(result).toBe(true);
420
- const children = await storage.getChildren(driveId);
421
- expect(children).toEqual([]);
422
- });
423
- it("should not allow removing a child from a non-existent drive", async ({ expect, }) => {
424
- const storage = await buildStorage();
425
- const document = createDocument();
426
- const documentId = document.header.id;
427
- await storage.create(document);
428
- const driveId = generateId();
429
- const result = await storage.removeChild(driveId, documentId);
430
- expect(result).toBe(false);
431
- });
432
- it("should not allow removing a non-existent child from a drive", async ({ expect, }) => {
433
- const storage = await buildStorage();
434
- const documentId = generateId();
435
- const drive = createDriveDocument();
436
- const driveId = drive.header.id;
437
- await storage.create(drive);
438
- const result = await storage.removeChild(driveId, documentId);
439
- expect(result).toBe(false);
440
- });
441
- it("should not allow removing a non-existent child from a non-existent drive", async ({ expect, }) => {
442
- const storage = await buildStorage();
443
- const driveId = generateId();
444
- const documentId = generateId();
445
- const result = await storage.removeChild(driveId, documentId);
446
- expect(result).toBe(false);
447
- });
448
- it("parent/child relationship should be removed when the child is deleted", async ({ expect, }) => {
449
- const storage = await buildStorage();
450
- const drive = createDriveDocument();
451
- const driveId = drive.header.id;
452
- await storage.create(drive);
453
- const document = createDocument();
454
- const documentId = document.header.id;
455
- await storage.create(document);
456
- await storage.addChild(driveId, documentId);
457
- await storage.delete(documentId);
458
- const children = await storage.getChildren(driveId);
459
- expect(children).toEqual([]);
460
- });
461
- it("parent/child relationship should be removed when the parent is deleted", async ({ expect, }) => {
462
- const storage = await buildStorage();
463
- const drive = createDriveDocument();
464
- const driveId = drive.header.id;
465
- await storage.create(drive);
466
- const document = createDocument();
467
- const documentId = document.header.id;
468
- await storage.create(document);
469
- await storage.addChild(driveId, documentId);
470
- await storage.delete(driveId);
471
- const children = await storage.getChildren(driveId);
472
- expect(children).toEqual([]);
473
- });
474
- it("should be able to upgrade a document stored as a PHDocument v1", async ({ expect, }) => {
475
- // TODO
476
- });
477
- it("should allow resolving slugs from ids", async ({ expect }) => {
478
- const storage = await buildStorage();
479
- const drive = createDriveDocument();
480
- drive.header.slug = "test-drive";
481
- const driveId = drive.header.id;
482
- await storage.create(drive);
483
- const result = await storage.resolveSlugs([driveId]);
484
- expect(result).toEqual([drive.header.slug]);
485
- });
486
- it("should throw an error if any of the ids are not found", async ({ expect, }) => {
487
- const storage = await buildStorage();
488
- await expect(async () => await storage.resolveSlugs(["not-found"])).rejects.toThrow();
489
- });
490
- it("should return the id if any of the slugs are not found", async ({ expect, }) => {
491
- const storage = await buildStorage();
492
- const drive = createDriveDocument();
493
- drive.header.slug = "";
494
- const driveId = drive.header.id;
495
- await storage.create(drive);
496
- const result = await storage.resolveSlugs([drive.header.slug]);
497
- expect(result).toEqual([driveId]);
498
- });
499
- it("should throw an error if aborted", async ({ expect }) => {
500
- const storage = await buildStorage();
501
- const drive = createDriveDocument();
502
- drive.header.slug = "test-drive";
503
- const driveId = drive.header.id;
504
- await storage.create(drive);
505
- const controller = new AbortController();
506
- controller.abort();
507
- await expect(async () => await storage.resolveSlugs([driveId], controller.signal)).rejects.toThrow();
508
- });
509
- it("should allow resolving ids from slugs", async ({ expect }) => {
510
- const storage = await buildStorage();
511
- const drive = createDriveDocument();
512
- drive.header.slug = "test-drive";
513
- const driveId = drive.header.id;
514
- await storage.create(drive);
515
- const result = await storage.resolveIds([drive.header.slug]);
516
- expect(result).toEqual([driveId]);
517
- });
518
- it("should throw an error if any of the ids are not found", async ({ expect, }) => {
519
- const storage = await buildStorage();
520
- await expect(async () => await storage.resolveIds(["not-found"])).rejects.toThrow();
521
- });
522
- });
523
- //# sourceMappingURL=storage.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.test.js","sourceRoot":"","sources":["../../test/storage.test.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- import { type BaseDocumentDriveServer } from "#server/base-server";
2
- import { type Action, type ActionFromDocument, type DocumentModelModule, type Operation, type OperationFromDocument, type PHDocument, type PHReducer } from "document-model";
3
- import { type 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<TDocument extends PHDocument>(reducer: PHReducer<TDocument>, document: TDocument, action: Action, index?: number): Operation<ActionFromDocument<TDocument>>;
8
- export declare function buildOperations<TDocument extends PHDocument>(reducer: PHReducer<TDocument>, document: TDocument, actions: Array<Action>): Operation<ActionFromDocument<TDocument>>[];
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<TDocument extends PHDocument = PHDocument> {
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: TDocument, reducer: PHReducer<TDocument>);
21
- getDocument(): TDocument;
22
- clearUnsyncedOperations(): void;
23
- pushOperationsToServer(): Promise<import("../src/server/types.js").IOperationResult>;
24
- syncDocument(): Promise<TDocument>;
25
- dispatchDocumentAction(action: Action): {
26
- document: TDocument;
27
- operation: OperationFromDocument<TDocument>;
28
- };
29
- }
30
- export declare class DriveBasicClient<TDocument extends PHDocument = PHDocument> {
31
- private server;
32
- private driveId;
33
- private document;
34
- private reducer;
35
- private unsyncedOperations;
36
- constructor(server: BaseDocumentDriveServer, driveId: string, document: TDocument, reducer: PHReducer<TDocument>);
37
- getDocument(): TDocument;
38
- getUnsyncedOperations(): Operation[];
39
- setUnsyncedOperations(operations: Operation[]): void;
40
- clearUnsyncedOperations(): void;
41
- pushOperationsToServer(): Promise<import("../src/server/types.js").DriveOperationResult>;
42
- syncDocument(): Promise<TDocument>;
43
- dispatchDriveAction(action: Action): {
44
- document: TDocument;
45
- operation: OperationFromDocument<TDocument>;
46
- };
47
- }
48
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../test/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,KAAK,MAAM,EACX,KAAK,kBAAkB,EAEvB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,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,CAAC,SAAS,SAAS,UAAU,EACzD,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,EAC7B,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAQ1C;AAED,wBAAgB,eAAe,CAAC,SAAS,SAAS,UAAU,EAC1D,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,EAC7B,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,GACrB,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,CAW5C;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,CAAC,SAAS,SAAS,UAAU,GAAG,UAAU;IAI9D,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IAPjB,OAAO,CAAC,kBAAkB,CAAmB;gBAGnC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC;IAGvC,WAAW,IAAI,SAAS;IAIxB,uBAAuB;IAIjB,sBAAsB;IActB,YAAY;IAuBlB,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;CAYtC;AAED,qBAAa,gBAAgB,CAAC,SAAS,SAAS,UAAU,GAAG,UAAU;IAInE,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IANjB,OAAO,CAAC,kBAAkB,CAAmB;gBAGnC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC;IAGvC,WAAW,IAAI,SAAS;IAIxB,qBAAqB;IAIrB,qBAAqB,CAAC,UAAU,EAAE,SAAS,EAAE;IAI7C,uBAAuB;IAIjB,sBAAsB;IAatB,YAAY;IAoBlB,mBAAmB,CAAC,MAAM,EAAE,MAAM;;;;CAYnC"}