@graphql-hive/federation-gateway-audit 0.0.0

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 (293) hide show
  1. package/.changeset/@graphql-hive_federation-gateway-audit-293-dependencies.md +5 -0
  2. package/.changeset/README.md +9 -0
  3. package/.changeset/config.json +18 -0
  4. package/.changeset/funky-times-cry.md +5 -0
  5. package/.github/CONTRIBUTING.md +9 -0
  6. package/.github/workflows/ci.yaml +97 -0
  7. package/.github/workflows/release.yml +58 -0
  8. package/LICENSE +21 -0
  9. package/README.md +113 -0
  10. package/REPORT.md +812 -0
  11. package/dist/cli.js +547 -0
  12. package/dist/env-Dj2M4ll3.cjs +15 -0
  13. package/dist/env-j1f_SZtG.js +13 -0
  14. package/dist/env-j1f_SZtG.mjs +13 -0
  15. package/dist/index--3rcSZqA.js +227 -0
  16. package/dist/index-0MDIXUzP.cjs +589 -0
  17. package/dist/index-19eD5lFk.mjs +163 -0
  18. package/dist/index-1ZtG04bN.js +222 -0
  19. package/dist/index-1nZTfbJn.cjs +168 -0
  20. package/dist/index-1smMXABT.mjs +227 -0
  21. package/dist/index-2oy7cA9A.js +225 -0
  22. package/dist/index-3BM15w2Y.mjs +234 -0
  23. package/dist/index-3CyAnc7j.js +234 -0
  24. package/dist/index-4Vj-ND7j.mjs +213 -0
  25. package/dist/index-4swHVe9x.cjs +507 -0
  26. package/dist/index-6itLA31k.js +382 -0
  27. package/dist/index-6qNpP2wc.mjs +238 -0
  28. package/dist/index-81CiuWlP.mjs +333 -0
  29. package/dist/index-8FxjbyOU.cjs +236 -0
  30. package/dist/index-A2YbwKzc.mjs +288 -0
  31. package/dist/index-B-YHHt9g.js +333 -0
  32. package/dist/index-B0coRevy.mjs +337 -0
  33. package/dist/index-B1NAc0TI.cjs +215 -0
  34. package/dist/index-B1WvIzTg.js +371 -0
  35. package/dist/index-B38OpRtf.js +166 -0
  36. package/dist/index-B3aDw4Tt.js +359 -0
  37. package/dist/index-B55AdoQy.js +273 -0
  38. package/dist/index-B7cr8XE-.js +194 -0
  39. package/dist/index-B7zN3YzE.cjs +683 -0
  40. package/dist/index-B8X923W3.mjs +262 -0
  41. package/dist/index-B958BFYC.cjs +224 -0
  42. package/dist/index-B9T896rB.mjs +163 -0
  43. package/dist/index-BA3ERnyq.mjs +234 -0
  44. package/dist/index-BDMi6sOm.cjs +252 -0
  45. package/dist/index-BDNWXFb_.mjs +304 -0
  46. package/dist/index-BEMScD_X.cjs +173 -0
  47. package/dist/index-BF0H5kP0.cjs +384 -0
  48. package/dist/index-BGC0_vWj.cjs +335 -0
  49. package/dist/index-BGNmWPAk.js +381 -0
  50. package/dist/index-BGUm947D.cjs +229 -0
  51. package/dist/index-BJB0tRA1.js +550 -0
  52. package/dist/index-BKcwbRZx.cjs +339 -0
  53. package/dist/index-BKpVb_h9.cjs +236 -0
  54. package/dist/index-BPFol6Ww.mjs +129 -0
  55. package/dist/index-BPza8i2Q.mjs +213 -0
  56. package/dist/index-BQQgQaGz.cjs +552 -0
  57. package/dist/index-BReFIfq_.cjs +361 -0
  58. package/dist/index-BS7JyQSU.js +250 -0
  59. package/dist/index-BSWSgZCO.cjs +252 -0
  60. package/dist/index-BStXx4OK.js +705 -0
  61. package/dist/index-BSwOAvti.js +288 -0
  62. package/dist/index-BWO8QbMB.mjs +587 -0
  63. package/dist/index-BYEdADrG.cjs +227 -0
  64. package/dist/index-B_eGT6oX.js +225 -0
  65. package/dist/index-B_u5Boud.js +333 -0
  66. package/dist/index-BaH3FI9i.cjs +361 -0
  67. package/dist/index-BaluTf1I.cjs +707 -0
  68. package/dist/index-BblYlZ3A.cjs +131 -0
  69. package/dist/index-BcZC0OIN.js +234 -0
  70. package/dist/index-Bcjyyjhh.mjs +259 -0
  71. package/dist/index-BcoW0aPo.cjs +165 -0
  72. package/dist/index-BdNZKlDU.js +284 -0
  73. package/dist/index-Bf81cAA1.mjs +444 -0
  74. package/dist/index-Bg3H3fgZ.js +259 -0
  75. package/dist/index-Bgl_1Y6Q.mjs +681 -0
  76. package/dist/index-BgmItHIB.mjs +129 -0
  77. package/dist/index-BgryMCqm.mjs +213 -0
  78. package/dist/index-Bh6a3eXK.mjs +227 -0
  79. package/dist/index-BhPDIfmU.js +304 -0
  80. package/dist/index-BiTzMTFn.js +304 -0
  81. package/dist/index-BjbmOyBP.cjs +215 -0
  82. package/dist/index-BjwZX2iS.mjs +273 -0
  83. package/dist/index-Bm8hqSRd.cjs +168 -0
  84. package/dist/index-BmOn6xYL.js +228 -0
  85. package/dist/index-BmQrhPXB.cjs +131 -0
  86. package/dist/index-Bnb8TpOO.js +280 -0
  87. package/dist/index-BndUB2KV.mjs +381 -0
  88. package/dist/index-Bo74nI4n.js +129 -0
  89. package/dist/index-BoGmP6Cy.cjs +230 -0
  90. package/dist/index-BodMjESw.mjs +250 -0
  91. package/dist/index-BpJZCoVH.mjs +250 -0
  92. package/dist/index-Br-Y1qC_.cjs +446 -0
  93. package/dist/index-BrFtcRgi.mjs +194 -0
  94. package/dist/index-BsPxDJAB.mjs +238 -0
  95. package/dist/index-Bu7pZnPO.cjs +170 -0
  96. package/dist/index-Bu8SXnTf.mjs +227 -0
  97. package/dist/index-BuNNRp3W.mjs +117 -0
  98. package/dist/index-Bwh8HVkw.cjs +384 -0
  99. package/dist/index-BxK3Y72_.js +227 -0
  100. package/dist/index-BxPUzymh.cjs +208 -0
  101. package/dist/index-ByUUB7Zn.js +250 -0
  102. package/dist/index-ByUr80PD.cjs +306 -0
  103. package/dist/index-ByZa9qm8.mjs +273 -0
  104. package/dist/index-BzPCjhuQ.cjs +264 -0
  105. package/dist/index-Bz_LTy1A.mjs +222 -0
  106. package/dist/index-C05_HMLC.js +225 -0
  107. package/dist/index-C15P-_1j.cjs +229 -0
  108. package/dist/index-C1GgHOiD.js +228 -0
  109. package/dist/index-C4Pk-zTm.mjs +227 -0
  110. package/dist/index-C4dnTlBf.js +262 -0
  111. package/dist/index-C6LW00iX.mjs +505 -0
  112. package/dist/index-C6nkQ480.js +225 -0
  113. package/dist/index-C8Mu4K9Q.cjs +383 -0
  114. package/dist/index-C8mB7yWC.mjs +288 -0
  115. package/dist/index-C9Eh7qBC.js +273 -0
  116. package/dist/index-CAJ9YPxc.js +681 -0
  117. package/dist/index-CD03pVUt.cjs +373 -0
  118. package/dist/index-CD8GiuIg.js +227 -0
  119. package/dist/index-CHB_0VqK.mjs +333 -0
  120. package/dist/index-CKEgb_R7.cjs +215 -0
  121. package/dist/index-CLsasg69.js +228 -0
  122. package/dist/index-CMdC_Cah.js +213 -0
  123. package/dist/index-CNOcqGKC.cjs +227 -0
  124. package/dist/index-CNvZCDZa.js +166 -0
  125. package/dist/index-CO0GiXGE.js +168 -0
  126. package/dist/index-COGhiFjk.mjs +284 -0
  127. package/dist/index-COIlelpZ.mjs +262 -0
  128. package/dist/index-CPph-RFN.mjs +168 -0
  129. package/dist/index-CPu_XkjY.mjs +304 -0
  130. package/dist/index-CQ5t4ZXm.js +117 -0
  131. package/dist/index-CQeQ1nto.js +681 -0
  132. package/dist/index-CSc_T8Lu.js +218 -0
  133. package/dist/index-CUFKuE64.js +550 -0
  134. package/dist/index-CW8h3l6M.js +262 -0
  135. package/dist/index-CWrng7Hd.mjs +550 -0
  136. package/dist/index-CWuObqnS.mjs +587 -0
  137. package/dist/index-CX7-wc6X.cjs +1837 -0
  138. package/dist/index-CXviN8qZ.cjs +224 -0
  139. package/dist/index-CY9mowWW.mjs +705 -0
  140. package/dist/index-C_pTgB_1.js +194 -0
  141. package/dist/index-C_qaNb-X.mjs +225 -0
  142. package/dist/index-Ca0FeU7u.js +505 -0
  143. package/dist/index-Cb3ImEjd.cjs +165 -0
  144. package/dist/index-Cbhvi8yk.cjs +229 -0
  145. package/dist/index-Cc3vrs6_.mjs +228 -0
  146. package/dist/index-CcIXvx40.mjs +171 -0
  147. package/dist/index-CdaeeF3f.cjs +306 -0
  148. package/dist/index-CddVoIp2.js +213 -0
  149. package/dist/index-CeiRxGcN.mjs +218 -0
  150. package/dist/index-ChefKWWr.mjs +381 -0
  151. package/dist/index-Cj2ocjXI.cjs +227 -0
  152. package/dist/index-CkWEXzTN.js +129 -0
  153. package/dist/index-Ckhb9QAu.cjs +264 -0
  154. package/dist/index-CklJfQlf.cjs +220 -0
  155. package/dist/index-Cmh7PJUd.mjs +372 -0
  156. package/dist/index-Cn0ZJkAv.mjs +280 -0
  157. package/dist/index-CqTzarV1.mjs +198 -0
  158. package/dist/index-CrUbbFxE.js +284 -0
  159. package/dist/index-CsKaFB2K.mjs +228 -0
  160. package/dist/index-Cu8Ii5r7.cjs +335 -0
  161. package/dist/index-Cuw9ylL-.mjs +371 -0
  162. package/dist/index-CwOULUAt.mjs +382 -0
  163. package/dist/index-CyVnRqjE.cjs +196 -0
  164. package/dist/index-D-1dDKiZ.mjs +227 -0
  165. package/dist/index-D00bnaJy.cjs +220 -0
  166. package/dist/index-D07xiOJ6.cjs +446 -0
  167. package/dist/index-D1Ip6ro6.js +458 -0
  168. package/dist/index-D1Ymvd2b.cjs +286 -0
  169. package/dist/index-D5jOBT3f.cjs +240 -0
  170. package/dist/index-D5tEp8IU.js +337 -0
  171. package/dist/index-D7WuGKYY.cjs +227 -0
  172. package/dist/index-D8Dp6TnQ.cjs +1837 -0
  173. package/dist/index-D9OKpqgG.js +381 -0
  174. package/dist/index-DBMI2EcB.cjs +170 -0
  175. package/dist/index-DBRUKV0U.mjs +225 -0
  176. package/dist/index-DEvExC5x.cjs +119 -0
  177. package/dist/index-DEzxU_gQ.cjs +507 -0
  178. package/dist/index-DFypMD6R.cjs +261 -0
  179. package/dist/index-DHRqE92a.cjs +290 -0
  180. package/dist/index-DISym5OL.js +198 -0
  181. package/dist/index-DJ3ndv3i.mjs +705 -0
  182. package/dist/index-DJXP-Gmp.js +218 -0
  183. package/dist/index-DJlXDQOY.cjs +200 -0
  184. package/dist/index-DLW4GEJl.cjs +229 -0
  185. package/dist/index-DLu9E2Vq.js +238 -0
  186. package/dist/index-DM4ddIL6.js +382 -0
  187. package/dist/index-DMgHLbwU.cjs +339 -0
  188. package/dist/index-DN-ScBql.mjs +458 -0
  189. package/dist/index-DOkkIHER.js +163 -0
  190. package/dist/index-DRY8sDun.cjs +165 -0
  191. package/dist/index-DS3cjugP.mjs +171 -0
  192. package/dist/index-DS86eFsI.mjs +1835 -0
  193. package/dist/index-DUlT8CJ2.js +458 -0
  194. package/dist/index-DV1F4nxP.js +372 -0
  195. package/dist/index-DXsAcJ-o.mjs +359 -0
  196. package/dist/index-DZws2w4w.cjs +229 -0
  197. package/dist/index-D_HiVe2_.cjs +200 -0
  198. package/dist/index-Da6L5V_Z.mjs +681 -0
  199. package/dist/index-Dbb-jnWf.js +206 -0
  200. package/dist/index-DdXy_-T9.js +444 -0
  201. package/dist/index-DddNFRG3.js +337 -0
  202. package/dist/index-DejhKwvw.cjs +173 -0
  203. package/dist/index-DfBdD-5Z.cjs +383 -0
  204. package/dist/index-Df_KCbC4.mjs +213 -0
  205. package/dist/index-DiDq1sL6.cjs +240 -0
  206. package/dist/index-DiuJQ9Mq.js +198 -0
  207. package/dist/index-Djqj3DWJ.js +171 -0
  208. package/dist/index-Dk0q-ENv.mjs +166 -0
  209. package/dist/index-DlFElztE.mjs +163 -0
  210. package/dist/index-DlkxQ-B5.mjs +359 -0
  211. package/dist/index-Dm5kpK9t.js +227 -0
  212. package/dist/index-Dp8mobro.js +444 -0
  213. package/dist/index-DpBWZa1x.cjs +683 -0
  214. package/dist/index-DrkXuLUZ.js +227 -0
  215. package/dist/index-Dsq1FK90.cjs +275 -0
  216. package/dist/index-DtmhGgM8.cjs +282 -0
  217. package/dist/index-Du5MxO_2.mjs +505 -0
  218. package/dist/index-DveYQLCZ.cjs +460 -0
  219. package/dist/index-DxHMqS-W.js +117 -0
  220. package/dist/index-DyTApTHI.cjs +282 -0
  221. package/dist/index-DyTSkAm4.cjs +208 -0
  222. package/dist/index-DygJOEne.mjs +550 -0
  223. package/dist/index-DzAewrkw.js +238 -0
  224. package/dist/index-ESWdD7ek.cjs +215 -0
  225. package/dist/index-EuKHpnHv.mjs +117 -0
  226. package/dist/index-F1A7LMlw.mjs +228 -0
  227. package/dist/index-FP6hvgSw.cjs +552 -0
  228. package/dist/index-GDSrKnPp.mjs +198 -0
  229. package/dist/index-GMCZo-KH.js +222 -0
  230. package/dist/index-IQJLr7nR.js +288 -0
  231. package/dist/index-IawHHRZX.mjs +206 -0
  232. package/dist/index-Jk7MG7tE.cjs +286 -0
  233. package/dist/index-JtGxTXPr.mjs +337 -0
  234. package/dist/index-KAC20a9r.js +359 -0
  235. package/dist/index-LVWQqV-v.js +163 -0
  236. package/dist/index-Ls2fI7y4.js +163 -0
  237. package/dist/index-NB1VDvjW.cjs +374 -0
  238. package/dist/index-NIEZaRYg.cjs +261 -0
  239. package/dist/index-PQXUx1ZR.mjs +1835 -0
  240. package/dist/index-PyaLRKuk.mjs +168 -0
  241. package/dist/index-QQGo-BV1.mjs +444 -0
  242. package/dist/index-QXYDkAsQ.cjs +119 -0
  243. package/dist/index-SmEIf5jz.mjs +259 -0
  244. package/dist/index-UJhFwnD_.mjs +284 -0
  245. package/dist/index-UVyXzNlG.js +705 -0
  246. package/dist/index-UgyHGpUU.mjs +163 -0
  247. package/dist/index-UhQiJabs.cjs +707 -0
  248. package/dist/index-VvuhRvnC.mjs +218 -0
  249. package/dist/index-WPXuueaq.mjs +194 -0
  250. package/dist/index-X4u6bs58.js +259 -0
  251. package/dist/index-XZiO6uje.cjs +275 -0
  252. package/dist/index-YOlsBREZ.cjs +230 -0
  253. package/dist/index-Ytb942t9.js +587 -0
  254. package/dist/index-_2dg_MWu.cjs +460 -0
  255. package/dist/index-eFEW10em.js +213 -0
  256. package/dist/index-eq8bbEej.mjs +225 -0
  257. package/dist/index-f7FiDQMk.js +171 -0
  258. package/dist/index-fBzI1kbw.mjs +225 -0
  259. package/dist/index-fdDnq3vQ.js +163 -0
  260. package/dist/index-fqmAgjhG.js +206 -0
  261. package/dist/index-ikGyewP-.cjs +165 -0
  262. package/dist/index-jft-1bQ6.cjs +230 -0
  263. package/dist/index-l8e8ip4U.js +168 -0
  264. package/dist/index-lkBiml03.js +1835 -0
  265. package/dist/index-mm-YMeoi.js +505 -0
  266. package/dist/index-o7g3iua7.cjs +290 -0
  267. package/dist/index-ojnncNWd.js +587 -0
  268. package/dist/index-q9SCjCJM.mjs +280 -0
  269. package/dist/index-rn-_7-wp.cjs +196 -0
  270. package/dist/index-s27DHpTG.js +1835 -0
  271. package/dist/index-s2HuXM4d.mjs +206 -0
  272. package/dist/index-sbc7nDv3.js +213 -0
  273. package/dist/index-tx0X6vuE.mjs +222 -0
  274. package/dist/index-uCwv2hr-.mjs +166 -0
  275. package/dist/index-vHngHSlz.js +280 -0
  276. package/dist/index-xOtG5E4u.cjs +589 -0
  277. package/dist/index-zJk-Nm6b.mjs +458 -0
  278. package/dist/index-zqxgDrLR.mjs +382 -0
  279. package/dist/index.cjs +233 -0
  280. package/dist/index.d.cts +9 -0
  281. package/dist/index.d.cts.map +1 -0
  282. package/dist/index.d.ts +9 -0
  283. package/dist/index.d.ts.map +1 -0
  284. package/dist/index.js +230 -0
  285. package/dist/index.mjs +230 -0
  286. package/dist/testkit-BtZjdl4n.js +269 -0
  287. package/dist/testkit-BtZjdl4n.mjs +269 -0
  288. package/dist/testkit-C920qivh.js +281 -0
  289. package/dist/testkit-C920qivh.mjs +281 -0
  290. package/dist/testkit-CAf-AsDy.cjs +273 -0
  291. package/dist/testkit-D0rTQ6MD.cjs +286 -0
  292. package/makefile +47 -0
  293. package/package.json +89 -0
