@powerhousedao/reactor-api 6.0.0-dev.9 → 6.0.0-dev.91

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 (271) hide show
  1. package/dist/codegen.js +1 -1
  2. package/dist/codegen.js.map +1 -1
  3. package/dist/index.d.ts +4 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +4 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/src/config.d.ts +1 -2
  8. package/dist/src/config.d.ts.map +1 -1
  9. package/dist/src/config.js +1 -5
  10. package/dist/src/config.js.map +1 -1
  11. package/dist/src/graphql/auth/resolvers.d.ts +17 -0
  12. package/dist/src/graphql/auth/resolvers.d.ts.map +1 -1
  13. package/dist/src/graphql/auth/resolvers.js +54 -0
  14. package/dist/src/graphql/auth/resolvers.js.map +1 -1
  15. package/dist/src/graphql/auth/schema.graphql +27 -5
  16. package/dist/src/graphql/auth/subgraph.d.ts +25 -0
  17. package/dist/src/graphql/auth/subgraph.d.ts.map +1 -1
  18. package/dist/src/graphql/auth/subgraph.js +45 -1
  19. package/dist/src/graphql/auth/subgraph.js.map +1 -1
  20. package/dist/src/graphql/base-subgraph.d.ts +12 -4
  21. package/dist/src/graphql/base-subgraph.d.ts.map +1 -1
  22. package/dist/src/graphql/base-subgraph.js +94 -2
  23. package/dist/src/graphql/base-subgraph.js.map +1 -1
  24. package/dist/src/graphql/document-model-subgraph.d.ts +16 -44
  25. package/dist/src/graphql/document-model-subgraph.d.ts.map +1 -1
  26. package/dist/src/graphql/document-model-subgraph.js +290 -88
  27. package/dist/src/graphql/document-model-subgraph.js.map +1 -1
  28. package/dist/src/graphql/graphql-manager.d.ts +28 -6
  29. package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
  30. package/dist/src/graphql/graphql-manager.js +266 -161
  31. package/dist/src/graphql/graphql-manager.js.map +1 -1
  32. package/dist/src/graphql/index.d.ts +2 -1
  33. package/dist/src/graphql/index.d.ts.map +1 -1
  34. package/dist/src/graphql/index.js +2 -1
  35. package/dist/src/graphql/index.js.map +1 -1
  36. package/dist/src/graphql/packages/index.d.ts +2 -0
  37. package/dist/src/graphql/packages/index.d.ts.map +1 -0
  38. package/dist/src/graphql/packages/index.js +2 -0
  39. package/dist/src/graphql/packages/index.js.map +1 -0
  40. package/dist/src/graphql/packages/resolvers.d.ts +31 -0
  41. package/dist/src/graphql/packages/resolvers.d.ts.map +1 -0
  42. package/dist/src/graphql/packages/resolvers.js +37 -0
  43. package/dist/src/graphql/packages/resolvers.js.map +1 -0
  44. package/dist/src/graphql/packages/schema.graphql +50 -0
  45. package/dist/src/graphql/packages/subgraph.d.ts +55 -0
  46. package/dist/src/graphql/packages/subgraph.d.ts.map +1 -0
  47. package/dist/src/graphql/packages/subgraph.js +73 -0
  48. package/dist/src/graphql/packages/subgraph.js.map +1 -0
  49. package/dist/src/graphql/reactor/adapters.d.ts +10 -2
  50. package/dist/src/graphql/reactor/adapters.d.ts.map +1 -1
  51. package/dist/src/graphql/reactor/adapters.js +35 -1
  52. package/dist/src/graphql/reactor/adapters.js.map +1 -1
  53. package/dist/src/graphql/reactor/factory.d.ts +22 -1
  54. package/dist/src/graphql/reactor/factory.d.ts.map +1 -1
  55. package/dist/src/graphql/reactor/factory.js +1 -1
  56. package/dist/src/graphql/reactor/factory.js.map +1 -1
  57. package/dist/src/graphql/reactor/gen/graphql.d.ts +353 -76
  58. package/dist/src/graphql/reactor/gen/graphql.d.ts.map +1 -1
  59. package/dist/src/graphql/reactor/gen/graphql.js +245 -10
  60. package/dist/src/graphql/reactor/gen/graphql.js.map +1 -1
  61. package/dist/src/graphql/reactor/index.d.ts +1 -1
  62. package/dist/src/graphql/reactor/index.d.ts.map +1 -1
  63. package/dist/src/graphql/reactor/index.js +1 -1
  64. package/dist/src/graphql/reactor/index.js.map +1 -1
  65. package/dist/src/graphql/reactor/operations.graphql +191 -1
  66. package/dist/src/graphql/reactor/requester.with-zod.d.ts.map +1 -1
  67. package/dist/src/graphql/reactor/requester.with-zod.js +114 -38
  68. package/dist/src/graphql/reactor/requester.with-zod.js.map +1 -1
  69. package/dist/src/graphql/reactor/resolvers.d.ts +89 -26
  70. package/dist/src/graphql/reactor/resolvers.d.ts.map +1 -1
  71. package/dist/src/graphql/reactor/resolvers.js +271 -77
  72. package/dist/src/graphql/reactor/resolvers.js.map +1 -1
  73. package/dist/src/graphql/reactor/schema.graphql +75 -30
  74. package/dist/src/graphql/reactor/subgraph.d.ts +2 -31
  75. package/dist/src/graphql/reactor/subgraph.d.ts.map +1 -1
  76. package/dist/src/graphql/reactor/subgraph.js +132 -209
  77. package/dist/src/graphql/reactor/subgraph.js.map +1 -1
  78. package/dist/src/graphql/reactor/validation.d.ts +266 -20
  79. package/dist/src/graphql/reactor/validation.d.ts.map +1 -1
  80. package/dist/src/graphql/reactor/validation.js +98 -4
  81. package/dist/src/graphql/reactor/validation.js.map +1 -1
  82. package/dist/src/graphql/system/index.d.ts +0 -1
  83. package/dist/src/graphql/system/index.d.ts.map +1 -1
  84. package/dist/src/graphql/system/index.js +0 -1
  85. package/dist/src/graphql/system/index.js.map +1 -1
  86. package/dist/src/graphql/types.d.ts +6 -8
  87. package/dist/src/graphql/types.d.ts.map +1 -1
  88. package/dist/src/graphql/utils.d.ts +1 -18
  89. package/dist/src/graphql/utils.d.ts.map +1 -1
  90. package/dist/src/graphql/utils.js +7 -35
  91. package/dist/src/graphql/utils.js.map +1 -1
  92. package/dist/src/migrations/002_add_document_protection.d.ts +4 -0
  93. package/dist/src/migrations/002_add_document_protection.d.ts.map +1 -0
  94. package/dist/src/migrations/002_add_document_protection.js +18 -0
  95. package/dist/src/migrations/002_add_document_protection.js.map +1 -0
  96. package/dist/src/migrations/index.d.ts.map +1 -1
  97. package/dist/src/migrations/index.js +2 -0
  98. package/dist/src/migrations/index.js.map +1 -1
  99. package/dist/src/packages/http-loader.d.ts +68 -0
  100. package/dist/src/packages/http-loader.d.ts.map +1 -0
  101. package/dist/src/packages/http-loader.js +176 -0
  102. package/dist/src/packages/http-loader.js.map +1 -0
  103. package/dist/src/packages/https-hooks.d.mts +23 -0
  104. package/dist/src/packages/https-hooks.d.mts.map +1 -0
  105. package/dist/src/packages/https-hooks.mjs +59 -0
  106. package/dist/src/packages/https-hooks.mjs.map +1 -0
  107. package/dist/src/packages/import-loader.d.ts +5 -3
  108. package/dist/src/packages/import-loader.d.ts.map +1 -1
  109. package/dist/src/packages/import-loader.js +19 -10
  110. package/dist/src/packages/import-loader.js.map +1 -1
  111. package/dist/src/packages/package-manager.d.ts +2 -2
  112. package/dist/src/packages/package-manager.d.ts.map +1 -1
  113. package/dist/src/packages/package-manager.js.map +1 -1
  114. package/dist/src/packages/types.d.ts +9 -4
  115. package/dist/src/packages/types.d.ts.map +1 -1
  116. package/dist/src/packages/util.d.ts +3 -2
  117. package/dist/src/packages/util.d.ts.map +1 -1
  118. package/dist/src/packages/util.js +1 -1
  119. package/dist/src/packages/util.js.map +1 -1
  120. package/dist/src/packages/vite-loader.d.ts +10 -8
  121. package/dist/src/packages/vite-loader.d.ts.map +1 -1
  122. package/dist/src/packages/vite-loader.js +33 -10
  123. package/dist/src/packages/vite-loader.js.map +1 -1
  124. package/dist/src/server.d.ts +14 -11
  125. package/dist/src/server.d.ts.map +1 -1
  126. package/dist/src/server.js +153 -92
  127. package/dist/src/server.js.map +1 -1
  128. package/dist/src/services/auth.service.d.ts +0 -12
  129. package/dist/src/services/auth.service.d.ts.map +1 -1
  130. package/dist/src/services/auth.service.js +13 -40
  131. package/dist/src/services/auth.service.js.map +1 -1
  132. package/dist/src/services/authorization.service.d.ts +70 -0
  133. package/dist/src/services/authorization.service.d.ts.map +1 -0
  134. package/dist/src/services/authorization.service.js +155 -0
  135. package/dist/src/services/authorization.service.js.map +1 -0
  136. package/dist/src/services/document-permission.service.d.ts +47 -7
  137. package/dist/src/services/document-permission.service.d.ts.map +1 -1
  138. package/dist/src/services/document-permission.service.js +162 -7
  139. package/dist/src/services/document-permission.service.js.map +1 -1
  140. package/dist/src/services/package-management.service.d.ts +32 -0
  141. package/dist/src/services/package-management.service.d.ts.map +1 -0
  142. package/dist/src/services/package-management.service.js +95 -0
  143. package/dist/src/services/package-management.service.js.map +1 -0
  144. package/dist/src/services/package-storage.d.ts +23 -0
  145. package/dist/src/services/package-storage.d.ts.map +1 -0
  146. package/dist/src/services/package-storage.js +19 -0
  147. package/dist/src/services/package-storage.js.map +1 -0
  148. package/dist/src/tracing.d.ts.map +1 -1
  149. package/dist/src/tracing.js +19 -1
  150. package/dist/src/tracing.js.map +1 -1
  151. package/dist/src/types.d.ts +5 -5
  152. package/dist/src/types.d.ts.map +1 -1
  153. package/dist/src/utils/auth.d.ts +1 -1
  154. package/dist/src/utils/auth.d.ts.map +1 -1
  155. package/dist/src/utils/auth.js +5 -12
  156. package/dist/src/utils/auth.js.map +1 -1
  157. package/dist/src/utils/create-schema.d.ts +25 -6
  158. package/dist/src/utils/create-schema.d.ts.map +1 -1
  159. package/dist/src/utils/create-schema.js +458 -23
  160. package/dist/src/utils/create-schema.js.map +1 -1
  161. package/dist/src/utils/db.d.ts +8 -0
  162. package/dist/src/utils/db.d.ts.map +1 -1
  163. package/dist/src/utils/db.js.map +1 -1
  164. package/dist/src/utils/drive-url.d.ts +2 -0
  165. package/dist/src/utils/drive-url.d.ts.map +1 -0
  166. package/dist/src/utils/drive-url.js +3 -0
  167. package/dist/src/utils/drive-url.js.map +1 -0
  168. package/dist/src/utils/index.d.ts +1 -0
  169. package/dist/src/utils/index.d.ts.map +1 -1
  170. package/dist/src/utils/index.js +1 -0
  171. package/dist/src/utils/index.js.map +1 -1
  172. package/dist/test/authorization.service.test.d.ts +2 -0
  173. package/dist/test/authorization.service.test.d.ts.map +1 -0
  174. package/dist/test/authorization.service.test.js +252 -0
  175. package/dist/test/authorization.service.test.js.map +1 -0
  176. package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts +2 -0
  177. package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts.map +1 -0
  178. package/dist/test/connect-switchboard-reshuffle-convergence.test.js +203 -0
  179. package/dist/test/connect-switchboard-reshuffle-convergence.test.js.map +1 -0
  180. package/dist/test/connect-switchboard-sync.test.d.ts +2 -0
  181. package/dist/test/connect-switchboard-sync.test.d.ts.map +1 -0
  182. package/dist/test/connect-switchboard-sync.test.js +581 -0
  183. package/dist/test/connect-switchboard-sync.test.js.map +1 -0
  184. package/dist/test/document-drive-subgraph.test.d.ts +2 -0
  185. package/dist/test/document-drive-subgraph.test.d.ts.map +1 -0
  186. package/dist/test/document-drive-subgraph.test.js +186 -0
  187. package/dist/test/document-drive-subgraph.test.js.map +1 -0
  188. package/dist/test/document-model-subgraph-permissions.test.d.ts +2 -0
  189. package/dist/test/document-model-subgraph-permissions.test.d.ts.map +1 -0
  190. package/dist/test/document-model-subgraph-permissions.test.js +563 -0
  191. package/dist/test/document-model-subgraph-permissions.test.js.map +1 -0
  192. package/dist/test/drive-info-endpoint.test.d.ts +2 -0
  193. package/dist/test/drive-info-endpoint.test.d.ts.map +1 -0
  194. package/dist/test/drive-info-endpoint.test.js +123 -0
  195. package/dist/test/drive-info-endpoint.test.js.map +1 -0
  196. package/dist/test/fault-injection-sync.test.d.ts +2 -0
  197. package/dist/test/fault-injection-sync.test.d.ts.map +1 -0
  198. package/dist/test/fault-injection-sync.test.js +196 -0
  199. package/dist/test/fault-injection-sync.test.js.map +1 -0
  200. package/dist/test/index.d.ts +0 -1
  201. package/dist/test/index.d.ts.map +1 -1
  202. package/dist/test/index.js +0 -1
  203. package/dist/test/index.js.map +1 -1
  204. package/dist/test/permissions-integration.test.js +6 -20
  205. package/dist/test/permissions-integration.test.js.map +1 -1
  206. package/dist/test/push-backfill.test.d.ts +2 -0
  207. package/dist/test/push-backfill.test.d.ts.map +1 -0
  208. package/dist/test/push-backfill.test.js +298 -0
  209. package/dist/test/push-backfill.test.js.map +1 -0
  210. package/dist/test/reactor-client.test.js +172 -13
  211. package/dist/test/reactor-client.test.js.map +1 -1
  212. package/dist/test/reactor-resolvers.test.js +8 -11
  213. package/dist/test/reactor-resolvers.test.js.map +1 -1
  214. package/dist/test/reactor-subgraph-permissions.test.js +7 -36
  215. package/dist/test/reactor-subgraph-permissions.test.js.map +1 -1
  216. package/dist/test/subscriptions.test.js +2 -0
  217. package/dist/test/subscriptions.test.js.map +1 -1
  218. package/dist/test/utils/gql-resolver-bridge.d.ts +4 -1
  219. package/dist/test/utils/gql-resolver-bridge.d.ts.map +1 -1
  220. package/dist/test/utils/gql-resolver-bridge.js +36 -7
  221. package/dist/test/utils/gql-resolver-bridge.js.map +1 -1
  222. package/dist/tsconfig.tsbuildinfo +1 -1
  223. package/package.json +46 -55
  224. package/dist/src/graphql/drive-subgraph.d.ts +0 -25
  225. package/dist/src/graphql/drive-subgraph.d.ts.map +0 -1
  226. package/dist/src/graphql/drive-subgraph.js +0 -487
  227. package/dist/src/graphql/drive-subgraph.js.map +0 -1
  228. package/dist/src/graphql/system/system-subgraph.d.ts +0 -49
  229. package/dist/src/graphql/system/system-subgraph.d.ts.map +0 -1
  230. package/dist/src/graphql/system/system-subgraph.js +0 -130
  231. package/dist/src/graphql/system/system-subgraph.js.map +0 -1
  232. package/dist/src/sync/types.d.ts +0 -10
  233. package/dist/src/sync/types.d.ts.map +0 -1
  234. package/dist/src/sync/types.js +0 -2
  235. package/dist/src/sync/types.js.map +0 -1
  236. package/dist/src/sync/utils.d.ts +0 -7
  237. package/dist/src/sync/utils.d.ts.map +0 -1
  238. package/dist/src/sync/utils.js +0 -78
  239. package/dist/src/sync/utils.js.map +0 -1
  240. package/dist/test/drive-handlers.d.ts +0 -4
  241. package/dist/test/drive-handlers.d.ts.map +0 -1
  242. package/dist/test/drive-handlers.js +0 -39
  243. package/dist/test/drive-handlers.js.map +0 -1
  244. package/dist/test/drive-subgraph-permissions.test.d.ts +0 -2
  245. package/dist/test/drive-subgraph-permissions.test.d.ts.map +0 -1
  246. package/dist/test/drive-subgraph-permissions.test.js +0 -195
  247. package/dist/test/drive-subgraph-permissions.test.js.map +0 -1
  248. package/dist/test/drive.test.d.ts +0 -2
  249. package/dist/test/drive.test.d.ts.map +0 -1
  250. package/dist/test/drive.test.js +0 -142
  251. package/dist/test/drive.test.js.map +0 -1
  252. package/dist/test/pull-responder-transmitter.test.d.ts +0 -2
  253. package/dist/test/pull-responder-transmitter.test.d.ts.map +0 -1
  254. package/dist/test/pull-responder-transmitter.test.js +0 -220
  255. package/dist/test/pull-responder-transmitter.test.js.map +0 -1
  256. package/dist/test/push-transmitter.test.d.ts +0 -2
  257. package/dist/test/push-transmitter.test.d.ts.map +0 -1
  258. package/dist/test/push-transmitter.test.js +0 -179
  259. package/dist/test/push-transmitter.test.js.map +0 -1
  260. package/dist/test/system.test.d.ts +0 -2
  261. package/dist/test/system.test.d.ts.map +0 -1
  262. package/dist/test/system.test.js +0 -211
  263. package/dist/test/system.test.js.map +0 -1
  264. package/dist/test/three-reactor-gql-sync.test.d.ts +0 -2
  265. package/dist/test/three-reactor-gql-sync.test.d.ts.map +0 -1
  266. package/dist/test/three-reactor-gql-sync.test.js +0 -368
  267. package/dist/test/three-reactor-gql-sync.test.js.map +0 -1
  268. package/dist/test/two-reactor-gql-sync.test.d.ts +0 -2
  269. package/dist/test/two-reactor-gql-sync.test.d.ts.map +0 -1
  270. package/dist/test/two-reactor-gql-sync.test.js +0 -348
  271. package/dist/test/two-reactor-gql-sync.test.js.map +0 -1
