From 356cec5f24678d6895cc089c8bdb1f1d9ba89f8d Mon Sep 17 00:00:00 2001 From: Charles Bochet Date: Mon, 8 Jun 2026 19:20:07 +0200 Subject: [PATCH] security: drop unused @genql/runtime dependency (#21334) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What Removes the `@genql/runtime` dependency from `twenty-client-sdk` and `twenty-sdk`. It was declared but **never imported** in source. ## Why The genql codegen (`@genql/cli` `generate()`) inlines a **fully self-contained runtime** into every generated client — see the committed `twenty-client-sdk/src/metadata/generated/runtime/` (all relative imports) and the generated `index.ts` which imports from `./runtime`, not `@genql/runtime`. So the `@genql/runtime` package was dead weight in the dep graph. Dropping it prunes its abandoned, vulnerable transitive deps **at the source**: - `ws@^6` (old) - `subscriptions-transport-ws@0.9.x` - `isomorphic-unfetch` - `zen-observable-ts` - `graphql-query-batcher` - `lodash` None are used by Twenty — the generated client makes plain `fetch` GraphQL requests and has no `ws`-based subscriptions. ## Verification - `@genql/runtime` is gone from `node_modules` and `yarn.lock` (103 lockfile lines removed); the remaining `subscriptions-transport-ws@0.11.0` is a different, maintained version pulled by an unrelated package. - `twenty-client-sdk` and `twenty-sdk` typecheck. - `twenty-client-sdk` unit tests pass (9/9). - With `@genql/runtime` physically removed from `node_modules`, `generate()` still emits a complete, self-contained client (`index.ts` imports `./runtime`). ## Scope `@genql/cli` (the codegen, which pulls `undici`) is intentionally **not** touched here — it is still required for client generation and will be addressed separately. --- packages/twenty-client-sdk/package.json | 1 - packages/twenty-sdk/package.json | 1 - yarn.lock | 103 ------------------------ 3 files changed, 105 deletions(-) diff --git a/packages/twenty-client-sdk/package.json b/packages/twenty-client-sdk/package.json index 5c3c40f0a8..f4848a0ed2 100644 --- a/packages/twenty-client-sdk/package.json +++ b/packages/twenty-client-sdk/package.json @@ -49,7 +49,6 @@ ], "dependencies": { "@genql/cli": "^3.0.3", - "@genql/runtime": "^2.10.0", "esbuild": "^0.28.0", "graphql": "^16.8.1" }, diff --git a/packages/twenty-sdk/package.json b/packages/twenty-sdk/package.json index 8f131bc7dd..6a2d908504 100644 --- a/packages/twenty-sdk/package.json +++ b/packages/twenty-sdk/package.json @@ -71,7 +71,6 @@ }, "license": "AGPL-3.0", "dependencies": { - "@genql/runtime": "^2.10.0", "@sniptt/guards": "^0.2.0", "axios": "^1.16.0", "chalk": "^5.3.0", diff --git a/yarn.lock b/yarn.lock index 6742e67d26..0d9f54cd08 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7708,26 +7708,6 @@ __metadata: languageName: node linkType: hard -"@genql/runtime@npm:^2.10.0": - version: 2.10.0 - resolution: "@genql/runtime@npm:2.10.0" - dependencies: - "@types/qs": "npm:^6.9.0" - "@types/ws": "npm:^6.0.1" - graphql-query-batcher: "npm:^1.0.1" - isomorphic-unfetch: "npm:^3.0.0" - lodash: "npm:^4.17.20" - subscriptions-transport-ws: "npm:^0.9.16" - tslib: "npm:^2.0.0" - utility-types: "npm:^3.10.0" - ws: "npm:^6.1.4" - zen-observable-ts: "npm:^0.8.21" - peerDependencies: - graphql: "*" - checksum: 10c0/e2a886c2469c933681e2b0ddd6a5b7f4cb12932251ba460e3cf2db4246817da79313ea4ba9769ec7cbe53ab9c1cb81ad8fcce6a969cd241185b79398d2a4f3c6 - languageName: node - linkType: hard - "@gitbeaker/core@npm:^38.12.1": version: 38.12.1 resolution: "@gitbeaker/core@npm:38.12.1" @@ -24232,15 +24212,6 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^6.0.1": - version: 6.0.4 - resolution: "@types/ws@npm:6.0.4" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/fa958e64596ca9487c3ed6012834de70b47f25d971f1950cfb8e6a99cb77ff340ae82ac7627744e01b58010674ef8ede07d5a2ac29ca9ad0d67a430fcc69ae14 - languageName: node - linkType: hard - "@types/ws@npm:^8.0.0": version: 8.5.12 resolution: "@types/ws@npm:8.5.12" @@ -28289,13 +28260,6 @@ __metadata: languageName: node linkType: hard -"async-limiter@npm:~1.0.0": - version: 1.0.1 - resolution: "async-limiter@npm:1.0.1" - checksum: 10c0/0693d378cfe86842a70d4c849595a0bb50dc44c11649640ca982fa90cbfc74e3cc4753b5a0847e51933f2e9c65ce8e05576e75e5e1fd963a086e673735b35969 - languageName: node - linkType: hard - "async-retry@npm:1.2.3": version: 1.2.3 resolution: "async-retry@npm:1.2.3" @@ -37510,13 +37474,6 @@ __metadata: languageName: node linkType: hard -"graphql-query-batcher@npm:^1.0.1": - version: 1.0.1 - resolution: "graphql-query-batcher@npm:1.0.1" - checksum: 10c0/804d0f4064721a2116a16b9eac422e9233e85f4ab5b250cb8f83662725658ffde35779a8ae8211037f3dd2f9717de8cb63b394ad8057ce22171a83db2471196a - languageName: node - linkType: hard - "graphql-redis-subscriptions@npm:2.7.0": version: 2.7.0 resolution: "graphql-redis-subscriptions@npm:2.7.0" @@ -40477,16 +40434,6 @@ __metadata: languageName: node linkType: hard -"isomorphic-unfetch@npm:^3.0.0": - version: 3.1.0 - resolution: "isomorphic-unfetch@npm:3.1.0" - dependencies: - node-fetch: "npm:^2.6.1" - unfetch: "npm:^4.2.0" - checksum: 10c0/d3b61fca06304db692b7f76bdfd3a00f410e42cfa7403c3b250546bf71589d18cf2f355922f57198e4cc4a9872d3647b20397a5c3edf1a347c90d57c83cf2a89 - languageName: node - linkType: hard - "isomorphic-ws@npm:5.0.0, isomorphic-ws@npm:^5.0.0": version: 5.0.0 resolution: "isomorphic-ws@npm:5.0.0" @@ -55003,21 +54950,6 @@ __metadata: languageName: node linkType: hard -"subscriptions-transport-ws@npm:^0.9.16": - version: 0.9.19 - resolution: "subscriptions-transport-ws@npm:0.9.19" - dependencies: - backo2: "npm:^1.0.2" - eventemitter3: "npm:^3.1.0" - iterall: "npm:^1.2.1" - symbol-observable: "npm:^1.0.4" - ws: "npm:^5.2.0 || ^6.0.0 || ^7.0.0" - peerDependencies: - graphql: ">=0.10.0" - checksum: 10c0/6f2ade56865f0ba291d3ff82c79781b051c2374873bac853286fedfdbc05001b8c4018ab7cba44af667ead7f573e48d18892d58a8f9ca8d90dfb4bff5c125045 - languageName: node - linkType: hard - "sucrase@npm:^3.35.0": version: 3.35.0 resolution: "sucrase@npm:3.35.0" @@ -56376,7 +56308,6 @@ __metadata: resolution: "twenty-client-sdk@workspace:packages/twenty-client-sdk" dependencies: "@genql/cli": "npm:^3.0.3" - "@genql/runtime": "npm:^2.10.0" "@typescript/native-preview": "npm:^7.0.0-dev.20260116.1" esbuild: "npm:^0.28.0" graphql: "npm:^16.8.1" @@ -56706,7 +56637,6 @@ __metadata: resolution: "twenty-sdk@workspace:packages/twenty-sdk" dependencies: "@genql/cli": "npm:^3.0.3" - "@genql/runtime": "npm:^2.10.0" "@prettier/sync": "npm:^0.5.2" "@sniptt/guards": "npm:^0.2.0" "@types/inquirer": "npm:^9.0.0" @@ -57729,13 +57659,6 @@ __metadata: languageName: node linkType: hard -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: 10c0/a5c0a896a6f09f278b868075aea65652ad185db30e827cb7df45826fe5ab850124bf9c44c4dafca4bf0c55a0844b17031e8243467fcc38dd7a7d435007151f1b - languageName: node - linkType: hard - "unhead@npm:1.11.20": version: 1.11.20 resolution: "unhead@npm:1.11.20" @@ -60186,15 +60109,6 @@ __metadata: languageName: node linkType: hard -"ws@npm:^6.1.4": - version: 6.2.4 - resolution: "ws@npm:6.2.4" - dependencies: - async-limiter: "npm:~1.0.0" - checksum: 10c0/5c2b9474164f9cb68c7776a1d10b0461c186f3a69bffb1028fca33eba5ab7206a09173fb0b311d6c5a81c8cf148406f8deb0b7d899542ab8ca67407d99717dad - languageName: node - linkType: hard - "ws@npm:^8.12.0, ws@npm:^8.13.0, ws@npm:^8.18.0, ws@npm:^8.18.3, ws@npm:^8.19.0": version: 8.21.0 resolution: "ws@npm:8.21.0" @@ -60868,23 +60782,6 @@ __metadata: languageName: node linkType: hard -"zen-observable-ts@npm:^0.8.21": - version: 0.8.21 - resolution: "zen-observable-ts@npm:0.8.21" - dependencies: - tslib: "npm:^1.9.3" - zen-observable: "npm:^0.8.0" - checksum: 10c0/fe4a02f862b5f7e8ae0f86230c37b84c7d5611f5c206981afb4043e732d04cf7067a6cbe1ba82d20f18b735a3387937195a12542158a631d308ae3959a1d93c4 - languageName: node - linkType: hard - -"zen-observable@npm:^0.8.0": - version: 0.8.15 - resolution: "zen-observable@npm:0.8.15" - checksum: 10c0/71cc2f2bbb537300c3f569e25693d37b3bc91f225cefce251a71c30bc6bb3e7f8e9420ca0eb57f2ac9e492b085b8dfa075fd1e8195c40b83c951dd59c6e4fbf8 - languageName: node - linkType: hard - "zhead@npm:^2.2.4": version: 2.2.4 resolution: "zhead@npm:2.2.4"