@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.
- package/.changeset/@graphql-hive_federation-gateway-audit-293-dependencies.md +5 -0
- package/.changeset/README.md +9 -0
- package/.changeset/config.json +18 -0
- package/.changeset/funky-times-cry.md +5 -0
- package/.github/CONTRIBUTING.md +9 -0
- package/.github/workflows/ci.yaml +97 -0
- package/.github/workflows/release.yml +58 -0
- package/LICENSE +21 -0
- package/README.md +113 -0
- package/REPORT.md +812 -0
- package/dist/cli.js +547 -0
- package/dist/env-Dj2M4ll3.cjs +15 -0
- package/dist/env-j1f_SZtG.js +13 -0
- package/dist/env-j1f_SZtG.mjs +13 -0
- package/dist/index--3rcSZqA.js +227 -0
- package/dist/index-0MDIXUzP.cjs +589 -0
- package/dist/index-19eD5lFk.mjs +163 -0
- package/dist/index-1ZtG04bN.js +222 -0
- package/dist/index-1nZTfbJn.cjs +168 -0
- package/dist/index-1smMXABT.mjs +227 -0
- package/dist/index-2oy7cA9A.js +225 -0
- package/dist/index-3BM15w2Y.mjs +234 -0
- package/dist/index-3CyAnc7j.js +234 -0
- package/dist/index-4Vj-ND7j.mjs +213 -0
- package/dist/index-4swHVe9x.cjs +507 -0
- package/dist/index-6itLA31k.js +382 -0
- package/dist/index-6qNpP2wc.mjs +238 -0
- package/dist/index-81CiuWlP.mjs +333 -0
- package/dist/index-8FxjbyOU.cjs +236 -0
- package/dist/index-A2YbwKzc.mjs +288 -0
- package/dist/index-B-YHHt9g.js +333 -0
- package/dist/index-B0coRevy.mjs +337 -0
- package/dist/index-B1NAc0TI.cjs +215 -0
- package/dist/index-B1WvIzTg.js +371 -0
- package/dist/index-B38OpRtf.js +166 -0
- package/dist/index-B3aDw4Tt.js +359 -0
- package/dist/index-B55AdoQy.js +273 -0
- package/dist/index-B7cr8XE-.js +194 -0
- package/dist/index-B7zN3YzE.cjs +683 -0
- package/dist/index-B8X923W3.mjs +262 -0
- package/dist/index-B958BFYC.cjs +224 -0
- package/dist/index-B9T896rB.mjs +163 -0
- package/dist/index-BA3ERnyq.mjs +234 -0
- package/dist/index-BDMi6sOm.cjs +252 -0
- package/dist/index-BDNWXFb_.mjs +304 -0
- package/dist/index-BEMScD_X.cjs +173 -0
- package/dist/index-BF0H5kP0.cjs +384 -0
- package/dist/index-BGC0_vWj.cjs +335 -0
- package/dist/index-BGNmWPAk.js +381 -0
- package/dist/index-BGUm947D.cjs +229 -0
- package/dist/index-BJB0tRA1.js +550 -0
- package/dist/index-BKcwbRZx.cjs +339 -0
- package/dist/index-BKpVb_h9.cjs +236 -0
- package/dist/index-BPFol6Ww.mjs +129 -0
- package/dist/index-BPza8i2Q.mjs +213 -0
- package/dist/index-BQQgQaGz.cjs +552 -0
- package/dist/index-BReFIfq_.cjs +361 -0
- package/dist/index-BS7JyQSU.js +250 -0
- package/dist/index-BSWSgZCO.cjs +252 -0
- package/dist/index-BStXx4OK.js +705 -0
- package/dist/index-BSwOAvti.js +288 -0
- package/dist/index-BWO8QbMB.mjs +587 -0
- package/dist/index-BYEdADrG.cjs +227 -0
- package/dist/index-B_eGT6oX.js +225 -0
- package/dist/index-B_u5Boud.js +333 -0
- package/dist/index-BaH3FI9i.cjs +361 -0
- package/dist/index-BaluTf1I.cjs +707 -0
- package/dist/index-BblYlZ3A.cjs +131 -0
- package/dist/index-BcZC0OIN.js +234 -0
- package/dist/index-Bcjyyjhh.mjs +259 -0
- package/dist/index-BcoW0aPo.cjs +165 -0
- package/dist/index-BdNZKlDU.js +284 -0
- package/dist/index-Bf81cAA1.mjs +444 -0
- package/dist/index-Bg3H3fgZ.js +259 -0
- package/dist/index-Bgl_1Y6Q.mjs +681 -0
- package/dist/index-BgmItHIB.mjs +129 -0
- package/dist/index-BgryMCqm.mjs +213 -0
- package/dist/index-Bh6a3eXK.mjs +227 -0
- package/dist/index-BhPDIfmU.js +304 -0
- package/dist/index-BiTzMTFn.js +304 -0
- package/dist/index-BjbmOyBP.cjs +215 -0
- package/dist/index-BjwZX2iS.mjs +273 -0
- package/dist/index-Bm8hqSRd.cjs +168 -0
- package/dist/index-BmOn6xYL.js +228 -0
- package/dist/index-BmQrhPXB.cjs +131 -0
- package/dist/index-Bnb8TpOO.js +280 -0
- package/dist/index-BndUB2KV.mjs +381 -0
- package/dist/index-Bo74nI4n.js +129 -0
- package/dist/index-BoGmP6Cy.cjs +230 -0
- package/dist/index-BodMjESw.mjs +250 -0
- package/dist/index-BpJZCoVH.mjs +250 -0
- package/dist/index-Br-Y1qC_.cjs +446 -0
- package/dist/index-BrFtcRgi.mjs +194 -0
- package/dist/index-BsPxDJAB.mjs +238 -0
- package/dist/index-Bu7pZnPO.cjs +170 -0
- package/dist/index-Bu8SXnTf.mjs +227 -0
- package/dist/index-BuNNRp3W.mjs +117 -0
- package/dist/index-Bwh8HVkw.cjs +384 -0
- package/dist/index-BxK3Y72_.js +227 -0
- package/dist/index-BxPUzymh.cjs +208 -0
- package/dist/index-ByUUB7Zn.js +250 -0
- package/dist/index-ByUr80PD.cjs +306 -0
- package/dist/index-ByZa9qm8.mjs +273 -0
- package/dist/index-BzPCjhuQ.cjs +264 -0
- package/dist/index-Bz_LTy1A.mjs +222 -0
- package/dist/index-C05_HMLC.js +225 -0
- package/dist/index-C15P-_1j.cjs +229 -0
- package/dist/index-C1GgHOiD.js +228 -0
- package/dist/index-C4Pk-zTm.mjs +227 -0
- package/dist/index-C4dnTlBf.js +262 -0
- package/dist/index-C6LW00iX.mjs +505 -0
- package/dist/index-C6nkQ480.js +225 -0
- package/dist/index-C8Mu4K9Q.cjs +383 -0
- package/dist/index-C8mB7yWC.mjs +288 -0
- package/dist/index-C9Eh7qBC.js +273 -0
- package/dist/index-CAJ9YPxc.js +681 -0
- package/dist/index-CD03pVUt.cjs +373 -0
- package/dist/index-CD8GiuIg.js +227 -0
- package/dist/index-CHB_0VqK.mjs +333 -0
- package/dist/index-CKEgb_R7.cjs +215 -0
- package/dist/index-CLsasg69.js +228 -0
- package/dist/index-CMdC_Cah.js +213 -0
- package/dist/index-CNOcqGKC.cjs +227 -0
- package/dist/index-CNvZCDZa.js +166 -0
- package/dist/index-CO0GiXGE.js +168 -0
- package/dist/index-COGhiFjk.mjs +284 -0
- package/dist/index-COIlelpZ.mjs +262 -0
- package/dist/index-CPph-RFN.mjs +168 -0
- package/dist/index-CPu_XkjY.mjs +304 -0
- package/dist/index-CQ5t4ZXm.js +117 -0
- package/dist/index-CQeQ1nto.js +681 -0
- package/dist/index-CSc_T8Lu.js +218 -0
- package/dist/index-CUFKuE64.js +550 -0
- package/dist/index-CW8h3l6M.js +262 -0
- package/dist/index-CWrng7Hd.mjs +550 -0
- package/dist/index-CWuObqnS.mjs +587 -0
- package/dist/index-CX7-wc6X.cjs +1837 -0
- package/dist/index-CXviN8qZ.cjs +224 -0
- package/dist/index-CY9mowWW.mjs +705 -0
- package/dist/index-C_pTgB_1.js +194 -0
- package/dist/index-C_qaNb-X.mjs +225 -0
- package/dist/index-Ca0FeU7u.js +505 -0
- package/dist/index-Cb3ImEjd.cjs +165 -0
- package/dist/index-Cbhvi8yk.cjs +229 -0
- package/dist/index-Cc3vrs6_.mjs +228 -0
- package/dist/index-CcIXvx40.mjs +171 -0
- package/dist/index-CdaeeF3f.cjs +306 -0
- package/dist/index-CddVoIp2.js +213 -0
- package/dist/index-CeiRxGcN.mjs +218 -0
- package/dist/index-ChefKWWr.mjs +381 -0
- package/dist/index-Cj2ocjXI.cjs +227 -0
- package/dist/index-CkWEXzTN.js +129 -0
- package/dist/index-Ckhb9QAu.cjs +264 -0
- package/dist/index-CklJfQlf.cjs +220 -0
- package/dist/index-Cmh7PJUd.mjs +372 -0
- package/dist/index-Cn0ZJkAv.mjs +280 -0
- package/dist/index-CqTzarV1.mjs +198 -0
- package/dist/index-CrUbbFxE.js +284 -0
- package/dist/index-CsKaFB2K.mjs +228 -0
- package/dist/index-Cu8Ii5r7.cjs +335 -0
- package/dist/index-Cuw9ylL-.mjs +371 -0
- package/dist/index-CwOULUAt.mjs +382 -0
- package/dist/index-CyVnRqjE.cjs +196 -0
- package/dist/index-D-1dDKiZ.mjs +227 -0
- package/dist/index-D00bnaJy.cjs +220 -0
- package/dist/index-D07xiOJ6.cjs +446 -0
- package/dist/index-D1Ip6ro6.js +458 -0
- package/dist/index-D1Ymvd2b.cjs +286 -0
- package/dist/index-D5jOBT3f.cjs +240 -0
- package/dist/index-D5tEp8IU.js +337 -0
- package/dist/index-D7WuGKYY.cjs +227 -0
- package/dist/index-D8Dp6TnQ.cjs +1837 -0
- package/dist/index-D9OKpqgG.js +381 -0
- package/dist/index-DBMI2EcB.cjs +170 -0
- package/dist/index-DBRUKV0U.mjs +225 -0
- package/dist/index-DEvExC5x.cjs +119 -0
- package/dist/index-DEzxU_gQ.cjs +507 -0
- package/dist/index-DFypMD6R.cjs +261 -0
- package/dist/index-DHRqE92a.cjs +290 -0
- package/dist/index-DISym5OL.js +198 -0
- package/dist/index-DJ3ndv3i.mjs +705 -0
- package/dist/index-DJXP-Gmp.js +218 -0
- package/dist/index-DJlXDQOY.cjs +200 -0
- package/dist/index-DLW4GEJl.cjs +229 -0
- package/dist/index-DLu9E2Vq.js +238 -0
- package/dist/index-DM4ddIL6.js +382 -0
- package/dist/index-DMgHLbwU.cjs +339 -0
- package/dist/index-DN-ScBql.mjs +458 -0
- package/dist/index-DOkkIHER.js +163 -0
- package/dist/index-DRY8sDun.cjs +165 -0
- package/dist/index-DS3cjugP.mjs +171 -0
- package/dist/index-DS86eFsI.mjs +1835 -0
- package/dist/index-DUlT8CJ2.js +458 -0
- package/dist/index-DV1F4nxP.js +372 -0
- package/dist/index-DXsAcJ-o.mjs +359 -0
- package/dist/index-DZws2w4w.cjs +229 -0
- package/dist/index-D_HiVe2_.cjs +200 -0
- package/dist/index-Da6L5V_Z.mjs +681 -0
- package/dist/index-Dbb-jnWf.js +206 -0
- package/dist/index-DdXy_-T9.js +444 -0
- package/dist/index-DddNFRG3.js +337 -0
- package/dist/index-DejhKwvw.cjs +173 -0
- package/dist/index-DfBdD-5Z.cjs +383 -0
- package/dist/index-Df_KCbC4.mjs +213 -0
- package/dist/index-DiDq1sL6.cjs +240 -0
- package/dist/index-DiuJQ9Mq.js +198 -0
- package/dist/index-Djqj3DWJ.js +171 -0
- package/dist/index-Dk0q-ENv.mjs +166 -0
- package/dist/index-DlFElztE.mjs +163 -0
- package/dist/index-DlkxQ-B5.mjs +359 -0
- package/dist/index-Dm5kpK9t.js +227 -0
- package/dist/index-Dp8mobro.js +444 -0
- package/dist/index-DpBWZa1x.cjs +683 -0
- package/dist/index-DrkXuLUZ.js +227 -0
- package/dist/index-Dsq1FK90.cjs +275 -0
- package/dist/index-DtmhGgM8.cjs +282 -0
- package/dist/index-Du5MxO_2.mjs +505 -0
- package/dist/index-DveYQLCZ.cjs +460 -0
- package/dist/index-DxHMqS-W.js +117 -0
- package/dist/index-DyTApTHI.cjs +282 -0
- package/dist/index-DyTSkAm4.cjs +208 -0
- package/dist/index-DygJOEne.mjs +550 -0
- package/dist/index-DzAewrkw.js +238 -0
- package/dist/index-ESWdD7ek.cjs +215 -0
- package/dist/index-EuKHpnHv.mjs +117 -0
- package/dist/index-F1A7LMlw.mjs +228 -0
- package/dist/index-FP6hvgSw.cjs +552 -0
- package/dist/index-GDSrKnPp.mjs +198 -0
- package/dist/index-GMCZo-KH.js +222 -0
- package/dist/index-IQJLr7nR.js +288 -0
- package/dist/index-IawHHRZX.mjs +206 -0
- package/dist/index-Jk7MG7tE.cjs +286 -0
- package/dist/index-JtGxTXPr.mjs +337 -0
- package/dist/index-KAC20a9r.js +359 -0
- package/dist/index-LVWQqV-v.js +163 -0
- package/dist/index-Ls2fI7y4.js +163 -0
- package/dist/index-NB1VDvjW.cjs +374 -0
- package/dist/index-NIEZaRYg.cjs +261 -0
- package/dist/index-PQXUx1ZR.mjs +1835 -0
- package/dist/index-PyaLRKuk.mjs +168 -0
- package/dist/index-QQGo-BV1.mjs +444 -0
- package/dist/index-QXYDkAsQ.cjs +119 -0
- package/dist/index-SmEIf5jz.mjs +259 -0
- package/dist/index-UJhFwnD_.mjs +284 -0
- package/dist/index-UVyXzNlG.js +705 -0
- package/dist/index-UgyHGpUU.mjs +163 -0
- package/dist/index-UhQiJabs.cjs +707 -0
- package/dist/index-VvuhRvnC.mjs +218 -0
- package/dist/index-WPXuueaq.mjs +194 -0
- package/dist/index-X4u6bs58.js +259 -0
- package/dist/index-XZiO6uje.cjs +275 -0
- package/dist/index-YOlsBREZ.cjs +230 -0
- package/dist/index-Ytb942t9.js +587 -0
- package/dist/index-_2dg_MWu.cjs +460 -0
- package/dist/index-eFEW10em.js +213 -0
- package/dist/index-eq8bbEej.mjs +225 -0
- package/dist/index-f7FiDQMk.js +171 -0
- package/dist/index-fBzI1kbw.mjs +225 -0
- package/dist/index-fdDnq3vQ.js +163 -0
- package/dist/index-fqmAgjhG.js +206 -0
- package/dist/index-ikGyewP-.cjs +165 -0
- package/dist/index-jft-1bQ6.cjs +230 -0
- package/dist/index-l8e8ip4U.js +168 -0
- package/dist/index-lkBiml03.js +1835 -0
- package/dist/index-mm-YMeoi.js +505 -0
- package/dist/index-o7g3iua7.cjs +290 -0
- package/dist/index-ojnncNWd.js +587 -0
- package/dist/index-q9SCjCJM.mjs +280 -0
- package/dist/index-rn-_7-wp.cjs +196 -0
- package/dist/index-s27DHpTG.js +1835 -0
- package/dist/index-s2HuXM4d.mjs +206 -0
- package/dist/index-sbc7nDv3.js +213 -0
- package/dist/index-tx0X6vuE.mjs +222 -0
- package/dist/index-uCwv2hr-.mjs +166 -0
- package/dist/index-vHngHSlz.js +280 -0
- package/dist/index-xOtG5E4u.cjs +589 -0
- package/dist/index-zJk-Nm6b.mjs +458 -0
- package/dist/index-zqxgDrLR.mjs +382 -0
- package/dist/index.cjs +233 -0
- package/dist/index.d.cts +9 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +230 -0
- package/dist/index.mjs +230 -0
- package/dist/testkit-BtZjdl4n.js +269 -0
- package/dist/testkit-BtZjdl4n.mjs +269 -0
- package/dist/testkit-C920qivh.js +281 -0
- package/dist/testkit-C920qivh.mjs +281 -0
- package/dist/testkit-CAf-AsDy.cjs +273 -0
- package/dist/testkit-D0rTQ6MD.cjs +286 -0
- package/makefile +47 -0
- package/package.json +89 -0
|
@@ -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,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)
|