diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 3bbb4d77f..222b2f8ff 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -72,7 +72,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [16.x, 18.x, 20.x, 21.x, 22.x, 23.x] + node-version: [16.x, 18.x, 20.x, 21.x, 22.x, 23.x, 24.x] eslint-version: [7, 8, 9] ts-eslint-plugin-version: [6, 7, 8] exclude: diff --git a/CHANGELOG.md b/CHANGELOG.md index b657b8ddc..2b1511499 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [28.13.1](https://github.com/jest-community/eslint-plugin-jest/compare/v28.13.0...v28.13.1) (2025-06-10) + + +### Bug Fixes + +* **prefer-ending-with-an-expect:** don't report on `await expect` ([#1752](https://github.com/jest-community/eslint-plugin-jest/issues/1752)) ([5e3d687](https://github.com/jest-community/eslint-plugin-jest/commit/5e3d687f2f304ece35fb683091e9f819e99641f7)) + # [28.13.0](https://github.com/jest-community/eslint-plugin-jest/compare/v28.12.0...v28.13.0) (2025-06-06) diff --git a/package.json b/package.json index f76f3ea17..26593de43 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-jest", - "version": "28.13.0", + "version": "28.13.1", "description": "ESLint rules for Jest", "keywords": [ "eslint", diff --git a/src/rules/__tests__/prefer-ending-with-an-expect.test.ts b/src/rules/__tests__/prefer-ending-with-an-expect.test.ts index fe9bd3a65..723b4d635 100644 --- a/src/rules/__tests__/prefer-ending-with-an-expect.test.ts +++ b/src/rules/__tests__/prefer-ending-with-an-expect.test.ts @@ -53,7 +53,7 @@ ruleTester.run('prefer-ending-with-an-expect', rule, { code: dedent` test('verifies chained expect method call', () => { doSomething(); - + tester .foo() .bar() @@ -70,6 +70,10 @@ ruleTester.run('prefer-ending-with-an-expect', rule, { `, options: [{ assertFunctionNames: ['td.verify'] }], }, + { + code: 'it("should pass", async () => expect(true).toBeDefined())', + parserOptions: { ecmaVersion: 2017 }, + }, { code: 'it("should pass", () => expect(true).toBeDefined())', options: [ @@ -92,6 +96,34 @@ ruleTester.run('prefer-ending-with-an-expect', rule, { expect(container.toHTML()).toContain('Hello Bob!'); }); `, + { + code: dedent` + it('is a complete test', async () => { + const container = render(Greeter); + + expect(container).toBeDefined(); + + container.setProp('name', 'Bob'); + + await expect(container.toHTML()).resolve.toContain('Hello Bob!'); + }); + `, + parserOptions: { ecmaVersion: 2017 }, + }, + { + code: dedent` + it('is a complete test', async function () { + const container = render(Greeter); + + expect(container).toBeDefined(); + + container.setProp('name', 'Bob'); + + await expect(container.toHTML()).resolve.toContain('Hello Bob!'); + }); + `, + parserOptions: { ecmaVersion: 2017 }, + }, { code: dedent` describe('GET /user', function () { @@ -280,6 +312,24 @@ ruleTester.run('prefer-ending-with-an-expect', rule, { }, ], }, + { + code: dedent` + it('is a complete test', async () => { + const container = render(Greeter); + + await expect(container).toBeDefined(); + + await container.setProp('name', 'Bob'); + }); + `, + parserOptions: { ecmaVersion: 2017 }, + errors: [ + { + messageId: 'mustEndWithExpect', + type: AST_NODE_TYPES.Identifier, + }, + ], + }, ], }); diff --git a/src/rules/__tests__/prefer-importing-jest-globals.test.ts b/src/rules/__tests__/prefer-importing-jest-globals.test.ts index fde6afd48..33b331793 100644 --- a/src/rules/__tests__/prefer-importing-jest-globals.test.ts +++ b/src/rules/__tests__/prefer-importing-jest-globals.test.ts @@ -302,7 +302,6 @@ ruleTester.run('prefer-importing-jest-globals', rule, { expect(true).toBeDefined(); }) `, - // todo: this shouldn't be indenting the "test" output: dedent` const { expect, test } = require('@jest/globals'); const source = 'globals'; diff --git a/src/rules/prefer-ending-with-an-expect.ts b/src/rules/prefer-ending-with-an-expect.ts index e0661f29a..ac9db2342 100644 --- a/src/rules/prefer-ending-with-an-expect.ts +++ b/src/rules/prefer-ending-with-an-expect.ts @@ -40,6 +40,24 @@ function matchesAssertFunctionName( ); } +function getLastStatement(fn: FunctionExpression): TSESTree.Node | null { + if (fn.body.type === AST_NODE_TYPES.BlockStatement) { + if (fn.body.body.length === 0) { + return null; + } + + const lastStatement = fn.body.body[fn.body.body.length - 1]; + + if (lastStatement.type === AST_NODE_TYPES.ExpressionStatement) { + return lastStatement.expression; + } + + return lastStatement; + } + + return fn.body; +} + export default createRule< [ Partial<{ @@ -85,24 +103,6 @@ export default createRule< context, [{ assertFunctionNames = ['expect'], additionalTestBlockFunctions = [] }], ) { - function getLastStatement(fn: FunctionExpression): TSESTree.Node | null { - if (fn.body.type === AST_NODE_TYPES.BlockStatement) { - if (fn.body.body.length === 0) { - return null; - } - - const lastStatement = fn.body.body[fn.body.body.length - 1]; - - if (lastStatement.type === AST_NODE_TYPES.ExpressionStatement) { - return lastStatement.expression; - } - - return lastStatement; - } - - return fn.body; - } - return { CallExpression(node) { const name = getNodeName(node.callee) ?? ''; @@ -118,7 +118,11 @@ export default createRule< return; } - const lastStatement = getLastStatement(node.arguments[1]); + let lastStatement = getLastStatement(node.arguments[1]); + + if (lastStatement?.type === AST_NODE_TYPES.AwaitExpression) { + lastStatement = lastStatement.argument; + } if ( lastStatement?.type === AST_NODE_TYPES.CallExpression && diff --git a/yarn.lock b/yarn.lock index ce3e4e84d..13282398f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -54,9 +54,9 @@ __metadata: linkType: hard "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.2": - version: 7.27.3 - resolution: "@babel/compat-data@npm:7.27.3" - checksum: c6087989612312de697b21e6855d087c8b7376e5cf47e05a2a990fc67318e439e117ae2d977d317e5912e0323a3da13d6aca88348ef3c1218b0c74cc58b0a0cf + version: 7.27.5 + resolution: "@babel/compat-data@npm:7.27.5" + checksum: 8706be55f1c6e1cf85bfb3f2b3afdabba82142b339a11b62c694d07907b082d5715dfbe77fbbad891979809bdd013a0c9e2e5c3419dc8099b9fb7a45215f0f73 languageName: node linkType: hard @@ -84,15 +84,15 @@ __metadata: linkType: hard "@babel/generator@npm:^7.27.3, @babel/generator@npm:^7.7.2": - version: 7.27.3 - resolution: "@babel/generator@npm:7.27.3" + version: 7.27.5 + resolution: "@babel/generator@npm:7.27.5" dependencies: - "@babel/parser": ^7.27.3 + "@babel/parser": ^7.27.5 "@babel/types": ^7.27.3 "@jridgewell/gen-mapping": ^0.3.5 "@jridgewell/trace-mapping": ^0.3.25 jsesc: ^3.0.2 - checksum: c0b1b399ff62fa0f1903679ab2b088fd4312c33154c0ae78228094c196ecf53ce8e525b8f5e537ac3117ff9a49cdf7b3640f129114908dfadc6541853f3747a2 + checksum: f6d3bf70f6bfbc5df263a023200728c53161d7f3ee3607bd8b2222c8568b6dd604ee490e305f0492a8225dac059ad75b4cc772b5cfd7d967e70360499d4d3701 languageName: node linkType: hard @@ -281,23 +281,23 @@ __metadata: linkType: hard "@babel/helpers@npm:^7.27.4": - version: 7.27.4 - resolution: "@babel/helpers@npm:7.27.4" + version: 7.27.6 + resolution: "@babel/helpers@npm:7.27.6" dependencies: "@babel/template": ^7.27.2 - "@babel/types": ^7.27.3 - checksum: a50ce7ff92d9a7235f68e72274c1c3aaa57e53439d8656fce5119e7d75fe383377634b2ebddf2e8b795af2b010a32808fe34834ba7e2f7fc49bf031a239c83a7 + "@babel/types": ^7.27.6 + checksum: 12f96a5800ff677481dbc0a022c617303e945210cac4821ad5377a31201ffd8d9c4d00f039ed1487cf2a3d15868fb2d6cabecdb1aba334bd40a846f1938053a2 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.27.3, @babel/parser@npm:^7.27.4": - version: 7.27.4 - resolution: "@babel/parser@npm:7.27.4" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.27.4, @babel/parser@npm:^7.27.5": + version: 7.27.5 + resolution: "@babel/parser@npm:7.27.5" dependencies: "@babel/types": ^7.27.3 bin: parser: ./bin/babel-parser.js - checksum: 846d26768826c79fecd0fddca34da1d3b2814afa2907b5379769e5265b15824ab2feea76c598b3db11284935bd04133b96bd5f5ca8d4c1cf2780000afd0feb68 + checksum: 16f00a12895522c1682f1f047332010e129ba517add3a2db347a658e02f60434fc38f9105a9d6ec3fd6bfb5d1b0b70d88585c1f10e06e2b58fba29004a42d648 languageName: node linkType: hard @@ -628,13 +628,13 @@ __metadata: linkType: hard "@babel/plugin-transform-block-scoping@npm:^7.27.1": - version: 7.27.3 - resolution: "@babel/plugin-transform-block-scoping@npm:7.27.3" + version: 7.27.5 + resolution: "@babel/plugin-transform-block-scoping@npm:7.27.5" dependencies: "@babel/helper-plugin-utils": ^7.27.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 03e85d9a5578e4a22618ae9b010cdbb883b8fea100007f81e919cbd37704d6b237ce657ab9320d216c84a8212239662252d5eb60f2d45520346c8722050e1624 + checksum: bd710674bebe2e90b1daee960523d06c958f060f439ce2eef6b157c780c0654168131d0312a06dd71c5b186ecc2a818334d16f8368bd273ab549d6230f074135 languageName: node linkType: hard @@ -1030,13 +1030,13 @@ __metadata: linkType: hard "@babel/plugin-transform-regenerator@npm:^7.27.1": - version: 7.27.4 - resolution: "@babel/plugin-transform-regenerator@npm:7.27.4" + version: 7.27.5 + resolution: "@babel/plugin-transform-regenerator@npm:7.27.5" dependencies: "@babel/helper-plugin-utils": ^7.27.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 53d2659eff4cda8cc399ce504f698f72610c3f4ac9beda1653e0177d88bbd05256ea44cc1fabc358b219e4cf77dca1e3a8076ac4428a88a6d1cf1b1c085f8a50 + checksum: d343dbe491f2b2ef953ce990761006b8f1f9231044b3c244529d34335ba8337829e6d55cae0e4e9ec6d4952bc4875097c8776eee01119cd45529bc49e90c085f languageName: node linkType: hard @@ -1314,13 +1314,13 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.27.3 - resolution: "@babel/types@npm:7.27.3" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.27.6, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.27.6 + resolution: "@babel/types@npm:7.27.6" dependencies: "@babel/helper-string-parser": ^7.27.1 "@babel/helper-validator-identifier": ^7.27.1 - checksum: f0d43c0231f3ebc118480e149292dcd92ea128e2650285ced99ff2e5610db2171305f59aa07406ba0cb36af8e4331a53a69576d6b0c3f3176144dd3ad514b9ae + checksum: c3bd0984d892b0edec38fd12cf63f620bb52fba8187ec7cbe2d1aff5bee5e185e0fd86a3fb90b4d8f18b072113d07901476d0e39f58d5c988db14b231a6ea735 languageName: node linkType: hard @@ -2743,9 +2743,9 @@ __metadata: linkType: hard "@types/estree@npm:*": - version: 1.0.7 - resolution: "@types/estree@npm:1.0.7" - checksum: d9312b7075bdd08f3c9e1bb477102f5458aaa42a8eec31a169481ce314ca99ac716645cff4fca81ea65a2294b0276a0de63159d1baca0f8e7b5050a92de950ad + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: bd93e2e415b6f182ec4da1074e1f36c480f1d26add3e696d54fb30c09bc470897e41361c8fd957bf0985024f8fbf1e6e2aff977d79352ef7eb93a5c6dcff6c11 languageName: node linkType: hard @@ -2815,11 +2815,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 22.15.29 - resolution: "@types/node@npm:22.15.29" + version: 22.15.30 + resolution: "@types/node@npm:22.15.30" dependencies: undici-types: ~6.21.0 - checksum: 201aabe3614d68fdf84f3255e2380381180de26ecdfd091f8809bf46fd2a41e73b2df4d94780c2054597f3c203d1c9d378359c21c551fb4eef8b12406698d6c9 + checksum: c380ad176575dc847a119e63afe457f3481c0095ef1720605d42b3133cac1c5980179643ce67c9a314c83b9a45f2b17bde5f15b29d8aa1d17e0a43318273829b languageName: node linkType: hard @@ -2931,14 +2931,16 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/project-service@npm:8.33.0" +"@typescript-eslint/project-service@npm:8.33.1": + version: 8.33.1 + resolution: "@typescript-eslint/project-service@npm:8.33.1" dependencies: - "@typescript-eslint/tsconfig-utils": ^8.33.0 - "@typescript-eslint/types": ^8.33.0 + "@typescript-eslint/tsconfig-utils": ^8.33.1 + "@typescript-eslint/types": ^8.33.1 debug: ^4.3.4 - checksum: efb90f2fea9d6e0af9eeec34161002862e1f8a7a63dcecac4d57d81fa80319da06f0a34ad897ea72d66e975af8076026f16e1a7b111a46c2a0d49f0401794058 + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 237618a025c11587d079ce82c289a43579c422ff134a32b08ef3804e5bac7632c692f7acd49d1e6520c55f41edfdabf54069c9d460d1a5e05e051027657c96b0 languageName: node linkType: hard @@ -2952,22 +2954,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/scope-manager@npm:8.33.0" +"@typescript-eslint/scope-manager@npm:8.33.1": + version: 8.33.1 + resolution: "@typescript-eslint/scope-manager@npm:8.33.1" dependencies: - "@typescript-eslint/types": 8.33.0 - "@typescript-eslint/visitor-keys": 8.33.0 - checksum: e5a82f102a9e9671bcbc64493e1f0788cc251c40516c12cb904ab5b9aa36b62c3c86b9e2ee2b1f267591764bddd1c6744d3b1144b84da9cbb71e9f879f068519 + "@typescript-eslint/types": 8.33.1 + "@typescript-eslint/visitor-keys": 8.33.1 + checksum: fbc3ec340f4a0a9541f5898e44137ce1cb10678a8347ebce9b216342e50041c54d59515e34335fb3869db56ec3c2807408894d19a4aee53fd4ca183316008ffb languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.33.0, @typescript-eslint/tsconfig-utils@npm:^8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.33.0" +"@typescript-eslint/tsconfig-utils@npm:8.33.1, @typescript-eslint/tsconfig-utils@npm:^8.33.1": + version: 8.33.1 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.33.1" peerDependencies: typescript: ">=4.8.4 <5.9.0" - checksum: 5bb139be996a16f65c012c083e4c0dc2ddafd1295940203e6c2a1ac9fa0718b1a91f74354f162d3d9614b013e062863414d4478c57ffbf78dfd7cb4f5701abde + checksum: 9e0e348af4d54b7e42a015bf36e08965c8fa389ac7b179c2ccf2bec5fce4b31e951397394dcbaea6fb0ddf782f4f2f2ee71df108173742f756705f82d653cc9d languageName: node linkType: hard @@ -2995,10 +2997,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.33.0, @typescript-eslint/types@npm:^8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/types@npm:8.33.0" - checksum: 3fa8c4598960c93e4f002d0d62c39072617b58808af88237b87d26a506576fd33cf5822505128575cf3c817257d7ee08a696f015369f6958303c2e73a1c83fc5 +"@typescript-eslint/types@npm:8.33.1, @typescript-eslint/types@npm:^8.33.1": + version: 8.33.1 + resolution: "@typescript-eslint/types@npm:8.33.1" + checksum: 80ad8b857324da1778e0dd7af213b18ff18abb0a4fd600a80379e68fdec17c1f0dc2e2bb29667b0c4d9f1a113978d0bef71eb380fe95d239247f4b58d24af32f languageName: node linkType: hard @@ -3021,14 +3023,14 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.33.0" +"@typescript-eslint/typescript-estree@npm:8.33.1": + version: 8.33.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.33.1" dependencies: - "@typescript-eslint/project-service": 8.33.0 - "@typescript-eslint/tsconfig-utils": 8.33.0 - "@typescript-eslint/types": 8.33.0 - "@typescript-eslint/visitor-keys": 8.33.0 + "@typescript-eslint/project-service": 8.33.1 + "@typescript-eslint/tsconfig-utils": 8.33.1 + "@typescript-eslint/types": 8.33.1 + "@typescript-eslint/visitor-keys": 8.33.1 debug: ^4.3.4 fast-glob: ^3.3.2 is-glob: ^4.0.3 @@ -3037,7 +3039,7 @@ __metadata: ts-api-utils: ^2.1.0 peerDependencies: typescript: ">=4.8.4 <5.9.0" - checksum: 365de7456d593c4728f81e01c318b76f7e954246c4703e01a27532e756a2854d859ccbf13562bcadba34f02ed202cd04dd88ea841b9e38a8a70ce4bc9e5fc731 + checksum: aacb9252572be7079252dd3798e99ec0f8b7eee6875ab431fe2f646705ea1f9f968d26a0611b9d02080ed1da1986280f3b9df5ad15e9a7b54026ae274fc435fd languageName: node linkType: hard @@ -3058,18 +3060,18 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^8.0.0": - version: 8.33.0 - resolution: "@typescript-eslint/utils@npm:8.33.0" +"@typescript-eslint/utils@npm:^8.0.0, @typescript-eslint/utils@npm:^8.26.1": + version: 8.33.1 + resolution: "@typescript-eslint/utils@npm:8.33.1" dependencies: "@eslint-community/eslint-utils": ^4.7.0 - "@typescript-eslint/scope-manager": 8.33.0 - "@typescript-eslint/types": 8.33.0 - "@typescript-eslint/typescript-estree": 8.33.0 + "@typescript-eslint/scope-manager": 8.33.1 + "@typescript-eslint/types": 8.33.1 + "@typescript-eslint/typescript-estree": 8.33.1 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: e654ceac6afaada23a6841c23da848db89bb1980f96af900cdd5f14805508ed7c012bdd3747c8ce038d0f2747db4ea71e9a3165d3e2745fad61a09c224a419ce + checksum: aef41fe93d7137336cd8bcc05ea56b55dfa86e2616a86176f51ee867607263a33eee025a2130d586a6a27d7e0564c9593bb3786073425dccd82b910e43984fae languageName: node linkType: hard @@ -3083,13 +3085,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.33.0": - version: 8.33.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.33.0" +"@typescript-eslint/visitor-keys@npm:8.33.1": + version: 8.33.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.33.1" dependencies: - "@typescript-eslint/types": 8.33.0 + "@typescript-eslint/types": 8.33.1 eslint-visitor-keys: ^4.2.0 - checksum: c92eacedd97c9baa742e747d5ff7251616456621fcbb5ebf09a1981718778fbdb30a19dbe36e75af437780345bd0617ebcb5ff57b458a442a60b5d5430f8f836 + checksum: d8bbb35ff28aaa11313d1bf6871efe343862836a0ca1083d833227a7426be7c8c791a4abc1cd0e3d86c5c0ad371fd72a3ef018e92c73e17fc75a789ca40a2e41 languageName: node linkType: hard @@ -3138,11 +3140,11 @@ __metadata: linkType: hard "acorn@npm:^8.11.0, acorn@npm:^8.4.1, acorn@npm:^8.9.0": - version: 8.14.1 - resolution: "acorn@npm:8.14.1" + version: 8.15.0 + resolution: "acorn@npm:8.15.0" bin: acorn: bin/acorn - checksum: 260d9bb6017a1b6e42d31364687f0258f78eb20210b36ef2baad38fd619d78d4e95ff7dde9b3dbe0d81f137f79a8d651a845363a26e6985997f7b71145dc5e94 + checksum: 309c6b49aedf1a2e34aaf266de06de04aab6eb097c02375c66fdeb0f64556a6a823540409914fb364d9a11bc30d79d485a2eba29af47992d3490e9886c4391c3 languageName: node linkType: hard @@ -3349,16 +3351,18 @@ __metadata: linkType: hard "array-includes@npm:^3.1.8": - version: 3.1.8 - resolution: "array-includes@npm:3.1.8" + version: 3.1.9 + resolution: "array-includes@npm:3.1.9" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.4 define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-object-atoms: ^1.0.0 - get-intrinsic: ^1.2.4 - is-string: ^1.0.7 - checksum: eb39ba5530f64e4d8acab39297c11c1c5be2a4ea188ab2b34aba5fb7224d918f77717a9d57a3e2900caaa8440e59431bdaf5c974d5212ef65d97f132e38e2d91 + es-abstract: ^1.24.0 + es-object-atoms: ^1.1.1 + get-intrinsic: ^1.3.0 + is-string: ^1.1.1 + math-intrinsics: ^1.1.0 + checksum: b58dc526fe415252e50319eaf88336e06e75aa673e3b58d252414739a4612dbe56e7b613fdcc7c90561dc9cf9202bbe5ca029ccd8c08362746459475ae5a8f3e languageName: node linkType: hard @@ -3796,9 +3800,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001718": - version: 1.0.30001720 - resolution: "caniuse-lite@npm:1.0.30001720" - checksum: 97b9f9de842595ff9674001abb9c5bc093c03bb985d481ed97617ea48fc248bfb2cc1f1afe19da2bf20016f28793e495fa2f339e22080d8da3c9714fb7950926 + version: 1.0.30001721 + resolution: "caniuse-lite@npm:1.0.30001721" + checksum: 1f1e1f5f070f97ee83a08601709413300957be624790a8f7b3aebd5746d648e8d50be4ef9572a50281198b2f7acc63fdfc1a0bc04c23bbffba0ab4b3c69d4b76 languageName: node linkType: hard @@ -3866,21 +3870,21 @@ __metadata: linkType: hard "cheerio@npm:^1.0.0-rc.10": - version: 1.0.0 - resolution: "cheerio@npm:1.0.0" + version: 1.1.0 + resolution: "cheerio@npm:1.1.0" dependencies: cheerio-select: ^2.1.0 dom-serializer: ^2.0.0 domhandler: ^5.0.3 - domutils: ^3.1.0 + domutils: ^3.2.2 encoding-sniffer: ^0.2.0 - htmlparser2: ^9.1.0 - parse5: ^7.1.2 - parse5-htmlparser2-tree-adapter: ^7.0.0 + htmlparser2: ^10.0.0 + parse5: ^7.3.0 + parse5-htmlparser2-tree-adapter: ^7.1.0 parse5-parser-stream: ^7.1.2 - undici: ^6.19.5 + undici: ^7.10.0 whatwg-mimetype: ^4.0.0 - checksum: ade4344811dcad5b5d78392506ef6bab1900c13a65222c869e745a38370d287f4b94838ac6d752883a84d937edb62b5bd0deaf70e6f38054acbfe3da4881574a + checksum: 0408eaf2c809013adddd647f1b0f0efc68b4cbd465ee336857e587e02b6512411f6906b49bba7778bb3002187afbae706731282dbf88340210a026ae2370e990 languageName: node linkType: hard @@ -4517,7 +4521,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6, debug@npm:^4.4.0": version: 4.4.1 resolution: "debug@npm:4.4.1" dependencies: @@ -4715,7 +4719,7 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^3.0.1, domutils@npm:^3.1.0": +"domutils@npm:^3.0.1, domutils@npm:^3.2.1, domutils@npm:^3.2.2": version: 3.2.2 resolution: "domutils@npm:3.2.2" dependencies: @@ -4795,9 +4799,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.160": - version: 1.5.161 - resolution: "electron-to-chromium@npm:1.5.161" - checksum: 80cbed2237eec0349878692600971c57a099d08c1928ae812aa8f7e96cc0220088a4f1854b8bdcb464ec5cb553805bcc69373b49157776ca9828c58539a534d6 + version: 1.5.165 + resolution: "electron-to-chromium@npm:1.5.165" + checksum: 49725e9c02fcc2b1a89aa2624603d151b1da1ac7a9c017d9ab91f894f463466fea210785b46dea184bbaf3871893b2dac8e062fe05b94348d8e2853e91737e63 languageName: node linkType: hard @@ -4830,12 +4834,12 @@ __metadata: linkType: hard "encoding-sniffer@npm:^0.2.0": - version: 0.2.0 - resolution: "encoding-sniffer@npm:0.2.0" + version: 0.2.1 + resolution: "encoding-sniffer@npm:0.2.1" dependencies: iconv-lite: ^0.6.3 whatwg-encoding: ^3.1.1 - checksum: 05ad76b674066e62abc80427eb9e89ecf5ed50f4d20c392f7465992d309215687e3ae1ae8b5d5694fb258f4517c759694c3b413d6c724e1024e1cf98750390eb + checksum: d96cc88bbab6a88f57805491fa948b7b1c30f8488939fe4397c58c79ce766a1027f4c10de1893a9b5e489c4ad8ed927f6a8a87f1d114b6f3d5cb3bbbc73601d7 languageName: node linkType: hard @@ -4858,7 +4862,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.2.0, entities@npm:^4.5.0": +"entities@npm:^4.2.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 @@ -4866,9 +4870,9 @@ __metadata: linkType: hard "entities@npm:^6.0.0": - version: 6.0.0 - resolution: "entities@npm:6.0.0" - checksum: 4e964b5549b0f1e7a88836527d38181aa7b2f87222ed2424e78309781b17212de684c84094435f53bea69a7e7e2505268fd96772af166adb686d086d64361435 + version: 6.0.1 + resolution: "entities@npm:6.0.1" + checksum: 937b952e81aca641660a6a07f70001c6821973dea3ae7f6a5013eadce94620f3ed2e9c745832d503c8811ce6e97704d8a0396159580c0e567d815234de7fdecf languageName: node linkType: hard @@ -4912,7 +4916,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9": +"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": version: 1.24.0 resolution: "es-abstract@npm:1.24.0" dependencies: @@ -5267,10 +5271,11 @@ __metadata: linkType: soft "eslint-plugin-n@npm:^17.0.0": - version: 17.18.0 - resolution: "eslint-plugin-n@npm:17.18.0" + version: 17.19.0 + resolution: "eslint-plugin-n@npm:17.19.0" dependencies: "@eslint-community/eslint-utils": ^4.5.0 + "@typescript-eslint/utils": ^8.26.1 enhanced-resolve: ^5.17.1 eslint-plugin-es-x: ^7.8.0 get-tsconfig: ^4.8.1 @@ -5278,9 +5283,10 @@ __metadata: ignore: ^5.3.2 minimatch: ^9.0.5 semver: ^7.6.3 + ts-declaration-location: ^1.0.6 peerDependencies: eslint: ">=8.23.0" - checksum: ab08af06a5d76e678beb18f281e63b5ee7f1c4660b7e90c6b75c1ab1b5a341228c3ffe86983940289c9a3b6fb2dfe0e406c5401fd8e9591b365b876c109861cb + checksum: 04b4babc87c062d88109ce80440d98b700b14a8021ecd5d6c2d7bcad6b69563d4bcf7066ec933a43fd352376dd6cfd441e322222ecd6539b8903cf2eb3caec37 languageName: node linkType: hard @@ -6321,15 +6327,15 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:^9.1.0": - version: 9.1.0 - resolution: "htmlparser2@npm:9.1.0" +"htmlparser2@npm:^10.0.0": + version: 10.0.0 + resolution: "htmlparser2@npm:10.0.0" dependencies: domelementtype: ^2.3.0 domhandler: ^5.0.3 - domutils: ^3.1.0 - entities: ^4.5.0 - checksum: e5f8d5193967e4a500226f37bdf2c0f858cecb39dde14d0439f24bf2c461a4342778740d988fbaba652b0e4cb6052f7f2e99e69fc1a329a86c629032bb76e7c8 + domutils: ^3.2.1 + entities: ^6.0.0 + checksum: ba81aca5d344437e791ffddf61d498972fc0e7dd2d41f59f920e93aedb64667a0f38fed88e0d81fe23ea5a10825991caa020212fdd72a0dc287ab2aaad95fbf5 languageName: node linkType: hard @@ -6926,7 +6932,7 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.7, is-string@npm:^1.1.1": +"is-string@npm:^1.1.1": version: 1.1.1 resolution: "is-string@npm:1.1.1" dependencies: @@ -9442,7 +9448,7 @@ __metadata: languageName: node linkType: hard -"parse5-htmlparser2-tree-adapter@npm:^7.0.0": +"parse5-htmlparser2-tree-adapter@npm:^7.1.0": version: 7.1.0 resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0" dependencies: @@ -9475,7 +9481,7 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^7.0.0, parse5@npm:^7.1.2": +"parse5@npm:^7.0.0, parse5@npm:^7.3.0": version: 7.3.0 resolution: "parse5@npm:7.3.0" dependencies: @@ -10472,9 +10478,9 @@ __metadata: linkType: hard "shell-quote@npm:^1.6.1": - version: 1.8.2 - resolution: "shell-quote@npm:1.8.2" - checksum: 1e97b62ced1c4c5135015978ebf273bed1f425a68cf84163e83fbb0f34b3ff9471e656720dab2b7cbb4ae0f58998e686d17d166c28dfb3662acd009e8bd7faed + version: 1.8.3 + resolution: "shell-quote@npm:1.8.3" + checksum: 550dd84e677f8915eb013d43689c80bb114860649ec5298eb978f40b8f3d4bc4ccb072b82c094eb3548dc587144bb3965a8676f0d685c1cf4c40b5dc27166242 languageName: node linkType: hard @@ -10566,13 +10572,13 @@ __metadata: linkType: hard "simple-git@npm:^3.20.0": - version: 3.27.0 - resolution: "simple-git@npm:3.27.0" + version: 3.28.0 + resolution: "simple-git@npm:3.28.0" dependencies: "@kwsites/file-exists": ^1.1.1 "@kwsites/promise-deferred": ^1.1.1 - debug: ^4.3.5 - checksum: bc602d67317a5421363f4cbe446bc71336387a7ea9864b23993dcbbd7e4847e346a234aa5b46bf9d80130d2448cbaeb21cf8f7b62572dce093fb4643ff7ffafd + debug: ^4.4.0 + checksum: d4f4a56f0eaf916e3c4b801342f6e6c32e73a3eb8c5497f61f71ff21f30462c64537ba76f2cc835d6cd1ffe6198bd52b3e242b0a70444c8cd21faa9f61f75634 languageName: node linkType: hard @@ -11252,6 +11258,17 @@ __metadata: languageName: node linkType: hard +"ts-declaration-location@npm:^1.0.6": + version: 1.0.7 + resolution: "ts-declaration-location@npm:1.0.7" + dependencies: + picomatch: ^4.0.2 + peerDependencies: + typescript: ">=4.0.0" + checksum: d1bfa610fae8175389af580f25e8aab5dd5c7fb8daf83560fa8d555da8ef03542dde8552a9c3d1fb4beaed8670db863083c61413846d91cb3e5caea6636e45f7 + languageName: node + linkType: hard + "ts-node@npm:^10.2.1, ts-node@npm:^10.8.1": version: 10.9.2 resolution: "ts-node@npm:10.9.2" @@ -11500,10 +11517,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:^6.19.5": - version: 6.21.3 - resolution: "undici@npm:6.21.3" - checksum: a2af0601deece36acbcc11ef722f36ad3c1e035d3065b9fbb36987487f7b69904046fa95c18f228a872ca45441f156fcaacd948fc920b0a97d0c1ab78ea63c04 +"undici@npm:^7.10.0": + version: 7.10.0 + resolution: "undici@npm:7.10.0" + checksum: 28fc36aa7ed9b1ab1d6f7660c0b07a71e657d30af3d968aeb018c0a30dc8bdb2b48d96f2c587795720cc38bdd96e7590c7402f58151316149aeb0fc8258d7c1d languageName: node linkType: hard @@ -11666,9 +11683,9 @@ __metadata: linkType: hard "validate-npm-package-name@npm:^6.0.0": - version: 6.0.0 - resolution: "validate-npm-package-name@npm:6.0.0" - checksum: 4d018c4fa07f95534a5fea667adc653b1ef52f08bf56aff066c28394499d0a6949c0b00edbd7077c4dc1e041da9220af7c742ced67d7d2d6a1b07d10cbe91b29 + version: 6.0.1 + resolution: "validate-npm-package-name@npm:6.0.1" + checksum: 754448c4337977981a886a26986fcb2088e1253277037de3be0f483eefbab535c5ad9316ef47ed33ab4cb3a43d8daaf1b3748eeebca642e1eccd614287e26a1f languageName: node linkType: hard