From 893e341c0481837e6a31fe6ff3b94b2350b48d84 Mon Sep 17 00:00:00 2001 From: Kamil Kisiela Date: Tue, 3 Sep 2024 10:10:32 +0200 Subject: [PATCH] Correct few things --- gateways/hive/install.sh | 2 +- gateways/hive/run.sh | 2 +- package-lock.json | 39 ++++++++++++++++++++++++++++++++++++--- package.json | 2 ++ src/cli.ts | 15 +++++++++++---- website/index.html | 4 ++-- 6 files changed, 53 insertions(+), 11 deletions(-) diff --git a/gateways/hive/install.sh b/gateways/hive/install.sh index 98d0e85..bca6f2e 100755 --- a/gateways/hive/install.sh +++ b/gateways/hive/install.sh @@ -1,2 +1,2 @@ # It's just to install dependencies and make it ready for `run.sh` script -npx --yes @graphql-hive/gateway@0.1.0 --version \ No newline at end of file +npx --yes @graphql-hive/gateway@0.1.1 --version \ No newline at end of file diff --git a/gateways/hive/run.sh b/gateways/hive/run.sh index e1c99e2..38e35f7 100755 --- a/gateways/hive/run.sh +++ b/gateways/hive/run.sh @@ -1,2 +1,2 @@ npm start supergraph -- --cwd ./gateways/hive --test $1 -npx --yes @graphql-hive/gateway@0.1.0 supergraph supergraph.graphql --port 4000 --fork 1 +npx --yes @graphql-hive/gateway@0.1.1 supergraph supergraph.graphql --port 4000 --fork 1 diff --git a/package-lock.json b/package-lock.json index c005db2..ec91796 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@apollo/composition": "2.9.0", "@apollo/subgraph": "2.9.0", "async-retry": "1.3.3", + "detect-port": "1.6.1", "dotenv": "16.4.5", "fets": "0.8.1", "get-port": "7.1.0", @@ -29,6 +30,7 @@ "@apollo/gateway": "2.9.0", "@apollo/server": "4.11.0", "@types/async-retry": "1.4.8", + "@types/detect-port": "1.3.5", "@types/express": "4.17.21", "@types/node": "20.14.12", "@types/wait-on": "5.3.4", @@ -1845,6 +1847,13 @@ "@types/node": "*" } }, + "node_modules/@types/detect-port": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/detect-port/-/detect-port-1.3.5.tgz", + "integrity": "sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", @@ -2208,6 +2217,15 @@ "node": ">= 0.6" } }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -3274,7 +3292,6 @@ "version": "4.3.6", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -3652,6 +3669,23 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + }, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -5904,8 +5938,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/mute-stream": { "version": "1.0.0", diff --git a/package.json b/package.json index 8df3983..aeedfe3 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "jest-diff": "29.7.0", "kill-port-process": "3.2.1", "wait-on": "7.2.0", + "detect-port": "1.6.1", "yargs": "17.7.2" }, "devDependencies": { @@ -72,6 +73,7 @@ "@types/node": "20.14.12", "@types/wait-on": "5.3.4", "@types/yargs": "17.0.32", + "@types/detect-port": "1.3.5", "express": "4.19.2", "prettier": "3.3.3", "tsx": "4.15.7", diff --git a/src/cli.ts b/src/cli.ts index 28b1e97..9774219 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -13,6 +13,7 @@ import retry from "async-retry"; import yargs from "yargs"; import waitOn from "wait-on"; import getPort from "get-port"; +import detectPort from "detect-port"; import { spawn } from "node:child_process"; import { hideBin } from "yargs/helpers"; import { run } from "node:test"; @@ -29,7 +30,7 @@ const ext = extname(fileURLToPath(import.meta.url)); const defaultPort = 4200; function readPort(address: string) { - return new URL(address).port; + return parseInt(new URL(address).port, 10); } function resolvePath( @@ -183,7 +184,7 @@ yargs(hideBin(process.argv)) process.stdout.write("\n"); - await killPortProcess(readPort(argv.graphql)).catch(() => {}); + await killPortIfRunning(readPort(argv.graphql)).catch(() => {}); const gatewayExit = Promise.withResolvers(); let gatewayExited = false; @@ -273,7 +274,7 @@ yargs(hideBin(process.argv)) mkdirSync(resolvePath(argv, "./logs")); } - await killPortProcess(readPort(argv.graphql)).catch(() => {}); + await killPortIfRunning(readPort(argv.graphql)).catch(() => {}); const logStream = createWriteStream( resolvePath(argv, `./logs/${argv.test}-gateway.log`), { @@ -397,7 +398,7 @@ yargs(hideBin(process.argv)) process.stdout.write("\n"); for await (const id of ids) { - await killPortProcess(readPort(argv.graphql)).catch(() => {}); + await killPortIfRunning(readPort(argv.graphql)).catch(() => {}); const logStream = createWriteStream( resolvePath(argv, `./logs/${id}-gateway.log`), { @@ -658,3 +659,9 @@ async function waitOnGraphQL(endpoints: { throw new Error("Failed to fetch __typename"); } } + +async function killPortIfRunning(port: number) { + if (await detectPort(port)) { + await killPortProcess(port); + } +} diff --git a/website/index.html b/website/index.html index 02b5b1d..d171066 100644 --- a/website/index.html +++ b/website/index.html @@ -468,7 +468,7 @@

Mesh GatewayHive Gateway (our Gateway for GraphQL Federation, previously known as GraphQL Mesh), in order to be fully compatible with the Apollo @@ -516,7 +516,7 @@

href="https://the-guild.dev/graphql/mesh" title="GraphQL Federation Gateway" >GraphQL Mesh + > (now Hive Gateway) and