@powerhousedao/reactor-api 6.0.0-dev.15 → 6.0.0-dev.150

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 (367) hide show
  1. package/README.md +6 -0
  2. package/dist/codegen.js +1 -1
  3. package/dist/codegen.js.map +1 -1
  4. package/dist/index.d.ts +4 -3
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +4 -3
  7. package/dist/index.js.map +1 -1
  8. package/dist/src/config.d.ts +1 -2
  9. package/dist/src/config.d.ts.map +1 -1
  10. package/dist/src/config.js +1 -5
  11. package/dist/src/config.js.map +1 -1
  12. package/dist/src/dev.d.ts +2 -0
  13. package/dist/src/dev.d.ts.map +1 -0
  14. package/dist/src/dev.js +51 -0
  15. package/dist/src/dev.js.map +1 -0
  16. package/dist/src/graphql/auth/resolvers.d.ts +17 -0
  17. package/dist/src/graphql/auth/resolvers.d.ts.map +1 -1
  18. package/dist/src/graphql/auth/resolvers.js +54 -0
  19. package/dist/src/graphql/auth/resolvers.js.map +1 -1
  20. package/dist/src/graphql/auth/schema.graphql +27 -5
  21. package/dist/src/graphql/auth/subgraph.d.ts +25 -0
  22. package/dist/src/graphql/auth/subgraph.d.ts.map +1 -1
  23. package/dist/src/graphql/auth/subgraph.js +46 -2
  24. package/dist/src/graphql/auth/subgraph.js.map +1 -1
  25. package/dist/src/graphql/base-subgraph.d.ts +11 -4
  26. package/dist/src/graphql/base-subgraph.d.ts.map +1 -1
  27. package/dist/src/graphql/base-subgraph.js +94 -2
  28. package/dist/src/graphql/base-subgraph.js.map +1 -1
  29. package/dist/src/graphql/document-model-subgraph.d.ts +104 -45
  30. package/dist/src/graphql/document-model-subgraph.d.ts.map +1 -1
  31. package/dist/src/graphql/document-model-subgraph.js +323 -91
  32. package/dist/src/graphql/document-model-subgraph.js.map +1 -1
  33. package/dist/src/graphql/gateway/adapter-gateway-apollo.d.ts +23 -0
  34. package/dist/src/graphql/gateway/adapter-gateway-apollo.d.ts.map +1 -0
  35. package/dist/src/graphql/gateway/adapter-gateway-apollo.js +156 -0
  36. package/dist/src/graphql/gateway/adapter-gateway-apollo.js.map +1 -0
  37. package/dist/src/graphql/gateway/adapter-gateway-mercurius.d.ts +17 -0
  38. package/dist/src/graphql/gateway/adapter-gateway-mercurius.d.ts.map +1 -0
  39. package/dist/src/graphql/gateway/adapter-gateway-mercurius.js +154 -0
  40. package/dist/src/graphql/gateway/adapter-gateway-mercurius.js.map +1 -0
  41. package/dist/src/graphql/gateway/adapter-http-express.d.ts +25 -0
  42. package/dist/src/graphql/gateway/adapter-http-express.d.ts.map +1 -0
  43. package/dist/src/graphql/gateway/adapter-http-express.js +163 -0
  44. package/dist/src/graphql/gateway/adapter-http-express.js.map +1 -0
  45. package/dist/src/graphql/gateway/adapter-http-fastify.d.ts +23 -0
  46. package/dist/src/graphql/gateway/adapter-http-fastify.d.ts.map +1 -0
  47. package/dist/src/graphql/gateway/adapter-http-fastify.js +228 -0
  48. package/dist/src/graphql/gateway/adapter-http-fastify.js.map +1 -0
  49. package/dist/src/graphql/gateway/auth-middleware.d.ts +7 -0
  50. package/dist/src/graphql/gateway/auth-middleware.d.ts.map +1 -0
  51. package/dist/src/graphql/gateway/auth-middleware.js +15 -0
  52. package/dist/src/graphql/gateway/auth-middleware.js.map +1 -0
  53. package/dist/src/graphql/gateway/factory.d.ts +11 -0
  54. package/dist/src/graphql/gateway/factory.d.ts.map +1 -0
  55. package/dist/src/graphql/gateway/factory.js +21 -0
  56. package/dist/src/graphql/gateway/factory.js.map +1 -0
  57. package/dist/src/graphql/gateway/types.d.ts +100 -0
  58. package/dist/src/graphql/gateway/types.d.ts.map +1 -0
  59. package/dist/src/{sync → graphql/gateway}/types.js.map +1 -1
  60. package/dist/src/graphql/graphql-manager.d.ts +30 -12
  61. package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
  62. package/dist/src/graphql/graphql-manager.js +282 -232
  63. package/dist/src/graphql/graphql-manager.js.map +1 -1
  64. package/dist/src/graphql/index.d.ts +5 -1
  65. package/dist/src/graphql/index.d.ts.map +1 -1
  66. package/dist/src/graphql/index.js +5 -1
  67. package/dist/src/graphql/index.js.map +1 -1
  68. package/dist/src/graphql/packages/index.d.ts +2 -0
  69. package/dist/src/graphql/packages/index.d.ts.map +1 -0
  70. package/dist/src/graphql/packages/index.js +2 -0
  71. package/dist/src/graphql/packages/index.js.map +1 -0
  72. package/dist/src/graphql/packages/resolvers.d.ts +31 -0
  73. package/dist/src/graphql/packages/resolvers.d.ts.map +1 -0
  74. package/dist/src/graphql/packages/resolvers.js +37 -0
  75. package/dist/src/graphql/packages/resolvers.js.map +1 -0
  76. package/dist/src/graphql/packages/schema.graphql +50 -0
  77. package/dist/src/graphql/packages/subgraph.d.ts +55 -0
  78. package/dist/src/graphql/packages/subgraph.d.ts.map +1 -0
  79. package/dist/src/graphql/packages/subgraph.js +73 -0
  80. package/dist/src/graphql/packages/subgraph.js.map +1 -0
  81. package/dist/src/graphql/playground.d.ts.map +1 -1
  82. package/dist/src/graphql/playground.js +19 -12
  83. package/dist/src/graphql/playground.js.map +1 -1
  84. package/dist/src/graphql/reactor/adapters.d.ts +10 -2
  85. package/dist/src/graphql/reactor/adapters.d.ts.map +1 -1
  86. package/dist/src/graphql/reactor/adapters.js +36 -1
  87. package/dist/src/graphql/reactor/adapters.js.map +1 -1
  88. package/dist/src/graphql/reactor/factory.d.ts +28 -7
  89. package/dist/src/graphql/reactor/factory.d.ts.map +1 -1
  90. package/dist/src/graphql/reactor/factory.js +1 -1
  91. package/dist/src/graphql/reactor/factory.js.map +1 -1
  92. package/dist/src/graphql/reactor/gen/graphql.d.ts +363 -84
  93. package/dist/src/graphql/reactor/gen/graphql.d.ts.map +1 -1
  94. package/dist/src/graphql/reactor/gen/graphql.js +247 -12
  95. package/dist/src/graphql/reactor/gen/graphql.js.map +1 -1
  96. package/dist/src/graphql/reactor/index.d.ts +1 -1
  97. package/dist/src/graphql/reactor/index.d.ts.map +1 -1
  98. package/dist/src/graphql/reactor/index.js +1 -1
  99. package/dist/src/graphql/reactor/index.js.map +1 -1
  100. package/dist/src/graphql/reactor/operations.graphql +193 -3
  101. package/dist/src/graphql/reactor/requester.with-zod.d.ts.map +1 -1
  102. package/dist/src/graphql/reactor/requester.with-zod.js +114 -38
  103. package/dist/src/graphql/reactor/requester.with-zod.js.map +1 -1
  104. package/dist/src/graphql/reactor/resolvers.d.ts +90 -26
  105. package/dist/src/graphql/reactor/resolvers.d.ts.map +1 -1
  106. package/dist/src/graphql/reactor/resolvers.js +258 -77
  107. package/dist/src/graphql/reactor/resolvers.js.map +1 -1
  108. package/dist/src/graphql/reactor/schema.graphql +78 -32
  109. package/dist/src/graphql/reactor/subgraph.d.ts +2 -31
  110. package/dist/src/graphql/reactor/subgraph.d.ts.map +1 -1
  111. package/dist/src/graphql/reactor/subgraph.js +139 -213
  112. package/dist/src/graphql/reactor/subgraph.js.map +1 -1
  113. package/dist/src/graphql/reactor/validation.d.ts +266 -20
  114. package/dist/src/graphql/reactor/validation.d.ts.map +1 -1
  115. package/dist/src/graphql/reactor/validation.js +98 -4
  116. package/dist/src/graphql/reactor/validation.js.map +1 -1
  117. package/dist/src/graphql/sse.d.ts +35 -0
  118. package/dist/src/graphql/sse.d.ts.map +1 -0
  119. package/dist/src/graphql/sse.js +29 -0
  120. package/dist/src/graphql/sse.js.map +1 -0
  121. package/dist/src/graphql/system/index.d.ts +0 -1
  122. package/dist/src/graphql/system/index.d.ts.map +1 -1
  123. package/dist/src/graphql/system/index.js +0 -1
  124. package/dist/src/graphql/system/index.js.map +1 -1
  125. package/dist/src/graphql/types.d.ts +7 -8
  126. package/dist/src/graphql/types.d.ts.map +1 -1
  127. package/dist/src/graphql/utils.d.ts +3 -20
  128. package/dist/src/graphql/utils.d.ts.map +1 -1
  129. package/dist/src/graphql/utils.js +7 -35
  130. package/dist/src/graphql/utils.js.map +1 -1
  131. package/dist/src/migrations/002_add_document_protection.d.ts +4 -0
  132. package/dist/src/migrations/002_add_document_protection.d.ts.map +1 -0
  133. package/dist/src/migrations/002_add_document_protection.js +18 -0
  134. package/dist/src/migrations/002_add_document_protection.js.map +1 -0
  135. package/dist/src/migrations/index.d.ts.map +1 -1
  136. package/dist/src/migrations/index.js +2 -0
  137. package/dist/src/migrations/index.js.map +1 -1
  138. package/dist/src/packages/http-loader.d.ts +59 -0
  139. package/dist/src/packages/http-loader.d.ts.map +1 -0
  140. package/dist/src/packages/http-loader.js +203 -0
  141. package/dist/src/packages/http-loader.js.map +1 -0
  142. package/dist/src/packages/https-hooks.d.mts +37 -0
  143. package/dist/src/packages/https-hooks.d.mts.map +1 -0
  144. package/dist/src/packages/https-hooks.mjs +95 -0
  145. package/dist/src/packages/https-hooks.mjs.map +1 -0
  146. package/dist/src/packages/import-loader.d.ts +4 -6
  147. package/dist/src/packages/import-loader.d.ts.map +1 -1
  148. package/dist/src/packages/import-loader.js +4 -18
  149. package/dist/src/packages/import-loader.js.map +1 -1
  150. package/dist/src/packages/package-manager.d.ts +3 -4
  151. package/dist/src/packages/package-manager.d.ts.map +1 -1
  152. package/dist/src/packages/package-manager.js +10 -7
  153. package/dist/src/packages/package-manager.js.map +1 -1
  154. package/dist/src/packages/types.d.ts +8 -8
  155. package/dist/src/packages/types.d.ts.map +1 -1
  156. package/dist/src/packages/util.d.ts +4 -5
  157. package/dist/src/packages/util.d.ts.map +1 -1
  158. package/dist/src/packages/util.js +2 -14
  159. package/dist/src/packages/util.js.map +1 -1
  160. package/dist/src/packages/vite-loader.d.ts +12 -11
  161. package/dist/src/packages/vite-loader.d.ts.map +1 -1
  162. package/dist/src/packages/vite-loader.js +20 -21
  163. package/dist/src/packages/vite-loader.js.map +1 -1
  164. package/dist/src/server.d.ts +15 -33
  165. package/dist/src/server.d.ts.map +1 -1
  166. package/dist/src/server.js +164 -244
  167. package/dist/src/server.js.map +1 -1
  168. package/dist/src/services/auth.service.d.ts +3 -18
  169. package/dist/src/services/auth.service.d.ts.map +1 -1
  170. package/dist/src/services/auth.service.js +38 -72
  171. package/dist/src/services/auth.service.js.map +1 -1
  172. package/dist/src/services/authorization.service.d.ts +70 -0
  173. package/dist/src/services/authorization.service.d.ts.map +1 -0
  174. package/dist/src/services/authorization.service.js +155 -0
  175. package/dist/src/services/authorization.service.js.map +1 -0
  176. package/dist/src/services/document-permission.service.d.ts +47 -7
  177. package/dist/src/services/document-permission.service.d.ts.map +1 -1
  178. package/dist/src/services/document-permission.service.js +162 -7
  179. package/dist/src/services/document-permission.service.js.map +1 -1
  180. package/dist/src/services/package-management.service.d.ts +32 -0
  181. package/dist/src/services/package-management.service.d.ts.map +1 -0
  182. package/dist/src/services/package-management.service.js +95 -0
  183. package/dist/src/services/package-management.service.js.map +1 -0
  184. package/dist/src/services/package-storage.d.ts +23 -0
  185. package/dist/src/services/package-storage.d.ts.map +1 -0
  186. package/dist/src/services/package-storage.js +19 -0
  187. package/dist/src/services/package-storage.js.map +1 -0
  188. package/dist/src/tracing.d.ts.map +1 -1
  189. package/dist/src/tracing.js +25 -1
  190. package/dist/src/tracing.js.map +1 -1
  191. package/dist/src/types.d.ts +13 -5
  192. package/dist/src/types.d.ts.map +1 -1
  193. package/dist/src/utils/create-schema.d.ts +31 -6
  194. package/dist/src/utils/create-schema.d.ts.map +1 -1
  195. package/dist/src/utils/create-schema.js +446 -40
  196. package/dist/src/utils/create-schema.js.map +1 -1
  197. package/dist/src/utils/db.d.ts +8 -0
  198. package/dist/src/utils/db.d.ts.map +1 -1
  199. package/dist/src/utils/db.js.map +1 -1
  200. package/dist/test/auth-chain.test.d.ts +12 -0
  201. package/dist/test/auth-chain.test.d.ts.map +1 -0
  202. package/dist/test/auth-chain.test.js +157 -0
  203. package/dist/test/auth-chain.test.js.map +1 -0
  204. package/dist/test/auth.service.test.d.ts +10 -0
  205. package/dist/test/auth.service.test.d.ts.map +1 -0
  206. package/dist/test/auth.service.test.js +141 -0
  207. package/dist/test/auth.service.test.js.map +1 -0
  208. package/dist/test/authorization.service.test.d.ts +2 -0
  209. package/dist/test/authorization.service.test.d.ts.map +1 -0
  210. package/dist/test/authorization.service.test.js +252 -0
  211. package/dist/test/authorization.service.test.js.map +1 -0
  212. package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts +2 -0
  213. package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts.map +1 -0
  214. package/dist/test/connect-switchboard-reshuffle-convergence.test.js +204 -0
  215. package/dist/test/connect-switchboard-reshuffle-convergence.test.js.map +1 -0
  216. package/dist/test/connect-switchboard-sync.test.d.ts +2 -0
  217. package/dist/test/connect-switchboard-sync.test.d.ts.map +1 -0
  218. package/dist/test/connect-switchboard-sync.test.js +633 -0
  219. package/dist/test/connect-switchboard-sync.test.js.map +1 -0
  220. package/dist/test/document-drive-subgraph.test.d.ts +2 -0
  221. package/dist/test/document-drive-subgraph.test.d.ts.map +1 -0
  222. package/dist/test/document-drive-subgraph.test.js +244 -0
  223. package/dist/test/document-drive-subgraph.test.js.map +1 -0
  224. package/dist/test/document-model-subgraph-permissions.test.d.ts +2 -0
  225. package/dist/test/document-model-subgraph-permissions.test.d.ts.map +1 -0
  226. package/dist/test/document-model-subgraph-permissions.test.js +587 -0
  227. package/dist/test/document-model-subgraph-permissions.test.js.map +1 -0
  228. package/dist/test/drive-info-endpoint.test.d.ts +2 -0
  229. package/dist/test/drive-info-endpoint.test.d.ts.map +1 -0
  230. package/dist/test/drive-info-endpoint.test.js +123 -0
  231. package/dist/test/drive-info-endpoint.test.js.map +1 -0
  232. package/dist/test/fault-injection-sync.test.d.ts +2 -0
  233. package/dist/test/fault-injection-sync.test.d.ts.map +1 -0
  234. package/dist/test/fault-injection-sync.test.js +197 -0
  235. package/dist/test/fault-injection-sync.test.js.map +1 -0
  236. package/dist/test/gateway/adapter-gateway-apollo.test.d.ts +2 -0
  237. package/dist/test/gateway/adapter-gateway-apollo.test.d.ts.map +1 -0
  238. package/dist/test/gateway/adapter-gateway-apollo.test.js +206 -0
  239. package/dist/test/gateway/adapter-gateway-apollo.test.js.map +1 -0
  240. package/dist/test/gateway/adapter-gateway-mercurius.test.d.ts +2 -0
  241. package/dist/test/gateway/adapter-gateway-mercurius.test.d.ts.map +1 -0
  242. package/dist/test/gateway/adapter-gateway-mercurius.test.js +23 -0
  243. package/dist/test/gateway/adapter-gateway-mercurius.test.js.map +1 -0
  244. package/dist/test/gateway/adapter-http-express.test.d.ts +2 -0
  245. package/dist/test/gateway/adapter-http-express.test.d.ts.map +1 -0
  246. package/dist/test/gateway/adapter-http-express.test.js +17 -0
  247. package/dist/test/gateway/adapter-http-express.test.js.map +1 -0
  248. package/dist/test/gateway/adapter-http-fastify.test.d.ts +2 -0
  249. package/dist/test/gateway/adapter-http-fastify.test.d.ts.map +1 -0
  250. package/dist/test/gateway/adapter-http-fastify.test.js +17 -0
  251. package/dist/test/gateway/adapter-http-fastify.test.js.map +1 -0
  252. package/dist/test/gateway/auth-middleware.test.d.ts +8 -0
  253. package/dist/test/gateway/auth-middleware.test.d.ts.map +1 -0
  254. package/dist/test/gateway/auth-middleware.test.js +73 -0
  255. package/dist/test/gateway/auth-middleware.test.js.map +1 -0
  256. package/dist/test/gateway/gateway-adapter-contract.d.ts +30 -0
  257. package/dist/test/gateway/gateway-adapter-contract.d.ts.map +1 -0
  258. package/dist/test/gateway/gateway-adapter-contract.js +347 -0
  259. package/dist/test/gateway/gateway-adapter-contract.js.map +1 -0
  260. package/dist/test/gateway/http-adapter-contract.d.ts +30 -0
  261. package/dist/test/gateway/http-adapter-contract.d.ts.map +1 -0
  262. package/dist/test/gateway/http-adapter-contract.js +277 -0
  263. package/dist/test/gateway/http-adapter-contract.js.map +1 -0
  264. package/dist/test/graphql-manager.test.d.ts +12 -0
  265. package/dist/test/graphql-manager.test.d.ts.map +1 -0
  266. package/dist/test/graphql-manager.test.js +576 -0
  267. package/dist/test/graphql-manager.test.js.map +1 -0
  268. package/dist/test/index.d.ts +0 -1
  269. package/dist/test/index.d.ts.map +1 -1
  270. package/dist/test/index.js +0 -1
  271. package/dist/test/index.js.map +1 -1
  272. package/dist/test/permissions-integration.test.js +6 -20
  273. package/dist/test/permissions-integration.test.js.map +1 -1
  274. package/dist/test/push-backfill.test.d.ts +2 -0
  275. package/dist/test/push-backfill.test.d.ts.map +1 -0
  276. package/dist/test/push-backfill.test.js +299 -0
  277. package/dist/test/push-backfill.test.js.map +1 -0
  278. package/dist/test/reactor-adapters.test.js +3 -2
  279. package/dist/test/reactor-adapters.test.js.map +1 -1
  280. package/dist/test/reactor-client.test.js +172 -13
  281. package/dist/test/reactor-client.test.js.map +1 -1
  282. package/dist/test/reactor-resolvers.test.js +11 -13
  283. package/dist/test/reactor-resolvers.test.js.map +1 -1
  284. package/dist/test/reactor-subgraph-permissions.test.js +7 -36
  285. package/dist/test/reactor-subgraph-permissions.test.js.map +1 -1
  286. package/dist/test/subscriptions-sse.test.d.ts +2 -0
  287. package/dist/test/subscriptions-sse.test.d.ts.map +1 -0
  288. package/dist/test/subscriptions-sse.test.js +264 -0
  289. package/dist/test/subscriptions-sse.test.js.map +1 -0
  290. package/dist/test/subscriptions.test.js +2 -0
  291. package/dist/test/subscriptions.test.js.map +1 -1
  292. package/dist/test/utils/gql-resolver-bridge.d.ts +4 -1
  293. package/dist/test/utils/gql-resolver-bridge.d.ts.map +1 -1
  294. package/dist/test/utils/gql-resolver-bridge.js +36 -7
  295. package/dist/test/utils/gql-resolver-bridge.js.map +1 -1
  296. package/dist/test/utils.d.ts +1 -5
  297. package/dist/test/utils.d.ts.map +1 -1
  298. package/dist/test/utils.js +0 -10
  299. package/dist/test/utils.js.map +1 -1
  300. package/dist/tsconfig.tsbuildinfo +1 -1
  301. package/dist/vitest.config.d.ts.map +1 -1
  302. package/dist/vitest.config.js +1 -0
  303. package/dist/vitest.config.js.map +1 -1
  304. package/package.json +64 -59
  305. package/dist/src/graphql/drive-subgraph.d.ts +0 -25
  306. package/dist/src/graphql/drive-subgraph.d.ts.map +0 -1
  307. package/dist/src/graphql/drive-subgraph.js +0 -487
  308. package/dist/src/graphql/drive-subgraph.js.map +0 -1
  309. package/dist/src/graphql/system/system-subgraph.d.ts +0 -49
  310. package/dist/src/graphql/system/system-subgraph.d.ts.map +0 -1
  311. package/dist/src/graphql/system/system-subgraph.js +0 -130
  312. package/dist/src/graphql/system/system-subgraph.js.map +0 -1
  313. package/dist/src/sync/types.d.ts +0 -10
  314. package/dist/src/sync/types.d.ts.map +0 -1
  315. package/dist/src/sync/utils.d.ts +0 -7
  316. package/dist/src/sync/utils.d.ts.map +0 -1
  317. package/dist/src/sync/utils.js +0 -78
  318. package/dist/src/sync/utils.js.map +0 -1
  319. package/dist/src/utils/auth.d.ts +0 -3
  320. package/dist/src/utils/auth.d.ts.map +0 -1
  321. package/dist/src/utils/auth.js +0 -19
  322. package/dist/src/utils/auth.js.map +0 -1
  323. package/dist/test/benchmarks/load.bench.d.ts +0 -2
  324. package/dist/test/benchmarks/load.bench.d.ts.map +0 -1
  325. package/dist/test/benchmarks/load.bench.js +0 -73
  326. package/dist/test/benchmarks/load.bench.js.map +0 -1
  327. package/dist/test/benchmarks/sync.bench.d.ts +0 -2
  328. package/dist/test/benchmarks/sync.bench.d.ts.map +0 -1
  329. package/dist/test/benchmarks/sync.bench.js +0 -119
  330. package/dist/test/benchmarks/sync.bench.js.map +0 -1
  331. package/dist/test/drive-handlers.d.ts +0 -4
  332. package/dist/test/drive-handlers.d.ts.map +0 -1
  333. package/dist/test/drive-handlers.js +0 -39
  334. package/dist/test/drive-handlers.js.map +0 -1
  335. package/dist/test/drive-subgraph-permissions.test.d.ts +0 -2
  336. package/dist/test/drive-subgraph-permissions.test.d.ts.map +0 -1
  337. package/dist/test/drive-subgraph-permissions.test.js +0 -195
  338. package/dist/test/drive-subgraph-permissions.test.js.map +0 -1
  339. package/dist/test/drive.test.d.ts +0 -2
  340. package/dist/test/drive.test.d.ts.map +0 -1
  341. package/dist/test/drive.test.js +0 -142
  342. package/dist/test/drive.test.js.map +0 -1
  343. package/dist/test/identity-integration.test.d.ts +0 -2
  344. package/dist/test/identity-integration.test.d.ts.map +0 -1
  345. package/dist/test/identity-integration.test.js +0 -349
  346. package/dist/test/identity-integration.test.js.map +0 -1
  347. package/dist/test/pull-responder-transmitter.test.d.ts +0 -2
  348. package/dist/test/pull-responder-transmitter.test.d.ts.map +0 -1
  349. package/dist/test/pull-responder-transmitter.test.js +0 -220
  350. package/dist/test/pull-responder-transmitter.test.js.map +0 -1
  351. package/dist/test/push-transmitter.test.d.ts +0 -2
  352. package/dist/test/push-transmitter.test.d.ts.map +0 -1
  353. package/dist/test/push-transmitter.test.js +0 -179
  354. package/dist/test/push-transmitter.test.js.map +0 -1
  355. package/dist/test/system.test.d.ts +0 -2
  356. package/dist/test/system.test.d.ts.map +0 -1
  357. package/dist/test/system.test.js +0 -211
  358. package/dist/test/system.test.js.map +0 -1
  359. package/dist/test/three-reactor-gql-sync.test.d.ts +0 -2
  360. package/dist/test/three-reactor-gql-sync.test.d.ts.map +0 -1
  361. package/dist/test/three-reactor-gql-sync.test.js +0 -368
  362. package/dist/test/three-reactor-gql-sync.test.js.map +0 -1
  363. package/dist/test/two-reactor-gql-sync.test.d.ts +0 -2
  364. package/dist/test/two-reactor-gql-sync.test.d.ts.map +0 -1
  365. package/dist/test/two-reactor-gql-sync.test.js +0 -348
  366. package/dist/test/two-reactor-gql-sync.test.js.map +0 -1
  367. /package/dist/src/{sync → graphql/gateway}/types.js +0 -0
