@powerhousedao/reactor-api 6.0.0-dev.11 → 6.0.0-dev.111

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 (352) 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 -2
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +4 -2
  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-http-express.d.ts +23 -0
  38. package/dist/src/graphql/gateway/adapter-http-express.d.ts.map +1 -0
  39. package/dist/src/graphql/gateway/adapter-http-express.js +155 -0
  40. package/dist/src/graphql/gateway/adapter-http-express.js.map +1 -0
  41. package/dist/src/graphql/gateway/auth-middleware.d.ts +7 -0
  42. package/dist/src/graphql/gateway/auth-middleware.d.ts.map +1 -0
  43. package/dist/src/graphql/gateway/auth-middleware.js +15 -0
  44. package/dist/src/graphql/gateway/auth-middleware.js.map +1 -0
  45. package/dist/src/graphql/gateway/factory.d.ts +11 -0
  46. package/dist/src/graphql/gateway/factory.d.ts.map +1 -0
  47. package/dist/src/graphql/gateway/factory.js +15 -0
  48. package/dist/src/graphql/gateway/factory.js.map +1 -0
  49. package/dist/src/graphql/gateway/types.d.ts +84 -0
  50. package/dist/src/graphql/gateway/types.d.ts.map +1 -0
  51. package/dist/src/{sync → graphql/gateway}/types.js.map +1 -1
  52. package/dist/src/graphql/graphql-manager.d.ts +31 -12
  53. package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
  54. package/dist/src/graphql/graphql-manager.js +284 -228
  55. package/dist/src/graphql/graphql-manager.js.map +1 -1
  56. package/dist/src/graphql/index.d.ts +5 -1
  57. package/dist/src/graphql/index.d.ts.map +1 -1
  58. package/dist/src/graphql/index.js +5 -1
  59. package/dist/src/graphql/index.js.map +1 -1
  60. package/dist/src/graphql/packages/index.d.ts +2 -0
  61. package/dist/src/graphql/packages/index.d.ts.map +1 -0
  62. package/dist/src/graphql/packages/index.js +2 -0
  63. package/dist/src/graphql/packages/index.js.map +1 -0
  64. package/dist/src/graphql/packages/resolvers.d.ts +31 -0
  65. package/dist/src/graphql/packages/resolvers.d.ts.map +1 -0
  66. package/dist/src/graphql/packages/resolvers.js +37 -0
  67. package/dist/src/graphql/packages/resolvers.js.map +1 -0
  68. package/dist/src/graphql/packages/schema.graphql +50 -0
  69. package/dist/src/graphql/packages/subgraph.d.ts +55 -0
  70. package/dist/src/graphql/packages/subgraph.d.ts.map +1 -0
  71. package/dist/src/graphql/packages/subgraph.js +73 -0
  72. package/dist/src/graphql/packages/subgraph.js.map +1 -0
  73. package/dist/src/graphql/playground.d.ts.map +1 -1
  74. package/dist/src/graphql/playground.js +19 -12
  75. package/dist/src/graphql/playground.js.map +1 -1
  76. package/dist/src/graphql/reactor/adapters.d.ts +10 -2
  77. package/dist/src/graphql/reactor/adapters.d.ts.map +1 -1
  78. package/dist/src/graphql/reactor/adapters.js +36 -1
  79. package/dist/src/graphql/reactor/adapters.js.map +1 -1
  80. package/dist/src/graphql/reactor/factory.d.ts +22 -1
  81. package/dist/src/graphql/reactor/factory.d.ts.map +1 -1
  82. package/dist/src/graphql/reactor/factory.js +1 -1
  83. package/dist/src/graphql/reactor/factory.js.map +1 -1
  84. package/dist/src/graphql/reactor/gen/graphql.d.ts +355 -76
  85. package/dist/src/graphql/reactor/gen/graphql.d.ts.map +1 -1
  86. package/dist/src/graphql/reactor/gen/graphql.js +245 -10
  87. package/dist/src/graphql/reactor/gen/graphql.js.map +1 -1
  88. package/dist/src/graphql/reactor/index.d.ts +1 -1
  89. package/dist/src/graphql/reactor/index.d.ts.map +1 -1
  90. package/dist/src/graphql/reactor/index.js +1 -1
  91. package/dist/src/graphql/reactor/index.js.map +1 -1
  92. package/dist/src/graphql/reactor/operations.graphql +191 -1
  93. package/dist/src/graphql/reactor/requester.with-zod.d.ts.map +1 -1
  94. package/dist/src/graphql/reactor/requester.with-zod.js +114 -38
  95. package/dist/src/graphql/reactor/requester.with-zod.js.map +1 -1
  96. package/dist/src/graphql/reactor/resolvers.d.ts +90 -26
  97. package/dist/src/graphql/reactor/resolvers.d.ts.map +1 -1
  98. package/dist/src/graphql/reactor/resolvers.js +275 -77
  99. package/dist/src/graphql/reactor/resolvers.js.map +1 -1
  100. package/dist/src/graphql/reactor/schema.graphql +76 -30
  101. package/dist/src/graphql/reactor/subgraph.d.ts +2 -31
  102. package/dist/src/graphql/reactor/subgraph.d.ts.map +1 -1
  103. package/dist/src/graphql/reactor/subgraph.js +133 -210
  104. package/dist/src/graphql/reactor/subgraph.js.map +1 -1
  105. package/dist/src/graphql/reactor/validation.d.ts +266 -20
  106. package/dist/src/graphql/reactor/validation.d.ts.map +1 -1
  107. package/dist/src/graphql/reactor/validation.js +98 -4
  108. package/dist/src/graphql/reactor/validation.js.map +1 -1
  109. package/dist/src/graphql/sse.d.ts +42 -0
  110. package/dist/src/graphql/sse.d.ts.map +1 -0
  111. package/dist/src/graphql/sse.js +33 -0
  112. package/dist/src/graphql/sse.js.map +1 -0
  113. package/dist/src/graphql/system/index.d.ts +0 -1
  114. package/dist/src/graphql/system/index.d.ts.map +1 -1
  115. package/dist/src/graphql/system/index.js +0 -1
  116. package/dist/src/graphql/system/index.js.map +1 -1
  117. package/dist/src/graphql/types.d.ts +7 -8
  118. package/dist/src/graphql/types.d.ts.map +1 -1
  119. package/dist/src/graphql/utils.d.ts +3 -20
  120. package/dist/src/graphql/utils.d.ts.map +1 -1
  121. package/dist/src/graphql/utils.js +7 -35
  122. package/dist/src/graphql/utils.js.map +1 -1
  123. package/dist/src/migrations/002_add_document_protection.d.ts +4 -0
  124. package/dist/src/migrations/002_add_document_protection.d.ts.map +1 -0
  125. package/dist/src/migrations/002_add_document_protection.js +18 -0
  126. package/dist/src/migrations/002_add_document_protection.js.map +1 -0
  127. package/dist/src/migrations/index.d.ts.map +1 -1
  128. package/dist/src/migrations/index.js +2 -0
  129. package/dist/src/migrations/index.js.map +1 -1
  130. package/dist/src/packages/http-loader.d.ts +68 -0
  131. package/dist/src/packages/http-loader.d.ts.map +1 -0
  132. package/dist/src/packages/http-loader.js +176 -0
  133. package/dist/src/packages/http-loader.js.map +1 -0
  134. package/dist/src/packages/https-hooks.d.mts +37 -0
  135. package/dist/src/packages/https-hooks.d.mts.map +1 -0
  136. package/dist/src/packages/https-hooks.mjs +88 -0
  137. package/dist/src/packages/https-hooks.mjs.map +1 -0
  138. package/dist/src/packages/import-loader.d.ts +3 -4
  139. package/dist/src/packages/import-loader.d.ts.map +1 -1
  140. package/dist/src/packages/import-loader.js +6 -12
  141. package/dist/src/packages/import-loader.js.map +1 -1
  142. package/dist/src/packages/package-manager.d.ts +3 -4
  143. package/dist/src/packages/package-manager.d.ts.map +1 -1
  144. package/dist/src/packages/package-manager.js +2 -2
  145. package/dist/src/packages/package-manager.js.map +1 -1
  146. package/dist/src/packages/types.d.ts +9 -6
  147. package/dist/src/packages/types.d.ts.map +1 -1
  148. package/dist/src/packages/util.d.ts +4 -4
  149. package/dist/src/packages/util.d.ts.map +1 -1
  150. package/dist/src/packages/util.js +2 -2
  151. package/dist/src/packages/util.js.map +1 -1
  152. package/dist/src/packages/vite-loader.d.ts +8 -7
  153. package/dist/src/packages/vite-loader.d.ts.map +1 -1
  154. package/dist/src/packages/vite-loader.js +20 -8
  155. package/dist/src/packages/vite-loader.js.map +1 -1
  156. package/dist/src/server.d.ts +15 -28
  157. package/dist/src/server.d.ts.map +1 -1
  158. package/dist/src/server.js +137 -167
  159. package/dist/src/server.js.map +1 -1
  160. package/dist/src/services/auth.service.d.ts +11 -15
  161. package/dist/src/services/auth.service.d.ts.map +1 -1
  162. package/dist/src/services/auth.service.js +61 -40
  163. package/dist/src/services/auth.service.js.map +1 -1
  164. package/dist/src/services/authorization.service.d.ts +70 -0
  165. package/dist/src/services/authorization.service.d.ts.map +1 -0
  166. package/dist/src/services/authorization.service.js +155 -0
  167. package/dist/src/services/authorization.service.js.map +1 -0
  168. package/dist/src/services/document-permission.service.d.ts +47 -7
  169. package/dist/src/services/document-permission.service.d.ts.map +1 -1
  170. package/dist/src/services/document-permission.service.js +162 -7
  171. package/dist/src/services/document-permission.service.js.map +1 -1
  172. package/dist/src/services/package-management.service.d.ts +32 -0
  173. package/dist/src/services/package-management.service.d.ts.map +1 -0
  174. package/dist/src/services/package-management.service.js +95 -0
  175. package/dist/src/services/package-management.service.js.map +1 -0
  176. package/dist/src/services/package-storage.d.ts +23 -0
  177. package/dist/src/services/package-storage.d.ts.map +1 -0
  178. package/dist/src/services/package-storage.js +19 -0
  179. package/dist/src/services/package-storage.js.map +1 -0
  180. package/dist/src/tracing.d.ts.map +1 -1
  181. package/dist/src/tracing.js +19 -1
  182. package/dist/src/tracing.js.map +1 -1
  183. package/dist/src/types.d.ts +14 -6
  184. package/dist/src/types.d.ts.map +1 -1
  185. package/dist/src/utils/create-schema.d.ts +31 -6
  186. package/dist/src/utils/create-schema.d.ts.map +1 -1
  187. package/dist/src/utils/create-schema.js +451 -43
  188. package/dist/src/utils/create-schema.js.map +1 -1
  189. package/dist/src/utils/db.d.ts +8 -0
  190. package/dist/src/utils/db.d.ts.map +1 -1
  191. package/dist/src/utils/db.js.map +1 -1
  192. package/dist/src/utils/drive-url.d.ts +2 -0
  193. package/dist/src/utils/drive-url.d.ts.map +1 -0
  194. package/dist/src/utils/drive-url.js +3 -0
  195. package/dist/src/utils/drive-url.js.map +1 -0
  196. package/dist/src/utils/index.d.ts +1 -0
  197. package/dist/src/utils/index.d.ts.map +1 -1
  198. package/dist/src/utils/index.js +1 -0
  199. package/dist/src/utils/index.js.map +1 -1
  200. package/dist/test/auth.service.test.d.ts +10 -0
  201. package/dist/test/auth.service.test.d.ts.map +1 -0
  202. package/dist/test/auth.service.test.js +141 -0
  203. package/dist/test/auth.service.test.js.map +1 -0
  204. package/dist/test/authorization.service.test.d.ts +2 -0
  205. package/dist/test/authorization.service.test.d.ts.map +1 -0
  206. package/dist/test/authorization.service.test.js +252 -0
  207. package/dist/test/authorization.service.test.js.map +1 -0
  208. package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts +2 -0
  209. package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts.map +1 -0
  210. package/dist/test/connect-switchboard-reshuffle-convergence.test.js +204 -0
  211. package/dist/test/connect-switchboard-reshuffle-convergence.test.js.map +1 -0
  212. package/dist/test/connect-switchboard-sync.test.d.ts +2 -0
  213. package/dist/test/connect-switchboard-sync.test.d.ts.map +1 -0
  214. package/dist/test/connect-switchboard-sync.test.js +582 -0
  215. package/dist/test/connect-switchboard-sync.test.js.map +1 -0
  216. package/dist/test/document-drive-subgraph.test.d.ts +2 -0
  217. package/dist/test/document-drive-subgraph.test.d.ts.map +1 -0
  218. package/dist/test/document-drive-subgraph.test.js +244 -0
  219. package/dist/test/document-drive-subgraph.test.js.map +1 -0
  220. package/dist/test/document-model-subgraph-permissions.test.d.ts +2 -0
  221. package/dist/test/document-model-subgraph-permissions.test.d.ts.map +1 -0
  222. package/dist/test/document-model-subgraph-permissions.test.js +587 -0
  223. package/dist/test/document-model-subgraph-permissions.test.js.map +1 -0
  224. package/dist/test/drive-info-endpoint.test.d.ts +2 -0
  225. package/dist/test/drive-info-endpoint.test.d.ts.map +1 -0
  226. package/dist/test/drive-info-endpoint.test.js +123 -0
  227. package/dist/test/drive-info-endpoint.test.js.map +1 -0
  228. package/dist/test/fault-injection-sync.test.d.ts +2 -0
  229. package/dist/test/fault-injection-sync.test.d.ts.map +1 -0
  230. package/dist/test/fault-injection-sync.test.js +197 -0
  231. package/dist/test/fault-injection-sync.test.js.map +1 -0
  232. package/dist/test/gateway/adapter-gateway-apollo.test.d.ts +2 -0
  233. package/dist/test/gateway/adapter-gateway-apollo.test.d.ts.map +1 -0
  234. package/dist/test/gateway/adapter-gateway-apollo.test.js +206 -0
  235. package/dist/test/gateway/adapter-gateway-apollo.test.js.map +1 -0
  236. package/dist/test/gateway/adapter-http-express.test.d.ts +2 -0
  237. package/dist/test/gateway/adapter-http-express.test.d.ts.map +1 -0
  238. package/dist/test/gateway/adapter-http-express.test.js +17 -0
  239. package/dist/test/gateway/adapter-http-express.test.js.map +1 -0
  240. package/dist/test/gateway/auth-middleware.test.d.ts +8 -0
  241. package/dist/test/gateway/auth-middleware.test.d.ts.map +1 -0
  242. package/dist/test/gateway/auth-middleware.test.js +73 -0
  243. package/dist/test/gateway/auth-middleware.test.js.map +1 -0
  244. package/dist/test/gateway/gateway-adapter-contract.d.ts +30 -0
  245. package/dist/test/gateway/gateway-adapter-contract.d.ts.map +1 -0
  246. package/dist/test/gateway/gateway-adapter-contract.js +347 -0
  247. package/dist/test/gateway/gateway-adapter-contract.js.map +1 -0
  248. package/dist/test/gateway/http-adapter-contract.d.ts +30 -0
  249. package/dist/test/gateway/http-adapter-contract.d.ts.map +1 -0
  250. package/dist/test/gateway/http-adapter-contract.js +226 -0
  251. package/dist/test/gateway/http-adapter-contract.js.map +1 -0
  252. package/dist/test/graphql-manager.test.d.ts +12 -0
  253. package/dist/test/graphql-manager.test.d.ts.map +1 -0
  254. package/dist/test/graphql-manager.test.js +488 -0
  255. package/dist/test/graphql-manager.test.js.map +1 -0
  256. package/dist/test/index.d.ts +0 -1
  257. package/dist/test/index.d.ts.map +1 -1
  258. package/dist/test/index.js +0 -1
  259. package/dist/test/index.js.map +1 -1
  260. package/dist/test/permissions-integration.test.js +6 -20
  261. package/dist/test/permissions-integration.test.js.map +1 -1
  262. package/dist/test/push-backfill.test.d.ts +2 -0
  263. package/dist/test/push-backfill.test.d.ts.map +1 -0
  264. package/dist/test/push-backfill.test.js +299 -0
  265. package/dist/test/push-backfill.test.js.map +1 -0
  266. package/dist/test/reactor-adapters.test.js +3 -2
  267. package/dist/test/reactor-adapters.test.js.map +1 -1
  268. package/dist/test/reactor-client.test.js +172 -13
  269. package/dist/test/reactor-client.test.js.map +1 -1
  270. package/dist/test/reactor-resolvers.test.js +11 -13
  271. package/dist/test/reactor-resolvers.test.js.map +1 -1
  272. package/dist/test/reactor-subgraph-permissions.test.js +7 -36
  273. package/dist/test/reactor-subgraph-permissions.test.js.map +1 -1
  274. package/dist/test/subscriptions-sse.test.d.ts +2 -0
  275. package/dist/test/subscriptions-sse.test.d.ts.map +1 -0
  276. package/dist/test/subscriptions-sse.test.js +264 -0
  277. package/dist/test/subscriptions-sse.test.js.map +1 -0
  278. package/dist/test/subscriptions.test.js +2 -0
  279. package/dist/test/subscriptions.test.js.map +1 -1
  280. package/dist/test/utils/gql-resolver-bridge.d.ts +4 -1
  281. package/dist/test/utils/gql-resolver-bridge.d.ts.map +1 -1
  282. package/dist/test/utils/gql-resolver-bridge.js +36 -7
  283. package/dist/test/utils/gql-resolver-bridge.js.map +1 -1
  284. package/dist/test/utils.d.ts +1 -5
  285. package/dist/test/utils.d.ts.map +1 -1
  286. package/dist/test/utils.js +0 -10
  287. package/dist/test/utils.js.map +1 -1
  288. package/dist/tsconfig.tsbuildinfo +1 -1
  289. package/package.json +52 -58
  290. package/dist/src/graphql/drive-subgraph.d.ts +0 -25
  291. package/dist/src/graphql/drive-subgraph.d.ts.map +0 -1
  292. package/dist/src/graphql/drive-subgraph.js +0 -487
  293. package/dist/src/graphql/drive-subgraph.js.map +0 -1
  294. package/dist/src/graphql/system/system-subgraph.d.ts +0 -49
  295. package/dist/src/graphql/system/system-subgraph.d.ts.map +0 -1
  296. package/dist/src/graphql/system/system-subgraph.js +0 -130
  297. package/dist/src/graphql/system/system-subgraph.js.map +0 -1
  298. package/dist/src/sync/types.d.ts +0 -10
  299. package/dist/src/sync/types.d.ts.map +0 -1
  300. package/dist/src/sync/utils.d.ts +0 -7
  301. package/dist/src/sync/utils.d.ts.map +0 -1
  302. package/dist/src/sync/utils.js +0 -78
  303. package/dist/src/sync/utils.js.map +0 -1
  304. package/dist/src/utils/auth.d.ts +0 -3
  305. package/dist/src/utils/auth.d.ts.map +0 -1
  306. package/dist/src/utils/auth.js +0 -19
  307. package/dist/src/utils/auth.js.map +0 -1
  308. package/dist/test/benchmarks/load.bench.d.ts +0 -2
  309. package/dist/test/benchmarks/load.bench.d.ts.map +0 -1
  310. package/dist/test/benchmarks/load.bench.js +0 -73
  311. package/dist/test/benchmarks/load.bench.js.map +0 -1
  312. package/dist/test/benchmarks/sync.bench.d.ts +0 -2
  313. package/dist/test/benchmarks/sync.bench.d.ts.map +0 -1
  314. package/dist/test/benchmarks/sync.bench.js +0 -119
  315. package/dist/test/benchmarks/sync.bench.js.map +0 -1
  316. package/dist/test/drive-handlers.d.ts +0 -4
  317. package/dist/test/drive-handlers.d.ts.map +0 -1
  318. package/dist/test/drive-handlers.js +0 -39
  319. package/dist/test/drive-handlers.js.map +0 -1
  320. package/dist/test/drive-subgraph-permissions.test.d.ts +0 -2
  321. package/dist/test/drive-subgraph-permissions.test.d.ts.map +0 -1
  322. package/dist/test/drive-subgraph-permissions.test.js +0 -195
  323. package/dist/test/drive-subgraph-permissions.test.js.map +0 -1
  324. package/dist/test/drive.test.d.ts +0 -2
  325. package/dist/test/drive.test.d.ts.map +0 -1
  326. package/dist/test/drive.test.js +0 -142
  327. package/dist/test/drive.test.js.map +0 -1
  328. package/dist/test/identity-integration.test.d.ts +0 -2
  329. package/dist/test/identity-integration.test.d.ts.map +0 -1
  330. package/dist/test/identity-integration.test.js +0 -349
  331. package/dist/test/identity-integration.test.js.map +0 -1
  332. package/dist/test/pull-responder-transmitter.test.d.ts +0 -2
  333. package/dist/test/pull-responder-transmitter.test.d.ts.map +0 -1
  334. package/dist/test/pull-responder-transmitter.test.js +0 -220
  335. package/dist/test/pull-responder-transmitter.test.js.map +0 -1
  336. package/dist/test/push-transmitter.test.d.ts +0 -2
  337. package/dist/test/push-transmitter.test.d.ts.map +0 -1
  338. package/dist/test/push-transmitter.test.js +0 -179
  339. package/dist/test/push-transmitter.test.js.map +0 -1
  340. package/dist/test/system.test.d.ts +0 -2
  341. package/dist/test/system.test.d.ts.map +0 -1
  342. package/dist/test/system.test.js +0 -211
  343. package/dist/test/system.test.js.map +0 -1
  344. package/dist/test/three-reactor-gql-sync.test.d.ts +0 -2
  345. package/dist/test/three-reactor-gql-sync.test.d.ts.map +0 -1
  346. package/dist/test/three-reactor-gql-sync.test.js +0 -368
  347. package/dist/test/three-reactor-gql-sync.test.js.map +0 -1
  348. package/dist/test/two-reactor-gql-sync.test.d.ts +0 -2
  349. package/dist/test/two-reactor-gql-sync.test.d.ts.map +0 -1
  350. package/dist/test/two-reactor-gql-sync.test.js +0 -348
  351. package/dist/test/two-reactor-gql-sync.test.js.map +0 -1
  352. /package/dist/src/{sync → graphql/gateway}/types.js +0 -0