@@ -0,0 +1,298 @@
1
+ import { ConsoleLogger, DocumentModelRegistry, driveCollectionId, EventBus, GqlRequestChannelFactory, GqlResponseChannelFactory, InMemoryQueue, JobStatus, NullDocumentModelResolver, ReactorBuilder, ReactorEventTypes, SyncBuilder, } from "@powerhousedao/reactor";
2
+ import { driveDocumentModelModule } from "document-drive";
3
+ import { afterEach, describe, expect, it } from "vitest";
4
+ import { createResolverBridge } from "./utils/gql-resolver-bridge.js";
5
+ /**
6
+ * Creates a resolver bridge that can be toggled between online, offline,
7
+ * and rejecting modes.
8
+ * - online: normal passthrough to the resolver bridge
9
+ * - offline: throws a network error (recoverable)
10
+ * - rejecting: returns HTTP 200 with GraphQL errors array (unrecoverable)
11
+ */
12
+ function createFailableResolverBridge(syncManagers) {
13
+ const innerBridge = createResolverBridge(syncManagers);
14
+ let mode = "online";
15
+ const bridge = async (input, init) => {
16
+ if (mode === "offline")
17
+ throw new Error("Network error: offline");
18
+ if (mode === "rejecting") {
19
+ return new Response(JSON.stringify({
20
+ errors: [{ message: "Validation failed: invalid operation" }],
21
+ }), { status: 200, headers: { "Content-Type": "application/json" } });
22
+ }
23
+ return innerBridge(input, init);
24
+ };
25
+ return {
26
+ bridge,
27
+ setOffline: (v) => {
28
+ mode = v ? "offline" : "online";
29
+ },
30
+ setMode: (m) => {
31
+ mode = m;
32
+ },
33
+ };
34
+ }
35
+ async function setupPushBackfill() {
36
+ const syncManagerRegistry = new Map();
37
+ const { bridge, setOffline, setMode } = createFailableResolverBridge(syncManagerRegistry);
38
+ const logger = new ConsoleLogger(["test"]);
39
+ const connectEventBus = new EventBus();
40
+ const switchboardEventBus = new EventBus();
41
+ const modelRegistry = new DocumentModelRegistry();
42
+ modelRegistry.registerModules(driveDocumentModelModule);
43
+ const resolver = new NullDocumentModelResolver(modelRegistry);
44
+ const connectQueue = new InMemoryQueue(connectEventBus, resolver);
45
+ const switchboardQueue = new InMemoryQueue(switchboardEventBus, resolver);
46
+ function createCompositeFactory(queue) {
47
+ const request = new GqlRequestChannelFactory(logger, undefined, queue);
48
+ const response = new GqlResponseChannelFactory(logger);
49
+ return {
50
+ instance(...args) {
51
+ const [remoteId, remoteName, config, cursorStorage] = args;
52
+ if (config.type === "polling") {
53
+ return response.instance(remoteId, remoteName, config, cursorStorage);
54
+ }
55
+ return request.instance(...args);
56
+ },
57
+ };
58
+ }
59
+ const connectModule = await new ReactorBuilder()
60
+ .withEventBus(connectEventBus)
61
+ .withQueue(connectQueue)
62
+ .withDocumentModels([
63
+ driveDocumentModelModule,
64
+ ])
65
+ .withSync(new SyncBuilder().withChannelFactory(createCompositeFactory(connectQueue)))
66
+ .buildModule();
67
+ const switchboardModule = await new ReactorBuilder()
68
+ .withEventBus(switchboardEventBus)
69
+ .withQueue(switchboardQueue)
70
+ .withDocumentModels([
71
+ driveDocumentModelModule,
72
+ ])
73
+ .withSync(new SyncBuilder().withChannelFactory(createCompositeFactory(switchboardQueue)))
74
+ .buildModule();
75
+ const switchboardSyncManager = switchboardModule.syncModule.syncManager;
76
+ syncManagerRegistry.set("switchboard", switchboardSyncManager);
77
+ const connectSyncManager = connectModule.syncModule.syncManager;
78
+ syncManagerRegistry.set("connect", connectSyncManager);
79
+ return {
80
+ connectReactor: connectModule.reactor,
81
+ switchboardReactor: switchboardModule.reactor,
82
+ connectModule,
83
+ switchboardModule,
84
+ connectEventBus,
85
+ switchboardEventBus,
86
+ connectSyncManager,
87
+ switchboardSyncManager,
88
+ bridge,
89
+ setOffline,
90
+ setMode,
91
+ };
92
+ }
93
+ async function setupSyncForDrive(connectSyncManager, driveId, fetchFn) {
94
+ const collectionId = driveCollectionId("main", driveId);
95
+ await connectSyncManager.add(`switchboard-${driveId}`, collectionId, {
96
+ type: "gql",
97
+ parameters: {
98
+ url: "http://switchboard/graphql",
99
+ pollIntervalMs: 50,
100
+ retryBaseDelayMs: 10,
101
+ retryMaxDelayMs: 100,
102
+ fetchFn,
103
+ },
104
+ }, {
105
+ documentId: [],
106
+ scope: [],
107
+ branch: "main",
108
+ });
109
+ }
110
+ async function waitForJobCompletion(reactor, jobId, timeoutMs = 10000) {
111
+ const start = Date.now();
112
+ while (Date.now() - start < timeoutMs) {
113
+ const status = await reactor.getJobStatus(jobId);
114
+ if (status.status === JobStatus.READ_READY ||
115
+ status.status === JobStatus.FAILED) {
116
+ if (status.status === JobStatus.FAILED) {
117
+ throw new Error(`Job ${jobId} failed: ${status.error?.message ?? "unknown"}`);
118
+ }
119
+ return;
120
+ }
121
+ await new Promise((resolve) => setTimeout(resolve, 50));
122
+ }
123
+ throw new Error(`Timed out waiting for job ${jobId}`);
124
+ }
125
+ function waitForOperationsReady(eventBus, documentId, timeoutMs = 15000) {
126
+ return new Promise((resolve, reject) => {
127
+ let unsubscribe;
128
+ const timer = setTimeout(() => {
129
+ unsubscribe?.();
130
+ reject(new Error(`Timed out waiting for operations on document ${documentId}`));
131
+ }, timeoutMs);
132
+ unsubscribe = eventBus.subscribe(ReactorEventTypes.JOB_READ_READY, (_type, event) => {
133
+ const matchesDocument = event.operations.some((op) => op.context.documentId === documentId);
134
+ if (matchesDocument) {
135
+ clearTimeout(timer);
136
+ unsubscribe?.();
137
+ resolve();
138
+ }
139
+ });
140
+ });
141
+ }
142
+ function waitForSyncStabilization(eventBuses, quietPeriodMs = 500, timeoutMs = 15000) {
143
+ return new Promise((resolve, reject) => {
144
+ let lastActivityTime = Date.now();
145
+ const unsubscribes = [];
146
+ const timer = setTimeout(() => {
147
+ cleanup();
148
+ reject(new Error("Timed out waiting for sync stabilization"));
149
+ }, timeoutMs);
150
+ const checkQuiet = setInterval(() => {
151
+ if (Date.now() - lastActivityTime >= quietPeriodMs) {
152
+ cleanup();
153
+ resolve();
154
+ }
155
+ }, 50);
156
+ function cleanup() {
157
+ clearTimeout(timer);
158
+ clearInterval(checkQuiet);
159
+ for (const unsub of unsubscribes)
160
+ unsub();
161
+ }
162
+ for (const bus of eventBuses) {
163
+ const unsub = bus.subscribe(ReactorEventTypes.JOB_READ_READY, () => {
164
+ lastActivityTime = Date.now();
165
+ });
166
+ unsubscribes.push(unsub);
167
+ }
168
+ });
169
+ }
170
+ describe("Push Backfill After Offline Recovery", () => {
171
+ let connectReactor;
172
+ let switchboardReactor;
173
+ afterEach(() => {
174
+ connectReactor.kill();
175
+ switchboardReactor.kill();
176
+ });
177
+ it("should resend dead-lettered operations when channel recovers", async () => {
178
+ const setup = await setupPushBackfill();
179
+ connectReactor = setup.connectReactor;
180
+ switchboardReactor = setup.switchboardReactor;
181
+ const { connectModule, switchboardModule, connectEventBus, switchboardEventBus, connectSyncManager, bridge, setOffline, } = setup;
182
+ // Step 1: Create document on Connect, sync to Switchboard
183
+ const document = driveDocumentModelModule.utils.createDocument({
184
+ global: {
185
+ name: "Backfill Test",
186
+ icon: null,
187
+ nodes: [],
188
+ },
189
+ });
190
+ const documentId = document.header.id;
191
+ await setupSyncForDrive(connectSyncManager, documentId, bridge);
192
+ const createOnSwitchboard = waitForOperationsReady(switchboardEventBus, documentId);
193
+ const createJob = await connectReactor.create(document);
194
+ await waitForJobCompletion(connectReactor, createJob.id);
195
+ await createOnSwitchboard;
196
+ // Verify initial sync worked
197
+ const connectDocInitial = await connectReactor.get(documentId, {
198
+ branch: "main",
199
+ });
200
+ const switchboardDocInitial = await switchboardReactor.get(documentId, {
201
+ branch: "main",
202
+ });
203
+ expect(connectDocInitial.state).toEqual(switchboardDocInitial.state);
204
+ // Step 2: Go offline
205
+ setOffline(true);
206
+ // Step 3: Mutate while offline
207
+ const mutateJob = await connectReactor.execute(documentId, "main", [
208
+ driveDocumentModelModule.actions.setDriveName({
209
+ name: "Offline Change",
210
+ }),
211
+ ]);
212
+ await waitForJobCompletion(connectReactor, mutateJob.id);
213
+ // Step 4: Wait for BufferedMailbox flush (~500ms) and async push failure
214
+ // The push will fail because the bridge is offline, sending ops to deadLetter
215
+ await new Promise((resolve) => setTimeout(resolve, 1500));
216
+ // Verify the local state updated correctly
217
+ const connectDocAfterMutation = await connectReactor.get(documentId, {
218
+ branch: "main",
219
+ });
220
+ const connectState = connectDocAfterMutation.state;
221
+ expect(connectState.global.name).toBe("Offline Change");
222
+ // Step 5: Come back online
223
+ setOffline(false);
224
+ // Step 6: Wait for sync to stabilize
225
+ // With aggressive timers (pollIntervalMs: 50, retryBaseDelayMs: 10),
226
+ // if backfill worked, the dead-lettered ops would be retried quickly.
227
+ await waitForSyncStabilization([connectEventBus, switchboardEventBus], 1000, 10000);
228
+ // Step 7: Assert that Switchboard received the offline mutation
229
+ const connectOps = await connectReactor.getOperations(documentId, {
230
+ branch: "main",
231
+ });
232
+ const switchboardOps = await switchboardReactor.getOperations(documentId, {
233
+ branch: "main",
234
+ });
235
+ const connectOpsList = Object.values(connectOps).flatMap((scope) => scope.results);
236
+ const switchboardOpsList = Object.values(switchboardOps).flatMap((scope) => scope.results);
237
+ expect(switchboardOpsList.length).toBe(connectOpsList.length);
238
+ const connectDoc = await connectReactor.get(documentId, {
239
+ branch: "main",
240
+ });
241
+ const switchboardDoc = await switchboardReactor.get(documentId, {
242
+ branch: "main",
243
+ });
244
+ expect(switchboardDoc.state).toEqual(connectDoc.state);
245
+ }, 30000);
246
+ it("should send unrecoverable push errors to deadLetter", async () => {
247
+ const setup = await setupPushBackfill();
248
+ connectReactor = setup.connectReactor;
249
+ switchboardReactor = setup.switchboardReactor;
250
+ const { connectEventBus, switchboardEventBus, connectSyncManager, bridge, setMode, } = setup;
251
+ // Step 1: Create document on Connect, sync to Switchboard
252
+ const document = driveDocumentModelModule.utils.createDocument({
253
+ global: {
254
+ name: "Unrecoverable Test",
255
+ icon: null,
256
+ nodes: [],
257
+ },
258
+ });
259
+ const documentId = document.header.id;
260
+ await setupSyncForDrive(connectSyncManager, documentId, bridge);
261
+ const createOnSwitchboard = waitForOperationsReady(switchboardEventBus, documentId);
262
+ const createJob = await connectReactor.create(document);
263
+ await waitForJobCompletion(connectReactor, createJob.id);
264
+ await createOnSwitchboard;
265
+ // Verify initial sync worked
266
+ const connectDocInitial = await connectReactor.get(documentId, {
267
+ branch: "main",
268
+ });
269
+ const switchboardDocInitial = await switchboardReactor.get(documentId, {
270
+ branch: "main",
271
+ });
272
+ expect(connectDocInitial.state).toEqual(switchboardDocInitial.state);
273
+ // Wait for Connect's poll to receive ackOrdinal and trim the outbox
274
+ await waitForSyncStabilization([connectEventBus, switchboardEventBus], 500, 5000);
275
+ // Step 2: Switch bridge to "rejecting" mode (GraphQL errors)
276
+ setMode("rejecting");
277
+ // Step 3: Mutate on Connect
278
+ const mutateJob = await connectReactor.execute(documentId, "main", [
279
+ driveDocumentModelModule.actions.setDriveName({
280
+ name: "Rejected Change",
281
+ }),
282
+ ]);
283
+ await waitForJobCompletion(connectReactor, mutateJob.id);
284
+ // Step 4: Wait for BufferedMailbox flush and push failure propagation
285
+ await new Promise((resolve) => setTimeout(resolve, 2000));
286
+ // Step 5: Verify ops went to deadLetter (not retried)
287
+ const remote = connectSyncManager.getByName(`switchboard-${documentId}`);
288
+ const deadLetterItems = remote.channel.deadLetter.items;
289
+ expect(deadLetterItems.length).toBeGreaterThan(0);
290
+ // Switchboard should NOT have the rejected mutation
291
+ const switchboardDoc = await switchboardReactor.get(documentId, {
292
+ branch: "main",
293
+ });
294
+ const switchboardState = switchboardDoc.state;
295
+ expect(switchboardState.global.name).toBe("Unrecoverable Test");
296
+ }, 30000);
297
+ });
298
+ //# sourceMappingURL=push-backfill.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-backfill.test.js","sourceRoot":"","sources":["../../test/push-backfill.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { print } from "graphql";
2
2
  import { beforeEach, describe, expect, it, vi } from "vitest";
