From 653e53fa7b6fc0546fb986752612e9a8d1ed9e57 Mon Sep 17 00:00:00 2001 From: cyril-ui-developer Date: Fri, 10 Apr 2026 16:24:24 -0400 Subject: [PATCH] Enable ESLint Plugins for Testing Library and Jest-DOM --- frontend/.eslintrc.js | 32 ++- frontend/package.json | 2 + frontend/packages/.eslintrc.js | 22 ++ frontend/yarn.lock | 370 ++++++++++++++++++++++++++++++++- 4 files changed, 419 insertions(+), 7 deletions(-) diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js index a7a0cbf8905..05561d983f8 100644 --- a/frontend/.eslintrc.js +++ b/frontend/.eslintrc.js @@ -26,7 +26,15 @@ module.exports = { extraFileExtensions: ['.json'], tsconfigRootDir: './', }, - plugins: ['react', 'react-hooks', '@typescript-eslint', 'graphql', 'eslint-plugin-tsdoc'], + plugins: [ + 'react', + 'react-hooks', + '@typescript-eslint', + 'graphql', + 'eslint-plugin-tsdoc', + 'testing-library', + 'jest-dom', + ], rules: { camelcase: [ 'error', @@ -129,4 +137,26 @@ module.exports = { VoidFunction: 'readonly', RequestInit: 'readonly', }, + overrides: [ + { + files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'], + plugins: ['testing-library', 'jest-dom'], + extends: ['plugin:testing-library/react', 'plugin:jest-dom/recommended'], + rules: { + // NOTE: Using eslint-plugin-testing-library v3.x (compatible with ESLint 6) + // Some newer rules are not available in this version: + // - prefer-user-event (added in v5.x) - Use code review to enforce userEvent over fireEvent + // - no-node-access (added in v5.x) - Use code review to enforce no container usage + // - prefer-query-by-disappearance - Not available in v3.x + // + // Available rules being enforced: + 'testing-library/await-fire-event': 'warn', // Encourages userEvent which is always async + 'testing-library/prefer-find-by': 'error', // Similar to prefer-query-by-disappearance + 'testing-library/no-await-sync-query': 'error', + 'testing-library/no-wait-for-empty-callback': 'error', + 'testing-library/prefer-screen-queries': 'error', + 'testing-library/prefer-presence-queries': 'error', + }, + }, + ], }; diff --git a/frontend/package.json b/frontend/package.json index bc548da0eff..fbd2f1f2cc5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -265,6 +265,8 @@ "cypress-jest-adapter": "^0.1.1", "cypress-multi-reporters": "^2.0.5", "esbuild-loader": "^4.4.2", + "eslint-plugin-jest-dom": "^4.0.3", + "eslint-plugin-testing-library": "^3.10.0", "file-loader": "6.2.0", "find-up": "4.x", "fork-ts-checker-webpack-plugin": "9.1.0", diff --git a/frontend/packages/.eslintrc.js b/frontend/packages/.eslintrc.js index 61c092a2923..81044940895 100644 --- a/frontend/packages/.eslintrc.js +++ b/frontend/packages/.eslintrc.js @@ -1,4 +1,26 @@ module.exports = { root: true, extends: ['plugin:console/react-typescript-prettier'], + plugins: ['testing-library', 'jest-dom'], + overrides: [ + { + files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'], + extends: ['plugin:testing-library/react', 'plugin:jest-dom/recommended'], + rules: { + // NOTE: Using eslint-plugin-testing-library v3.x (compatible with ESLint 6) + // Some newer rules are not available in this version: + // - prefer-user-event (added in v5.x) - Use code review to enforce userEvent over fireEvent + // - no-node-access (added in v5.x) - Use code review to enforce no container usage + // - prefer-query-by-disappearance - Not available in v3.x + // + // Available rules being enforced: + 'testing-library/await-fire-event': 'warn', // Encourages userEvent which is always async + 'testing-library/prefer-find-by': 'error', // Similar to prefer-query-by-disappearance + 'testing-library/no-await-sync-query': 'error', + 'testing-library/no-wait-for-empty-callback': 'error', + 'testing-library/prefer-screen-queries': 'error', + 'testing-library/prefer-presence-queries': 'error', + }, + }, + ], }; diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 137f659fb38..200aa555932 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1455,6 +1455,13 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.16.3": + version: 7.29.2 + resolution: "@babel/runtime@npm:7.29.2" + checksum: 10c0/30b80a0140d16467792e1bbeb06f655b0dab70407da38dfac7fedae9c859f9ae9d846ef14ad77bd3814c064295fe9b1bc551f1541ea14646ae9f22b71a8bc17a + languageName: node + linkType: hard + "@babel/template@npm:^7.10.4, @babel/template@npm:^7.28.6": version: 7.28.6 resolution: "@babel/template@npm:7.28.6" @@ -4119,6 +4126,22 @@ __metadata: languageName: node linkType: hard +"@testing-library/dom@npm:^8.11.1": + version: 8.20.1 + resolution: "@testing-library/dom@npm:8.20.1" + dependencies: + "@babel/code-frame": "npm:^7.10.4" + "@babel/runtime": "npm:^7.12.5" + "@types/aria-query": "npm:^5.0.1" + aria-query: "npm:5.1.3" + chalk: "npm:^4.1.0" + dom-accessibility-api: "npm:^0.5.9" + lz-string: "npm:^1.5.0" + pretty-format: "npm:^27.0.2" + checksum: 10c0/614013756706467f2a7f3f693c18377048c210ec809884f0f9be866f7d865d075805ad15f5d100e8a699467fdde09085bf79e23a00ea0a6ab001d9583ef15e5d + languageName: node + linkType: hard + "@testing-library/jest-dom@npm:^6.9.1": version: 6.9.1 resolution: "@testing-library/jest-dom@npm:6.9.1" @@ -5159,6 +5182,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/experimental-utils@npm:^3.10.1": + version: 3.10.1 + resolution: "@typescript-eslint/experimental-utils@npm:3.10.1" + dependencies: + "@types/json-schema": "npm:^7.0.3" + "@typescript-eslint/types": "npm:3.10.1" + "@typescript-eslint/typescript-estree": "npm:3.10.1" + eslint-scope: "npm:^5.0.0" + eslint-utils: "npm:^2.0.0" + peerDependencies: + eslint: "*" + checksum: 10c0/688ec095b8a88b3d8b9275e9d497528f5a24d648bbc2afb9772ed405d8e3bfbc48b6d33816aa46ee578d9cf070ea1f7c7529efadf98c851ff250dd40675d177f + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/parser@npm:5.62.0" @@ -5203,6 +5241,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:3.10.1": + version: 3.10.1 + resolution: "@typescript-eslint/types@npm:3.10.1" + checksum: 10c0/b7419c85aca131c8d0522a47fe21a3497f43345930f7a2be1faa57ffbda3587ab278526cf7c515440ace8e30e40a03fe5f73b2133d161ffa47c22821e2b8f568 + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/types@npm:5.62.0" @@ -5228,6 +5273,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:3.10.1": + version: 3.10.1 + resolution: "@typescript-eslint/typescript-estree@npm:3.10.1" + dependencies: + "@typescript-eslint/types": "npm:3.10.1" + "@typescript-eslint/visitor-keys": "npm:3.10.1" + debug: "npm:^4.1.1" + glob: "npm:^7.1.6" + is-glob: "npm:^4.0.1" + lodash: "npm:^4.17.15" + semver: "npm:^7.3.2" + tsutils: "npm:^3.17.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/4d733e2e4e1649fbf136183f72b75c59d434e1a987628d3177cb0555db1a47f77efeb1aba77e3cef3218728cfa1ef618864fa7690e285612f31d6f6d38a478ef + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" @@ -5264,6 +5328,15 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:3.10.1": + version: 3.10.1 + resolution: "@typescript-eslint/visitor-keys@npm:3.10.1" + dependencies: + eslint-visitor-keys: "npm:^1.1.0" + checksum: 10c0/74fe6592cc6f0cbfd6351f97d5e84d9d966cb1ab5f53cfe9f6d527c09b1f2ea4dbde8de67c8d59149a0486bdcafeee5c33730dce757311a7be546b1c2e49261b + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" @@ -6179,6 +6252,15 @@ __metadata: languageName: node linkType: hard +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: "npm:^2.0.5" + checksum: 10c0/edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf + languageName: node + linkType: hard + "aria-query@npm:5.3.0, aria-query@npm:^5.0.0": version: 5.3.0 resolution: "aria-query@npm:5.3.0" @@ -6219,6 +6301,16 @@ __metadata: languageName: node linkType: hard +"array-buffer-byte-length@npm:^1.0.0": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + is-array-buffer: "npm:^3.0.5" + checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d + languageName: node + linkType: hard + "array-flatten@npm:1.1.1": version: 1.1.1 resolution: "array-flatten@npm:1.1.1" @@ -6418,6 +6510,20 @@ __metadata: languageName: node linkType: hard +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 + languageName: node + linkType: hard + +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 + languageName: node + linkType: hard + "async-limiter@npm:~1.0.0": version: 1.0.0 resolution: "async-limiter@npm:1.0.0" @@ -9493,6 +9599,32 @@ __metadata: languageName: node linkType: hard +"deep-equal@npm:^2.0.5": + version: 2.2.3 + resolution: "deep-equal@npm:2.2.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.0" + call-bind: "npm:^1.0.5" + es-get-iterator: "npm:^1.1.3" + get-intrinsic: "npm:^1.2.2" + is-arguments: "npm:^1.1.1" + is-array-buffer: "npm:^3.0.2" + is-date-object: "npm:^1.0.5" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.2" + isarray: "npm:^2.0.5" + object-is: "npm:^1.1.5" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.4" + regexp.prototype.flags: "npm:^1.5.1" + side-channel: "npm:^1.0.4" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.13" + checksum: 10c0/a48244f90fa989f63ff5ef0cc6de1e4916b48ea0220a9c89a378561960814794a5800c600254482a2c8fd2e49d6c2e196131dc983976adb024c94a42dfe4949f + languageName: node + linkType: hard + "deep-is@npm:~0.1.3": version: 0.1.3 resolution: "deep-is@npm:0.1.3" @@ -10308,6 +10440,23 @@ __metadata: languageName: node linkType: hard +"es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.3" + has-symbols: "npm:^1.0.3" + is-arguments: "npm:^1.1.1" + is-map: "npm:^2.0.2" + is-set: "npm:^2.0.2" + is-string: "npm:^1.0.7" + isarray: "npm:^2.0.5" + stop-iteration-iterator: "npm:^1.0.0" + checksum: 10c0/ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 + languageName: node + linkType: hard + "es-module-lexer@npm:^2.0.0": version: 2.0.0 resolution: "es-module-lexer@npm:2.0.0" @@ -10728,6 +10877,19 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-jest-dom@npm:^4.0.3": + version: 4.0.3 + resolution: "eslint-plugin-jest-dom@npm:4.0.3" + dependencies: + "@babel/runtime": "npm:^7.16.3" + "@testing-library/dom": "npm:^8.11.1" + requireindex: "npm:^1.2.0" + peerDependencies: + eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4a9f17a1c3e537df6093cf82207121536a48565907d8173194339758f39d759db5f65fa6d632815eec36b4de2644fa2d721eae395c43943e2d4a76ecba9ebeb5 + languageName: node + linkType: hard + "eslint-plugin-jest@npm:23.1.1": version: 23.1.1 resolution: "eslint-plugin-jest@npm:23.1.1" @@ -10841,6 +11003,17 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-testing-library@npm:^3.10.0": + version: 3.10.2 + resolution: "eslint-plugin-testing-library@npm:3.10.2" + dependencies: + "@typescript-eslint/experimental-utils": "npm:^3.10.1" + peerDependencies: + eslint: ^5 || ^6 || ^7 + checksum: 10c0/f9bcb896c9fa6745883f506360b9765b8ef55ff8d553665f04389c82ca245316642f1464c0ae3ce37cd0223e9967d8a60ffc41499f5bf7422f5c29c024467bdb + languageName: node + linkType: hard + "eslint-plugin-tsdoc@npm:^0.2.14": version: 0.2.14 resolution: "eslint-plugin-tsdoc@npm:0.2.14" @@ -10870,6 +11043,15 @@ __metadata: languageName: node linkType: hard +"eslint-utils@npm:^2.0.0": + version: 2.1.0 + resolution: "eslint-utils@npm:2.1.0" + dependencies: + eslint-visitor-keys: "npm:^1.1.0" + checksum: 10c0/69521c5d6569384b24093125d037ba238d3d6e54367f7143af9928f5286369e912c26cad5016d730c0ffb9797ac9e83831059d7f1d863f7dc84330eb02414611 + languageName: node + linkType: hard + "eslint-visitor-keys@npm:^1.1.0": version: 1.1.0 resolution: "eslint-visitor-keys@npm:1.1.0" @@ -11967,6 +12149,13 @@ __metadata: languageName: node linkType: hard +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + "fuzzysearch@npm:1.0.x": version: 1.0.3 resolution: "fuzzysearch@npm:1.0.3" @@ -11974,6 +12163,13 @@ __metadata: languageName: node linkType: hard +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 + languageName: node + linkType: hard + "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -12020,6 +12216,27 @@ __metadata: languageName: node linkType: hard +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.2": + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" + dependencies: + async-function: "npm:^1.0.0" + async-generator-function: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + function-bind: "npm:^1.1.2" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d + languageName: node + linkType: hard + "get-own-enumerable-property-symbols@npm:^3.0.0": version: 3.0.2 resolution: "get-own-enumerable-property-symbols@npm:3.0.2" @@ -13330,6 +13547,17 @@ __metadata: languageName: node linkType: hard +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7 + languageName: node + linkType: hard + "internmap@npm:1 - 2": version: 2.0.3 resolution: "internmap@npm:2.0.3" @@ -13405,7 +13633,7 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4": +"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": version: 1.2.0 resolution: "is-arguments@npm:1.2.0" dependencies: @@ -13415,6 +13643,17 @@ __metadata: languageName: node linkType: hard +"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d + languageName: node + linkType: hard + "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -13491,7 +13730,7 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1": +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": version: 1.1.0 resolution: "is-date-object@npm:1.1.0" dependencies: @@ -13657,6 +13896,13 @@ __metadata: languageName: node linkType: hard +"is-map@npm:^2.0.2, is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + languageName: node + linkType: hard + "is-nan@npm:^1.3.2": version: 1.3.2 resolution: "is-nan@npm:1.3.2" @@ -13790,7 +14036,7 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.1.2, is-regex@npm:^1.2.1": +"is-regex@npm:^1.1.2, is-regex@npm:^1.1.4, is-regex@npm:^1.2.1": version: 1.2.1 resolution: "is-regex@npm:1.2.1" dependencies: @@ -13818,6 +14064,22 @@ __metadata: languageName: node linkType: hard +"is-set@npm:^2.0.2, is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db + languageName: node + linkType: hard + "is-ssh@npm:^1.3.0": version: 1.3.1 resolution: "is-ssh@npm:1.3.1" @@ -13841,7 +14103,7 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.1.1": +"is-string@npm:^1.0.5, is-string@npm:^1.0.7, is-string@npm:^1.1.1": version: 1.1.1 resolution: "is-string@npm:1.1.1" dependencies: @@ -13894,6 +14156,23 @@ __metadata: languageName: node linkType: hard +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" + dependencies: + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647 + languageName: node + linkType: hard + "is-windows@npm:^1.0.1, is-windows@npm:^1.0.2": version: 1.0.2 resolution: "is-windows@npm:1.0.2" @@ -13917,6 +14196,13 @@ __metadata: languageName: node linkType: hard +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -17369,6 +17655,8 @@ __metadata: cypress-multi-reporters: "npm:^2.0.5" dagre: "npm:^0.8.5" esbuild-loader: "npm:^4.4.2" + eslint-plugin-jest-dom: "npm:^4.0.3" + eslint-plugin-testing-library: "npm:^3.10.0" file-loader: "npm:6.2.0" file-saver: "npm:1.3.x" find-up: "npm:4.x" @@ -19210,6 +19498,20 @@ __metadata: languageName: node linkType: hard +"regexp.prototype.flags@npm:^1.5.1": + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77 + languageName: node + linkType: hard + "regexpp@npm:^2.0.1": version: 2.0.1 resolution: "regexpp@npm:2.0.1" @@ -19421,6 +19723,13 @@ __metadata: languageName: node linkType: hard +"requireindex@npm:^1.2.0": + version: 1.2.0 + resolution: "requireindex@npm:1.2.0" + checksum: 10c0/7fb42aed73bf8de9acc4d6716cf07acc7fbe180e58729433bafcf702e76e7bb10e54f8266c06bfec62d752e0ac14d50e8758833de539e6f4e2cd642077866153 + languageName: node + linkType: hard + "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" @@ -20037,6 +20346,18 @@ __metadata: languageName: node linkType: hard +"set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 + languageName: node + linkType: hard + "set-value@npm:^2.0.0, set-value@npm:^2.0.1": version: 2.0.1 resolution: "set-value@npm:2.0.1" @@ -20198,7 +20519,7 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.1.0": +"side-channel@npm:^1.0.4, side-channel@npm:^1.1.0": version: 1.1.0 resolution: "side-channel@npm:1.1.0" dependencies: @@ -20691,6 +21012,16 @@ __metadata: languageName: node linkType: hard +"stop-iteration-iterator@npm:^1.0.0": + version: 1.1.0 + resolution: "stop-iteration-iterator@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + internal-slot: "npm:^1.1.0" + checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09 + languageName: node + linkType: hard + "stream-browserify@npm:^2.0.0": version: 2.0.2 resolution: "stream-browserify@npm:2.0.2" @@ -23431,7 +23762,7 @@ __metadata: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.1": +"which-boxed-primitive@npm:^1.0.1, which-boxed-primitive@npm:^1.0.2": version: 1.1.1 resolution: "which-boxed-primitive@npm:1.1.1" dependencies: @@ -23444,6 +23775,18 @@ __metadata: languageName: node linkType: hard +"which-collection@npm:^1.0.1": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + languageName: node + linkType: hard + "which-module@npm:^2.0.0": version: 2.0.0 resolution: "which-module@npm:2.0.0" @@ -23451,6 +23794,21 @@ __metadata: languageName: node linkType: hard +"which-typed-array@npm:^1.1.13": + version: 1.1.20 + resolution: "which-typed-array@npm:1.1.20" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + for-each: "npm:^0.3.5" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/16fcdada95c8afb821cd1117f0ab50b4d8551677ac08187f21d4e444530913c9ffd2dac634f0c1183345f96344b69280f40f9a8bc52164ef409e555567c2604b + languageName: node + linkType: hard + "which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.2": version: 1.1.19 resolution: "which-typed-array@npm:1.1.19"