@@ -0,0 +1,5 @@
1
+ ---
2
+ "@graphql-hive/federation-gateway-audit": patch
3
+ ---
4
+ dependencies updates:
5
+ - Removed dependency [`dotenv@17.3.1` ↗︎](https://www.npmjs.com/package/dotenv/v/17.3.1) (from `dependencies`)
@@ -0,0 +1,9 @@
1
+ # Changesets
2
+
3
+ Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool
4
+ that works with multi-package repos, or single-package repos to help you version and publish your
5
+ code. You can find the full documentation for it
6
+ [in our repository](https://github.com/changesets/changesets)
7
+
8
+ We have a quick list of common questions to get you started engaging with this project in
9
+ [our documentation](https://github.com/changesets/changesets/blob/master/docs/common-questions.md)
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://unpkg.com/@changesets/config@2.1.0/schema.json",
3
+ "changelog": [
4
+ "@changesets/changelog-github",
5
+ { "repo": "graphql-hive/federation-gateway-audit" }
6
+ ],
7
+ "commit": false,
8
+ "fixed": [],
9
+ "linked": [],
10
+ "access": "public",
11
+ "baseBranch": "main",
12
+ "updateInternalDependencies": "patch",
13
+ "ignore": [],
14
+ "snapshot": {
15
+ "useCalculatedVersion": true,
16
+ "prereleaseTemplate": "{tag}-{datetime}-{commit}"
17
+ }
18
+ }
@@ -0,0 +1,5 @@
1
+ ---
2
+ "@graphql-hive/federation-gateway-audit": patch
3
+ ---
4
+
5
+ Remove \`dotenv\` dependency, and use the native \`process.loadEnvFile\`
@@ -0,0 +1,9 @@
1
+ # Contributing guide
2
+
3
+ 1. Create a new directory in the `gateways` folder with the name of the new gateway.
4
+ 2. Prepare the `install.sh` script that will install the necessary dependencies, the gateway itself.
5
+ 3. Create the `run.sh` script that will start the gateway. See an example using [supergraph.graphql](../gateways/grafbase-gateway/run.sh) and [subgraphs information](../gateways/cosmo-router/run.sh).
6
+ 4. Add the `gateway.json` file with the necessary information about the gateway. See an example [here](../gateways/hive-gateway/gateway.json).
7
+ 5. The `.gitignore` should be created as well to avoid committing unnecessary files.
8
+ 6. Execute `make test-[name of the gateway]` to test your gateway.
9
+ 7. Run `make summary` to include your gateway in the results.
@@ -0,0 +1,97 @@
1
+ name: ci
2
+ on:
3
+ pull_request: {}
4
+ push:
5
+ branches: ["main"]
6
+
7
+ permissions: write-all
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ tests:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - name: Checkout
18
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
19
+ with:
20
+ token: ${{ secrets.GITHUB_TOKEN }}
21
+
22
+ - uses: the-guild-org/shared-config/setup@v1
23
+ name: set up env
24
+ with:
25
+ node-version-file: .node-version
26
+
27
+ - name: Install
28
+ run: make install
29
+
30
+ - name: Test
31
+ run: npm start -- test --cwd ./gateways/hive-router --run-script ./run.sh --reporter tap --graphql http://127.0.0.1:4000/graphql --healthcheck http://127.0.0.1:4000/health --exit-on-fail
32
+
33
+ gateways:
34
+ runs-on: ubuntu-latest
35
+ steps:
36
+ - name: Checkout
37
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
38
+ with:
39
+ token: ${{ secrets.GITHUB_TOKEN }}
40
+ repository: ${{ github.event.pull_request.head.repo.full_name }}
41
+ ref: ${{ github.event.pull_request.head.ref }}
42
+
43
+ - uses: the-guild-org/shared-config/setup@v1
44
+ name: set up env
45
+ with:
46
+ node-version-file: .node-version
47
+
48
+ - name: Prepare
49
+ run: make install
50
+
51
+ - name: Test Gateways
52
+ run: make test-all
53
+
54
+ - name: Upload Logs
55
+ uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
56
+ with:
57
+ name: gateways-logs
58
+ path: gateways/*/logs/*.log
59
+
60
+ - name: Summary
61
+ run: |
62
+ EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
63
+ echo "summary<<$EOF" >> "$GITHUB_ENV"
64
+ cat ./REPORT.md >> "$GITHUB_ENV"
65
+ echo "$EOF" >> "$GITHUB_ENV"
66
+
67
+ - run: |
68
+ git config user.name github-actions
69
+ git config user.email github-actions@github.com
70
+
71
+ - name: publish report
72
+ uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9
73
+ if: github.event_name == 'pull_request'
74
+ with:
75
+ add: ./REPORT.md ./README.md ./website/index.html ./website/data.json
76
+ message: "Update results"
77
+ pull: "--rebase --autostash"
78
+ author_email: github-actions@github.com
79
+ author_name: github-actions
80
+ github_token: ${{ secrets.BOT_GITHUB_TOKEN }}
81
+
82
+ - name: Publish Summary
83
+ if: github.event_name == 'pull_request'
84
+ uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # v2
85
+ with:
86
+ header: "Test Results"
87
+ message: ${{ env.summary }}
88
+
89
+ - name: Publish to Cloudflare Pages
90
+ uses: cloudflare/pages-action@f0a1cd58cd66095dee69bfa18fa5efd1dde93bca # v1
91
+ with:
92
+ apiToken: ${{ secrets.CF_API_TOKEN }}
93
+ accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
94
+ projectName: federation-gateway-compatibility
95
+ directory: ./website
96
+ gitHubToken: ${{ secrets.GITHUB_TOKEN }}
97
+ branch: ${{ github.event.pull_request.number != '' && format('pr-{0}', github.event.pull_request.number) || 'main' }}
@@ -0,0 +1,58 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+
9
+ env:
10
+ NODE_NO_WARNINGS: 1
11
+ CI: true
12
+ NPM_CONFIG_PROVENANCE: true
13
+
14
+ jobs:
15
+ dependencies:
16
+ if: github.event_name == 'pull_request' && github.event.pull_request.title != 'Upcoming Release Changes'
17
+ name: Dependencies
18
+ concurrency:
19
+ group: ${{ github.workflow }}-${{ github.ref }}-dependencies
20
+ cancel-in-progress: true
21
+ uses: the-guild-org/shared-config/.github/workflows/changesets-dependencies.yml@v1
22
+ with:
23
+ node-version-file: .node-version
24
+ secrets:
25
+ githubToken: ${{ secrets.GITHUB_TOKEN }}
26
+ snapshot:
27
+ name: Snapshot
28
+ concurrency:
29
+ group: ${{ github.workflow }}-${{ github.ref }}-release-snapshot
30
+ cancel-in-progress: true
31
+ permissions:
32
+ contents: read
33
+ id-token: write
34
+ pull-requests: write
35
+ uses: the-guild-org/shared-config/.github/workflows/release-snapshot.yml@v1
36
+ with:
37
+ npmTag: alpha
38
+ buildScript: build
39
+ node-version-file: .node-version
40
+ secrets:
41
+ githubToken: ${{ secrets.GITHUB_TOKEN }}
42
+ npmToken: ${{ secrets.NPM_TOKEN }}
43
+ stable:
44
+ if: github.ref == 'refs/heads/main'
45
+ concurrency: ${{ github.workflow }}-${{ github.ref }}-release-stable
46
+ name: Stable
47
+ permissions:
48
+ contents: read
49
+ id-token: write
50
+ pull-requests: write
51
+ uses: the-guild-org/shared-config/.github/workflows/release-stable.yml@v1
52
+ with:
53
+ node-version-file: .node-version
54
+ releaseScript: run release
55
+ versionScript: run version
56
+ secrets:
57
+ githubToken: ${{ secrets.GITHUB_TOKEN }}
58
+ npmToken: ${{ secrets.NPM_TOKEN }}
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 - The Guild
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,113 @@
1
+ # Federation-Compatible Gateway Implementations
2
+
3
+ This repository contains a set of tests to evaluate and compare the compatibility of different GraphQL gateways with Apollo Federation.
4
+
5
+ [🌐 See the results of our audit](https://the-guild.dev/graphql/hive/federation-gateway-audit)
6
+
7
+ [📖 Read more about our methodology and why we created this audit](https://the-guild.dev/graphql/hive/federation-gateway-audit#manifesto)
8
+
9
+ <!-- gateways:start -->
10
+
11
+ | Gateway | Compatibility | Test Cases | Test Suites |
12
+ | :---------------------------------------------------------------------------------------------------------: | :-----------: | :----------: | :---------: |
13
+ | [Hive Gateway (Rust QP)](https://the-guild.dev/graphql/hive/docs/gateway/other-features/rust-query-planner) | 100.00% | 🟢 192 | 🟢 44 |
14
+ | [Hive Router](https://github.com/graphql-hive/router) | 100.00% | 🟢 192 | 🟢 44 |
15
+ | [Hive Gateway](https://the-guild.dev/graphql/hive/gateway) | 99.48% | 🟢 191 ❌ 1 | 🟢 43 ❌ 1 |
16
+ | [Apollo Router](https://www.apollographql.com/) | 97.40% | 🟢 187 ❌ 5 | 🟢 41 ❌ 3 |
17
+ | [Apollo Gateway](https://www.apollographql.com/) | 96.88% | 🟢 186 ❌ 6 | 🟢 40 ❌ 4 |
18
+ | [Cosmo Router](https://wundergraph.com) | 94.27% | 🟢 181 ❌ 11 | 🟢 37 ❌ 7 |
19
+ | [Grafbase Gateway](https://grafbase.com) | 91.67% | 🟢 176 ❌ 16 | 🟢 38 ❌ 6 |
20
+ | [Inigo Gateway](https://inigo.io) | 47.92% | 🟢 92 ❌ 100 | 🟢 12 ❌ 32 |
21
+
22
+ <!-- gateways:end -->
23
+
24
+ [See the full report](./REPORT.md)
25
+
26
+ ## Apollo Federation Coverage
27
+
28
+ The tests are based on the Apollo Federation specification and cover the following directives:
29
+
30
+ - `@interfaceObject`
31
+ - `@key`
32
+ - `@external`
33
+ - `@provides`
34
+ - `@requires`
35
+ - `@extends`
36
+ - `@inaccessible`
37
+ - `@shareable`
38
+ - `@skip`
39
+ - `@include`
40
+ - `@composeDirective`
41
+ - `@override`
42
+
43
+ **Out of scope (limited by Enterprise license of Apollo Router):**
44
+
45
+ We are not able to test the following directives on Apollo Router due to the limitations of the Enterprise license:
46
+
47
+ - `@authenticated`
48
+ - `@policy`
49
+ - `@requiresScopes`
50
+ - `@override(label:)`
51
+
52
+ We plan to test these directives as soon as we have access to the Enterprise license.
53
+
54
+ ---
55
+
56
+ ## CLI
57
+
58
+ > TODO: we're working on a CLI to make it easier to run the tests, stay tuned!
59
+
60
+ ---
61
+
62
+ ## Instructions
63
+
64
+ First of all, you need to install and prepare the gateways. You can do this by running the following command:
65
+
66
+ ```bash
67
+ make install
68
+ ```
69
+
70
+ > [!IMPORTANT]
71
+ > Be aware that `Node` and `npm` are required to run the whole setup.
72
+
73
+ ### Testing all gateways
74
+
75
+ You can run the tests for each gateway by running the following command:
76
+
77
+ ```bash
78
+ make test-all
79
+ ```
80
+
81
+ ### Testing a specific gateway
82
+
83
+ You can run the tests for a specific gateway by running the following command:
84
+
85
+ ```bash
86
+ make test-[name of the gateway]
87
+
88
+ make test-grafbase-gateway
89
+ make test-cosmo-router
90
+ make test-hive-gateway
91
+ make test-hive-gateway-router-runtime
92
+ make test-apollo-router
93
+ ```
94
+
95
+ ### Running a gateway for a single test suite
96
+
97
+ In case you want to run only a limited set of tests, you can do so by running the following command:
98
+
99
+ ```bash
100
+ make test-suite-[name of the gateway] TEST_SUITE=[id of the test suite]
101
+ ```
102
+
103
+ ### Running a gateway for a specific supergraph
104
+
105
+ There's also the possibility to start a gateway for a selected supergraph, in case you want to run the queries yourself.
106
+
107
+ ```bash
108
+ make run-[name of the gateway] TEST_SUITE=[id of the test suite]
109
+ ```
110
+
111
+ ## Contributing or adding a new gateway
112
+
113
+ [See the contributing guide](./.github/CONTRIBUTING.md)