3
- import { createReactorClient } from "../src/graphql/reactor/factory.js";
4
- import { GetDocumentDocument } from "../src/graphql/reactor/gen/graphql.js";
3
+ import { createReactorGraphQLClient } from "../src/graphql/index.js";
4
+ import { GetDocumentDocument, GetDocumentOperationsDocument, GetDocumentWithOperationsDocument, } from "../src/graphql/reactor/gen/graphql.js";
5
5
  import { createFetchRequester } from "../src/graphql/reactor/requester.js";
6
6
  import { createValidatingRequester } from "../src/graphql/reactor/requester.with-zod.js";
7
7
  describe("ReactorSDK", () => {
@@ -88,10 +88,9 @@ describe("ReactorSDK", () => {
88
88
  name: "Test Document",
89
89
  documentType: "powerhouse/document-model",
90
90
  state: {},
91
- revision: 1,
92
- created: "2023-01-01T00:00:00Z",
93
- lastModified: "2023-01-01T00:00:00Z",
94
- parentId: null,
91
+ revisionsList: [{ scope: "global", revision: 1 }],
92
+ createdAtUtcIso: "2023-01-01T00:00:00Z",
93
+ lastModifiedAtUtcIso: "2023-01-01T00:00:00Z",
95
94
  },
96
95
  childIds: [],
97
96
  },
@@ -142,8 +141,169 @@ describe("ReactorSDK", () => {
142
141
  const result = await requester(GetDocumentDocument, { identifier: "nonexistent" }, {});
143
142
  expect(result).toEqual(nullDocumentResponse);
144
143
  });
144
+ it("should validate successful GetDocumentOperations response", async () => {
145
+ const validOperationsResponse = {
146
+ documentOperations: {
147
+ items: [
148
+ {
149
+ index: 0,
150
+ timestampUtcMs: "1000",
151
+ hash: "abc123",
152
+ skip: 0,
153
+ error: null,
154
+ id: "op-1",
155
+ action: {
156
+ id: "action-1",
157
+ type: "SET_NAME",
158
+ timestampUtcMs: "1000",
159
+ input: { name: "Test" },
160
+ scope: "global",
161
+ attachments: null,
162
+ context: {
163
+ signer: {
164
+ signatures: ["a, b, c, d, e"],
165
+ user: {
166
+ address: "0x123",
167
+ networkId: "eip155",
168
+ chainId: 1,
169
+ },
170
+ app: { name: "test-app", key: "key-1" },
171
+ },
172
+ },
173
+ },
174
+ },
175
+ ],
176
+ totalCount: 1,
177
+ hasNextPage: false,
178
+ hasPreviousPage: false,
179
+ cursor: null,
180
+ },
181
+ };
182
+ const mockResponse = {
183
+ ok: true,
184
+ json: vi.fn().mockResolvedValue({
185
+ data: validOperationsResponse,
186
+ }),
187
+ };
188
+ mockFetch.mockResolvedValue(mockResponse);
189
+ const requester = createValidatingRequester("https://api.test.com/graphql", mockFetch);
190
+ const result = await requester(GetDocumentOperationsDocument, {
191
+ filter: { documentId: "doc-1" },
192
+ }, {});
193
+ expect(result).toEqual(validOperationsResponse);
194
+ });
195
+ it("should validate successful GetDocumentWithOperations response", async () => {
196
+ const validResponse = {
197
+ document: {
198
+ document: {
199
+ id: "doc-123",
200
+ slug: "test-document",
201
+ name: "Test Document",
202
+ documentType: "powerhouse/document-model",
203
+ state: {},
204
+ revisionsList: [{ scope: "global", revision: 1 }],
205
+ createdAtUtcIso: "2023-01-01T00:00:00Z",
206
+ lastModifiedAtUtcIso: "2023-01-01T00:00:00Z",
207
+ operations: {
208
+ items: [
209
+ {
210
+ index: 0,
211
+ timestampUtcMs: "1000",
212
+ hash: "abc123",
213
+ skip: 0,
214
+ error: null,
215
+ id: "op-1",
216
+ action: {
217
+ id: "action-1",
218
+ type: "SET_NAME",
219
+ timestampUtcMs: "1000",
220
+ input: { name: "Test" },
221
+ scope: "global",
222
+ attachments: null,
223
+ context: null,
224
+ },
225
+ },
226
+ ],
227
+ totalCount: 1,
228
+ hasNextPage: false,
229
+ hasPreviousPage: false,
230
+ cursor: null,
231
+ },
232
+ },
233
+ childIds: [],
234
+ },
235
+ };
236
+ const mockResponse = {
237
+ ok: true,
238
+ json: vi.fn().mockResolvedValue({ data: validResponse }),
239
+ };
240
+ mockFetch.mockResolvedValue(mockResponse);
241
+ const requester = createValidatingRequester("https://api.test.com/graphql", mockFetch);
242
+ const result = await requester(GetDocumentWithOperationsDocument, { identifier: "doc-123" }, {});
243
+ expect(result).toEqual(validResponse);
244
+ });
245
+ it("should reject malformed GetDocumentWithOperations response", async () => {
246
+ const malformedResponse = {
247
+ document: {
248
+ document: {
249
+ id: "doc-123",
250
+ name: "Test Document",
251
+ documentType: "powerhouse/document-model",
252
+ state: {},
253
+ revisionsList: [{ scope: "global", revision: 1 }],
254
+ createdAtUtcIso: "2023-01-01T00:00:00Z",
255
+ lastModifiedAtUtcIso: "2023-01-01T00:00:00Z",
256
+ operations: {
257
+ items: [
258
+ {
259
+ // Missing required fields: index, hash, skip, action
260
+ timestampUtcMs: "1000",
261
+ },
262
+ ],
263
+ totalCount: 1,
264
+ hasNextPage: false,
265
+ hasPreviousPage: false,
266
+ cursor: null,
267
+ },
268
+ },
269
+ childIds: [],
270
+ },
271
+ };
272
+ const mockResponse = {
273
+ ok: true,
274
+ json: vi.fn().mockResolvedValue({ data: malformedResponse }),
275
+ };
276
+ mockFetch.mockResolvedValue(mockResponse);
277
+ const requester = createValidatingRequester("https://api.test.com/graphql", mockFetch);
278
+ await expect(requester(GetDocumentWithOperationsDocument, { identifier: "doc-123" }, {})).rejects.toThrow();
279
+ });
280
+ it("should reject malformed GetDocumentOperations response", async () => {
281
+ const malformedResponse = {
282
+ documentOperations: {
283
+ items: [
284
+ {
285
+ // Missing required fields: index, hash, skip, action
286
+ timestampUtcMs: "1000",
287
+ },
288
+ ],
289
+ totalCount: 1,
290
+ hasNextPage: false,
291
+ hasPreviousPage: false,
292
+ cursor: null,
293
+ },
294
+ };
295
+ const mockResponse = {
296
+ ok: true,
297
+ json: vi.fn().mockResolvedValue({
298
+ data: malformedResponse,
299
+ }),
300
+ };
301
+ mockFetch.mockResolvedValue(mockResponse);
302
+ const requester = createValidatingRequester("https://api.test.com/graphql", mockFetch);
303
+ await expect(requester(GetDocumentOperationsDocument, { filter: { documentId: "doc-1" } }, {})).rejects.toThrow();
304
+ });
145
305
  });