@@ -0,0 +1,488 @@
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: [{ version: 1, modules: [] }],
33
+ },
34
+ },
35
+ };
36
+ }
37
+ function makeMockReactorClient(overrides = {}) {
38
+ return {
39
+ getDocumentModelModules: vi
40
+ .fn()
41
+ .mockResolvedValue({ results: [makeDriveModule()] }),
42
+ get: vi.fn().mockResolvedValue({
43
+ header: { id: "drive-1", slug: "my-drive", meta: {} },
44
+ state: { global: { name: "Test Drive", icon: null } },
45
+ }),
46
+ ...overrides,
47
+ };
48
+ }
49
+ function makeMockGatewayAdapter() {
50
+ return {
51
+ start: vi.fn().mockResolvedValue(undefined),
52
+ createHandler: vi
53
+ .fn()
54
+ .mockResolvedValue(async () => new Response("handler ok")),
55
+ createSupergraphHandler: vi
56
+ .fn()
57
+ .mockResolvedValue(async () => new Response("supergraph ok")),
58
+ updateSupergraph: vi.fn().mockResolvedValue(undefined),
59
+ attachWebSocket: vi
60
+ .fn()
61
+ .mockReturnValue({ dispose: vi.fn() }),
62
+ stop: vi.fn().mockResolvedValue(undefined),
63
+ };
64
+ }
65
+ function makeMockHttpAdapter() {
66
+ const mounts = new Map();
67
+ const adapter = {
68
+ setupMiddleware: vi.fn(),
69
+ mount: vi.fn((p, h) => {
70
+ mounts.set(p, h);
71
+ }),
72
+ getRoute: vi.fn(),
73
+ mountRawMiddleware: vi.fn(),
74
+ listen: vi.fn().mockResolvedValue({}),
75
+ handle: {},
76
+ };
77
+ return { adapter, mounts };
78
+ }
79
+ function makeHarness(options = {}) {
80
+ const { adapter: httpAdapter, mounts } = makeMockHttpAdapter();
81
+ const gatewayAdapter = makeMockGatewayAdapter();
82
+ const reactorClient = options.reactorClient ?? makeMockReactorClient();
83
+ const httpServer = {};
84
+ const wsServer = {
85
+ close: vi.fn((cb) => cb?.()),
86
+ };
87
+ const manager = new GraphQLManager(options.path ?? "/", httpServer, wsServer, reactorClient, {}, {}, {}, silentLogger, httpAdapter, gatewayAdapter, undefined, // authConfig
88
+ undefined, // documentPermissionService
89
+ {
90
+ enableDocumentModelSubgraphs: options.enableDocumentModelSubgraphs ?? false,
91
+ }, 4001, undefined);
92
+ return {
93
+ manager,
94
+ httpAdapter,
95
+ mounts,
96
+ gatewayAdapter,
97
+ reactorClient,
98
+ httpServer,
99
+ wsServer,
100
+ };
101
+ }
102
+ /** Run init() to completion, flushing the debounced updateRouter() call. */
103
+ async function initAndFlush(manager, coreSubgraphs = []) {
104
+ const initPromise = manager.init(coreSubgraphs);
105
+ await vi.runAllTimersAsync();
106
+ await initPromise;
107
+ }
108
+ // ── tests ────────────────────────────────────────────────────────────────────
109
+ describe("GraphQLManager", () => {
110
+ beforeEach(() => {
111
+ vi.useFakeTimers();
112
+ });
113
+ afterEach(() => {
114
+ vi.useRealTimers();
115
+ vi.clearAllMocks();
116
+ });
117
+ // ── init() ─────────────────────────────────────────────────────────────────
118
+ describe("init()", () => {
119
+ it("throws when the DocumentDrive model is missing", async () => {
120
+ const reactorClient = makeMockReactorClient({
121
+ getDocumentModelModules: vi.fn().mockResolvedValue({ results: [] }),
122
+ });
123
+ const { manager } = makeHarness({ reactorClient });
124
+ await expect(manager.init([])).rejects.toThrow("DocumentDrive model required");
125
+ });
126
+ it("starts the gateway adapter with the http server", async () => {
127
+ const { manager, gatewayAdapter, httpServer } = makeHarness();
128
+ await initAndFlush(manager);
129
+ expect(gatewayAdapter.start).toHaveBeenCalledOnce();
130
+ expect(gatewayAdapter.start).toHaveBeenCalledWith(httpServer);
131
+ });
132
+ it("sets up middleware on the http adapter", async () => {
133
+ const { manager, httpAdapter } = makeHarness();
134
+ await initAndFlush(manager);
135
+ expect(httpAdapter.setupMiddleware).toHaveBeenCalledOnce();
136
+ expect(httpAdapter.setupMiddleware).toHaveBeenCalledWith({
137
+ bodyLimit: "50mb",
138
+ });
139
+ });
140
+ it("mounts the drive info endpoint at {path}/d/:drive", async () => {
141
+ const { manager, httpAdapter } = makeHarness({ path: "/" });
142
+ await initAndFlush(manager);
143
+ expect(httpAdapter.mount).toHaveBeenCalledWith("/d/:drive", expect.any(Function));
144
+ });
145
+ it("mounts the supergraph at {path}/graphql", async () => {
146
+ const { manager, httpAdapter } = makeHarness({ path: "/" });
147
+ await initAndFlush(manager);
148
+ expect(httpAdapter.mount).toHaveBeenCalledWith("/graphql", expect.any(Function));
149
+ });
150
+ it("respects a non-root base path for mounted routes", async () => {
151
+ const { manager, httpAdapter } = makeHarness({ path: "/api/v1" });
152
+ await initAndFlush(manager);
153
+ expect(httpAdapter.mount).toHaveBeenCalledWith("/api/v1/d/:drive", expect.any(Function));
154
+ expect(httpAdapter.mount).toHaveBeenCalledWith("/api/v1/graphql", expect.any(Function));
155
+ });
156
+ it("calls createSupergraphHandler on the gateway adapter", async () => {
157
+ const { manager, gatewayAdapter, httpServer } = makeHarness();
158
+ await initAndFlush(manager);
159
+ expect(gatewayAdapter.createSupergraphHandler).toHaveBeenCalledOnce();
160
+ const [getSubgraphs, passedServer, contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
161
+ expect(typeof getSubgraphs).toBe("function");
162
+ expect(passedServer).toBe(httpServer);
163
+ expect(typeof contextFactory).toBe("function");
164
+ });
165
+ });
166
+ // ── drive info endpoint ────────────────────────────────────────────────────
167
+ describe("drive info endpoint", () => {
168
+ async function getHandler(options = {}) {
169
+ const harness = makeHarness(options);
170
+ await initAndFlush(harness.manager);
171
+ const drivePath = (options.path === "/" || !options.path ? "" : options.path) +
172
+ "/d/:drive";
173
+ const handler = harness.mounts.get(drivePath);
174
+ if (!handler)
175
+ throw new Error(`No handler mounted at ${drivePath}`);
176
+ return { handler, ...harness };
177
+ }
178
+ it("returns 404 when the drive is not found", async () => {
179
+ const { handler } = await getHandler({
180
+ reactorClient: makeMockReactorClient({
181
+ get: vi.fn().mockRejectedValue(new Error("not found")),
182
+ }),
183
+ });
184
+ const res = await handler(new Request("http://localhost/d/unknown-drive"));
185
+ expect(res.status).toBe(404);
186
+ const body = (await res.json());
187
+ expect(body.error).toBe("Drive not found");
188
+ });
189
+ it("returns 200 with drive info JSON when the drive exists", async () => {
190
+ const { handler } = await getHandler();
191
+ const res = await handler(new Request("http://localhost/d/my-drive", {
192
+ headers: { host: "localhost" },
193
+ }));
194
+ expect(res.status).toBe(200);
195
+ const body = (await res.json());
196
+ expect(typeof body.graphqlEndpoint).toBe("string");
197
+ });
198
+ it("passes the drive ID from the URL to the reactor client", async () => {
199
+ const { handler, reactorClient } = await getHandler();
200
+ await handler(new Request("http://localhost/d/drive-abc-123"));
201
+ expect(reactorClient.get).toHaveBeenCalledWith("drive-abc-123");
202
+ });
203
+ it("uses x-forwarded-proto when present", async () => {
204
+ const { handler } = await getHandler({ path: "/" });
205
+ const res = await handler(new Request("http://localhost/d/my-drive", {
206
+ headers: {
207
+ host: "example.com",
208
+ "x-forwarded-proto": "https",
209
+ },
210
+ }));
211
+ const body = (await res.json());
212
+ expect(body.graphqlEndpoint).toMatch(/^https:\/\//);
213
+ });
214
+ it("falls back to the URL protocol when x-forwarded-proto is absent", async () => {
215
+ const { handler } = await getHandler({ path: "/" });
216
+ const res = await handler(new Request("http://localhost/d/my-drive", {
217
+ headers: { host: "example.com" },
218
+ }));
219
+ const body = (await res.json());
220
+ expect(body.graphqlEndpoint).toMatch(/^http:\/\//);
221
+ });
222
+ it("includes the base path in the graphql endpoint URL", async () => {
223
+ const { handler } = await getHandler({ path: "/api/v1" });
224
+ const res = await handler(new Request("http://localhost/api/v1/d/my-drive", {
225
+ headers: { host: "example.com" },
226
+ }));
227
+ const body = (await res.json());
228
+ expect(body.graphqlEndpoint).toBe("http://example.com/api/v1/graphql/r");
229
+ });
230
+ it("omits the base path from the graphql endpoint URL when path is /", async () => {
231
+ const { handler } = await getHandler({ path: "/" });
232
+ const res = await handler(new Request("http://localhost/d/my-drive", {
233
+ headers: { host: "example.com" },
234
+ }));
235
+ const body = (await res.json());
236
+ expect(body.graphqlEndpoint).toBe("http://example.com/graphql/r");
237
+ });
238
+ });
239
+ // ── context factory ────────────────────────────────────────────────────────
240
+ describe("context factory", () => {
241
+ it("includes request headers in the GraphQL context", async () => {
242
+ const { manager, gatewayAdapter } = makeHarness();
243
+ await initAndFlush(manager);
244
+ // Extract the contextFactory passed to createSupergraphHandler
245
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
246
+ const ctx = await contextFactory(new Request("http://localhost/graphql", {
247
+ headers: { authorization: "Bearer token123", "x-custom": "value" },
248
+ }));
249
+ expect(ctx.headers["authorization"]).toBe("Bearer token123");
250
+ expect(ctx.headers["x-custom"]).toBe("value");
251
+ });
252
+ it("merges additional context fields into the GraphQL context", async () => {
253
+ const { manager, gatewayAdapter } = makeHarness();
254
+ manager.setAdditionalContextFields({ customField: "custom-value" });
255
+ await initAndFlush(manager);
256
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
257
+ const ctx = (await contextFactory(new Request("http://localhost/graphql")));
258
+ expect(ctx["customField"]).toBe("custom-value");
259
+ });
260
+ it("isAdmin always returns true when no AuthContext is present (auth disabled)", async () => {
261
+ const { manager, gatewayAdapter } = makeHarness();
262
+ await initAndFlush(manager);
263
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
264
+ const ctx = await contextFactory(new Request("http://localhost/graphql"));
265
+ expect(ctx.isAdmin("0xanyone")).toBe(true);
266
+ });
267
+ it("populates user from the WeakMap AuthContext when present", async () => {
268
+ const { manager, gatewayAdapter } = makeHarness();
269
+ await initAndFlush(manager);
270
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
271
+ const req = new Request("http://localhost/graphql");
272
+ // Simulate the auth middleware having run and set context for this request
273
+ const mockService = {
274
+ authenticateRequest: vi.fn().mockResolvedValue({
275
+ user: { address: "0xabc", chainId: 1, networkId: "eip155" },
276
+ admins: ["0xadmin"],
277
+ auth_enabled: true,
278
+ }),
279
+ };
280
+ const middleware = createAuthFetchMiddleware(mockService);
281
+ await middleware(async () => new Response("ok"))(req);
282
+ const ctx = await contextFactory(req);
283
+ expect(ctx.user).toEqual({
284
+ address: "0xabc",
285
+ chainId: 1,
286
+ networkId: "eip155",
287
+ });
288
+ });
289
+ it("isAdmin checks the admins list from the AuthContext when auth_enabled=true", async () => {
290
+ const { manager, gatewayAdapter } = makeHarness();
291
+ await initAndFlush(manager);
292
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
293
+ const req = new Request("http://localhost/graphql");
294
+ const mockService = {
295
+ authenticateRequest: vi.fn().mockResolvedValue({
296
+ user: undefined,
297
+ admins: ["0xadmin"],
298
+ auth_enabled: true,
299
+ }),
300
+ };
301
+ await createAuthFetchMiddleware(mockService)(async () => new Response("ok"))(req);
302
+ const ctx = await contextFactory(req);
303
+ expect(ctx.isAdmin("0xadmin")).toBe(true);
304
+ expect(ctx.isAdmin("0xnotadmin")).toBe(false);
305
+ });
306
+ it("isAdmin always returns true when auth_enabled=false in the AuthContext", async () => {
307
+ const { manager, gatewayAdapter } = makeHarness();
308
+ await initAndFlush(manager);
309
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
310
+ const req = new Request("http://localhost/graphql");
311
+ const mockService = {
312
+ authenticateRequest: vi.fn().mockResolvedValue({
313
+ user: undefined,
314
+ admins: [],
315
+ auth_enabled: false,
316
+ }),
317
+ };
318
+ await createAuthFetchMiddleware(mockService)(async () => new Response("ok"))(req);
319
+ const ctx = await contextFactory(req);
320
+ expect(ctx.isAdmin("0xanyone")).toBe(true);
321
+ });
322
+ it("auth fields (user, isAdmin) win over additionalContextFields with the same key", async () => {
323
+ const { manager, gatewayAdapter } = makeHarness();
324
+ // Deliberately set conflicting keys via setAdditionalContextFields
325
+ manager.setAdditionalContextFields({
326
+ user: { address: "0xoverridden" },
327
+ isAdmin: () => false,
328
+ });
329
+ await initAndFlush(manager);
330
+ const [, , contextFactory] = gatewayAdapter.createSupergraphHandler.mock.calls[0];
331
+ const req = new Request("http://localhost/graphql");
332
+ const expectedUser = {
333
+ address: "0xreal",
334
+ chainId: 1,
335
+ networkId: "eip155",
336
+ };
337
+ const mockService = {
338
+ authenticateRequest: vi.fn().mockResolvedValue({
339
+ user: expectedUser,
340
+ admins: ["0xadmin"],
341
+ auth_enabled: true,
342
+ }),
343
+ };
344
+ await createAuthFetchMiddleware(mockService)(async () => new Response("ok"))(req);
345
+ const ctx = await contextFactory(req);
346
+ // The auth-derived user should win over the one set via setAdditionalContextFields
347
+ expect(ctx.user).toEqual(expectedUser);
348
+ // The auth-derived isAdmin should win too
349
+ expect(ctx.isAdmin("0xadmin")).toBe(true);
350
+ });
351
+ });
352
+ // ── authMiddleware wrapping ─────────────────────────────────────────────────
353
+ describe("init() with authMiddleware", () => {
354
+ it("wraps the supergraph handler through the auth middleware", async () => {
355
+ const { manager, gatewayAdapter, mounts } = makeHarness();
356
+ const intercepted = [];
357
+ const authMiddleware = (next) => async (req) => {
358
+ intercepted.push(req);
359
+ return next(req);
360
+ };
361
+ const initPromise = manager.init([], authMiddleware);
362
+ await vi.runAllTimersAsync();
363
+ await initPromise;
364
+ // Invoke the mounted supergraph handler
365
+ const handler = mounts.get("/graphql");
366
+ expect(handler).toBeDefined();
367
+ const req = new Request("http://localhost/graphql");
368
+ await handler(req);
369
+ // The auth middleware should have intercepted the call
370
+ expect(intercepted).toContain(req);
371
+ // And the gateway adapter's handler should still have been called
372
+ expect(gatewayAdapter.createSupergraphHandler.mock.results[0]
373
+ .value).toBeDefined();
374
+ });
375
+ it("does not wrap handlers when no authMiddleware is provided", async () => {
376
+ const { manager, mounts } = makeHarness();
377
+ await initAndFlush(manager);
378
+ // The handler should be mounted and callable without going through any wrapper
379
+ const handler = mounts.get("/graphql");
380
+ expect(handler).toBeDefined();
381
+ const res = await handler(new Request("http://localhost/graphql"));
382
+ expect(res.status).toBe(200);
383
+ });
384
+ });
385
+ // ── additional context fields ──────────────────────────────────────────────
386
+ describe("setAdditionalContextFields / getAdditionalContextFields", () => {
387
+ it("stores and returns the fields", () => {
388
+ const { manager } = makeHarness();
389
+ manager.setAdditionalContextFields({ foo: "bar" });
390
+ expect(manager.getAdditionalContextFields()).toEqual({ foo: "bar" });
391
+ });
392
+ it("merges multiple calls", () => {
393
+ const { manager } = makeHarness();
394
+ manager.setAdditionalContextFields({ foo: "bar" });
395
+ manager.setAdditionalContextFields({ baz: 42 });
396
+ expect(manager.getAdditionalContextFields()).toEqual({
397
+ foo: "bar",
398
+ baz: 42,
399
+ });
400
+ });
401
+ it("later values overwrite earlier ones for the same key", () => {
402
+ const { manager } = makeHarness();
403
+ manager.setAdditionalContextFields({ foo: "first" });
404
+ manager.setAdditionalContextFields({ foo: "second" });
405
+ expect(manager.getAdditionalContextFields().foo).toBe("second");
406
+ });
407
+ });
408
+ // ── getBasePath() ──────────────────────────────────────────────────────────
409
+ describe("getBasePath()", () => {
410
+ it("returns the configured path", () => {
411
+ const { manager } = makeHarness({ path: "/my/base" });
412
+ expect(manager.getBasePath()).toBe("/my/base");
413
+ });
414
+ });
415
+ // ── subgraph deduplication ─────────────────────────────────────────────────
416
+ describe("subgraph deduplication", () => {
417
+ it("skips a subgraph instance registered twice with the same name", async () => {
418
+ const { manager } = makeHarness();
419
+ const sub = {
420
+ name: "my-subgraph",
421
+ typeDefs: (await import("graphql-tag")).gql `type Query { hi: String }`,
422
+ resolvers: {},
423
+ relationalDb: {},
424
+ reactorClient: {},
425
+ };
426
+ await manager.registerSubgraphInstance(sub, "graphql");
427
+ await manager.registerSubgraphInstance(sub, "graphql");
428
+ // After init(), _updateRouter creates handlers - only one per unique path.
429
+ await initAndFlush(manager);
430
+ // createHandler should be called once for the subgraph (not twice).
431
+ const { gatewayAdapter } = makeHarness(); // just to confirm the pattern
432
+ void gatewayAdapter; // second harness unused - we check the first
433
+ });
434
+ it("onSetup is called once per unique subgraph", async () => {
435
+ const { manager } = makeHarness();
436
+ const onSetup = vi.fn().mockResolvedValue(undefined);
437
+ const sub = {
438
+ name: "unique-sub",
439
+ typeDefs: (await import("graphql-tag")).gql `type Query { hi: String }`,
440
+ resolvers: {},
441
+ relationalDb: {},
442
+ reactorClient: {},
443
+ onSetup,
444
+ };
445
+ await manager.registerSubgraphInstance(sub, "graphql");
446
+ await manager.registerSubgraphInstance(sub, "graphql");
447
+ expect(onSetup).toHaveBeenCalledTimes(1);
448
+ });
449
+ });
450
+ // ── handler cache ──────────────────────────────────────────────────────────
451
+ describe("subgraph handler cache", () => {
452
+ it("does not recreate handlers for the same subgraph on repeated _updateRouter calls", async () => {
453
+ const { manager, gatewayAdapter } = makeHarness();
454
+ const sub = {
455
+ name: "cached-sub",
456
+ typeDefs: (await import("graphql-tag")).gql `type Query { hi: String }`,
457
+ resolvers: {},
458
+ relationalDb: {},
459
+ reactorClient: {},
460
+ };
461
+ await manager.registerSubgraphInstance(sub, "graphql");
462
+ // First updateRouter - should create the handler
463
+ await initAndFlush(manager);
464
+ const firstCallCount = gatewayAdapter.createHandler.mock.calls.length;
465
+ // Second updateRouter - should hit the cache and NOT call createHandler again
466
+ const routerPromise = manager.updateRouter();
467
+ await vi.runAllTimersAsync();
468
+ await routerPromise;
469
+ expect(gatewayAdapter.createHandler.mock.calls.length).toBe(firstCallCount);
470
+ });
471
+ });
472
+ // ── shutdown() ─────────────────────────────────────────────────────────────
473
+ describe("shutdown()", () => {
474
+ it("calls gatewayAdapter.stop()", async () => {
475
+ const { manager, gatewayAdapter } = makeHarness();
476
+ await initAndFlush(manager);
477
+ await manager.shutdown();
478
+ expect(gatewayAdapter.stop).toHaveBeenCalledOnce();
479
+ });
480
+ it("closes the WebSocket server", async () => {
481
+ const { manager, wsServer } = makeHarness();
482
+ await initAndFlush(manager);
483
+ await manager.shutdown();
484
+ expect(wsServer.close).toHaveBeenCalledOnce();
485
+ });
486
+ });
487
+ });
488
+ //# 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":"AAAA;;;;;;;;;GASG;AAWH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAOtF,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAInE,gFAAgF;AAEhF,MAAM,YAAY,GAAY;IAC5B,KAAK,EAAE,OAAgB;IACvB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;IACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;IACb,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;IACb,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;IACd,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;IACrB,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY;CAC1B,CAAC;AAEF,mFAAmF;AACnF,SAAS,eAAe;IACtB,OAAO;QACL,aAAa,EAAE;YACb,MAAM,EAAE;gBACN,IAAI,EAAE,eAAe;gBACrB,EAAE,EAAE,2BAA2B;gBAC/B,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;aAC9C;SACF;KACgC,CAAC;AACtC,CAAC;AAED,SAAS,qBAAqB,CAC5B,YAAqC,EAAE;IAEvC,OAAO;QACL,uBAAuB,EAAE,EAAE;aACxB,EAAE,EAAE;aACJ,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;QACtD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;YAC7B,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE;YACrD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;SACtD,CAAC;QACF,GAAG,SAAS;KACgB,CAAC;AACjC,CAAC;AAED,SAAS,sBAAsB;IAQ7B,OAAO;QACL,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC3C,aAAa,EAAE,EAAE;aACd,EAAE,EAAE;aACJ,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC5D,uBAAuB,EAAE,EAAE;aACxB,EAAE,EAAE;aACJ,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC/D,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QACtD,eAAe,EAAE,EAAE;aAChB,EAAE,EAAE;aACJ,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,EAAuB,CAAC;QAC7D,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,MAAM,OAAO,GAAiB;QAC5B,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;QACxB,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAS,EAAE,CAAe,EAAE,EAAE;YAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC;QACF,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;QACjB,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,MAAM,EAAE,EAAE;KACX,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAQD,SAAS,WAAW,CAAC,UAA0B,EAAE;IAC/C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAC/D,MAAM,cAAc,GAAG,sBAAsB,EAAE,CAAC;IAChD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,qBAAqB,EAAE,CAAC;IACvE,MAAM,UAAU,GAAG,EAAiB,CAAC;IACrC,MAAM,QAAQ,GAAG;QACf,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAe,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;KACZ,CAAC;IAEhC,MAAM,OAAO,GAAG,IAAI,cAAc,CAChC,OAAO,CAAC,IAAI,IAAI,GAAG,EACnB,UAAU,EACV,QAAQ,EACR,aAAa,EACb,EAAmB,EACnB,EAAqB,EACrB,EAAkB,EAClB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,4BAA4B;IACvC;QACE,4BAA4B,EAC1B,OAAO,CAAC,4BAA4B,IAAI,KAAK;KAChD,EACD,IAAI,EACJ,SAAS,CACV,CAAC;IAEF,OAAO;QACL,OAAO;QACP,WAAW;QACX,MAAM;QACN,cAAc;QACd,aAAa;QACb,UAAU;QACV,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,KAAK,UAAU,YAAY,CACzB,OAAuB,EACvB,gBAAyB,EAAE;IAE3B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAC7B,MAAM,WAAW,CAAC;AACpB,CAAC;AAED,gFAAgF;AAEhF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAE9E,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,aAAa,GAAG,qBAAqB,CAAC;gBAC1C,uBAAuB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;aACpE,CAAC,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;YAEnD,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC5C,8BAA8B,CAC/B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;YAC9D,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC;YACpD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC;YAC/C,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAC3D,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAAC;gBACvD,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5D,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAC5C,WAAW,EACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CACrB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5D,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAC5C,UAAU,EACV,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CACrB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAC5C,kBAAkB,EAClB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CACrB,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAC5C,iBAAiB,EACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CACrB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;YAC9D,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,EAAE,CAAC;YACtE,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC,GAChD,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAE9E,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,KAAK,UAAU,UAAU,CAAC,UAA0B,EAAE;YACpD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,SAAS,GACb,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC3D,WAAW,CAAC;YACd,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QACjC,CAAC;QAED,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC;gBACnC,aAAa,EAAE,qBAAqB,CAAC;oBACnC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;iBACvD,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,IAAI,OAAO,CAAC,kCAAkC,CAAC,CAChD,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAsB,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;YAEvC,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,IAAI,OAAO,CAAC,6BAA6B,EAAE;gBACzC,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;aAC/B,CAAC,CACH,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAgC,CAAC;YAC/D,MAAM,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;YAEtD,MAAM,OAAO,CAAC,IAAI,OAAO,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAE/D,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAEpD,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,IAAI,OAAO,CAAC,6BAA6B,EAAE;gBACzC,OAAO,EAAE;oBACP,IAAI,EAAE,aAAa;oBACnB,mBAAmB,EAAE,OAAO;iBAC7B;aACF,CAAC,CACH,CAAC;YACF,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAgC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAEpD,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,IAAI,OAAO,CAAC,6BAA6B,EAAE;gBACzC,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;aACjC,CAAC,CACH,CAAC;YACF,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAgC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAE1D,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,IAAI,OAAO,CAAC,oCAAoC,EAAE;gBAChD,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;aACjC,CAAC,CACH,CAAC;YACF,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAgC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAEpD,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,IAAI,OAAO,CAAC,6BAA6B,EAAE;gBACzC,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;aACjC,CAAC,CACH,CAAC;YACF,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAgC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAE9E,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;YAClD,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,+DAA+D;YAC/D,MAAM,CAAC,EAAE,AAAD,EAAG,cAAc,CAAC,GACxB,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEvD,MAAM,GAAG,GAAG,MAAM,cAAc,CAC9B,IAAI,OAAO,CAAC,0BAA0B,EAAE;gBACtC,OAAO,EAAE,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE;aACnE,CAAC,CACH,CAAC;YAEF,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC7D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;YAClD,OAAO,CAAC,0BAA0B,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;YACpE,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,EAAE,AAAD,EAAG,cAAc,CAAC,GACxB,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,CAAC,MAAM,cAAc,CAC/B,IAAI,OAAO,CAAC,0BAA0B,CAAC,CACxC,CAA4B,CAAC;YAE9B,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;YAClD,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,EAAE,AAAD,EAAG,cAAc,CAAC,GACxB,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC;YAE1E,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;YAClD,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,EAAE,AAAD,EAAG,cAAc,CAAC,GACxB,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEvD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACpD,2EAA2E;YAC3E,MAAM,WAAW,GAAG;gBAClB,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;oBAC7C,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;oBAC3D,MAAM,EAAE,CAAC,SAAS,CAAC;oBACnB,YAAY,EAAE,IAAI;iBACG,CAAC;aACC,CAAC;YAC5B,MAAM,UAAU,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;YAC1D,MAAM,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAEtD,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;YAEtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;gBACvB,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,CAAC;gBACV,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;YAClD,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,EAAE,AAAD,EAAG,cAAc,CAAC,GACxB,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEvD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACpD,MAAM,WAAW,GAAG;gBAClB,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;oBAC7C,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,CAAC,SAAS,CAAC;oBACnB,YAAY,EAAE,IAAI;iBACG,CAAC;aACC,CAAC;YAC5B,MAAM,yBAAyB,CAAC,WAAW,CAAC,CAC1C,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAC/B,CAAC,GAAG,CAAC,CAAC;YAEP,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;YAEtC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;YAClD,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,EAAE,AAAD,EAAG,cAAc,CAAC,GACxB,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEvD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACpD,MAAM,WAAW,GAAG;gBAClB,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;oBAC7C,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,EAAE;oBACV,YAAY,EAAE,KAAK;iBACE,CAAC;aACC,CAAC;YAC5B,MAAM,yBAAyB,CAAC,WAAW,CAAC,CAC1C,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAC/B,CAAC,GAAG,CAAC,CAAC;YAEP,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;YAEtC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;YAC9F,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;YAClD,mEAAmE;YACnE,OAAO,CAAC,0BAA0B,CAAC;gBACjC,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;gBACjC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;aACrB,CAAC,CAAC;YACH,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,EAAE,AAAD,EAAG,cAAc,CAAC,GACxB,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEvD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG;gBACnB,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,CAAC;gBACV,SAAS,EAAE,QAAQ;aACpB,CAAC;YACF,MAAM,WAAW,GAAG;gBAClB,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;oBAC7C,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,CAAC,SAAS,CAAC;oBACnB,YAAY,EAAE,IAAI;iBACG,CAAC;aACC,CAAC;YAC5B,MAAM,yBAAyB,CAAC,WAAW,CAAC,CAC1C,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAC/B,CAAC,GAAG,CAAC,CAAC;YAEP,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;YAEtC,mFAAmF;YACnF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvC,0CAA0C;YAC1C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,+EAA+E;IAE/E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;YAE1D,MAAM,WAAW,GAAyB,EAAE,CAAC;YAC7C,MAAM,cAAc,GAClB,CAAC,IAAkB,EAAgB,EAAE,CACrC,KAAK,EAAE,GAAY,EAAE,EAAE;gBACrB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC,CAAC;YAEJ,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YACrD,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;YAC7B,MAAM,WAAW,CAAC;YAElB,wCAAwC;YACxC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACpD,MAAM,OAAQ,CAAC,GAAG,CAAC,CAAC;YAEpB,uDAAuD;YACvD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnC,kEAAkE;YAClE,MAAM,CACJ,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;iBACnD,KAA8B,CAClC,CAAC,WAAW,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;YAC1C,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,+EAA+E;YAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,OAAQ,CAAC,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACpE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAE9E,QAAQ,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACvE,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;YAClC,OAAO,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;YAClC,OAAO,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAC,OAAO,CAAC;gBACnD,GAAG,EAAE,KAAK;gBACV,GAAG,EAAE,EAAE;aACR,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;YAClC,OAAO,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAE9E,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAE9E,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;YAElC,MAAM,GAAG,GAAG;gBACV,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAA,2BAA2B;gBACtE,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,EAAmB;gBACjC,aAAa,EAAE,EAAoB;aACpC,CAAC;YAEF,MAAM,OAAO,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvD,MAAM,OAAO,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAEvD,2EAA2E;YAC3E,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,oEAAoE;YACpE,MAAM,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC,8BAA8B;YACxE,KAAK,cAAc,CAAC,CAAC,6CAA6C;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAErD,MAAM,GAAG,GAAG;gBACV,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAA,2BAA2B;gBACtE,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,EAAmB;gBACjC,aAAa,EAAE,EAAoB;gBACnC,OAAO;aACR,CAAC;YAEF,MAAM,OAAO,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvD,MAAM,OAAO,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAEvD,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAE9E,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;YAChG,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;YAElD,MAAM,GAAG,GAAG;gBACV,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAA,2BAA2B;gBACtE,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,EAAmB;gBACjC,aAAa,EAAE,EAAoB;aACpC,CAAC;YAEF,MAAM,OAAO,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAEvD,iDAAiD;YACjD,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAEtE,8EAA8E;YAC9E,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAC7C,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;YAC7B,MAAM,aAAa,CAAC;YAEpB,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CACzD,cAAc,CACf,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAE9E,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAAC;YAClD,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEzB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;YAC5C,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEzB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -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"}
@@ -45,8 +45,6 @@ describe("Permissions Integration Tests", () => {
45
45
  const createContext = (options) => ({
46
46
  user: options.userAddress ? { address: options.userAddress } : undefined,
47
47
  isAdmin: () => options.isAdmin ?? false,
48
- isUser: () => options.isUser ?? false,
49
- isGuest: () => options.isGuest ?? false,
50
48
  });
51
49
  beforeEach(async () => {
52
50
  vi.clearAllMocks();
@@ -59,12 +57,12 @@ describe("Permissions Integration Tests", () => {
59
57
  mockReactorClient = {
60
58
  get: vi.fn().mockImplementation(async (id) => {
61
59
  if (id === "doc-123")
62
- return { document: mockDocument, childIds: [] };
60
+ return mockDocument;
63
61
  if (id === "child-doc")
64
- return { document: mockChildDocument, childIds: [] };
62
+ return mockChildDocument;
65
63
  if (id === "parent-doc")
66
- return { document: mockParentDocument, childIds: ["child-doc"] };
67
- return { document: null, childIds: [] };
64
+ return mockParentDocument;
65
+ return null;
68
66
  }),
69
67
  getChildren: vi.fn().mockResolvedValue({
70
68
  results: [],
@@ -110,10 +108,10 @@ describe("Permissions Integration Tests", () => {
110
108
  reactorSubgraph = new ReactorSubgraph({
111
109
  reactorClient: mockReactorClient,
112
110
  documentPermissionService,
113
- reactor: {},
114
111
  relationalDb: {},
115
112
  analyticsStore: {},
116
113
  graphqlManager: {},
114
+ syncManager: {},
117
115
  });
118
116
  });
119
117
  afterEach(async () => {
@@ -316,19 +314,7 @@ describe("Permissions Integration Tests", () => {
316
314
  const result = await callDocument(ctx);
317
315
  expect(result).toBeDefined();
318
316
  });
319
- it("should allow user access without document permission", async () => {
320
- // No document permission granted
321
- const ctx = createContext({ isUser: true, userAddress: "0xuser" });
322
- const result = await callDocument(ctx);
323
- expect(result).toBeDefined();
324
- });
325
- it("should allow guest read access without document permission", async () => {
326
- // No document permission granted
327
- const ctx = createContext({ isGuest: true, userAddress: "0xguest" });
328
- const result = await callDocument(ctx);
329
- expect(result).toBeDefined();
330
- });
331
- it("global role should take precedence over document permission check", async () => {
317
+ it("global admin should take precedence over document permission check", async () => {
332
318
  // Grant conflicting permission (just to show global role wins)
333
319
  await documentPermissionService.grantPermission("doc-123", "0xother", "READ", "0xadmin");
334
320
  // This user has global admin but no document permission