@@ -0,0 +1,576 @@
1
+ /**
2
+ * Unit tests for GraphQLManager.
3
+ *
4
+ * Uses mock implementations of IGatewayAdapter and IHttpAdapter so tests
5
+ * run without spinning up real HTTP or GraphQL servers.
6
+ *
7
+ * The mount() spy captures FetchHandlers as they are registered, allowing
8
+ * tests to invoke individual handlers (e.g. the drive info endpoint) directly
9
+ * via the Fetch API without any network I/O.
10
+ */
11
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
12
+ import { createAuthFetchMiddleware } from "../src/graphql/gateway/auth-middleware.js";
13
+ import { GraphQLManager } from "../src/graphql/graphql-manager.js";
14
+ // ── shared fixtures ──────────────────────────────────────────────────────────
15
+ const silentLogger = {
16
+ level: "error",
17
+ verbose: vi.fn(),
18
+ debug: vi.fn(),
19
+ info: vi.fn(),
20
+ warn: vi.fn(),
21
+ error: vi.fn(),
22
+ errorHandler: vi.fn(),
23
+ child: () => silentLogger,
24
+ };
25
+ /** Minimal DocumentModelModule with a DocumentDrive model - required by init(). */
26
+ function makeDriveModule() {
27
+ return {
28
+ documentModel: {
29
+ global: {
30
+ name: "DocumentDrive",
31
+ id: "powerhouse/document-drive",
32
+ specifications: [
33
+ {
34
+ version: 1,
35
+ modules: [],
36
+ // Provide a minimal state schema so buildSubgraphSchemaModule can
37
+ // generate the DocumentDrive_DocumentDriveState type that is
38
+ // referenced by the DocumentDrive type definition.
39
+ state: {
40
+ global: { schema: "type DocumentDriveState { name: String }" },
41
+ local: { schema: "" },
42
+ },
43
+ },
44
+ ],
45
+ },
46
+ },
47
+ };
48
+ }
49
+ function makeMockReactorClient(overrides = {}) {
50
+ return {
51
+ getDocumentModelModules: vi
52
+ .fn()
53
+ .mockResolvedValue({ results: [makeDriveModule()] }),
54
+ get: vi.fn().mockResolvedValue({
55
+ header: { id: "drive-1", slug: "my-drive", meta: {} },
56
+ state: { global: { name: "Test Drive", icon: null } },
57
+ }),
58
+ ...overrides,
59
+ };
60
+ }
61
+ function makeMockGatewayAdapter() {
62
+ return {
63
+ start: vi.fn().mockResolvedValue(undefined),
64
+ createHandler: vi
65
+ .fn()
66
+ .mockResolvedValue(async () => new Response("handler ok")),
67
+ createSupergraphHandler: vi
68
+ .fn()
69
+ .mockResolvedValue(async () => new Response("supergraph ok")),
70
+ updateSupergraph: vi.fn().mockResolvedValue(undefined),
71
+ attachWebSocket: vi
72
+ .fn()
73
+ .mockReturnValue({ dispose: vi.fn() }),
74
+ stop: vi.fn().mockResolvedValue(undefined),
75
+ };
76
+ }
77
+ function makeMockHttpAdapter() {
78
+ const mounts = new Map();
79
+ const adapter = {
80
+ setupMiddleware: vi.fn(),
81
+ mount: vi.fn((p, h) => {
82
+ mounts.set(p, h);
83
+ }),
84
+ getRoute: vi.fn(),
85
+ mountRawMiddleware: vi.fn(),
86
+ mountNodeRoute: vi.fn(),
87
+ listen: vi.fn().mockResolvedValue({}),
88
+ setupSentryErrorHandler: vi.fn(),
89
+ handle: {},
90
+ };
91
+ return { adapter, mounts };
92
+ }
93
+ function makeHarness(options = {}) {
94
+ const { adapter: httpAdapter, mounts } = makeMockHttpAdapter();
95
+ const gatewayAdapter = makeMockGatewayAdapter();
96
+ const reactorClient = options.reactorClient ?? makeMockReactorClient();
97
+ const httpServer = {};
98
+ const wsServer = {
99
+ close: vi.fn((cb) => cb?.()),
100
+ };
101
+ const manager = new GraphQLManager(options.path ?? "/", httpServer, wsServer, reactorClient, {}, {}, {}, silentLogger, httpAdapter, gatewayAdapter, undefined, // authConfig
102
+ undefined, // documentPermissionService
103
+ {
104
+ enableDocumentModelSubgraphs: options.enableDocumentModelSubgraphs ?? false,
105
+ }, 4001, undefined);
106
+ return {
107
+ manager,
108
+ httpAdapter,
109
+ mounts,
110
+ gatewayAdapter,
111
+ reactorClient,
112
+ httpServer,
113
+ wsServer,
114
+ };
115
+ }
116
+ /** Run init() to completion, flushing the debounced updateRouter() call. */
117
+ async function initAndFlush(manager, coreSubgraphs = []) {
118
+ const initPromise = manager.init(coreSubgraphs);
119
+ await vi.runAllTimersAsync();
120
+ await initPromise;
121
+ }
122
+ // ── tests ────────────────────────────────────────────────────────────────────
123
+ describe("GraphQLManager", () => {
124
+ beforeEach(() => {
125
+ vi.useFakeTimers();
126
+ });
127
+ afterEach(() => {
128
+ vi.useRealTimers();
129
+ vi.clearAllMocks();
130
+ });
131
+ // ── init() ─────────────────────────────────────────────────────────────────
132
+ describe("init()", () => {
133
+ it("throws when the DocumentDrive model is missing", async () => {
134
+ const reactorClient = makeMockReactorClient({
135
+ getDocumentModelModules: vi.fn().mockResolvedValue({ results: [] }),
136
+ });
137
+ const { manager } = makeHarness({ reactorClient });
138
+ await expect(manager.init([])).rejects.toThrow("DocumentDrive model required");
139
+ });
140
+ it("starts the gateway adapter with the http server", async () => {
141
+ const { manager, gatewayAdapter, httpServer } = makeHarness();
142
+ await initAndFlush(manager);
143
+ expect(gatewayAdapter.start).toHaveBeenCalledOnce();
144
+ expect(gatewayAdapter.start).toHaveBeenCalledWith(httpServer);
145
+ });
146
+ it("sets up middleware on the http adapter", async () => {
147
+ const { manager, httpAdapter } = makeHarness();
148
+ await initAndFlush(manager);
149
+ expect(httpAdapter.setupMiddleware).toHaveBeenCalledOnce();
150
+ expect(httpAdapter.setupMiddleware).toHaveBeenCalledWith({
151
+ bodyLimit: "50mb",
152
+ });
153
+ });
154
+ it("mounts the drive info endpoint at {path}/d/:drive", async () => {
155
+ const { manager, httpAdapter } = makeHarness({ path: "/" });
156
+ await initAndFlush(manager);
157
+ expect(httpAdapter.mount).toHaveBeenCalledWith("/d/:drive", expect.any(Function));
158
+ });
159
+ it("mounts the supergraph at {path}/graphql", async () => {
160
+ const { manager, httpAdapter } = makeHarness({ path: "/" });
161
+ await initAndFlush(manager);
162
+ expect(httpAdapter.mount).toHaveBeenCalledWith("/graphql", expect.any(Function));
163
+ });
164
+ it("respects a non-root base path for mounted routes", async () => {
165
+ const { manager, httpAdapter } = makeHarness({ path: "/api/v1" });
166
+ await initAndFlush(manager);
167
+ expect(httpAdapter.mount).toHaveBeenCalledWith("/api/v1/d/:drive", expect.any(Function));
168
+ expect(httpAdapter.mount).toHaveBeenCalledWith("/api/v1/graphql", expect.any(Function));
169
+ });
170
+ it("calls createSupergraphHandler on the gateway adapter", async () => {
171
+ const { manager, gatewayAdapter, httpServer } = makeHarness();
172
+ await initAndFlush(manager);
173
+ expect(gatewayAdapter.createSupergraphHandler).toHaveBeenCalledOnce();
174
+ const [getSubgraphs, passedServer, contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
175
+ expect(typeof getSubgraphs).toBe("function");
176
+ expect(passedServer).toBe(httpServer);
177
+ expect(typeof contextFactory).toBe("function");
178
+ });
179
+ });
180
+ // ── drive info endpoint ────────────────────────────────────────────────────
181
+ describe("drive info endpoint", () => {
182
+ async function getHandler(options = {}) {
183
+ const harness = makeHarness(options);
184
+ await initAndFlush(harness.manager);
185
+ const drivePath = (options.path === "/" || !options.path ? "" : options.path) +
186
+ "/d/:drive";
187
+ const handler = harness.mounts.get(drivePath);
188
+ if (!handler)
189
+ throw new Error(`No handler mounted at ${drivePath}`);
190
+ return { handler, ...harness };
191
+ }
192
+ it("returns 404 when the drive is not found", async () => {
193
+ const { handler } = await getHandler({
194
+ reactorClient: makeMockReactorClient({
195
+ get: vi.fn().mockRejectedValue(new Error("not found")),
196
+ }),
197
+ });
198
+ const res = await handler(new Request("http://localhost/d/unknown-drive"));
199
+ expect(res.status).toBe(404);
200
+ const body = (await res.json());
201
+ expect(body.error).toBe("Drive not found");
202
+ });
203
+ it("returns 200 with drive info JSON when the drive exists", async () => {
204
+ const { handler } = await getHandler();
205
+ const res = await handler(new Request("http://localhost/d/my-drive", {
206
+ headers: { host: "localhost" },
207
+ }));
208
+ expect(res.status).toBe(200);
209
+ const body = (await res.json());
210
+ expect(typeof body.graphqlEndpoint).toBe("string");
211
+ });
212
+ it("passes the drive ID from the URL to the reactor client", async () => {
213
+ const { handler, reactorClient } = await getHandler();
214
+ await handler(new Request("http://localhost/d/drive-abc-123"));
215
+ expect(reactorClient.get).toHaveBeenCalledWith("drive-abc-123");
216
+ });
217
+ it("uses x-forwarded-proto when present", async () => {
218
+ const { handler } = await getHandler({ path: "/" });
219
+ const res = await handler(new Request("http://localhost/d/my-drive", {
220
+ headers: {
221
+ host: "example.com",
222
+ "x-forwarded-proto": "https",
223
+ },
224
+ }));
225
+ const body = (await res.json());
226
+ expect(body.graphqlEndpoint).toMatch(/^https:\/\//);
227
+ });
228
+ it("falls back to the URL protocol when x-forwarded-proto is absent", async () => {
229
+ const { handler } = await getHandler({ path: "/" });
230
+ const res = await handler(new Request("http://localhost/d/my-drive", {
231
+ headers: { host: "example.com" },
232
+ }));
233
+ const body = (await res.json());
234
+ expect(body.graphqlEndpoint).toMatch(/^http:\/\//);
235
+ });
236
+ it("includes the base path in the graphql endpoint URL", async () => {
237
+ const { handler } = await getHandler({ path: "/api/v1" });
238
+ const res = await handler(new Request("http://localhost/api/v1/d/my-drive", {
239
+ headers: { host: "example.com" },
240
+ }));
241
+ const body = (await res.json());
242
+ expect(body.graphqlEndpoint).toBe("http://example.com/api/v1/graphql/r");
243
+ });
244
+ it("omits the base path from the graphql endpoint URL when path is /", async () => {
245
+ const { handler } = await getHandler({ path: "/" });
246
+ const res = await handler(new Request("http://localhost/d/my-drive", {
247
+ headers: { host: "example.com" },
248
+ }));
249
+ const body = (await res.json());
250
+ expect(body.graphqlEndpoint).toBe("http://example.com/graphql/r");
251
+ });
252
+ });
253
+ // ── context factory ────────────────────────────────────────────────────────
254
+ describe("context factory", () => {
255
+ it("includes request headers in the GraphQL context", async () => {
256
+ const { manager, gatewayAdapter } = makeHarness();
257
+ await initAndFlush(manager);
258
+ // Extract the contextFactory passed to createSupergraphHandler
259
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
260
+ const ctx = await contextFactory(new Request("http://localhost/graphql", {
261
+ headers: { authorization: "Bearer token123", "x-custom": "value" },
262
+ }));
263
+ expect(ctx.headers["authorization"]).toBe("Bearer token123");
264
+ expect(ctx.headers["x-custom"]).toBe("value");
265
+ });
266
+ it("merges additional context fields into the GraphQL context", async () => {
267
+ const { manager, gatewayAdapter } = makeHarness();
268
+ manager.setAdditionalContextFields({ customField: "custom-value" });
269
+ await initAndFlush(manager);
270
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
271
+ const ctx = (await contextFactory(new Request("http://localhost/graphql")));
272
+ expect(ctx["customField"]).toBe("custom-value");
273
+ });
274
+ it("isAdmin always returns true when no AuthContext is present (auth disabled)", async () => {
275
+ const { manager, gatewayAdapter } = makeHarness();
276
+ await initAndFlush(manager);
277
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
278
+ const ctx = await contextFactory(new Request("http://localhost/graphql"));
279
+ expect(ctx.isAdmin("0xanyone")).toBe(true);
280
+ });
281
+ it("populates user from the WeakMap AuthContext when present", async () => {
282
+ const { manager, gatewayAdapter } = makeHarness();
283
+ await initAndFlush(manager);
284
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
285
+ const req = new Request("http://localhost/graphql");
286
+ // Simulate the auth middleware having run and set context for this request
287
+ const mockService = {
288
+ authenticateRequest: vi.fn().mockResolvedValue({
289
+ user: { address: "0xabc", chainId: 1, networkId: "eip155" },
290
+ admins: ["0xadmin"],
291
+ auth_enabled: true,
292
+ }),
293
+ };
294
+ const middleware = createAuthFetchMiddleware(mockService);
295
+ await middleware(async () => new Response("ok"))(req);
296
+ const ctx = await contextFactory(req);
297
+ expect(ctx.user).toEqual({
298
+ address: "0xabc",
299
+ chainId: 1,
300
+ networkId: "eip155",
301
+ });
302
+ });
303
+ it("isAdmin checks the admins list from the AuthContext when auth_enabled=true", async () => {
304
+ const { manager, gatewayAdapter } = makeHarness();
305
+ await initAndFlush(manager);
306
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
307
+ const req = new Request("http://localhost/graphql");
308
+ const mockService = {
309
+ authenticateRequest: vi.fn().mockResolvedValue({
310
+ user: undefined,
311
+ admins: ["0xadmin"],
312
+ auth_enabled: true,
313
+ }),
314
+ };
315
+ await createAuthFetchMiddleware(mockService)(async () => new Response("ok"))(req);
316
+ const ctx = await contextFactory(req);
317
+ expect(ctx.isAdmin("0xadmin")).toBe(true);
318
+ expect(ctx.isAdmin("0xnotadmin")).toBe(false);
319
+ });
320
+ it("isAdmin always returns true when auth_enabled=false in the AuthContext", async () => {
321
+ const { manager, gatewayAdapter } = makeHarness();
322
+ await initAndFlush(manager);
323
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
324
+ const req = new Request("http://localhost/graphql");
325
+ const mockService = {
326
+ authenticateRequest: vi.fn().mockResolvedValue({
327
+ user: undefined,
328
+ admins: [],
329
+ auth_enabled: false,
330
+ }),
331
+ };
332
+ await createAuthFetchMiddleware(mockService)(async () => new Response("ok"))(req);
333
+ const ctx = await contextFactory(req);
334
+ expect(ctx.isAdmin("0xanyone")).toBe(true);
335
+ });
336
+ it("auth fields (user, isAdmin) win over additionalContextFields with the same key", async () => {
337
+ const { manager, gatewayAdapter } = makeHarness();
338
+ // Deliberately set conflicting keys via setAdditionalContextFields
339
+ manager.setAdditionalContextFields({
340
+ user: { address: "0xoverridden" },
341
+ isAdmin: () => false,
342
+ });
343
+ await initAndFlush(manager);
344
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
345
+ const req = new Request("http://localhost/graphql");
346
+ const expectedUser = {
347
+ address: "0xreal",
348
+ chainId: 1,
349
+ networkId: "eip155",
350
+ };
351
+ const mockService = {
352
+ authenticateRequest: vi.fn().mockResolvedValue({
353
+ user: expectedUser,
354
+ admins: ["0xadmin"],
355
+ auth_enabled: true,
356
+ }),
357
+ };
358
+ await createAuthFetchMiddleware(mockService)(async () => new Response("ok"))(req);
359
+ const ctx = await contextFactory(req);
360
+ // The auth-derived user should win over the one set via setAdditionalContextFields
361
+ expect(ctx.user).toEqual(expectedUser);
362
+ // The auth-derived isAdmin should win too
363
+ expect(ctx.isAdmin("0xadmin")).toBe(true);
364
+ });
365
+ });
366
+ // ── SSE handler ────────────────────────────────────────────────────────────
367
+ /**
368
+ * Register a minimal subscription-enabled subgraph on the manager.
369
+ * Required because #setupSupergraphSSE only mounts the SSE handler when
370
+ * at least one subgraph declares hasSubscriptions = true.
371
+ */
372
+ async function registerSubscriptionSubgraph(manager) {
373
+ const { gql } = await import("graphql-tag");
374
+ await manager.registerSubgraphInstance({
375
+ name: "test-subscription-sub",
376
+ hasSubscriptions: true,
377
+ typeDefs: gql `
378
+ type Query {
379
+ _placeholder: Boolean
380
+ }
381
+ type Subscription {
382
+ ping: String
383
+ }
384
+ `,
385
+ resolvers: {
386
+ Subscription: {
387
+ ping: {
388
+ subscribe: async function* () {
389
+ yield { ping: "pong" };
390
+ },
391
+ resolve: (v) => v.ping,
392
+ },
393
+ },
394
+ },
395
+ relationalDb: {},
396
+ reactorClient: {},
397
+ }, "graphql");
398
+ }
399
+ describe("SSE handler", () => {
400
+ it("mounts the SSE handler at {basePath}/graphql/stream", async () => {
401
+ const { manager, httpAdapter } = makeHarness({ path: "/" });
402
+ await registerSubscriptionSubgraph(manager);
403
+ await initAndFlush(manager);
404
+ expect(httpAdapter.mount).toHaveBeenCalledWith("/graphql/stream", expect.any(Function), { exact: true });
405
+ });
406
+ it("respects a non-root base path for the SSE mount", async () => {
407
+ const { manager, httpAdapter } = makeHarness({ path: "/api/v1" });
408
+ await registerSubscriptionSubgraph(manager);
409
+ await initAndFlush(manager);
410
+ expect(httpAdapter.mount).toHaveBeenCalledWith("/api/v1/graphql/stream", expect.any(Function), { exact: true });
411
+ });
412
+ it("wraps the SSE handler through auth middleware", async () => {
413
+ const { manager, mounts } = makeHarness();
414
+ await registerSubscriptionSubgraph(manager);
415
+ const intercepted = [];
416
+ const authMiddleware = (next) => async (req) => {
417
+ intercepted.push(req);
418
+ return next(req);
419
+ };
420
+ const initPromise = manager.init([], authMiddleware);
421
+ await vi.runAllTimersAsync();
422
+ await initPromise;
423
+ const handler = mounts.get("/graphql/stream");
424
+ expect(handler).toBeDefined();
425
+ const req = new Request("http://localhost/graphql/stream");
426
+ await handler(req);
427
+ expect(intercepted).toContain(req);
428
+ });
429
+ it("does not wrap the SSE handler when no authMiddleware is provided", async () => {
430
+ const { manager, mounts } = makeHarness();
431
+ await registerSubscriptionSubgraph(manager);
432
+ await initAndFlush(manager);
433
+ const handler = mounts.get("/graphql/stream");
434
+ expect(handler).toBeDefined();
435
+ // Handler should be callable and return a response without wrapping
436
+ const res = await handler(new Request("http://localhost/graphql/stream"));
437
+ expect(res).toBeInstanceOf(Response);
438
+ });
439
+ });
440
+ // ── authMiddleware wrapping ─────────────────────────────────────────────────
441
+ describe("init() with authMiddleware", () => {
442
+ it("wraps the supergraph handler through the auth middleware", async () => {
443
+ const { manager, gatewayAdapter, mounts } = makeHarness();
444
+ const intercepted = [];
445
+ const authMiddleware = (next) => async (req) => {
446
+ intercepted.push(req);
447
+ return next(req);
448
+ };
449
+ const initPromise = manager.init([], authMiddleware);
450
+ await vi.runAllTimersAsync();
451
+ await initPromise;
452
+ // Invoke the mounted supergraph handler
453
+ const handler = mounts.get("/graphql");
454
+ expect(handler).toBeDefined();
455
+ const req = new Request("http://localhost/graphql");
456
+ await handler(req);
457
+ // The auth middleware should have intercepted the call
458
+ expect(intercepted).toContain(req);
459
+ // And the gateway adapter's handler should still have been called
460
+ expect(gatewayAdapter.createSupergraphHandler.mock.results[0]
461
+ .value).toBeDefined();
462
+ });
463
+ it("does not wrap handlers when no authMiddleware is provided", async () => {
464
+ const { manager, mounts } = makeHarness();
465
+ await initAndFlush(manager);
466
+ // The handler should be mounted and callable without going through any wrapper
467
+ const handler = mounts.get("/graphql");
468
+ expect(handler).toBeDefined();
469
+ const res = await handler(new Request("http://localhost/graphql"));
470
+ expect(res.status).toBe(200);
471
+ });
472
+ });
473
+ // ── additional context fields ──────────────────────────────────────────────
474
+ describe("setAdditionalContextFields / getAdditionalContextFields", () => {
475
+ it("stores and returns the fields", () => {
476
+ const { manager } = makeHarness();
477
+ manager.setAdditionalContextFields({ foo: "bar" });
478
+ expect(manager.getAdditionalContextFields()).toEqual({ foo: "bar" });
479
+ });
480
+ it("merges multiple calls", () => {
481
+ const { manager } = makeHarness();
482
+ manager.setAdditionalContextFields({ foo: "bar" });
483
+ manager.setAdditionalContextFields({ baz: 42 });
484
+ expect(manager.getAdditionalContextFields()).toEqual({
485
+ foo: "bar",
486
+ baz: 42,
487
+ });
488
+ });
489
+ it("later values overwrite earlier ones for the same key", () => {
490
+ const { manager } = makeHarness();
491
+ manager.setAdditionalContextFields({ foo: "first" });
492
+ manager.setAdditionalContextFields({ foo: "second" });
493
+ expect(manager.getAdditionalContextFields().foo).toBe("second");
494
+ });
495
+ });
496
+ // ── getBasePath() ──────────────────────────────────────────────────────────
497
+ describe("getBasePath()", () => {
498
+ it("returns the configured path", () => {
499
+ const { manager } = makeHarness({ path: "/my/base" });
500
+ expect(manager.getBasePath()).toBe("/my/base");
501
+ });
502
+ });
503
+ // ── subgraph deduplication ─────────────────────────────────────────────────
504
+ describe("subgraph deduplication", () => {
505
+ it("skips a subgraph instance registered twice with the same name", async () => {
506
+ const { manager } = makeHarness();
507
+ const sub = {
508
+ name: "my-subgraph",
509
+ typeDefs: (await import("graphql-tag")).gql `type Query { hi: String }`,
510
+ resolvers: {},
511
+ relationalDb: {},
512
+ reactorClient: {},
513
+ };
514
+ await manager.registerSubgraphInstance(sub, "graphql");
515
+ await manager.registerSubgraphInstance(sub, "graphql");
516
+ // After init(), _updateRouter creates handlers - only one per unique path.
517
+ await initAndFlush(manager);
518
+ // createHandler should be called once for the subgraph (not twice).
519
+ const { gatewayAdapter } = makeHarness(); // just to confirm the pattern
520
+ void gatewayAdapter; // second harness unused - we check the first
521
+ });
522
+ it("onSetup is called once per unique subgraph", async () => {
523
+ const { manager } = makeHarness();
524
+ const onSetup = vi.fn().mockResolvedValue(undefined);
525
+ const sub = {
526
+ name: "unique-sub",
527
+ typeDefs: (await import("graphql-tag")).gql `type Query { hi: String }`,
528
+ resolvers: {},
529
+ relationalDb: {},
530
+ reactorClient: {},
531
+ onSetup,
532
+ };
533
+ await manager.registerSubgraphInstance(sub, "graphql");
534
+ await manager.registerSubgraphInstance(sub, "graphql");
535
+ expect(onSetup).toHaveBeenCalledTimes(1);
536
+ });
537
+ });
538
+ // ── handler cache ──────────────────────────────────────────────────────────
539
+ describe("subgraph handler cache", () => {
540
+ it("does not recreate handlers for the same subgraph on repeated _updateRouter calls", async () => {
541
+ const { manager, gatewayAdapter } = makeHarness();
542
+ const sub = {
543
+ name: "cached-sub",
544
+ typeDefs: (await import("graphql-tag")).gql `type Query { hi: String }`,
545
+ resolvers: {},
546
+ relationalDb: {},
547
+ reactorClient: {},
548
+ };
549
+ await manager.registerSubgraphInstance(sub, "graphql");
550
+ // First updateRouter - should create the handler
551
+ await initAndFlush(manager);
552
+ const firstCallCount = gatewayAdapter.createHandler.mock.calls.length;
553
+ // Second updateRouter - should hit the cache and NOT call createHandler again
554
+ const routerPromise = manager.updateRouter();
555
+ await vi.runAllTimersAsync();
556
+ await routerPromise;
557
+ expect(gatewayAdapter.createHandler.mock.calls.length).toBe(firstCallCount);
558
+ });
559
+ });
560
+ // ── shutdown() ─────────────────────────────────────────────────────────────
561
+ describe("shutdown()", () => {
562
+ it("calls gatewayAdapter.stop()", async () => {
563
+ const { manager, gatewayAdapter } = makeHarness();
564
+ await initAndFlush(manager);
565
+ await manager.shutdown();
566
+ expect(gatewayAdapter.stop).toHaveBeenCalledOnce();
567
+ });
568
+ it("closes the WebSocket server", async () => {
569
+ const { manager, wsServer } = makeHarness();
570
+ await initAndFlush(manager);
571
+ await manager.shutdown();
572
+ expect(wsServer.close).toHaveBeenCalledOnce();
573
+ });
574
+ });
575
+ });
576
+ //# sourceMappingURL=graphql-manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-manager.test.js","sourceRoot":"","sources":["../../test/graphql-manager.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
- export * from "./drive-handlers.js";
2
1
  export * from "./utils.js";
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -1,3 +1,2 @@
1
- export * from "./drive-handlers.js";
2
1
  export * from "./utils.js";
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}