From 46aee5d16c46ae734ba8196d4d942d0fb69d0730 Mon Sep 17 00:00:00 2001 From: Andy Jessop Date: Mon, 26 Aug 2024 09:59:43 +0200 Subject: [PATCH] fix: ignore nodejs_compat flags in runtime type generation (#6554) * fix: ignore nodejs_compat flags in runtime type generation * chore: add changeset * tests: create tests for getNodeCompatMode * chore: extract node compat helper to own file * chore: remove spurious files * chore: undo refactoring * chore: tidy up --------- Co-authored-by: Andy Jessop --- .changeset/mean-beers-search.md | 5 +++++ packages/wrangler/e2e/types.test.ts | 20 +++++++++++++++++++ .../src/type-generation/runtime/index.ts | 5 ++++- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 .changeset/mean-beers-search.md diff --git a/.changeset/mean-beers-search.md b/.changeset/mean-beers-search.md new file mode 100644 index 000000000000..cdebc46cc083 --- /dev/null +++ b/.changeset/mean-beers-search.md @@ -0,0 +1,5 @@ +--- +"wrangler": patch +--- + +fix: nodejs_compat flags no longer error when running wrangler types --x-include-runtime diff --git a/packages/wrangler/e2e/types.test.ts b/packages/wrangler/e2e/types.test.ts index 9437312f229b..f536e5e2058d 100644 --- a/packages/wrangler/e2e/types.test.ts +++ b/packages/wrangler/e2e/types.test.ts @@ -130,4 +130,24 @@ describe("types", () => { `📣 It looks like you have some Node.js compatibility turned on in your project. You might want to consider adding Node.js typings with "npm i --save-dev @types/node@20.8.3". Please see the docs for more details: https://developers.cloudflare.com/workers/languages/typescript/#transitive-loading-of-typesnode-overrides-cloudflareworkers-types` ); }); + + it("should not error with nodejs_compat flags", async () => { + const helper = new WranglerE2ETestHelper(); + await helper.seed({ + ...seed, + "wrangler.toml": dedent` + name = "test-worker" + main = "src/index.ts" + compatibility_date = "2023-01-01" + compatibility_flags = ["nodejs_compat", "experimental:nodejs_compat_v2"] + `, + }); + + const output = await helper.run( + `wrangler types --x-include-runtime="./types.d.ts"` + ); + + expect(output.stderr).toBe(""); + expect(output.status).toBe(0); + }); }); diff --git a/packages/wrangler/src/type-generation/runtime/index.ts b/packages/wrangler/src/type-generation/runtime/index.ts index 8e4ecffa35fa..1d2c275ffad8 100644 --- a/packages/wrangler/src/type-generation/runtime/index.ts +++ b/packages/wrangler/src/type-generation/runtime/index.ts @@ -49,7 +49,10 @@ export async function generateRuntimeTypes({ const types = await generate({ compatibilityDate: compatibility_date, - compatibilityFlags: compatibility_flags, + // Ignore nodejs compat flags as there is currently no mechanism to generate these dynamically. + compatibilityFlags: compatibility_flags.filter( + (flag) => !flag.includes("nodejs_compat") + ), }); await writeFile(outFile, types, "utf8");