From 23f61911e2af18b8a58539fb32fc38aea680a812 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Wed, 24 Dec 2025 11:35:20 -0800 Subject: [PATCH 1/3] Remove need for sinon --- addons/addon-ligatures/package.json | 2 - addons/addon-ligatures/src/index.test.ts | 34 ++--- package-lock.json | 175 ----------------------- 3 files changed, 17 insertions(+), 194 deletions(-) diff --git a/addons/addon-ligatures/package.json b/addons/addon-ligatures/package.json index 4f0b747e..85a19c36 100644 --- a/addons/addon-ligatures/package.json +++ b/addons/addon-ligatures/package.json @@ -36,10 +36,8 @@ "font-ligatures": "^1.4.1" }, "devDependencies": { - "@types/sinon": "^5.0.1", "axios": "^1.6.0", "mkdirp": "0.5.5", - "sinon": "6.3.5", "yauzl": "^2.10.0" } } diff --git a/addons/addon-ligatures/src/index.test.ts b/addons/addon-ligatures/src/index.test.ts index bfc9b65b..1250e10e 100644 --- a/addons/addon-ligatures/src/index.test.ts +++ b/addons/addon-ligatures/src/index.test.ts @@ -4,61 +4,61 @@ */ import * as path from 'path'; -import * as sinon from 'sinon'; import { assert } from 'chai'; import * as fontFinder from 'font-finder'; import * as ligatureSupport from '.'; +const originalList = fontFinder.list; + describe('LigaturesAddon', () => { - let onRefresh: sinon.SinonStub; + let onRefresh: { called: boolean, callCount: number, (...args: any[]): void }; let term: MockTerminal; - // -> forms a ligature in Fira Code and Iosevka, but www only forms a ligature - // in Fira Code const input = 'a -> b www c'; before(() => { - sinon.stub(fontFinder, 'list').returns(Promise.resolve({ - + (fontFinder as any).list = () => Promise.resolve({ 'Fira Code': [{ path: path.join(__dirname, '../fonts/firaCode.otf'), style: fontFinder.Style.Regular, type: fontFinder.Type.Monospace, weight: 400 }], - 'Iosevka': [{ path: path.join(__dirname, '../fonts/iosevka.ttf'), style: fontFinder.Style.Regular, type: fontFinder.Type.Monospace, weight: 400 }], - 'Nonexistant Font': [{ path: path.join(__dirname, '../fonts/nonexistant.ttf'), style: fontFinder.Style.Regular, type: fontFinder.Type.Monospace, weight: 400 }] - } as fontFinder.FontList)); + } as fontFinder.FontList); + }); + + after(() => { + (fontFinder as any).list = originalList; }); beforeEach(() => { - onRefresh = sinon.stub(); + onRefresh = Object.assign((..._args: any[]) => { onRefresh.called = true; onRefresh.callCount++; }, { called: false, callCount: 0 }); term = new MockTerminal(onRefresh); ligatureSupport.enableLigatures(term as any); }); it('registers itself correctly', () => { - const term = new MockTerminal(sinon.spy()); + const term = new MockTerminal(() => {}); assert.isUndefined(term.joiner); ligatureSupport.enableLigatures(term as any); assert.isFunction(term.joiner); }); it('registers itself correctly when called directly', () => { - const term = new MockTerminal(sinon.spy()); + const term = new MockTerminal(() => {}); assert.isUndefined(term.joiner); ligatureSupport.enableLigatures(term as any); assert.isFunction(term.joiner); @@ -72,14 +72,14 @@ describe('LigaturesAddon', () => { term.options.fontFamily = 'Nonexistant Font, monospace'; assert.deepEqual(term.joiner!(input), []); await delay(500); - assert.isTrue(onRefresh.notCalled); + assert.strictEqual(onRefresh.callCount, 0); }); it('returns nothing if the font is not present on the system', async () => { term.options.fontFamily = 'notinstalled'; assert.deepEqual(term.joiner!(input), []); await delay(500); - assert.isTrue(onRefresh.notCalled); + assert.strictEqual(onRefresh.callCount, 0); assert.deepEqual(term.joiner!(input), []); }); @@ -87,7 +87,7 @@ describe('LigaturesAddon', () => { term.options.fontFamily = 'monospace'; assert.deepEqual(term.joiner!(input), []); await delay(500); - assert.isTrue(onRefresh.notCalled); + assert.strictEqual(onRefresh.callCount, 0); assert.deepEqual(term.joiner!(input), []); }); @@ -95,7 +95,7 @@ describe('LigaturesAddon', () => { term.options.fontFamily = ''; assert.deepEqual(term.joiner!(input), []); await delay(500); - assert.isTrue(onRefresh.notCalled); + assert.strictEqual(onRefresh.callCount, 0); assert.deepEqual(term.joiner!(input), []); }); @@ -103,7 +103,7 @@ describe('LigaturesAddon', () => { term.options.fontFamily = {} as any; assert.deepEqual(term.joiner!(input), []); await delay(500); - assert.isTrue(onRefresh.notCalled); + assert.strictEqual(onRefresh.callCount, 0); }); }); diff --git a/package-lock.json b/package-lock.json index b723bb72..915d5e93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,10 +90,8 @@ "font-ligatures": "^1.4.1" }, "devDependencies": { - "@types/sinon": "^5.0.1", "axios": "^1.6.0", "mkdirp": "0.5.5", - "sinon": "6.3.5", "yauzl": "^2.10.0" }, "engines": { @@ -1546,57 +1544,6 @@ "node": ">=18" } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/commons/node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" - } - }, - "node_modules/@sinonjs/formatio/node_modules/@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.1.3.tgz", - "integrity": "sha512-8zNeBkSKhU9a5cRNbpCKau2WWPfan+Q2zDlcXvXyhn9EsMqgYs4qzo0XHNVlXC6ABQL8fT6nV+zzo5RTHJzyXw==", - "dev": true - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", - "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", - "dev": true - }, "node_modules/@stylistic/eslint-plugin": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-4.4.1.tgz", @@ -1839,12 +1786,6 @@ "@types/node": "*" } }, - "node_modules/@types/sinon": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-5.0.7.tgz", - "integrity": "sha512-opwMHufhUwkn/UUDk35LDbKJpA2VBsZT8WLU8NjayvRLGPxQkN+8XmfC2Xl35MAscBE8469koLLBjaI3XLEIww==", - "dev": true - }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", @@ -2587,12 +2528,6 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, - "node_modules/array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", - "dev": true - }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -5555,12 +5490,6 @@ "node": ">=6" } }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -5620,25 +5549,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -5661,12 +5577,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lolex": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", - "dev": true - }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", @@ -5981,43 +5891,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/nise": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", - "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", - "dev": true, - "dependencies": { - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "lolex": "^5.0.1", - "path-to-regexp": "^1.7.0" - } - }, - "node_modules/nise/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/nise/node_modules/lolex": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", - "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", - "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", - "dev": true, - "dependencies": { - "isarray": "0.0.1" - } - }, "node_modules/node-addon-api": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", @@ -7365,54 +7238,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/sinon": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.3.5.tgz", - "integrity": "sha512-xgoZ2gKjyVRcF08RrIQc+srnSyY1JDJtxu3Nsz07j1ffjgXoY6uPLf/qja6nDBZgzYYEovVkFryw2+KiZz11xQ==", - "deprecated": "16.1.1", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.0.2", - "@sinonjs/formatio": "^3.0.0", - "@sinonjs/samsam": "^2.1.2", - "diff": "^3.5.0", - "lodash.get": "^4.4.2", - "lolex": "^2.7.5", - "nise": "^1.4.5", - "supports-color": "^5.5.0", - "type-detect": "^4.0.8" - } - }, - "node_modules/sinon/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/sinon/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/sinon/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/sixel": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/sixel/-/sixel-0.16.0.tgz", From 5e5c623d8b93106229f4bd67017ff85062b1b423 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Wed, 24 Dec 2025 12:09:28 -0800 Subject: [PATCH 2/3] Create test ts project in ligatures addon --- .../LigaturesAddon.test.ts} | 14 +++++++---- .../{src => test}/parse.test.ts | 3 ++- addons/addon-ligatures/test/tsconfig.json | 23 +++++++++++++++++++ addons/addon-ligatures/tsconfig.json | 3 ++- 4 files changed, 36 insertions(+), 7 deletions(-) rename addons/addon-ligatures/{src/index.test.ts => test/LigaturesAddon.test.ts} (90%) rename addons/addon-ligatures/{src => test}/parse.test.ts (95%) create mode 100644 addons/addon-ligatures/test/tsconfig.json diff --git a/addons/addon-ligatures/src/index.test.ts b/addons/addon-ligatures/test/LigaturesAddon.test.ts similarity index 90% rename from addons/addon-ligatures/src/index.test.ts rename to addons/addon-ligatures/test/LigaturesAddon.test.ts index 1250e10e..ece5145c 100644 --- a/addons/addon-ligatures/src/index.test.ts +++ b/addons/addon-ligatures/test/LigaturesAddon.test.ts @@ -5,9 +5,13 @@ import * as path from 'path'; import { assert } from 'chai'; -import * as fontFinder from 'font-finder'; -import * as ligatureSupport from '.'; +// Use require to get a mutable module object (ESM imports create read-only bindings) +// eslint-disable-next-line @typescript-eslint/no-require-imports +const fontFinder = require('font-finder'); + +// eslint-disable-next-line @typescript-eslint/no-require-imports +const ligatureSupport = require('../out-esbuild/index'); const originalList = fontFinder.list; @@ -18,7 +22,7 @@ describe('LigaturesAddon', () => { const input = 'a -> b www c'; before(() => { - (fontFinder as any).list = () => Promise.resolve({ + fontFinder.list = () => Promise.resolve({ 'Fira Code': [{ path: path.join(__dirname, '../fonts/firaCode.otf'), style: fontFinder.Style.Regular, @@ -37,11 +41,11 @@ describe('LigaturesAddon', () => { type: fontFinder.Type.Monospace, weight: 400 }] - } as fontFinder.FontList); + }); }); after(() => { - (fontFinder as any).list = originalList; + fontFinder.list = originalList; }); beforeEach(() => { diff --git a/addons/addon-ligatures/src/parse.test.ts b/addons/addon-ligatures/test/parse.test.ts similarity index 95% rename from addons/addon-ligatures/src/parse.test.ts rename to addons/addon-ligatures/test/parse.test.ts index 99dec083..98932883 100644 --- a/addons/addon-ligatures/src/parse.test.ts +++ b/addons/addon-ligatures/test/parse.test.ts @@ -5,7 +5,8 @@ import { assert } from 'chai'; -import parse from './parse'; +// eslint-disable-next-line @typescript-eslint/no-require-imports +const parse = require('../out-esbuild/parse').default; // TODO: integrate tests from http://test.csswg.org/suites/css-fonts-4_dev/nightly-unstable/ describe('parse', () => { diff --git a/addons/addon-ligatures/test/tsconfig.json b/addons/addon-ligatures/test/tsconfig.json new file mode 100644 index 00000000..ca68b468 --- /dev/null +++ b/addons/addon-ligatures/test/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "ESNext", + "lib": [ + "es2021" + ], + "rootDir": ".", + "outDir": "../out-esbuild-test", + "sourceMap": true, + "removeComments": true, + "baseUrl": ".", + "strict": true, + "types": [ + "../../../node_modules/@types/mocha", + "../../../node_modules/@types/node" + ] + }, + "include": [ + "./**/*", + "../../../typings/xterm.d.ts" + ] +} diff --git a/addons/addon-ligatures/tsconfig.json b/addons/addon-ligatures/tsconfig.json index b711f30a..2d820dd1 100644 --- a/addons/addon-ligatures/tsconfig.json +++ b/addons/addon-ligatures/tsconfig.json @@ -2,6 +2,7 @@ "files": [], "include": [], "references": [ - { "path": "./src" } + { "path": "./src" }, + { "path": "./test" } ] } From acb59daf334ad13238bc83cec5d80b48807c013a Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Wed, 24 Dec 2025 12:20:12 -0800 Subject: [PATCH 3/3] Fix lint --- addons/addon-ligatures/test/LigaturesAddon.test.ts | 3 --- addons/addon-ligatures/test/parse.test.ts | 1 - eslint.config.mjs | 8 ++++---- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/addons/addon-ligatures/test/LigaturesAddon.test.ts b/addons/addon-ligatures/test/LigaturesAddon.test.ts index ece5145c..0ba5ee5f 100644 --- a/addons/addon-ligatures/test/LigaturesAddon.test.ts +++ b/addons/addon-ligatures/test/LigaturesAddon.test.ts @@ -7,10 +7,7 @@ import * as path from 'path'; import { assert } from 'chai'; // Use require to get a mutable module object (ESM imports create read-only bindings) -// eslint-disable-next-line @typescript-eslint/no-require-imports const fontFinder = require('font-finder'); - -// eslint-disable-next-line @typescript-eslint/no-require-imports const ligatureSupport = require('../out-esbuild/index'); const originalList = fontFinder.list; diff --git a/addons/addon-ligatures/test/parse.test.ts b/addons/addon-ligatures/test/parse.test.ts index 98932883..d6c56d2c 100644 --- a/addons/addon-ligatures/test/parse.test.ts +++ b/addons/addon-ligatures/test/parse.test.ts @@ -5,7 +5,6 @@ import { assert } from 'chai'; -// eslint-disable-next-line @typescript-eslint/no-require-imports const parse = require('../out-esbuild/parse').default; // TODO: integrate tests from http://test.csswg.org/suites/css-fonts-4_dev/nightly-unstable/ diff --git a/eslint.config.mjs b/eslint.config.mjs index 6dffa934..baadc55f 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -11,10 +11,10 @@ export default tseslint.config( ignores: [ 'addons/*/src/third-party/*.ts', 'src/vs/*', - 'out/*', - 'out-test/*', - 'out-esbuild/*', - 'out-esbuild-test/*', + '**/out/*', + '**/out-test/*', + '**/out-esbuild/*', + '**/out-esbuild-test/*', '**/inwasm-sdks/*', '**/typings/*.d.ts', '**/node_modules',