146
- describe("createReactorClient integration", () => {
306
+ describe("createReactorGraphQLClient integration", () => {
147
307
  let mockFetch;
148
308
  beforeEach(() => {
149
309
  mockFetch = vi.fn();
@@ -157,10 +317,9 @@ describe("ReactorSDK", () => {
157
317
  name: "Test Document",
158
318
  documentType: "powerhouse/document-model",
159
319
  state: {},
160
- revision: 1,
161
- created: "2023-01-01T00:00:00Z",
162
- lastModified: "2023-01-01T00:00:00Z",
163
- parentId: null,
320
+ revisionsList: [{ scope: "global", revision: 1 }],
321
+ createdAtUtcIso: "2023-01-01T00:00:00Z",
322
+ lastModifiedAtUtcIso: "2023-01-01T00:00:00Z",
164
323
  },
165
324
  childIds: [],
166
325
  },
@@ -172,7 +331,7 @@ describe("ReactorSDK", () => {
172
331
  }),
173
332
  };
174
333
  mockFetch.mockResolvedValue(mockResponse);
175
- const sdk = createReactorClient("https://api.test.com/graphql", mockFetch, { Authorization: "Bearer token123" });
334
+ const sdk = createReactorGraphQLClient("https://api.test.com/graphql", mockFetch, { Authorization: "Bearer token123" });
176
335
  // Test actual call
177
336
  const result = await sdk.GetDocument({
178
337
  identifier: "doc-123",
@@ -197,7 +356,7 @@ describe("ReactorSDK", () => {
197
356
  }),
198
357
  };
199
358
  mockFetch.mockResolvedValue(mockResponse);
200
- const sdk = createReactorClient("https://api.test.com/graphql", mockFetch);
359
+ const sdk = createReactorGraphQLClient("https://api.test.com/graphql", mockFetch);
201
360
  await sdk.GetDocument({ identifier: "test" });
202
361
  expect(mockFetch).toHaveBeenCalledWith("https://api.test.com/graphql", {
203
362
  method: "POST",
@@ -1 +1 @@
1
- {"version":3,"file":"reactor-client.test.js","sourceRoot":"","sources":["../../test/reactor-client.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reactor-client.test.js","sourceRoot":"","sources":["../../test/reactor-client.test.ts"],"names":[],"mappings":"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"}
@@ -9,12 +9,10 @@ const createTestDocument = () => {
9
9
  describe("ReactorSubgraph Query Resolvers", () => {
10
10
  let module;
11
11
  beforeEach(async () => {
12
- const reactorBuilder = new ReactorBuilder()
13
- .withDocumentModels([
12
+ const reactorBuilder = new ReactorBuilder().withDocumentModels([
14
13
  driveDocumentModelModule,
15
14
  documentModelDocumentModelModule,
16
- ])
17
- .withFeatures({ legacyStorageEnabled: false });
15
+ ]);
18
16
  module = await new ReactorClientBuilder()
19
17
  .withReactorBuilder(reactorBuilder)
20
18
  .buildModule();
@@ -114,12 +112,10 @@ describe("ReactorSubgraph Query Resolvers", () => {
114
112
  describe("ReactorSubgraph Mutation Resolvers", () => {
115
113
  let module;
116
114
  beforeEach(async () => {
117
- const reactorBuilder = new ReactorBuilder()
118
- .withDocumentModels([
115
+ const reactorBuilder = new ReactorBuilder().withDocumentModels([
119
116
  driveDocumentModelModule,
120
117
  documentModelDocumentModelModule,
121
- ])
122
- .withFeatures({ legacyStorageEnabled: false });
118
+ ]);
123
119
  module = await new ReactorClientBuilder()
124
120
  .withReactorBuilder(reactorBuilder)
125
121
  .buildModule();
@@ -243,13 +239,14 @@ describe("ReactorSubgraph Mutation Resolvers", () => {
243
239
  });
244
240
  });
245
241
  describe("Error Handling", () => {
246
- it("should handle rename errors", async () => {
242
+ it("should timeout on deferred queue", async () => {
243
+ const signal = AbortSignal.timeout(2000);
247
244
  await expect(resolvers.renameDocument(module.client, {
248
245
  documentIdentifier: "non-existent-id",
249
246
  name: "New Name",
250
247
  branch: null,
251
- })).rejects.toThrow();
252
- });
248
+ }, signal)).rejects.toThrow();
249
+ }, 10000);
253
250
  it("should handle delete errors", async () => {
254
251
  await expect(resolvers.deleteDocument(module.client, {
255
252
  identifier: "non-existent-id",