From d5c0da639072f50e89836e664c295f3c6a93fb3b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 20 May 2026 07:17:10 +0000 Subject: [PATCH 1/7] Update dependency typescript to v6 --- javascript/package-lock.json | 8 ++++---- javascript/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/javascript/package-lock.json b/javascript/package-lock.json index 1b9000d49..651060995 100644 --- a/javascript/package-lock.json +++ b/javascript/package-lock.json @@ -20,7 +20,7 @@ "core-js": "3.49.0", "mocha": "11.7.5", "ts-node": "10.9.2", - "typescript": "5.9.3" + "typescript": "6.0.3" } }, "node_modules/@biomejs/biome": { @@ -1318,9 +1318,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/javascript/package.json b/javascript/package.json index 18dbed387..149ffa4e8 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -39,7 +39,7 @@ "core-js": "3.49.0", "mocha": "11.7.5", "ts-node": "10.9.2", - "typescript": "5.9.3" + "typescript": "6.0.3" }, "dependencies": { "@cucumber/messages": ">=31.0.0 <33" From 0bf39e8d3199325160f5bee7dfce7a5c1085cb90 Mon Sep 17 00:00:00 2001 From: David Goss Date: Wed, 20 May 2026 09:04:47 +0100 Subject: [PATCH 2/7] [javascript] Adopt @tsconfig/recommended for TypeScript 6 TypeScript 6 deprecated several options used in the old tsconfigs (target=ES5, moduleResolution=node10, downlevelIteration) and stopped auto-pulling transitive @types/* packages, so ts-node's compile would fail on tests referencing describe/it/node:assert. - Extend @tsconfig/recommended and discard the bespoke compilerOptions. - Pin @types/node to ^22 and add an explicit `types: [node, mocha]` so TS 6 picks them up without the legacy implicit lookup. - Collapse the cjs/esm/legacy build variants (which all wrote to the same dist/ and were sequentially overwriting each other) down to a single `tsc --project tsconfig.build.json`. - Remove the unused tsconfig.esm.json. --- javascript/package-lock.json | 10 +++++++++- javascript/package.json | 10 ++++------ javascript/tsconfig.build-cjs.json | 7 ------- javascript/tsconfig.build-esm.json | 8 -------- javascript/tsconfig.build.json | 11 +++-------- javascript/tsconfig.esm.json | 12 ------------ javascript/tsconfig.json | 24 +++++++++--------------- 7 files changed, 25 insertions(+), 57 deletions(-) delete mode 100644 javascript/tsconfig.build-cjs.json delete mode 100644 javascript/tsconfig.build-esm.json delete mode 100644 javascript/tsconfig.esm.json diff --git a/javascript/package-lock.json b/javascript/package-lock.json index 651060995..b53fc6ecb 100644 --- a/javascript/package-lock.json +++ b/javascript/package-lock.json @@ -14,8 +14,9 @@ "devDependencies": { "@biomejs/biome": "^2.4.13", "@cucumber/biome-config": "github:cucumber/biome-config#v0.1.0", + "@tsconfig/recommended": "^1.0.13", "@types/mocha": "10.0.10", - "@types/node": "22.19.19", + "@types/node": "^22.19.19", "commander": "^14.0.0", "core-js": "3.49.0", "mocha": "11.7.5", @@ -292,6 +293,13 @@ "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", "dev": true }, + "node_modules/@tsconfig/recommended": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@tsconfig/recommended/-/recommended-1.0.13.tgz", + "integrity": "sha512-sySRuBfMKyKO/j2ZAhR8kSembhjuPEV4Ra3AHtmWLq51+iGaudr45crPSzNC5b7/Ctrh9dfUpBuTlYrH6rM58Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/mocha": { "version": "10.0.10", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", diff --git a/javascript/package.json b/javascript/package.json index 149ffa4e8..3896edf8d 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -5,16 +5,13 @@ "main": "dist/src/index.js", "types": "dist/src/index.d.ts", "scripts": { - "build:cjs": "tsc --build tsconfig.build-cjs.json", - "build:esm": "tsc --build tsconfig.build-esm.json", - "build:legacy": "tsc --build tsconfig.build.json", - "build": "npm run build:cjs && npm run build:esm && npm run build:legacy", + "build": "tsc --project tsconfig.build.json", "clean": "npm run clean-tsc && rm -rf node_modules package-lock.json acceptance && rm -rf node_modules package-lock.json", "clean-tsc": "rm -rf dist", "test": "mocha", "fix": "biome check --fix --error-on-warnings", "lint": "biome check --error-on-warnings", - "prepublishOnly": "tsc --build tsconfig.build.json" + "prepublishOnly": "npm run build" }, "repository": { "type": "git", @@ -33,8 +30,9 @@ "devDependencies": { "@biomejs/biome": "^2.4.13", "@cucumber/biome-config": "github:cucumber/biome-config#v0.1.0", + "@tsconfig/recommended": "^1.0.13", "@types/mocha": "10.0.10", - "@types/node": "22.19.19", + "@types/node": "^22.19.19", "commander": "^14.0.0", "core-js": "3.49.0", "mocha": "11.7.5", diff --git a/javascript/tsconfig.build-cjs.json b/javascript/tsconfig.build-cjs.json deleted file mode 100644 index efbed36c5..000000000 --- a/javascript/tsconfig.build-cjs.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.build.json", - "compilerOptions": { - "target": "ES5", - "module": "CommonJS" - } -} diff --git a/javascript/tsconfig.build-esm.json b/javascript/tsconfig.build-esm.json deleted file mode 100644 index 424c829ad..000000000 --- a/javascript/tsconfig.build-esm.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.build.json", - "compilerOptions": { - "lib": ["ES2019"], - "target": "ES6", - "module": "ES6" - } -} diff --git a/javascript/tsconfig.build.json b/javascript/tsconfig.build.json index 987d78f94..9946d5d92 100644 --- a/javascript/tsconfig.build.json +++ b/javascript/tsconfig.build.json @@ -1,13 +1,8 @@ { "extends": "./tsconfig.json", + "include": ["src", "test"], "compilerOptions": { - "composite": true, - "declaration": true, - "declarationMap": true, - "sourceMap": true, "rootDir": ".", - "noEmit": false - }, - "files": ["src/gherkin-languages.json"], - "include": ["src", "test"] + "outDir": "dist" + } } diff --git a/javascript/tsconfig.esm.json b/javascript/tsconfig.esm.json deleted file mode 100644 index b3812940c..000000000 --- a/javascript/tsconfig.esm.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "ts-node": { - "compilerOptions": { - "module": "esnext", - "lib": ["es6"], - "target": "ESNext", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true - } - } -} diff --git a/javascript/tsconfig.json b/javascript/tsconfig.json index e7439e8d9..84374cc55 100644 --- a/javascript/tsconfig.json +++ b/javascript/tsconfig.json @@ -1,20 +1,14 @@ { + "extends": "@tsconfig/recommended/tsconfig.json", + "include": ["src", "test"], "compilerOptions": { - "declaration": true, - "target": "es2018", - "lib": ["es2019", "dom"], - "sourceMap": true, - "allowJs": false, - "jsx": "react", + "lib": ["es2023"], + "target": "es2022", + "types": ["node", "mocha"], "resolveJsonModule": true, - "module": "commonjs", - "esModuleInterop": true, - "noImplicitAny": true, - "moduleResolution": "node", - "outDir": "dist", - "downlevelIteration": true, - "skipLibCheck": true, - "strictNullChecks": false, - "experimentalDecorators": true + "declaration": true, + "inlineSourceMap": true, + "strict": false, + "noImplicitAny": true } } From e3cef9674b17c94fcff478cf50a1aecd71b7928e Mon Sep 17 00:00:00 2001 From: David Goss Date: Wed, 20 May 2026 09:05:33 +0100 Subject: [PATCH 3/7] [javascript] Relocate compiled output from dist/src to dist Previously the build set rootDir to the project root and included both src and test, so tsc emitted to dist/src/* and dist/test/*. Tighten the build config so the rootDir is src and only src is compiled, and update package.json main/types and the test-cli entrypoint to match the flatter dist layout. --- javascript/package.json | 4 ++-- javascript/test-cli.mjs | 2 +- javascript/tsconfig.build.json | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/javascript/package.json b/javascript/package.json index 3896edf8d..e2ce843ce 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -2,8 +2,8 @@ "name": "@cucumber/gherkin", "version": "39.1.0", "description": "Gherkin parser", - "main": "dist/src/index.js", - "types": "dist/src/index.d.ts", + "main": "dist/index.js", + "types": "dist/index.d.ts", "scripts": { "build": "tsc --project tsconfig.build.json", "clean": "npm run clean-tsc && rm -rf node_modules package-lock.json acceptance && rm -rf node_modules package-lock.json", diff --git a/javascript/test-cli.mjs b/javascript/test-cli.mjs index e56226940..fd9f90e34 100644 --- a/javascript/test-cli.mjs +++ b/javascript/test-cli.mjs @@ -1,7 +1,7 @@ import { readFileSync } from 'node:fs' import { IdGenerator } from '@cucumber/messages' import { Command } from 'commander' -import { generateMessages, makeSourceEnvelope } from './dist/src/index.js' +import { generateMessages, makeSourceEnvelope } from './dist/index.js' const program = new Command() program.option('--no-source', 'Do not output Source messages') diff --git a/javascript/tsconfig.build.json b/javascript/tsconfig.build.json index 9946d5d92..20eb686d6 100644 --- a/javascript/tsconfig.build.json +++ b/javascript/tsconfig.build.json @@ -1,8 +1,8 @@ { "extends": "./tsconfig.json", - "include": ["src", "test"], + "include": ["src"], "compilerOptions": { - "rootDir": ".", + "rootDir": "src", "outDir": "dist" } } From f144edeffa96b1346adba6e9ff3dad473834717a Mon Sep 17 00:00:00 2001 From: David Goss Date: Thu, 21 May 2026 08:47:38 +0100 Subject: [PATCH 4/7] [javascript] Drop unused clean/clean-tsc npm scripts Neither was wired into CI or the Makefile, and the clean script deleted package-lock.json (twice) which is dangerous if invoked by mistake. The Makefile's own clean target handles node_modules removal safely. --- javascript/package.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/javascript/package.json b/javascript/package.json index e2ce843ce..ceb4826e3 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -6,8 +6,6 @@ "types": "dist/index.d.ts", "scripts": { "build": "tsc --project tsconfig.build.json", - "clean": "npm run clean-tsc && rm -rf node_modules package-lock.json acceptance && rm -rf node_modules package-lock.json", - "clean-tsc": "rm -rf dist", "test": "mocha", "fix": "biome check --fix --error-on-warnings", "lint": "biome check --error-on-warnings", From c6c7e55f5159aa270ec8e25217432f52c5e41339 Mon Sep 17 00:00:00 2001 From: David Goss Date: Thu, 21 May 2026 08:57:35 +0100 Subject: [PATCH 5/7] [javascript] Drop unused core-js dependency Added in 1b951a67 (Sept 2020) alongside a planned "change the way to import some data" code change that never actually landed here. No imports of core-js exist in src/ or test/, and the ES5 build target it was presumably polyfilling for has been retired with the TS 6 upgrade. --- javascript/package-lock.json | 13 ------------- javascript/package.json | 1 - 2 files changed, 14 deletions(-) diff --git a/javascript/package-lock.json b/javascript/package-lock.json index b53fc6ecb..f70c7b0b7 100644 --- a/javascript/package-lock.json +++ b/javascript/package-lock.json @@ -18,7 +18,6 @@ "@types/mocha": "10.0.10", "@types/node": "^22.19.19", "commander": "^14.0.0", - "core-js": "3.49.0", "mocha": "11.7.5", "ts-node": "10.9.2", "typescript": "6.0.3" @@ -566,18 +565,6 @@ "node": ">=20" } }, - "node_modules/core-js": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", - "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", diff --git a/javascript/package.json b/javascript/package.json index ceb4826e3..fd7816b28 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -32,7 +32,6 @@ "@types/mocha": "10.0.10", "@types/node": "^22.19.19", "commander": "^14.0.0", - "core-js": "3.49.0", "mocha": "11.7.5", "ts-node": "10.9.2", "typescript": "6.0.3" From de7350ace3ce111f79d5baa70cfacccc0a2b47c0 Mon Sep 17 00:00:00 2001 From: David Goss Date: Thu, 21 May 2026 09:07:54 +0100 Subject: [PATCH 6/7] [javascript] Bump target/lib to es2024 Aligns with the support floor of Node.js 22 (which added the last ES2024 piece, Promise.withResolvers, in 22.0) and the evergreen browsers that have shipped every ES2024 feature for 2+ years. --- javascript/tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/javascript/tsconfig.json b/javascript/tsconfig.json index 84374cc55..c98e1786b 100644 --- a/javascript/tsconfig.json +++ b/javascript/tsconfig.json @@ -2,8 +2,8 @@ "extends": "@tsconfig/recommended/tsconfig.json", "include": ["src", "test"], "compilerOptions": { - "lib": ["es2023"], - "target": "es2022", + "lib": ["es2024"], + "target": "es2024", "types": ["node", "mocha"], "resolveJsonModule": true, "declaration": true, From 47d29c7eb137d36aaeaeffe176c6deff4f30377b Mon Sep 17 00:00:00 2001 From: David Goss Date: Fri, 29 May 2026 12:06:39 +0100 Subject: [PATCH 7/7] further tsconfig adjustments --- javascript/tsconfig.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/javascript/tsconfig.json b/javascript/tsconfig.json index c98e1786b..65b6cacd0 100644 --- a/javascript/tsconfig.json +++ b/javascript/tsconfig.json @@ -4,10 +4,13 @@ "compilerOptions": { "lib": ["es2024"], "target": "es2024", - "types": ["node", "mocha"], + "module": "NodeNext", + "moduleResolution": "NodeNext", "resolveJsonModule": true, + "types": ["node", "mocha"], "declaration": true, "inlineSourceMap": true, + "inlineSources": true, "strict": false, "noImplicitAny": true }