From 228246c0c4d67b439d9b16603cac281d58355c47 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 10:40:59 -0500 Subject: [PATCH 001/113] remove eslint-plugin-dev --- npm/eslint-plugin-dev/.eslintignore | 3 - npm/eslint-plugin-dev/.eslintrc.json | 10 - npm/eslint-plugin-dev/.npmignore | 2 - npm/eslint-plugin-dev/CHANGELOG.md | 74 ---- npm/eslint-plugin-dev/LICENSE.md | 24 -- npm/eslint-plugin-dev/README.md | 212 ----------- .../arrow-body-multiline-braces.js | 17 - .../lib/custom-rules/index.js | 8 - .../lib/custom-rules/no-only.js | 53 --- .../lib/custom-rules/no-return-before.js | 73 ---- .../lib/custom-rules/skip-comment.js | 84 ----- npm/eslint-plugin-dev/lib/index.js | 357 ------------------ .../lib/scripts/lint-changed.js | 37 -- .../lib/scripts/lint-pre-commit.js | 63 ---- .../lib/scripts/lint-pre-push.js | 43 --- .../lib/scripts/lint-staged.js | 30 -- .../lib/scripts/lint.spec.js | 163 -------- npm/eslint-plugin-dev/lib/scripts/utils.js | 112 ------ npm/eslint-plugin-dev/package.json | 57 --- npm/eslint-plugin-dev/test/.eslintrc | 5 - .../test/arrow-body-multiline-braces.spec.js | 55 --- .../test/fixtures/multiline.js | 9 - .../test/fixtures/no-return-before-fail.js | 10 - .../test/fixtures/no-return-before-pass.js | 10 - .../test/fixtures/oneline.js | 5 - .../test/fixtures/skip-comment-config.js | 10 - .../test/fixtures/skip-comment-fail.js | 11 - .../test/fixtures/skip-comment-pass.js | 25 -- .../test/fixtures/with-only.js | 11 - npm/eslint-plugin-dev/test/no-only.spec.js | 53 --- .../test/no-return-before.spec.js | 99 ----- .../test/skip-comment.spec.js | 92 ----- 32 files changed, 1817 deletions(-) delete mode 100644 npm/eslint-plugin-dev/.eslintignore delete mode 100644 npm/eslint-plugin-dev/.eslintrc.json delete mode 100644 npm/eslint-plugin-dev/.npmignore delete mode 100644 npm/eslint-plugin-dev/CHANGELOG.md delete mode 100644 npm/eslint-plugin-dev/LICENSE.md delete mode 100644 npm/eslint-plugin-dev/README.md delete mode 100644 npm/eslint-plugin-dev/lib/custom-rules/arrow-body-multiline-braces.js delete mode 100644 npm/eslint-plugin-dev/lib/custom-rules/index.js delete mode 100644 npm/eslint-plugin-dev/lib/custom-rules/no-only.js delete mode 100644 npm/eslint-plugin-dev/lib/custom-rules/no-return-before.js delete mode 100644 npm/eslint-plugin-dev/lib/custom-rules/skip-comment.js delete mode 100644 npm/eslint-plugin-dev/lib/index.js delete mode 100755 npm/eslint-plugin-dev/lib/scripts/lint-changed.js delete mode 100755 npm/eslint-plugin-dev/lib/scripts/lint-pre-commit.js delete mode 100755 npm/eslint-plugin-dev/lib/scripts/lint-pre-push.js delete mode 100755 npm/eslint-plugin-dev/lib/scripts/lint-staged.js delete mode 100644 npm/eslint-plugin-dev/lib/scripts/lint.spec.js delete mode 100644 npm/eslint-plugin-dev/lib/scripts/utils.js delete mode 100644 npm/eslint-plugin-dev/package.json delete mode 100644 npm/eslint-plugin-dev/test/.eslintrc delete mode 100644 npm/eslint-plugin-dev/test/arrow-body-multiline-braces.spec.js delete mode 100644 npm/eslint-plugin-dev/test/fixtures/multiline.js delete mode 100644 npm/eslint-plugin-dev/test/fixtures/no-return-before-fail.js delete mode 100644 npm/eslint-plugin-dev/test/fixtures/no-return-before-pass.js delete mode 100644 npm/eslint-plugin-dev/test/fixtures/oneline.js delete mode 100644 npm/eslint-plugin-dev/test/fixtures/skip-comment-config.js delete mode 100644 npm/eslint-plugin-dev/test/fixtures/skip-comment-fail.js delete mode 100644 npm/eslint-plugin-dev/test/fixtures/skip-comment-pass.js delete mode 100644 npm/eslint-plugin-dev/test/fixtures/with-only.js delete mode 100644 npm/eslint-plugin-dev/test/no-only.spec.js delete mode 100644 npm/eslint-plugin-dev/test/no-return-before.spec.js delete mode 100644 npm/eslint-plugin-dev/test/skip-comment.spec.js diff --git a/npm/eslint-plugin-dev/.eslintignore b/npm/eslint-plugin-dev/.eslintignore deleted file mode 100644 index 6fe4231de92b..000000000000 --- a/npm/eslint-plugin-dev/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -!.* -**/package-lock.json -test/fixtures diff --git a/npm/eslint-plugin-dev/.eslintrc.json b/npm/eslint-plugin-dev/.eslintrc.json deleted file mode 100644 index b7e94b45ffe6..000000000000 --- a/npm/eslint-plugin-dev/.eslintrc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "plugins": [ - "@cypress/dev", - "promise" - ], - "extends": [ - "plugin:promise/recommended", - "plugin:@cypress/dev/general" - ] -} diff --git a/npm/eslint-plugin-dev/.npmignore b/npm/eslint-plugin-dev/.npmignore deleted file mode 100644 index 2e5519c0b8ec..000000000000 --- a/npm/eslint-plugin-dev/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -/* -!lib/ diff --git a/npm/eslint-plugin-dev/CHANGELOG.md b/npm/eslint-plugin-dev/CHANGELOG.md deleted file mode 100644 index 2b0105718a0f..000000000000 --- a/npm/eslint-plugin-dev/CHANGELOG.md +++ /dev/null @@ -1,74 +0,0 @@ -# [@cypress/eslint-plugin-dev-v6.0.0](https://github.com/cypress-io/cypress/compare/@cypress/eslint-plugin-dev-v5.3.3...@cypress/eslint-plugin-dev-v6.0.0) (2024-05-06) - - -### breaking - -* the supported eslint version is 8 for @cypress/eslint-plugin-dev. ([3b799a1](https://github.com/cypress-io/cypress/commit/3b799a158d7af419637d524e811561cd25143c3f)) - - -### BREAKING CHANGES - -* The supported eslint version is 8. @see f14a11aecfbc1e3854daae02b69fb40b4ec801b7 for breaking changes to the plugin. - -# [@cypress/eslint-plugin-dev-v5.3.3](https://github.com/cypress-io/cypress/compare/@cypress/eslint-plugin-dev-v5.3.2...@cypress/eslint-plugin-dev-v5.3.3) (2024-01-12) - - -### Bug Fixes - -* allow for versions greater than 4 for eslint-plugin-mocha to prevent force installing dependencies when eslint-plugin-mocha is bumbed in comsumer packages ([#27944](https://github.com/cypress-io/cypress/issues/27944)) ([bf05978](https://github.com/cypress-io/cypress/commit/bf0597847e71f34303364929f9c34cdd6c0e7ad8)) - -# [@cypress/eslint-plugin-dev-v5.3.2](https://github.com/cypress-io/cypress/compare/@cypress/eslint-plugin-dev-v5.3.1...@cypress/eslint-plugin-dev-v5.3.2) (2022-08-15) - - -### Bug Fixes - -* clear session state when changing specs in open mode ([#23146](https://github.com/cypress-io/cypress/issues/23146)) ([f1122fc](https://github.com/cypress-io/cypress/commit/f1122fcf62c14abddc0ae96116572402c1be2372)) - -# [@cypress/eslint-plugin-dev-v5.3.1](https://github.com/cypress-io/cypress/compare/@cypress/eslint-plugin-dev-v5.3.0...@cypress/eslint-plugin-dev-v5.3.1) (2022-08-11) - - -### Bug Fixes - -* retry on EMFILE always, lint sync FS calls ([#22175](https://github.com/cypress-io/cypress/issues/22175)) ([d01932b](https://github.com/cypress-io/cypress/commit/d01932bf751a6edf758451d8d19a74fe07e799ea)) - -# [@cypress/eslint-plugin-dev-v5.3.1](https://github.com/cypress-io/cypress/compare/@cypress/eslint-plugin-dev-v5.3.0...@cypress/eslint-plugin-dev-v5.3.1) (2022-08-10) - - -### Bug Fixes - -* retry on EMFILE always, lint sync FS calls ([#22175](https://github.com/cypress-io/cypress/issues/22175)) ([d01932b](https://github.com/cypress-io/cypress/commit/d01932bf751a6edf758451d8d19a74fe07e799ea)) - -# [@cypress/eslint-plugin-dev-v5.3.1](https://github.com/cypress-io/cypress/compare/@cypress/eslint-plugin-dev-v5.3.0...@cypress/eslint-plugin-dev-v5.3.1) (2022-06-29) - - -### Bug Fixes - -* retry on EMFILE always, lint sync FS calls ([#22175](https://github.com/cypress-io/cypress/issues/22175)) ([d01932b](https://github.com/cypress-io/cypress/commit/d01932bf751a6edf758451d8d19a74fe07e799ea)) - -# [@cypress/eslint-plugin-dev-v5.3.0](https://github.com/cypress-io/cypress/compare/@cypress/eslint-plugin-dev-v5.2.0...@cypress/eslint-plugin-dev-v5.3.0) (2022-06-01) - - -### Features - -* Turn "no-useless-constructor" off and enable "ignoreRestSiblings" ([#17875](https://github.com/cypress-io/cypress/issues/17875)) ([94541d4](https://github.com/cypress-io/cypress/commit/94541d4f18591e8fa4b8702c39e92b0a7238aa5d)) - -# [@cypress/eslint-plugin-dev-v5.2.0](https://github.com/cypress-io/cypress/compare/@cypress/eslint-plugin-dev-v5.1.0...@cypress/eslint-plugin-dev-v5.2.0) (2021-12-16) - - -### Features - -* use hoisted yarn install in binary build ([#17285](https://github.com/cypress-io/cypress/issues/17285)) ([e4f5b10](https://github.com/cypress-io/cypress/commit/e4f5b106d49d6ac0857c5fdac886f83b99558c88)) - -# [@cypress/eslint-plugin-dev-v5.1.0](https://github.com/cypress-io/cypress/compare/@cypress/eslint-plugin-dev-v5.0.2...@cypress/eslint-plugin-dev-v5.1.0) (2021-02-16) - - -### Features - -* component testing ([#14479](https://github.com/cypress-io/cypress/issues/14479)) ([af26fbe](https://github.com/cypress-io/cypress/commit/af26fbebe6bc609132013a0493a116cc78bb1bd4)) - -# [@cypress/eslint-plugin-dev-v5.0.2](https://github.com/cypress-io/cypress/compare/@cypress/eslint-plugin-dev-v5.0.1...@cypress/eslint-plugin-dev-v5.0.2) (2020-10-29) - - -### Bug Fixes - -* update bugs link in package.json ([#9015](https://github.com/cypress-io/cypress/issues/9015)) ([34186cb](https://github.com/cypress-io/cypress/commit/34186cb8b76c230a2506cabb0358d44c3205e0c4)) diff --git a/npm/eslint-plugin-dev/LICENSE.md b/npm/eslint-plugin-dev/LICENSE.md deleted file mode 100644 index f8b59f26ae10..000000000000 --- a/npm/eslint-plugin-dev/LICENSE.md +++ /dev/null @@ -1,24 +0,0 @@ -## MIT License - -Copyright (c) 2017 Cypress.io https://cypress.io - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/npm/eslint-plugin-dev/README.md b/npm/eslint-plugin-dev/README.md deleted file mode 100644 index 4656cbff22b6..000000000000 --- a/npm/eslint-plugin-dev/README.md +++ /dev/null @@ -1,212 +0,0 @@ - -
- -

[Internal] Cypress Developer ESLint Plugin

- - - -

Common ESLint rules shared by Cypress packages.

- -
- -> ⚠️ This package for _internal development_ of Cypress. Here's the [**Official Cypress ESLint Plugin**](https://github.com/cypress-io/eslint-plugin-cypress) meant for users of Cypress. - - -## Installation - -``` -npm install --save-dev @cypress/eslint-plugin-dev -``` - -## Usage - -> ⚠️ Currently does **not** support ESLint version 9 - -For Eslint 8, use version 6.x.x - -For Eslint 7 and below, use version 5.x.x - -1) install the following `devDependencies`: -```sh -@cypress/eslint-plugin-dev -eslint-plugin-json-format -@typescript-eslint/parser -@typescript-eslint/eslint-plugin -eslint-plugin-mocha -eslint-plugin-import - -# if you have react/jsx files -eslint-plugin-react -@babel/eslint-parser -``` - -2) add the following to your root level `.eslintrc.json`: -```json -{ - "plugins": [ - "@cypress/dev" - ], - "extends": [ - "plugin:@cypress/dev/general" - ] -} -``` - -> Note: also add `"plugin:@cypress/dev/react"`, if you are using `React` - -> Note: if you have a `test/` directory, you should create a `.eslintrc.json` file inside of it, and add: -```json -{ - "extends": [ - "plugin:@cypress/dev/tests" - ] -} -``` - -3) add the following to your `.eslintignore`: -```sh -# don't ignore hidden files, useful for formatting json config files -!.* -``` - -4) (optional) Install and configure your text editor's ESLint Plugin Extension to lint and auto-fix files using ESLint, [detailed below](#editors) - -5) (optional) Install [`husky`](https://github.com/typicode/husky) and enable the lint `pre-commit` hook: - -`package.json`: -```json - "husky": { - "hooks": { - "pre-commit": "lint-pre-commit" - } - }, -``` -> Note: the `lint-pre-commit` hook will automatically lint your staged files, and only `--fix` and `git add` them if there are no unstaged changes existing in that file (this protects partially staged files from being added in the hook). -To auto-fix all staged & unstaged files, run `./node_modules/.bin/lint-changed --fix` - -## Presets - -### general - -_Should usually be used at the root of the package._ -- The majority of the rules. -- auto-fixes `json` files and sorts your `package.json` via [`eslint-plugin-json-format`](https://github.com/bkucera/eslint-plugin-json-format) - - -**requires you to install the following `devDependencies`**: -```sh -eslint-plugin-import -eslint-plugin-json-format -@typescript-eslint/parser -@typescript-eslint/eslint-plugin -``` - -### tests - -Test-specific configuration and rules. Should be used within the `test/` directory. - -**requires you to install the following `devDependencies`**: -```sh -eslint-plugin-mocha -``` - -### react - -React and JSX-specific configuration and rules. - -**requires you to install the following `devDependencies`**: -```sh -@babel/eslint-parser -eslint-plugin-react -``` - -## Configuration Examples - -Change some linting rules: -```js -// .eslintrc.json -{ - "extends": [ - "plugin:@cypress/dev/general" - ], - "rules": { - "comma-dangle": "off", - "no-debugger": "warn" - } -} -``` - -Stop your `package.json` from being formatted: -```json -{ - "settings": { - "json/sort-package-json": false - } -} -``` - -### Custom Rules: -name | description | options | example --|-|-|- -`@cypress/dev/arrow-body-multiline-braces` | Enforces braces in arrow functions ONLY IN multiline function definitions | [`[always|never] always set this to 'always'`] | `'@cypress/dev/arrow-body-multiline-braces': ['error', 'always']` -`@cypress/dev/skip-comment` | Enforces a comment (`// NOTE:`) explaining a `.skip` added to `it`, `describe`, or `context` test blocks | { commentTokens: `[array] tokens that indicate .skip explanation (default: ['NOTE:', 'TODO:', 'FIXME:']`)} | `'@cypress/dev/skip-comment': ['error', { commentTokens: ['TODO:'] }]` -`@cypress/dev/no-return-before` | Disallows `return` statements before certain configurable tokens | { tokens: `[array] tokens that cannot be preceded by 'return' (default: ['it', 'describe', 'context', 'expect']`)} | `'@cypress/dev/no-return-before': ['error', { tokens: ['myfn'] }]` - -## Editors - -### VSCode - -Use plugin [ESLint by Dirk Baeumer](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) to lint and auto fix JS files using ESLint. -After installing, add the following to your User or Workspace (`.vscode/settings.json`) settings: -```json -{ - "eslint.validate": [ - { - "language": "javascript", - "autoFix": true - }, - { - "language": "javascriptreact", - "autoFix": true - }, - { - "language": "typescript", - "autoFix": true - }, - { - "language": "typescriptreact", - "autoFix": true - }, - { - "language": "json", - "autoFix": true - } - ], -} -``` - -### Atom - -Install package [linter-eslint](https://atom.io/packages/linter-eslint) -(and its dependencies) to enable linting. Go into the settings for this package -and enable "Fix on save" option to auto-fix white space issues and other things. - -### Sublime Text - -Install [ESLint-Formatter](https://packagecontrol.io/packages/ESLint-Formatter), -then set the following settings: - -```json -{ - "format_on_save": true, - "debug": true -} -``` - -## License - -This project is licensed under the terms of the [MIT license](/LICENSE.md). - -## Changelog - -[Changelog](./CHANGELOG.md) diff --git a/npm/eslint-plugin-dev/lib/custom-rules/arrow-body-multiline-braces.js b/npm/eslint-plugin-dev/lib/custom-rules/arrow-body-multiline-braces.js deleted file mode 100644 index c196e3a9bd0d..000000000000 --- a/npm/eslint-plugin-dev/lib/custom-rules/arrow-body-multiline-braces.js +++ /dev/null @@ -1,17 +0,0 @@ -const ruleComposer = require('eslint-rule-composer') -const eslint = require('eslint') -const arrowBodyStyle = new eslint.Linter().getRules().get('arrow-body-style') - -module.exports = ruleComposer.filterReports( - arrowBodyStyle, - (problem, metadata) => { - const problemIndex = metadata.sourceCode.getIndexFromLoc(problem.loc.start) - const reportedToken = metadata.sourceCode.getTokenByRangeStart(problemIndex, { includeComments: true }) - - if (problem.node.loc.start.line === problem.node.loc.end.line) { - return - } - - return !(reportedToken && reportedToken.type === 'Line' && /^-{2,}$/u.test(reportedToken.value)) - }, -) diff --git a/npm/eslint-plugin-dev/lib/custom-rules/index.js b/npm/eslint-plugin-dev/lib/custom-rules/index.js deleted file mode 100644 index 8dbc761bc096..000000000000 --- a/npm/eslint-plugin-dev/lib/custom-rules/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const fs = require('fs') -const path = require('path') - -module.exports = - // eslint-disable-next-line no-restricted-syntax - Object.assign({}, ...fs.readdirSync(__dirname) - .filter((filename) => filename.endsWith('.js') && filename !== 'index.js') - .map((filename) => ({ [filename.replace(/\.js$/u, '')]: require(path.resolve(__dirname, filename)) }))) diff --git a/npm/eslint-plugin-dev/lib/custom-rules/no-only.js b/npm/eslint-plugin-dev/lib/custom-rules/no-only.js deleted file mode 100644 index f4fba53f4280..000000000000 --- a/npm/eslint-plugin-dev/lib/custom-rules/no-only.js +++ /dev/null @@ -1,53 +0,0 @@ -// @see https://github.com/eslint/eslint/blob/v8.57.0/lib/shared/ast-utils.js#L12 -// This value is not exported anywhere, but hasn't changed in almost a decade. -// we can directly reference the pattern here -const lineBreakPattern = /\r\n|[\r\n\u2028\u2029]/u - -module.exports = { - meta: { - type: 'problem', - docs: { - description: 'stop .only\'s in spec files', - category: 'Spec Issues', - }, - messages: { - noOnly: 'Found only: `{{callee}}`.', - }, - - // uncomment to enable autoFix - // fixable: 'code', - }, - - create (context) { - const sourceCode = context.getSourceCode() - - function getPropertyText (node) { - const lines = sourceCode.getText(node).split(lineBreakPattern) - - return lines[0] - } - - return { - 'CallExpression:exit' (node) { - const callee = node.callee - - if (node.type === 'CallExpression' && callee.type === 'MemberExpression' && callee.property.name === 'only') { - if (['it', 'describe', 'context'].includes(callee.object.name)) { - context.report({ - node: callee.property, - loc: callee.property.loc.start, - messageId: 'noOnly', - data: { - callee: getPropertyText(callee.parent), - }, - // uncomment to enable autoFix - // fix(fixer) { - // return fixer.replaceTextRange([callee.property.start - 1, callee.property.end], '') - // } - }) - } - } - }, - } - }, -} diff --git a/npm/eslint-plugin-dev/lib/custom-rules/no-return-before.js b/npm/eslint-plugin-dev/lib/custom-rules/no-return-before.js deleted file mode 100644 index 30b68f329311..000000000000 --- a/npm/eslint-plugin-dev/lib/custom-rules/no-return-before.js +++ /dev/null @@ -1,73 +0,0 @@ -const defaultTokens = ['it', 'describe', 'context', 'expect'] -// const debug = require('debug')('@cypress/dev') - -module.exports = { - meta: { - type: 'problem', - docs: { - description: 'Enforce no return before certain token names', - category: 'Misc', - }, - messages: { - errorMessage: `\ -Found a 'return' after '{{token}}'\ -`, - }, - - schema: [ - { - type: 'object', - properties: { - tokens: { - type: 'array', - default: defaultTokens, - }, - }, - additionalProperties: false, - }, - ], - // uncomment to enable autoFix - fixable: 'code', - - }, - - create (context) { - let tokens = defaultTokens - - if (context.options.length) { - tokens = typeof context.options[0].tokens === 'object' ? context.options[0].tokens : tokens - } - - return { - 'CallExpression:exit' (node) { - const callee = node.callee - - if ( - (callee.type === 'Identifier') - && tokens.includes(callee.name) - ) { - const t = context.getSourceCode().getTokenBefore(node) - - // debug(t) - - if (!(t && t.type === 'Keyword' && t.value === 'return')) return - - const returnNode = t - - context.report({ - node: callee, - loc: callee.loc.start, - messageId: 'errorMessage', - data: { - token: callee.name, - }, - // uncomment to enable autoFix - fix (fixer) { - return fixer.replaceTextRange([returnNode.range[0], returnNode.range[1] + 1], '') - }, - }) - } - }, - } - }, -} diff --git a/npm/eslint-plugin-dev/lib/custom-rules/skip-comment.js b/npm/eslint-plugin-dev/lib/custom-rules/skip-comment.js deleted file mode 100644 index cf3aaf2ff69f..000000000000 --- a/npm/eslint-plugin-dev/lib/custom-rules/skip-comment.js +++ /dev/null @@ -1,84 +0,0 @@ -const defaultCommentTokens = ['NOTE:', 'TODO:', 'FIXME:'] - -module.exports = { - meta: { - type: 'problem', - docs: { - description: 'stop .skip\'s in spec files', - category: 'Spec Issues', - }, - messages: { - noOnly: `\ -Found a {{test-scope}}.skip(⋯) without an explanation. -Add a comment above the '{{test-scope}}' starting with one of: -{{commentTokens}} - -e.g. -// {{exampleCommentToken}} -{{test-scope}}.skip(⋯) - -`, - }, - - schema: [ - { - type: 'object', - properties: { - commentTokens: { - type: 'array', - default: defaultCommentTokens, - }, - }, - additionalProperties: false, - }, - ], - // uncomment to enable autoFix - // fixable: 'code', - - }, - - create (context) { - let commentTokens = defaultCommentTokens - - if (context.options.length) { - commentTokens = typeof context.options[0].commentTokens === 'object' ? context.options[0].commentTokens : commentTokens - } - - const sourceCode = context.getSourceCode() - - return { - 'CallExpression:exit' (node) { - const callee = node.callee - - const commentBefore = sourceCode.getCommentsBefore(node) - - const hasExplain = commentBefore && commentBefore.map( - (v) => commentTokens.concat(commentTokens.map((v) => `# ${v}`)).map((commentToken) => v.value.trim().startsWith(commentToken)).filter(Boolean)[0], - ).filter(Boolean)[0] - - if (hasExplain) { - return - } - - if (node.type === 'CallExpression' && callee.type === 'MemberExpression' && callee.property.name === 'skip') { - if (['it', 'describe', 'context'].includes(callee.object.name)) { - context.report({ - node: callee.property, - loc: callee.property.loc.start, - messageId: 'noOnly', - data: { - 'test-scope': callee.object.name, - commentTokens: commentTokens.join(' '), - exampleCommentToken: commentTokens[0], - }, - // uncomment to enable autoFix - // fix(fixer) { - // return fixer.replaceTextRange([callee.property.start - 1, callee.property.end], '') - // } - }) - } - } - }, - } - }, -} diff --git a/npm/eslint-plugin-dev/lib/index.js b/npm/eslint-plugin-dev/lib/index.js deleted file mode 100644 index eab453c761c6..000000000000 --- a/npm/eslint-plugin-dev/lib/index.js +++ /dev/null @@ -1,357 +0,0 @@ -const customRules = require('./custom-rules') -const baseRules = { - '@cypress/dev/arrow-body-multiline-braces': [ - 'error', - 'always', - ], - 'array-bracket-newline': [ - 'error', - 'consistent', - ], - 'array-bracket-spacing': [ - 'error', - 'never', - ], - 'arrow-parens': [ - 'error', - 'always', - ], - 'arrow-spacing': 'error', - 'block-spacing': 'error', - 'brace-style': [ - 'error', - '1tbs', - { - 'allowSingleLine': false, - }, - ], - 'function-paren-newline': [ - 'error', - 'consistent', - ], - 'comma-dangle': [ - 'error', - 'always-multiline', - ], - 'comma-spacing': 'error', - 'curly': [ - 'error', - 'multi-line', - 'consistent', - ], - 'constructor-super': 'error', - 'default-case': 'error', - 'eol-last': 'error', - 'eqeqeq': [ - 'error', - 'allow-null', - ], - 'indent': [ - 'error', - 2, - { - // TODO: fix this, we shouldn't need to ignore TemplateLiterals - 'ignoredNodes': ['TemplateLiteral'], - 'SwitchCase': 1, - 'MemberExpression': 0, - }, - ], - 'key-spacing': 'error', - 'keyword-spacing': 'error', - 'no-buffer-constructor': 'error', - 'no-case-declarations': 'error', - 'no-class-assign': 'error', - 'no-cond-assign': 'error', - 'no-console': 'error', - 'no-const-assign': 'error', - 'no-constant-condition': 'error', - 'no-control-regex': 'error', - 'no-debugger': 'error', - 'no-delete-var': 'error', - 'no-dupe-class-members': 'error', - 'no-dupe-keys': 'error', - 'no-dupe-args': 'error', - 'no-duplicate-case': 'error', - 'no-duplicate-imports': 'error', - 'no-else-return': [ - 'error', - { - 'allowElseIf': false, - }, - ], - 'no-empty': 'error', - 'no-empty-character-class': 'error', - 'no-empty-pattern': 'error', - 'no-ex-assign': 'error', - 'no-extra-boolean-cast': 'error', - 'no-extra-semi': 'error', - 'no-fallthrough': 'error', - 'no-func-assign': 'error', - 'no-inner-declarations': 'error', - 'no-invalid-regexp': 'error', - 'no-irregular-whitespace': 'error', - 'no-mixed-spaces-and-tabs': 'error', - 'no-multiple-empty-lines': [ - 'error', - { - 'max': 1, - 'maxEOF': 0, - 'maxBOF': 0, - }, - ], - 'no-multi-spaces': 'error', - 'no-negated-in-lhs': 'error', - 'no-new-symbol': 'error', - 'no-obj-calls': 'error', - 'no-octal': 'error', - 'no-redeclare': 'error', - 'no-regex-spaces': 'error', - 'no-self-assign': 'error', - 'no-spaced-func': 'error', - 'no-sparse-arrays': 'error', - 'no-this-before-super': 'error', - 'no-trailing-spaces': 'error', - 'no-undef': 'error', - 'no-unexpected-multiline': 'error', - 'no-unneeded-ternary': 'error', - 'no-unreachable': 'error', - 'no-unused-labels': 'error', - 'no-unused-vars': ['error', { args: 'none', ignoreRestSiblings: true }], - 'no-useless-concat': 'error', - 'no-useless-constructor': 'error', - 'no-var': 'error', - 'no-whitespace-before-property': 'error', - 'object-curly-spacing': [ - 'error', - 'always', - ], - 'object-shorthand': 'error', - 'one-var': [ - 'error', - 'never', - ], - 'padded-blocks': ['error', 'never'], - 'padding-line-between-statements': [ - 'error', - { - 'blankLine': 'always', - 'prev': '*', - 'next': 'return', - }, - { - 'blankLine': 'always', - 'prev': [ - 'const', - 'let', - 'var', - 'if', - 'while', - 'export', - 'cjs-export', - 'import', - 'cjs-import', - 'multiline-expression', - ], - 'next': '*', - }, - { - 'blankLine': 'any', - 'prev': [ - 'const', - 'let', - 'var', - 'import', - 'cjs-import', - ], - 'next': [ - 'const', - 'let', - 'var', - 'import', - 'cjs-import', - ], - }, - ], - 'prefer-rest-params': 'error', - 'prefer-spread': 'error', - 'prefer-template': 'error', - 'quotes': [ - 'error', - 'single', - { - 'allowTemplateLiterals': true, - }, - ], - 'semi': [ - 'error', - 'never', - ], - 'semi-spacing': 'error', - 'space-before-blocks': 'error', - 'space-before-function-paren': 'error', - 'space-in-parens': [ - 'error', - 'never', - ], - 'space-infix-ops': 'error', - 'space-unary-ops': 'error', - // TODO: change this back to 'error' - 'template-curly-spacing': 'off', - 'use-isnan': 'error', - 'valid-typeof': 'error', -} - -// '@cypress/dev/no-only': 'error', - -module.exports = { - configs: { - general: { - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - plugins: [ - 'json-format', - ], - settings: { - json: { - 'sort-package-json': 'pro', - }, - react: { - version: 'detect', - }, - }, - env: { - node: true, - es6: true, - }, - rules: { - ...baseRules, - }, - overrides: [ - { - files: [ - '*.jsx', - '*.tsx', - ], - rules: { - '@cypress/dev/arrow-body-multiline-braces': 'off', - }, - }, - { - files: [ - '*.ts', - '*.tsx', - '*.vue', - ], - parser: '@typescript-eslint/parser', - plugins: [ - '@typescript-eslint', - 'import', - ], - rules: { - 'no-undef': 'off', - 'no-unused-vars': 'off', - 'indent': 'off', - 'no-useless-constructor': 'off', - 'no-duplicate-imports': 'off', - 'import/no-duplicates': 'error', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - 'args': 'none', - 'ignoreRestSiblings': true, - 'argsIgnorePattern': '^_', - }, - ], - '@typescript-eslint/type-annotation-spacing': 'error', - '@typescript-eslint/no-useless-constructor': [ - 'error', - ], - '@typescript-eslint/member-delimiter-style': [ - 'error', - { - 'multiline': { - 'delimiter': 'none', - }, - 'singleline': { - 'delimiter': 'comma', - }, - }, - ], - '@typescript-eslint/indent': [ - 'error', - 2, - { - 'ignoredNodes': ['TemplateLiteral', 'TSTypeParameterInstantiation'], - 'SwitchCase': 1, - 'MemberExpression': 0, - }, - ], - }, - }, - ], - }, - - tests: { - env: { - mocha: true, - }, - globals: { - expect: true, - }, - plugins: ['mocha'], - rules: { - 'mocha/handle-done-callback': 'error', - 'mocha/no-exclusive-tests': 'error', - 'mocha/no-global-tests': 'error', - '@cypress/dev/skip-comment': 'error', - }, - overrides: [{ - files: '*.spec.tsx', - parser: '@typescript-eslint/parser', - plugins: [ - '@typescript-eslint', - 'react', - ], - rules: { - 'no-unused-vars': 'off', // avoid interface imports to be warned against - }, - }], - }, - react: { - env: { - browser: true, - }, - parser: '@babel/eslint-parser', - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - requireConfigFile: false, - ecmaFeatures: { - jsx: true, - legacyDecorators: true, - }, - }, - plugins: ['react'], - rules: { - 'react/jsx-curly-spacing': 'error', - 'react/jsx-equals-spacing': 'error', - 'react/jsx-no-duplicate-props': 'error', - 'react/jsx-no-undef': 'error', - 'react/jsx-pascal-case': 'error', - 'react/jsx-uses-react': 'error', - 'react/jsx-uses-vars': 'error', - 'react/jsx-wrap-multilines': 'error', - 'react/no-unknown-property': 'error', - 'react/prefer-es6-class': 'error', - 'react/react-in-jsx-scope': 'error', - 'react/require-render-return': 'error', - 'react/jsx-filename-extension': 'error', - }, - }, - }, - rules: { - ...customRules, - }, -} diff --git a/npm/eslint-plugin-dev/lib/scripts/lint-changed.js b/npm/eslint-plugin-dev/lib/scripts/lint-changed.js deleted file mode 100755 index 990468b804fe..000000000000 --- a/npm/eslint-plugin-dev/lib/scripts/lint-changed.js +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env node - -const sh = require('shelljs') -const utils = require('./utils') -const _ = require('lodash') -const chalk = require('chalk') - -const start = () => { - const fix = process.argv.slice(2).includes('--fix') - - return utils.lintFilesByName({ - // list only modified files - getFilenames: () => { - return _.union( - sh.exec(`git diff --name-only --diff-filter=M`).split('\n'), - sh.exec(`git diff --name-only --diff-filter=MA --staged`).split('\n'), - ) - }, - fix, - }) - .then(({ failed, filenames }) => { - if (failed) { - process.exit(failed) - } - - // eslint-disable-next-line no-console - console.log(chalk.bold(`${chalk.green(filenames.length)} files linted successfully`)) - - return - }) -} - -if (!module.parent) { - start() -} - -module.exports = { start } diff --git a/npm/eslint-plugin-dev/lib/scripts/lint-pre-commit.js b/npm/eslint-plugin-dev/lib/scripts/lint-pre-commit.js deleted file mode 100755 index 324ae1cbdf0f..000000000000 --- a/npm/eslint-plugin-dev/lib/scripts/lint-pre-commit.js +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env node - -const _ = require('lodash') -const utils = require('./utils') -const sh = require('shelljs') -const chalk = require('chalk') - -const start = () => { - const filesStaged = sh.exec(`git diff --name-only --diff-filter=MA --staged`).split('\n').filter(Boolean) - const filesUnstaged = sh.exec(`git diff --name-only --diff-filter=M`).split('\n').filter(Boolean) - const filesPartiallyStaged = _.intersection(filesStaged, filesUnstaged) - const filesFullyStaged = _.difference(filesStaged, filesPartiallyStaged) - - let fail = false - let lintedFilesCount = 0 - - return utils.lintFilesByName({ - getFilenames: () => filesFullyStaged, - fix: true, - }) - .then(({ failed, filenames }) => { - sh.exec(`git add ${sh.ShellString(filenames.join(' '))}`) - - if (failed) { - fail = true - } - - lintedFilesCount += filenames.length - - return - }) - .then(() => { - return utils.lintFilesByText({ - getFilenames: () => filesPartiallyStaged, - getFileText: (f) => sh.exec(`git show :${sh.ShellString(f)}`), - }) - }) - .then(({ failCount, filenames }) => { - if (failCount) { - fail = true - } - - lintedFilesCount += filenames.length - - return - }) - .then(() => { - if (fail) { - process.exit(1) - } - - // eslint-disable-next-line no-console - console.log(chalk.bold(`${chalk.green(lintedFilesCount)} files linted successfully`)) - - return - }) -} - -if (!module.parent) { - start() -} - -module.exports = { start } diff --git a/npm/eslint-plugin-dev/lib/scripts/lint-pre-push.js b/npm/eslint-plugin-dev/lib/scripts/lint-pre-push.js deleted file mode 100755 index 42c46a6a189e..000000000000 --- a/npm/eslint-plugin-dev/lib/scripts/lint-pre-push.js +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env node - -const sh = require('shelljs') -const utils = require('./utils') -const chalk = require('chalk') -const debug = require('debug')('lint-pre-push') - -const start = () => { - const getFilenames = () => { - const GIT_PARAMS = (process.env.HUSKY_GIT_PARAMS || 'origin').split(' ') - const gitRemote = GIT_PARAMS[0] - const gitBranch = sh.exec(`git branch`).grep(/\*/).split(/\s/)[1] - const gitRemoteBranch = `${gitRemote}/${gitBranch}` - - debug({ gitRemote }) - debug({ gitBranch }) - - return sh - .exec(`git diff HEAD ${sh.ShellString(gitRemoteBranch)} --name-only`) - .split('\n') - } - - return utils.lintFilesByText({ - getFilenames, - getFileText: (f) => sh.exec(`git show :${sh.ShellString(f)}`), - }) - .then(({ failCount, filenames }) => { - if (failCount) { - process.exit(failCount) - } - - // eslint-disable-next-line no-console - console.log(chalk.bold(`${chalk.green(filenames.length)} files linted successfully`)) - - return - }) -} - -if (!module.parent) { - start() -} - -module.exports = { start } diff --git a/npm/eslint-plugin-dev/lib/scripts/lint-staged.js b/npm/eslint-plugin-dev/lib/scripts/lint-staged.js deleted file mode 100755 index 9a5d836ed4ac..000000000000 --- a/npm/eslint-plugin-dev/lib/scripts/lint-staged.js +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env node - -/* eslint-disable quotes */ -const sh = require('shelljs') -const utils = require('./utils') -const chalk = require('chalk') - -const start = () => { - return utils.lintFilesByText({ - // list only modified and added files - getFilenames: () => sh.exec(`git diff --name-only --diff-filter=MA --staged`).split('\n'), - getFileText: (f) => sh.exec(`git show :${sh.ShellString(f)}`), - }) - .then(({ failCount, filenames }) => { - if (failCount) { - process.exit(failCount) - } - - // eslint-disable-next-line no-console - console.log(chalk.bold(`${chalk.green(filenames.length)} files linted successfully`)) - - return - }) -} - -if (!module.parent) { - start() -} - -module.exports = { start } diff --git a/npm/eslint-plugin-dev/lib/scripts/lint.spec.js b/npm/eslint-plugin-dev/lib/scripts/lint.spec.js deleted file mode 100644 index 4e83961072cd..000000000000 --- a/npm/eslint-plugin-dev/lib/scripts/lint.spec.js +++ /dev/null @@ -1,163 +0,0 @@ -const sh = require('shelljs') -const sinon = require('sinon') -const lintStaged = require('./lint-staged') -const lintChanged = require('./lint-changed') -const lintPrePush = require('./lint-pre-push') -const lintPreCommit = require('./lint-pre-commit') -const chai = require('chai') -const debug = require('debug')('lint.spec') - -const { expect } = chai - -chai.use(require('sinon-chai')) - -const _env = process.env -const _argv = process.argv - -const getStagedFiles = () => sh.ShellString('foo.js\nbar.js') -const getUnstagedFiles = () => sh.ShellString('bar.js\nbaz.js') -const getCommittedFiles = () => sh.ShellString('baz.js\nquux.js') - -const eslintSuccess = (...args) => { - debug('eslintSuccess:', args) - const ret = sh.ShellString(`GOOD JS`) - - ret.exec = sinon.stub().yields(null, 'success') - - return ret -} - -const eslintFailure = (...args) => { - debug('eslintFailure:', args) - const ret = sh.ShellString(`BAD JS`) - - ret.exec = sinon.stub().yields('foo error') - - return ret -} - -beforeEach(() => { - sinon.stub(sh, 'exec') - sinon.stub(sh, 'cat') - sinon.stub(process, 'exit') - - sh.exec - .withArgs(`git branch`).returns(sh.ShellString('* mybranch')) - - .withArgs(`git diff --name-only --diff-filter=MA --staged`) - .returns(getStagedFiles()) - - .withArgs(`git diff --name-only --diff-filter=M`) - .returns(getUnstagedFiles()) - - .withArgs(`git diff HEAD origin/mybranch --name-only`) - .returns(getCommittedFiles()) - - sh.exec.callsFake(eslintSuccess) -}) - -describe('lint-staged', () => { - it('lint success', async () => { - await lintStaged.start() - expect(process.exit).not.calledOnce - }) - - it('lint failures', async () => { - sh.exec.callsFake(eslintFailure) - - await lintStaged.start() - expect(process.exit).calledOnce - }) -}) - -describe('lint-changed', () => { - const filenames = 'bar.js baz.js foo.js' - - beforeEach(() => { - sh.exec - .withArgs(`./node_modules/.bin/eslint --color=true '' ${filenames}`) - .yields(null, 'success') - }) - - it('lint success', async () => { - await lintChanged.start() - expect(process.exit).not.calledOnce - }) - - it('lint failures', async () => { - sh.exec - .withArgs(`./node_modules/.bin/eslint --color=true '' ${filenames}`) - .yields('foo error') - - await lintChanged.start() - expect(process.exit).calledOnce - }) - - it('lint with --fix', async () => { - process.argv = ['_', '_', '--fix'] - sh.exec - .withArgs(`./node_modules/.bin/eslint --color=true --fix '' ${filenames}`) - .yields(null, 'success') - - await lintChanged.start() - expect(process.exit).not.calledOnce - }) -}) - -describe('lint-pre-push', () => { - beforeEach(() => { - process.env.HUSKY_GIT_PARAMS = 'origin git@github.com:cypress-io/cypress.git' - }) - - it('lint success', async () => { - await lintPrePush.start() - expect(process.exit).not.calledOnce - }) - - it('lint failures', async () => { - sh.exec.callsFake(eslintFailure) - - await lintPrePush.start() - expect(process.exit).calledOnce - }) -}) - -describe('lint-pre-commit', () => { - beforeEach(() => { - sh.exec - .withArgs(`./node_modules/.bin/eslint --color=true --fix '' foo.js`) - .yields(null, 'success') - }) - - it('lint success', async () => { - await lintPreCommit.start() - expect(process.exit).not.calledOnce - - expect(sh.exec.withArgs('git add foo.js')).calledOnce - }) - - it('lint failures', async () => { - sh.exec.callsFake(eslintFailure) - - await lintPreCommit.start() - expect(process.exit).calledOnce - }) -}) - -afterEach(() => { - process.argv = _argv - process.env = _env - sinon.restore() -}) - -// sinon.addBehavior('withArgIncludes', (stub, str) => { - -// }) - -// function withArgsInclude() { -// this. -// .callsFake((...args) => { -// args[0].includes() - -// }) -// } diff --git a/npm/eslint-plugin-dev/lib/scripts/utils.js b/npm/eslint-plugin-dev/lib/scripts/utils.js deleted file mode 100644 index d718464f77c9..000000000000 --- a/npm/eslint-plugin-dev/lib/scripts/utils.js +++ /dev/null @@ -1,112 +0,0 @@ -const path = require('path') -const _ = require('lodash') -const EE = require('events') -const sh = require('shelljs') -// const chalk = require('chalk') -const Promise = require('bluebird') -const debug = require('debug')('lint/util') - -const filesRegex = /\.(js|jsx|ts|tsx|coffee|json|eslintrc)$/ - -Promise.config({ - warnings: true, - longStackTraces: true, -}) - -module.exports = { - lintFilesByText: (options) => { - sh.config.silent = true - EE.defaultMaxListeners = 100 - - const opts = _.defaults(options, { - getFilenames: null, - getFileText: null, - }) - - const filenames = opts.getFilenames().filter((v) => filesRegex.test(v)) - - debug(`linting: - ${filenames.join('\n\t')} - `) - - return Promise.map(filenames, (f) => { - debug('started linting', f) - - const fileText = opts.getFileText(f) - - debugTerse('file text:', fileText) - - if (!fileText.toString()) return - - const lintCommand = `./node_modules/.bin/eslint --stdin --stdin-filename ${sh.ShellString(f)} --color=true` - - return Promise.promisify(fileText.exec)( - lintCommand, - { silent: false, async: true }, - ) - .tapCatch(debugTerse) - .return(false) - .catchReturn(true) - .finally(() => { - debug('finished linting ', f) - }) - }, { concurrency: 0 }) - .then((results) => { - const failCount = _.filter(results).length - - debug({ failCount }) - - return { failCount, filenames } - }) - }, - lintFilesByName: (options) => { - sh.config.silent = true - - const opts = _.defaults(options, { - getFilenames: null, - fix: false, - }) - - const filenames = opts.getFilenames().filter((v) => filesRegex.test(v)) - - debug(`linting: - ${filenames.join('\n\t')} - `) - - const filenamesString = sh.ShellString(filenames.join(' ')) - - const lintCommand = opts.fix ? - `npx eslint --color=true --fix ${filenamesString}` - : `npx eslint --color=true ${filenamesString}` - - // always run command in the root of the monorepo! - return Promise.promisify(sh.exec)( - lintCommand, - { silent: false, async: true, cwd: path.resolve(__dirname, '../../../../') }, - ) - .tapCatch(debugTerse) - .return(false) - .catchReturn(true) - .then((failed) => { - return { - failed, - filenames, - } - }) - }, - -} - -const debugTerse = (...args) => { - args = args.map((arg) => { - let truncated = arg.toString().slice(0, 15) - - if (truncated !== arg.toString()) { - truncated = `${truncated}...` - } - - return truncated - }) - - debug(...args) -} diff --git a/npm/eslint-plugin-dev/package.json b/npm/eslint-plugin-dev/package.json deleted file mode 100644 index 717a1e221d92..000000000000 --- a/npm/eslint-plugin-dev/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "@cypress/eslint-plugin-dev", - "version": "0.0.0-development", - "description": "Common ESLint rules shared by Cypress development-only packages", - "main": "./lib", - "scripts": { - "lint": "eslint --ext .js,json,.eslintrc .", - "lint-changed": "node ./lib/scripts/lint-changed", - "lint-fix": "npm run lint -- --fix", - "test": "mocha" - }, - "dependencies": { - "bluebird": "3.5.5", - "chalk": "^2.4.2", - "eslint-rule-composer": "^0.3.0", - "lodash": "^4.17.15", - "shelljs": "0.8.5" - }, - "devDependencies": { - "eslint": "^8.56.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-json-format": "^2.0.0", - "eslint-plugin-mocha": "^8.2.0", - "eslint-plugin-promise": "^4.2.1", - "sinon": "^7.3.2", - "sinon-chai": "^3.3.0" - }, - "peerDependencies": { - "@babel/eslint-parser": "^7.25.1", - "@typescript-eslint/eslint-plugin": ">= 7.0.0", - "@typescript-eslint/parser": ">= 7.0.0", - "eslint": "^= 8.0.0", - "eslint-plugin-import": ">= 2.0.0", - "eslint-plugin-json-format": ">= 2.0.0", - "eslint-plugin-mocha": " >= 8.0.0", - "eslint-plugin-react": ">= 7.22.0" - }, - "bin": { - "lint-changed": "./lib/scripts/lint-changed.js", - "lint-pre-commit": "./lib/scripts/lint-pre-commit.js" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/cypress-io/cypress.git" - }, - "homepage": "https://github.com/cypress-io/cypress/tree/develop/npm/eslint-plugin-dev#readme", - "bugs": { - "url": "https://github.com/cypress-io/cypress/issues/new?assignees=&labels=npm%3A%20%40cypress%2Feslint-plugin-dev&template=bug-report.md" - }, - "keywords": [ - "cypress", - "eslint", - "eslintplugin" - ], - "nx": {} -} diff --git a/npm/eslint-plugin-dev/test/.eslintrc b/npm/eslint-plugin-dev/test/.eslintrc deleted file mode 100644 index b5ed5206d083..000000000000 --- a/npm/eslint-plugin-dev/test/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": [ - "plugin:@cypress/dev/tests" - ] -} diff --git a/npm/eslint-plugin-dev/test/arrow-body-multiline-braces.spec.js b/npm/eslint-plugin-dev/test/arrow-body-multiline-braces.spec.js deleted file mode 100644 index 6698ab68db40..000000000000 --- a/npm/eslint-plugin-dev/test/arrow-body-multiline-braces.spec.js +++ /dev/null @@ -1,55 +0,0 @@ -const path = require('path') -const eslint = require('eslint') -const plugin = require('../lib') -const _ = require('lodash') -const { expect } = require('chai') - -const pluginName = '__plugin__' -const ESLint = eslint.ESLint - -async function execute (file, options = {}) { - const defaultConfig = { - fix: true, - ignore: false, - useEslintrc: false, - baseConfig: { - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - rules: { - [`${pluginName}/arrow-body-multiline-braces`]: ['error', 'always'], - }, - plugins: [pluginName], - }, - plugins: { - [pluginName]: plugin, - }, - } - const opts = _.defaultsDeep(options, defaultConfig) - - const cli = new ESLint(opts) - - const results = await cli.lintFiles([path.join(__dirname, file)]) - - return results[0] -} - -describe('arrow-body-multiline-braces', () => { - it('lint multiline js', async () => { - const filename = './fixtures/multiline.js' - const result = await execute(filename, { - fix: true, - }) - - expect(result.output).to.contain('{') - }) - - it('lint oneline js', async () => { - const filename = './fixtures/oneline.js' - const result = await execute(filename, { fix: false }) - - expect(result.output).not.ok - expect(result.errorCount).eq(0) - }) -}) diff --git a/npm/eslint-plugin-dev/test/fixtures/multiline.js b/npm/eslint-plugin-dev/test/fixtures/multiline.js deleted file mode 100644 index 76489e2cb108..000000000000 --- a/npm/eslint-plugin-dev/test/fixtures/multiline.js +++ /dev/null @@ -1,9 +0,0 @@ - -const foo = (fn) => - fn( - 'foo', - 'bar', - ) - -foo() - diff --git a/npm/eslint-plugin-dev/test/fixtures/no-return-before-fail.js b/npm/eslint-plugin-dev/test/fixtures/no-return-before-fail.js deleted file mode 100644 index dc4fa2cf2ad2..000000000000 --- a/npm/eslint-plugin-dev/test/fixtures/no-return-before-fail.js +++ /dev/null @@ -1,10 +0,0 @@ -describe('outer', ()=>{ - return describe('some test', ()=>{ - return context('some test', ()=>{ - return it('some test', ()=>{ - return expect('foo').to.eq('bar') - }) - return someFn() - }) - }) -}) diff --git a/npm/eslint-plugin-dev/test/fixtures/no-return-before-pass.js b/npm/eslint-plugin-dev/test/fixtures/no-return-before-pass.js deleted file mode 100644 index 6ef7cc384554..000000000000 --- a/npm/eslint-plugin-dev/test/fixtures/no-return-before-pass.js +++ /dev/null @@ -1,10 +0,0 @@ -describe('outer', ()=>{ - describe('some test', ()=>{ - context('some test', ()=>{ - it('some test', ()=>{ - expect('foo').to.eq('bar') - }) - return someFn() - }) - }) -}) diff --git a/npm/eslint-plugin-dev/test/fixtures/oneline.js b/npm/eslint-plugin-dev/test/fixtures/oneline.js deleted file mode 100644 index bfafd0733d61..000000000000 --- a/npm/eslint-plugin-dev/test/fixtures/oneline.js +++ /dev/null @@ -1,5 +0,0 @@ -const foo = () => console.log('foo') - - -foo() - diff --git a/npm/eslint-plugin-dev/test/fixtures/skip-comment-config.js b/npm/eslint-plugin-dev/test/fixtures/skip-comment-config.js deleted file mode 100644 index 9f4393fe36a7..000000000000 --- a/npm/eslint-plugin-dev/test/fixtures/skip-comment-config.js +++ /dev/null @@ -1,10 +0,0 @@ -// FOOBAR: im skipping this for good reason -it.skip('some test', ()=>{ - -}) - -// NOTE: im skipping this for good reason -it.skip('some test', ()=>{ - -}) - diff --git a/npm/eslint-plugin-dev/test/fixtures/skip-comment-fail.js b/npm/eslint-plugin-dev/test/fixtures/skip-comment-fail.js deleted file mode 100644 index 8f70e0d44711..000000000000 --- a/npm/eslint-plugin-dev/test/fixtures/skip-comment-fail.js +++ /dev/null @@ -1,11 +0,0 @@ -it.skip('some test', ()=>{ - -}) - -describe.skip('some test', ()=>{ - -}) - -context.skip('some test', ()=>{ - -}) diff --git a/npm/eslint-plugin-dev/test/fixtures/skip-comment-pass.js b/npm/eslint-plugin-dev/test/fixtures/skip-comment-pass.js deleted file mode 100644 index 64b242b6fc56..000000000000 --- a/npm/eslint-plugin-dev/test/fixtures/skip-comment-pass.js +++ /dev/null @@ -1,25 +0,0 @@ -// NOTE: im skipping this for good reason - -it.skip('some test', ()=>{ - -}) - -// NOTE: im skipping this for good reason -// some other line -describe.skip('some test', ()=>{ - -}) - -/* NOTE: im skipping this for good reason */ -context.skip('some test', ()=>{ - -}) - -// TODO: im skipping this for good reason -it.skip('some test', ()=>{ - -}) -//# TODO: im skipping this for good reason -it.skip('some test', ()=>{ - -}) diff --git a/npm/eslint-plugin-dev/test/fixtures/with-only.js b/npm/eslint-plugin-dev/test/fixtures/with-only.js deleted file mode 100644 index c8178b523f70..000000000000 --- a/npm/eslint-plugin-dev/test/fixtures/with-only.js +++ /dev/null @@ -1,11 +0,0 @@ -it.only('foo', () => { - 'foo' -}) - -describe.only('foo', () => { - 'foo' -}) - -context.only('foo', () => { - 'foo' -}) diff --git a/npm/eslint-plugin-dev/test/no-only.spec.js b/npm/eslint-plugin-dev/test/no-only.spec.js deleted file mode 100644 index 8162bf14886d..000000000000 --- a/npm/eslint-plugin-dev/test/no-only.spec.js +++ /dev/null @@ -1,53 +0,0 @@ -const path = require('path') -const eslint = require('eslint') -const plugin = require('..') -const _ = require('lodash') -const { expect } = require('chai') - -const ruleName = 'no-only' -const pluginName = '__plugin__' -const ESLint = eslint.ESLint - -async function execute (file, options = {}) { - const defaultConfig = { - fix: true, - ignore: false, - useEslintrc: false, - baseConfig: { - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - rules: { - [`${pluginName}/${ruleName}`]: ['error'], - }, - plugins: [pluginName], - }, - plugins: { - [pluginName]: plugin, - }, - } - const opts = _.defaultsDeep(options, defaultConfig) - - const cli = new ESLint(opts) - - const results = await cli.lintFiles([path.join(__dirname, file)]) - - return results[0] -} - -describe('no-only', () => { - it('lint js with only', async () => { - const filename = './fixtures/with-only.js' - const result = await execute(filename, { - fix: true, - }) - - expect(result.errorCount).eq(3) - expect(result.messages[0].message).to.contain('it') - expect(result.messages[1].message).to.contain('describe') - expect(result.messages[2].message).to.contain('context') - - expect(result.output).not.exist - }) -}) diff --git a/npm/eslint-plugin-dev/test/no-return-before.spec.js b/npm/eslint-plugin-dev/test/no-return-before.spec.js deleted file mode 100644 index e53b67d1798f..000000000000 --- a/npm/eslint-plugin-dev/test/no-return-before.spec.js +++ /dev/null @@ -1,99 +0,0 @@ -const path = require('path') -const eslint = require('eslint') -const plugin = require('..') -const _ = require('lodash') -const { stripIndent } = require('common-tags') -const { expect } = require('chai') - -const ruleName = 'no-return-before' -const pluginName = '__plugin__' -const ESLint = eslint.ESLint - -async function execute (file, options = {}) { - const defaultConfig = { - fix: true, - ignore: false, - useEslintrc: false, - baseConfig: { - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - rules: { - [`${pluginName}/${ruleName}`]: ['error'], - }, - plugins: [pluginName], - }, - plugins: { - [pluginName]: plugin, - }, - } - const opts = _.defaultsDeep(options, defaultConfig) - - const cli = new ESLint(opts) - - const results = await cli.lintFiles([path.join(__dirname, file)]) - - return results[0] -} - -describe(ruleName, () => { - it('pass', async () => { - const filename = './fixtures/no-return-before-pass.js' - const result = await execute(filename) - - expect(result.errorCount).equal(0) - }) - - it('fail', async () => { - const filename = './fixtures/no-return-before-fail.js' - const result = await execute(filename, { - fix: false, - }) - - expect(result.errorCount).equal(4) - expect(result.messages[0].message).to.contain(`after 'describe'`) - }) - - it('fix fail', async () => { - const filename = './fixtures/no-return-before-fail.js' - const result = await execute(filename) - - expect(result.output).equal(`${stripIndent` - describe('outer', ()=>{ - describe('some test', ()=>{ - context('some test', ()=>{ - it('some test', ()=>{ - expect('foo').to.eq('bar') - }) - return someFn() - }) - }) - }) - `}\n`) - }) - - describe('config', () => { - it('config [tokens]', async () => { - const filename = './fixtures/no-return-before-fail.js' - const result = await execute(filename, { - fix: false, - baseConfig: { - rules: { - [`${pluginName}/${ruleName}`]: [ - 'error', { - tokens: ['someFn'], - }, - ], - }, - }, - }) - - expect(result.errorCount).equal(1) - - expect(result.messages[0].message).to.contain('someFn') - - expect(result.output).not.not.exist - }) - }) -}) diff --git a/npm/eslint-plugin-dev/test/skip-comment.spec.js b/npm/eslint-plugin-dev/test/skip-comment.spec.js deleted file mode 100644 index 10b7008787e2..000000000000 --- a/npm/eslint-plugin-dev/test/skip-comment.spec.js +++ /dev/null @@ -1,92 +0,0 @@ -const path = require('path') -const eslint = require('eslint') -const plugin = require('..') -const _ = require('lodash') -const { expect } = require('chai') - -const ruleName = 'skip-comment' -const pluginName = '__plugin__' -const ESLint = eslint.ESLint - -async function execute (file, options = {}) { - const defaultConfig = { - fix: true, - ignore: false, - useEslintrc: false, - baseConfig: { - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - rules: { - [`${pluginName}/${ruleName}`]: ['error'], - }, - plugins: [pluginName], - }, - plugins: { - [pluginName]: plugin, - }, - } - const opts = _.defaultsDeep(options, defaultConfig) - - const cli = new ESLint(opts) - - const results = await cli.lintFiles([path.join(__dirname, file)]) - - return results[0] -} - -describe('skip-comment', () => { - it('skip test with comment', async () => { - const filename = './fixtures/skip-comment-pass.js' - const result = await execute(filename, { - fix: true, - }) - - expect(result.errorCount).equal(0) - }) - - it('skip test without comment', async () => { - const filename = './fixtures/skip-comment-fail.js' - const result = await execute(filename, { - fix: true, - }) - - expect(result.errorCount).equal(3) - - expect(result.messages[0].message).to.contain('it') - expect(result.messages[0].message).to.contain('NOTE:') - expect(result.messages[0].message).to.contain('TODO:') - expect(result.messages[1].message).to.contain('describe') - expect(result.messages[1].message).to.contain('NOTE:') - expect(result.messages[2].message).to.contain('context') - expect(result.messages[2].message).to.contain('NOTE:') - - expect(result.output).not.not.exist - }) - - describe('config', () => { - it('skip test without comment', async () => { - const filename = './fixtures/skip-comment-config.js' - const result = await execute(filename, { - fix: true, - baseConfig: { - rules: { - [`${pluginName}/${ruleName}`]: [ - 'error', { - commentTokens: ['FOOBAR:'], - }, - ], - }, - }, - }) - - expect(result.errorCount).equal(1) - - expect(result.messages[0].message).to.contain('it') - expect(result.messages[0].message).to.contain('FOOBAR:') - - expect(result.output).not.exist - }) - }) -}) From 7f3c67e546b64bb8bda396fdbc11bdaccfdd756d Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 13:48:19 -0500 Subject: [PATCH 002/113] more fully remove eslint dev pkg --- .circleci/workflows.yml | 16 - CONTRIBUTING.md | 4 +- yarn.lock | 1982 +++++++++++++++++++++------------------ 3 files changed, 1052 insertions(+), 950 deletions(-) diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index b69469b746be..a80e2faeb2cd 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -2319,14 +2319,6 @@ jobs: path: npm/grep/test_results - store-npm-logs - npm-eslint-plugin-dev: - <<: *defaults - steps: - - restore_cached_workspace - - run: - name: Run tests - command: yarn workspace @cypress/eslint-plugin-dev test - npm-cypress-schematic: <<: *defaults steps: @@ -3013,9 +3005,6 @@ linux-x64-workflow: &linux-x64-workflow - npm-mount-utils: requires: - build - - npm-eslint-plugin-dev: - requires: - - build - npm-cypress-schematic: requires: - build @@ -3028,7 +3017,6 @@ linux-x64-workflow: &linux-x64-workflow requires: - check-ts - npm-angular - - npm-eslint-plugin-dev - npm-puppeteer-unit-tests - npm-puppeteer-cypress-tests - npm-react @@ -3384,9 +3372,6 @@ linux-x64-contributor-workflow: &linux-x64-contributor-workflow - npm-mount-utils: requires: - build - - npm-eslint-plugin-dev: - requires: - - build - npm-cypress-schematic: requires: - build @@ -3398,7 +3383,6 @@ linux-x64-contributor-workflow: &linux-x64-contributor-workflow requires: - check-ts - npm-angular - - npm-eslint-plugin-dev - npm-puppeteer-unit-tests - npm-puppeteer-cypress-tests - npm-react diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3ee8c7d81040..9d0c6c1c71d3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -182,7 +182,6 @@ Here is a list of the npm packages in this repository: | Folder Name | Package Name | Purpose | | :----------------------------------------------------- | :--------------------------------- | :--------------------------------------------------------------------------- | | [angular](./npm/angular) | `@cypress/angular` | Cypress component testing for Angular. | - | [eslint-plugin-dev](./npm/eslint-plugin-dev) | `@cypress/eslint-plugin-dev` | Eslint plugin for internal development. | | [grep](./npm/grep) | `@cypress/grep` | Filter tests using substring | | [mount-utils](./npm/mount-utils) | `@cypress/mount-utils` | Common functionality for Vue/React/Angular adapters. | | [react](./npm/react) | `@cypress/react` | Cypress component testing for React. | @@ -341,8 +340,7 @@ Many Cypress packages print out debugging information to console via the `debug` ### Coding Style -We use [eslint](https://eslint.org/) to lint all JavaScript code and follow rules specified in -[@cypress/eslint-plugin-dev](./npm/eslint-plugin-dev) plugin. +We use [eslint](https://eslint.org/) to lint all JavaScript code. This project uses a Git pre-commit hook to lint staged files before committing. See the [`lint-staged` project](https://github.com/okonet/lint-staged) for details. `lint-staged` will try to auto-fix any lint errors with `eslint --fix`, so if it fails, you must manually fix the lint errors before committing. diff --git a/yarn.lock b/yarn.lock index 527ec23f98fe..9b7e26bb94f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -132,13 +132,6 @@ resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.8.tgz#86cb0974bcab7e64e29b57d6d9021102307257de" integrity sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg== -"@ardatan/aggregate-error@0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz#fe6924771ea40fc98dc7a7045c2e872dc8527609" - integrity sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ== - dependencies: - tslib "~2.0.1" - "@ardatan/fetch-event-source@2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@ardatan/fetch-event-source/-/fetch-event-source-2.0.2.tgz#734aa3eaa0da456453d24d8dc7c14d5e366a8d21" @@ -2512,7 +2505,7 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.18.9", "@babel/runtime@^7.25.0", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.25.0", "@babel/runtime@^7.8.4": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== @@ -3558,30 +3551,59 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.5.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== +"@eslint/config-array@^0.19.0": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.1.tgz#734aaea2c40be22bbb1f2a9dac687c57a6a4c984" + integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA== + dependencies: + "@eslint/object-schema" "^2.1.5" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/core@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.10.0.tgz#23727063c21b335f752dbb3a16450f6f9cbc9091" + integrity sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" + integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" + espree "^10.0.1" + globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@9.18.0", "@eslint/js@^9.18.0": + version "9.18.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.18.0.tgz#3356f85d18ed3627ab107790b53caf7e1e3d1e84" + integrity sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA== + +"@eslint/object-schema@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" + integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== + +"@eslint/plugin-kit@^0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz#ee07372035539e7847ef834e3f5e7b79f09e3a81" + integrity sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A== + dependencies: + "@eslint/core" "^0.10.0" + levn "^0.4.1" "@faker-js/faker@8.4.1": version "8.4.1" @@ -4024,16 +4046,6 @@ sync-fetch "0.3.0" tslib "~2.3.0" -"@graphql-tools/batch-execute@^7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.1.2.tgz#35ba09a1e0f80f34f1ce111d23c40f039d4403a0" - integrity sha512-IuR2SB2MnC2ztA/XeTMTfWcA0Wy7ZH5u+nDkDNLAdX+AaSyDnsQS35sCmHqG0VOGTl7rzoyBWLCKGwSJplgtwg== - dependencies: - "@graphql-tools/utils" "^7.7.0" - dataloader "2.0.0" - tslib "~2.2.0" - value-or-promise "1.0.6" - "@graphql-tools/batch-execute@^8.1.0", "@graphql-tools/batch-execute@^8.4.6": version "8.4.6" resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.4.6.tgz#6033cbf0b7d30c901ae4a1a7de7501aedf5a6a10" @@ -4067,19 +4079,6 @@ tslib "~2.3.0" value-or-promise "1.0.10" -"@graphql-tools/delegate@^7.0.1", "@graphql-tools/delegate@^7.1.5": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-7.1.5.tgz#0b027819b7047eff29bacbd5032e34a3d64bd093" - integrity sha512-bQu+hDd37e+FZ0CQGEEczmRSfQRnnXeUxI/0miDV+NV/zCbEdIJj5tYFNrKT03W6wgdqx8U06d8L23LxvGri/g== - dependencies: - "@ardatan/aggregate-error" "0.0.6" - "@graphql-tools/batch-execute" "^7.1.2" - "@graphql-tools/schema" "^7.1.5" - "@graphql-tools/utils" "^7.7.1" - dataloader "2.0.0" - tslib "~2.2.0" - value-or-promise "1.0.6" - "@graphql-tools/git-loader@^7.0.5": version "7.1.0" resolved "https://registry.yarnpkg.com/@graphql-tools/git-loader/-/git-loader-7.1.0.tgz#6d4978752e058b69047bccca1d11c50b1e29b401" @@ -4102,15 +4101,6 @@ cross-fetch "3.1.4" tslib "~2.3.0" -"@graphql-tools/graphql-file-loader@^6.0.0": - version "6.2.7" - resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.7.tgz#d3720f2c4f4bb90eb2a03a7869a780c61945e143" - integrity sha512-5k2SNz0W87tDcymhEMZMkd6/vs6QawDyjQXWtqkuLTBF3vxjxPD1I4dwHoxgWPIjjANhXybvulD7E+St/7s9TQ== - dependencies: - "@graphql-tools/import" "^6.2.6" - "@graphql-tools/utils" "^7.0.0" - tslib "~2.1.0" - "@graphql-tools/graphql-file-loader@^7.0.1", "@graphql-tools/graphql-file-loader@^7.0.5": version "7.1.0" resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.1.0.tgz#6249074a7d268a30c81e923ee2bb991ec9a4c7b7" @@ -4133,7 +4123,7 @@ "@graphql-tools/utils" "^8.2.0" tslib "~2.3.0" -"@graphql-tools/import@^6.2.6", "@graphql-tools/import@^6.4.0": +"@graphql-tools/import@^6.4.0": version "6.6.1" resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.6.1.tgz#2a7e1ceda10103ffeb8652a48ddc47150b035485" integrity sha512-i9WA6k+erJMci822o9w9DoX+uncVBK60LGGYW8mdbhX0l7wEubUpA000thJ1aarCusYh0u+ZT9qX0HyVPXu25Q== @@ -4142,14 +4132,6 @@ resolve-from "5.0.0" tslib "~2.3.0" -"@graphql-tools/json-file-loader@^6.0.0": - version "6.2.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-6.2.6.tgz#830482cfd3721a0799cbf2fe5b09959d9332739a" - integrity sha512-CnfwBSY5926zyb6fkDBHnlTblHnHI4hoBALFYXnrg0Ev4yWU8B04DZl/pBRUc459VNgO2x8/mxGIZj2hPJG1EA== - dependencies: - "@graphql-tools/utils" "^7.0.0" - tslib "~2.0.1" - "@graphql-tools/json-file-loader@^7.0.1", "@graphql-tools/json-file-loader@^7.1.2": version "7.2.0" resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-7.2.0.tgz#0d5cdc372a5d925a470c7b2269f26dd659eef841" @@ -4160,21 +4142,6 @@ tslib "~2.3.0" unixify "^1.0.0" -"@graphql-tools/load@^6.0.0": - version "6.2.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-6.2.8.tgz#16900fb6e75e1d075cad8f7ea439b334feb0b96a" - integrity sha512-JpbyXOXd8fJXdBh2ta0Q4w8ia6uK5FHzrTNmcvYBvflFuWly2LDTk2abbSl81zKkzswQMEd2UIYghXELRg8eTA== - dependencies: - "@graphql-tools/merge" "^6.2.12" - "@graphql-tools/utils" "^7.5.0" - globby "11.0.3" - import-from "3.0.0" - is-glob "4.0.1" - p-limit "3.1.0" - tslib "~2.2.0" - unixify "1.0.0" - valid-url "1.0.9" - "@graphql-tools/load@^7.1.0", "@graphql-tools/load@^7.3.0": version "7.3.2" resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-7.3.2.tgz#0edd9c0b464111968bfca148457a4c97e23fc030" @@ -4185,16 +4152,7 @@ p-limit "3.1.0" tslib "~2.3.0" -"@graphql-tools/merge@6.0.0 - 6.2.14": - version "6.2.14" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.14.tgz#694e2a2785ba47558e5665687feddd2935e9d94e" - integrity sha512-RWT4Td0ROJai2eR66NHejgf8UwnXJqZxXgDWDI+7hua5vNA2OW8Mf9K1Wav1ZkjWnuRp4ztNtkZGie5ISw55ow== - dependencies: - "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/utils" "^7.7.0" - tslib "~2.2.0" - -"@graphql-tools/merge@^6.2.12", "@graphql-tools/merge@^6.2.16": +"@graphql-tools/merge@^6.2.16": version "6.2.17" resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.17.tgz#4dedf87d8435a5e1091d7cc8d4f371ed1e029f1f" integrity sha512-G5YrOew39fZf16VIrc49q3c8dBqQDD0ax5LYPiNja00xsXDi0T9zsEWVt06ApjtSdSF6HDddlu5S12QjeN8Tow== @@ -4263,40 +4221,6 @@ tslib "~2.3.0" value-or-promise "1.0.10" -"@graphql-tools/schema@^7.0.0", "@graphql-tools/schema@^7.1.5": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-7.1.5.tgz#07b24e52b182e736a6b77c829fc48b84d89aa711" - integrity sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA== - dependencies: - "@graphql-tools/utils" "^7.1.2" - tslib "~2.2.0" - value-or-promise "1.0.6" - -"@graphql-tools/url-loader@^6.0.0": - version "6.10.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz#dc741e4299e0e7ddf435eba50a1f713b3e763b33" - integrity sha512-DSDrbhQIv7fheQ60pfDpGD256ixUQIR6Hhf9Z5bRjVkXOCvO5XrkwoWLiU7iHL81GB1r0Ba31bf+sl+D4nyyfw== - dependencies: - "@graphql-tools/delegate" "^7.0.1" - "@graphql-tools/utils" "^7.9.0" - "@graphql-tools/wrap" "^7.0.4" - "@microsoft/fetch-event-source" "2.0.1" - "@types/websocket" "1.0.2" - abort-controller "3.0.0" - cross-fetch "3.1.4" - extract-files "9.0.0" - form-data "4.0.0" - graphql-ws "^4.4.1" - is-promise "4.0.0" - isomorphic-ws "4.0.1" - lodash "4.17.21" - meros "1.1.4" - subscriptions-transport-ws "^0.9.18" - sync-fetch "0.3.0" - tslib "~2.2.0" - valid-url "1.0.9" - ws "7.4.5" - "@graphql-tools/url-loader@^7.0.11", "@graphql-tools/url-loader@^7.0.3", "@graphql-tools/url-loader@^7.1.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-7.2.0.tgz#f70f77b9a3cfb8de0460a05a93590d16a68af09a" @@ -4354,15 +4278,6 @@ dependencies: tslib "~2.3.0" -"@graphql-tools/utils@^7.0.0", "@graphql-tools/utils@^7.1.2", "@graphql-tools/utils@^7.5.0", "@graphql-tools/utils@^7.7.0", "@graphql-tools/utils@^7.7.1", "@graphql-tools/utils@^7.8.1", "@graphql-tools/utils@^7.9.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.10.0.tgz#07a4cb5d1bec1ff1dc1d47a935919ee6abd38699" - integrity sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w== - dependencies: - "@ardatan/aggregate-error" "0.0.6" - camel-case "4.1.2" - tslib "~2.2.0" - "@graphql-tools/wrap@8.1.1", "@graphql-tools/wrap@^8.1.0": version "8.1.1" resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-8.1.1.tgz#7003033372d6ef984065028430429655614af899" @@ -4374,17 +4289,6 @@ tslib "~2.3.0" value-or-promise "1.0.10" -"@graphql-tools/wrap@^7.0.4": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-7.0.8.tgz#ad41e487135ca3ea1ae0ea04bb3f596177fb4f50" - integrity sha512-1NDUymworsOlb53Qfh7fonDi2STvqCtbeE68ntKY9K/Ju/be2ZNxrFSbrBHwnxWcN9PjISNnLcAyJ1L5tCUyhg== - dependencies: - "@graphql-tools/delegate" "^7.1.5" - "@graphql-tools/schema" "^7.1.5" - "@graphql-tools/utils" "^7.8.1" - tslib "~2.2.0" - value-or-promise "1.0.6" - "@graphql-typed-document-node/core@^3.1.0", "@graphql-typed-document-node/core@^3.1.1": version "3.1.1" resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" @@ -4395,24 +4299,33 @@ resolved "https://registry.yarnpkg.com/@headlessui/vue/-/vue-1.4.0.tgz#a4a3f392d6e72923f101e307fcfa6c80c00ea446" integrity sha512-BBLDciyKiGK03whaSVkUacDY2Cd5AR05JCUPWQLvQ9HtjQc9tv5RyPpcdmoXJa+XWI10e3U1JxL+8FY7kJMcEQ== -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== "@hutson/parse-repository-url@^3.0.0": version "3.0.2" @@ -5130,11 +5043,6 @@ lodash "^4.17.15" tmp-promise "^3.0.2" -"@microsoft/fetch-event-source@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz#9ceecc94b49fbaa15666e38ae8587f64acce007d" - integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== - "@n1ru4l/graphql-live-query@0.8.1": version "0.8.1" resolved "https://registry.yarnpkg.com/@n1ru4l/graphql-live-query/-/graphql-live-query-0.8.1.tgz#2d6ca6157dafdc5d122a1aeb623b43e939c4b238" @@ -5174,7 +5082,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -8045,7 +7953,7 @@ resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.2.tgz#4117a7a378593a218e9d6f0ef44ce6d5d9edf7fa" integrity sha512-KbeHS/Y4R+k+5sWXEYzAZKuB1yQlZtEghuhRxrVRLaqhtoG5+26JwQsa4HyS3AWX8v1Uwukma5HheduUDskasA== -"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -8642,13 +8550,6 @@ tapable "^2.2.0" webpack "^5" -"@types/websocket@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.2.tgz#d2855c6a312b7da73ed16ba6781815bf30c6187a" - integrity sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ== - dependencies: - "@types/node" "*" - "@types/websocket@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" @@ -8716,6 +8617,21 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/eslint-plugin@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz#b47a398e0e551cb008c60190b804394e6852c863" + integrity sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/type-utils" "8.20.0" + "@typescript-eslint/utils" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^2.0.0" + "@typescript-eslint/parser@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.2.0.tgz#44356312aea8852a3a82deebdacd52ba614ec07a" @@ -8727,6 +8643,17 @@ "@typescript-eslint/visitor-keys" "7.2.0" debug "^4.3.4" +"@typescript-eslint/parser@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.20.0.tgz#5caf2230a37094dc0e671cf836b96dd39b587ced" + integrity sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g== + dependencies: + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" + debug "^4.3.4" + "@typescript-eslint/scope-manager@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz#cfb437b09a84f95a0930a76b066e89e35d94e3da" @@ -8735,6 +8662,14 @@ "@typescript-eslint/types" "7.2.0" "@typescript-eslint/visitor-keys" "7.2.0" +"@typescript-eslint/scope-manager@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz#aaf4198b509fb87a6527c02cfbfaf8901179e75c" + integrity sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw== + dependencies: + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" + "@typescript-eslint/type-utils@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz#7be5c30e9b4d49971b79095a1181324ef6089a19" @@ -8745,11 +8680,26 @@ debug "^4.3.4" ts-api-utils "^1.0.1" +"@typescript-eslint/type-utils@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz#958171d86b213a3f32b5b16b91db267968a4ef19" + integrity sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA== + dependencies: + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/utils" "8.20.0" + debug "^4.3.4" + ts-api-utils "^2.0.0" + "@typescript-eslint/types@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f" integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA== +"@typescript-eslint/types@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.20.0.tgz#487de5314b5415dee075e95568b87a75a3e730cf" + integrity sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA== + "@typescript-eslint/typescript-estree@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz#5beda2876c4137f8440c5a84b4f0370828682556" @@ -8764,6 +8714,20 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/typescript-estree@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz#658cea07b7e5981f19bce5cf1662cb70ad59f26b" + integrity sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA== + dependencies: + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.0.0" + "@typescript-eslint/utils@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.2.0.tgz#fc8164be2f2a7068debb4556881acddbf0b7ce2a" @@ -8777,6 +8741,16 @@ "@typescript-eslint/typescript-estree" "7.2.0" semver "^7.5.4" +"@typescript-eslint/utils@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.20.0.tgz#53127ecd314b3b08836b4498b71cdb86f4ef3aa2" + integrity sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/visitor-keys@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz#5035f177752538a5750cca1af6044b633610bf9e" @@ -8785,16 +8759,19 @@ "@typescript-eslint/types" "7.2.0" eslint-visitor-keys "^3.4.1" +"@typescript-eslint/visitor-keys@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz#2df6e24bc69084b81f06aaaa48d198b10d382bed" + integrity sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA== + dependencies: + "@typescript-eslint/types" "8.20.0" + eslint-visitor-keys "^4.2.0" + "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - "@urql/core@2.4.4", "@urql/core@>=2.3.0", "@urql/core@>=2.3.6", "@urql/core@^2.3.6": version "2.4.4" resolved "https://registry.yarnpkg.com/@urql/core/-/core-2.4.4.tgz#29f1d03cc439134259761e70a78ae20302c3d7fe" @@ -9755,7 +9732,7 @@ acorn@^7.0.0, acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.11.3, acorn@^8.12.1, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.11.3, acorn@^8.12.1, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.14.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== @@ -10291,13 +10268,13 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" - integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== +array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" + integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== dependencies: - call-bind "^1.0.5" - is-array-buffer "^3.0.4" + call-bound "^1.0.3" + is-array-buffer "^3.0.5" array-differ@^3.0.0: version "3.0.0" @@ -10324,7 +10301,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-includes@^3.1.1, array-includes@^3.1.3, array-includes@^3.1.4, array-includes@^3.1.7: +array-includes@^3.1.3, array-includes@^3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== @@ -10400,10 +10377,10 @@ array.prototype.find@^2.1.1: define-properties "^1.1.3" es-abstract "^1.17.4" -array.prototype.findlastindex@^1.2.3: +array.prototype.findlast@^1.2.5: version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" - integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== + resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== dependencies: call-bind "^1.0.7" define-properties "^1.2.1" @@ -10412,25 +10389,26 @@ array.prototype.findlastindex@^1.2.3: es-object-atoms "^1.0.0" es-shim-unscopables "^1.0.2" -array.prototype.flat@^1.2.5, array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== +array.prototype.flatmap@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" + integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" -array.prototype.flatmap@^1.2.3, array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== +array.prototype.tosorted@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" + integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + es-errors "^1.3.0" + es-shim-unscopables "^1.0.2" arraybuffer-loader@1.0.8: version "1.0.8" @@ -10439,19 +10417,18 @@ arraybuffer-loader@1.0.8: dependencies: loader-utils "^1.1.0" -arraybuffer.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" - integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== +arraybuffer.prototype.slice@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" + integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== dependencies: array-buffer-byte-length "^1.0.1" - call-bind "^1.0.5" + call-bind "^1.0.8" define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.2.1" - get-intrinsic "^1.2.3" + es-abstract "^1.23.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" is-array-buffer "^3.0.4" - is-shared-array-buffer "^1.0.2" arraybuffer.slice@~0.0.7: version "0.0.7" @@ -11750,16 +11727,31 @@ cachedir@2.3.0, cachedir@^2.3.0: resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840" + integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g== dependencies: - es-define-property "^1.0.0" es-errors "^1.3.0" function-bind "^1.1.2" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7, call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" get-intrinsic "^1.2.4" - set-function-length "^1.2.1" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681" + integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA== + dependencies: + call-bind-apply-helpers "^1.0.1" + get-intrinsic "^1.2.6" call-me-maybe@^1.0.1: version "1.0.2" @@ -11776,14 +11768,6 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@4.1.2, camel-case@^4.1.1, camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - camel-case@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" @@ -11792,6 +11776,14 @@ camel-case@^3.0.0: no-case "^2.2.0" upper-case "^1.1.1" +camel-case@^4.1.1, camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" @@ -13467,10 +13459,10 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -13732,30 +13724,30 @@ data-uri-to-buffer@^5.0.1: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz#db89a9e279c2ffe74f50637a59a32fb23b3e4d7c" integrity sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg== -data-view-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" - integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== +data-view-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" + integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== dependencies: - call-bind "^1.0.6" + call-bound "^1.0.3" es-errors "^1.3.0" - is-data-view "^1.0.1" + is-data-view "^1.0.2" -data-view-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" - integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== +data-view-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" + integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== dependencies: - call-bind "^1.0.7" + call-bound "^1.0.3" es-errors "^1.3.0" - is-data-view "^1.0.1" + is-data-view "^1.0.2" -data-view-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" - integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== +data-view-byte-offset@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" + integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== dependencies: - call-bind "^1.0.6" + call-bound "^1.0.2" es-errors "^1.3.0" is-data-view "^1.0.1" @@ -13804,7 +13796,7 @@ debounce@^1.2.0: resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== -debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -14090,7 +14082,7 @@ define-lazy-prop@^3.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== -define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -14257,11 +14249,6 @@ detect-libc@^2.0.0, detect-libc@^2.0.1: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== -detect-newline@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - detect-node-es@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.0.0.tgz#c0318b9e539a5256ca780dd9575c9345af05b8ed" @@ -14307,11 +14294,6 @@ didyoumean@^1.2.2: resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== -diff-match-patch@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" - integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== - diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" @@ -14651,6 +14633,15 @@ dtslint@4.2.1: tsutils "^2.29.0" yargs "^15.1.0" +dunder-proto@^1.0.0, dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + duplexer2@~0.1.0: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" @@ -15162,66 +15153,69 @@ errorhandler@1.5.1: accepts "~1.3.7" escape-html "~1.0.3" -es-abstract@^1.17.4, es-abstract@^1.18.0-next.2, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== +es-abstract@^1.17.4, es-abstract@^1.17.5, es-abstract@^1.18.0-next.2, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9: + version "1.23.9" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.9.tgz#5b45994b7de78dada5c1bebf1379646b32b9d606" + integrity sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA== dependencies: - array-buffer-byte-length "^1.0.1" - arraybuffer.prototype.slice "^1.0.3" + array-buffer-byte-length "^1.0.2" + arraybuffer.prototype.slice "^1.0.4" available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - data-view-buffer "^1.0.1" - data-view-byte-length "^1.0.1" - data-view-byte-offset "^1.0.0" - es-define-property "^1.0.0" + call-bind "^1.0.8" + call-bound "^1.0.3" + data-view-buffer "^1.0.2" + data-view-byte-length "^1.0.2" + data-view-byte-offset "^1.0.1" + es-define-property "^1.0.1" es-errors "^1.3.0" es-object-atoms "^1.0.0" - es-set-tostringtag "^2.0.3" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.4" - get-symbol-description "^1.0.2" - globalthis "^1.0.3" - gopd "^1.0.1" + es-set-tostringtag "^2.1.0" + es-to-primitive "^1.3.0" + function.prototype.name "^1.1.8" + get-intrinsic "^1.2.7" + get-proto "^1.0.0" + get-symbol-description "^1.1.0" + globalthis "^1.0.4" + gopd "^1.2.0" has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" + has-proto "^1.2.0" + has-symbols "^1.1.0" hasown "^2.0.2" - internal-slot "^1.0.7" - is-array-buffer "^3.0.4" + internal-slot "^1.1.0" + is-array-buffer "^3.0.5" is-callable "^1.2.7" - is-data-view "^1.0.1" - is-negative-zero "^2.0.3" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.3" - is-string "^1.0.7" - is-typed-array "^1.1.13" - is-weakref "^1.0.2" - object-inspect "^1.13.1" + is-data-view "^1.0.2" + is-regex "^1.2.1" + is-shared-array-buffer "^1.0.4" + is-string "^1.1.1" + is-typed-array "^1.1.15" + is-weakref "^1.1.0" + math-intrinsics "^1.1.0" + object-inspect "^1.13.3" object-keys "^1.1.1" - object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" - safe-array-concat "^1.1.2" - safe-regex-test "^1.0.3" - string.prototype.trim "^1.2.9" - string.prototype.trimend "^1.0.8" + object.assign "^4.1.7" + own-keys "^1.0.1" + regexp.prototype.flags "^1.5.3" + safe-array-concat "^1.1.3" + safe-push-apply "^1.0.0" + safe-regex-test "^1.1.0" + set-proto "^1.0.0" + string.prototype.trim "^1.2.10" + string.prototype.trimend "^1.0.9" string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.2" - typed-array-byte-length "^1.0.1" - typed-array-byte-offset "^1.0.2" - typed-array-length "^1.0.6" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.15" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" + typed-array-buffer "^1.0.3" + typed-array-byte-length "^1.0.3" + typed-array-byte-offset "^1.0.4" + typed-array-length "^1.0.7" + unbox-primitive "^1.1.0" + which-typed-array "^1.1.18" + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== -es-errors@^1.2.1, es-errors@^1.3.0: +es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== @@ -15241,6 +15235,28 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" +es-iterator-helpers@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz#d1dd0f58129054c0ad922e6a9a1e65eef435fe75" + integrity sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-abstract "^1.23.6" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.3" + function-bind "^1.1.2" + get-intrinsic "^1.2.6" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + internal-slot "^1.1.0" + iterator.prototype "^1.1.4" + safe-array-concat "^1.1.3" + es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" @@ -15258,30 +15274,31 @@ es-object-atoms@^1.0.0: dependencies: es-errors "^1.3.0" -es-set-tostringtag@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" - integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== +es-set-tostringtag@^2.0.3, es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== dependencies: - get-intrinsic "^1.2.4" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" has-tostringtag "^1.0.2" - hasown "^2.0.1" + hasown "^2.0.2" -es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: +es-shim-unscopables@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: hasown "^2.0.0" -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== +es-to-primitive@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" + integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" + is-callable "^1.2.7" + is-date-object "^1.0.5" + is-symbol "^1.0.4" es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: version "0.10.53" @@ -15642,144 +15659,71 @@ escodegen@^2.1.0: optionalDependencies: source-map "~0.6.1" -eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-module-utils@^2.1.1, eslint-module-utils@^2.7.2, eslint-module-utils@^2.8.0: +eslint-module-utils@^2.1.1: version "2.8.1" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== dependencies: debug "^3.2.7" -eslint-plugin-cypress@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-3.5.0.tgz#380ef5049ad80ebeca923db69e4aa96e72fcd893" - integrity sha512-JZQ6XnBTNI8h1B9M7wJSFzc48SYbh7VMMKaNTQOFa3BQlnmXPrVc4PKen8R+fpv6VleiPeej6VxloGb42zdRvw== - dependencies: - globals "^13.20.0" - -eslint-plugin-graphql@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-graphql/-/eslint-plugin-graphql-4.0.0.tgz#d238ff2baee4d632cfcbe787a7a70a1f50428358" - integrity sha512-d5tQm24YkVvCEk29ZR5ScsgXqAGCjKlMS8lx3mS7FS/EKsWbkvXQImpvic03EpMIvNTBW5e+2xnHzXB/VHNZJw== - dependencies: - "@babel/runtime" "^7.10.0" - graphql-config "^3.0.2" - lodash.flatten "^4.4.0" - lodash.without "^4.4.0" - -eslint-plugin-import@2.25.4: - version "2.25.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" - integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.2" - has "^1.0.3" - is-core-module "^2.8.0" - is-glob "^4.0.3" - minimatch "^3.0.4" - object.values "^1.1.5" - resolve "^1.20.0" - tsconfig-paths "^3.12.0" - -eslint-plugin-import@^2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== - dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" - semver "^6.3.1" - tsconfig-paths "^3.15.0" - -eslint-plugin-json-format@2.0.1, eslint-plugin-json-format@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-json-format/-/eslint-plugin-json-format-2.0.1.tgz#31c6ef89e8210ba2e262381eb5d26d24cb74bc67" - integrity sha512-eWT0sNqIEYzKqbej2dvz+/oQ4JQxthE3i+izjInIdfbsPfVgBtiWbmagkgKStje0LJqo9FATx1LWl6xcuxqsBQ== +eslint-plugin-cypress@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-4.1.0.tgz#11178fd250d437e2ec57bf24b8a9058b356f8cac" + integrity sha512-JhqkMY02mw74USwK9OFhectx3YSj6Co1NgWBxlGdKvlqiAp9vdEuQqt33DKGQFvvGS/NWtduuhWXWNnU29xDSg== dependencies: - common-tags "^1.8.0" - debug "^4.1.1" - diff-match-patch "^1.0.4" - json-fixer "^1.3.2" - line-column "^1.0.2" - lodash "^4.17.15" - minimatch "^3.0.4" - sort-package-json "^1.22.1" + globals "^15.11.0" -eslint-plugin-mocha@8.2.0, eslint-plugin-mocha@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-8.2.0.tgz#1d9724edcef37583921ef853494200c2b8a3730d" - integrity sha512-8oOR47Ejt+YJPNQzedbiklDqS1zurEaNrxXpRs+Uk4DMDPVmKNagShFeUaYsfvWP55AhI+P1non5QZAHV6K78A== +eslint-plugin-mocha@^10.5.0: + version "10.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-10.5.0.tgz#0aca8d709e7cddef566e0dc252f6b02e307a2b7e" + integrity sha512-F2ALmQVPT1GoP27O1JTZGrV9Pqg8k79OeIuvw63UxMtQKREZtmkK1NFgkZQ2TW7L2JSSFKHFPTtHu5z8R9QNRw== dependencies: - eslint-utils "^2.1.0" - ramda "^0.27.1" - -eslint-plugin-promise@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz#61485df2a359e03149fdafc0a68b0e030ad2ac45" - integrity sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ== - -eslint-plugin-react-hooks@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" - integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== + eslint-utils "^3.0.0" + globals "^13.24.0" + rambda "^7.4.0" -eslint-plugin-react@7.22.0: - version "7.22.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" - integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== - dependencies: - array-includes "^3.1.1" - array.prototype.flatmap "^1.2.3" +eslint-plugin-react-hooks@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz#3d34e37d5770866c34b87d5b499f5f0b53bf0854" + integrity sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw== + +eslint-plugin-react@^7.37.4: + version "7.37.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz#1b6c80b6175b6ae4b26055ae4d55d04c414c7181" + integrity sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ== + dependencies: + array-includes "^3.1.8" + array.prototype.findlast "^1.2.5" + array.prototype.flatmap "^1.3.3" + array.prototype.tosorted "^1.1.4" doctrine "^2.1.0" - has "^1.0.3" + es-iterator-helpers "^1.2.1" + estraverse "^5.3.0" + hasown "^2.0.2" jsx-ast-utils "^2.4.1 || ^3.0.0" - object.entries "^1.1.2" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.18.1" - string.prototype.matchall "^4.0.2" + minimatch "^3.1.2" + object.entries "^1.1.8" + object.fromentries "^2.0.8" + object.values "^1.2.1" + prop-types "^15.8.1" + resolve "^2.0.0-next.5" + semver "^6.3.1" + string.prototype.matchall "^4.0.12" + string.prototype.repeat "^1.0.0" -eslint-plugin-vue@7.18.0: - version "7.18.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.18.0.tgz#02a452142330c7f27c242db21a1b9e25238540f6" - integrity sha512-ceDXlXYMMPMSXw7tdKUR42w9jlzthJGJ3Kvm3YrZ0zuQfvAySNxe8sm6VHuksBW0+060GzYXhHJG6IHVOfF83Q== +eslint-plugin-vue@^9.32.0: + version "9.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz#2b558e827886b567dfaa156cc1cad0f596461fab" + integrity sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug== dependencies: - eslint-utils "^2.1.0" + "@eslint-community/eslint-utils" "^4.4.0" + globals "^13.24.0" natural-compare "^1.4.0" - semver "^6.3.0" - vue-eslint-parser "^7.10.0" - -eslint-rule-composer@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" - integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== + nth-check "^2.1.1" + postcss-selector-parser "^6.0.15" + semver "^7.6.3" + vue-eslint-parser "^9.4.3" + xml-name-validator "^4.0.0" eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" @@ -15797,7 +15741,7 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^7.2.2: +eslint-scope@^7.1.1: version "7.2.2" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== @@ -15805,77 +15749,95 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: - eslint-visitor-keys "^1.1.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" -eslint-visitor-keys@^1.1.0: +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.1.0: +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.56.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + +eslint@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.18.0.tgz#c95b24de1183e865de19f607fda6518b54827850" + integrity sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.0" + "@eslint/core" "^0.10.0" + "@eslint/eslintrc" "^3.2.0" + "@eslint/js" "9.18.0" + "@eslint/plugin-kit" "^0.2.5" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" + "@humanwhocodes/retry" "^0.4.1" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" + cross-spawn "^7.0.6" debug "^4.3.2" - doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" + file-entry-cache "^8.0.0" find-up "^5.0.0" glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" esm-env@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/esm-env/-/esm-env-1.2.1.tgz#34c2a0ba60582948afbe7bd779bc66f9d3aece7e" integrity sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng== +espree@^10.0.1, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== + dependencies: + acorn "^8.14.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.0" + espree@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" @@ -15885,7 +15847,7 @@ espree@^6.2.1: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" -espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: +espree@^9.0.0, espree@^9.3.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -15906,10 +15868,10 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0, esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== +esquery@^1.4.0, esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" @@ -15933,7 +15895,7 @@ estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0: +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -16436,7 +16398,7 @@ extract-files@11.0.0: resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== -extract-files@9.0.0, extract-files@^9.0.0: +extract-files@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== @@ -16489,7 +16451,7 @@ fast-fifo@^1.2.0, fast-fifo@^1.3.2: resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== -fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: +fast-glob@^3.0.3, fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -16667,12 +16629,12 @@ figures@^6.0.0: dependencies: is-unicode-supported "^2.0.0" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" file-type@^16.5.4: version "16.5.4" @@ -16952,13 +16914,13 @@ flagged-respawn@^1.0.0: resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" + flatted "^3.2.9" + keyv "^4.5.4" flat@^4.1.0: version "4.1.1" @@ -16972,11 +16934,16 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@3.2.9, flatted@^3.1.0: +flatted@3.2.9: version "3.2.9" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== +flatted@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" + integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== + floating-vue@2.0.0-beta.17: version "2.0.0-beta.17" resolved "https://registry.yarnpkg.com/floating-vue/-/floating-vue-2.0.0-beta.17.tgz#f488d992f58d76b41fc3490f3ef969d58a5c8f99" @@ -17339,15 +17306,17 @@ function-bind@^1.1.1, function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.2, function.prototype.name@^1.1.3, function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== +function.prototype.name@^1.1.2, function.prototype.name@^1.1.3, function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" + integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" functions-have-names "^1.2.3" + hasown "^2.0.2" + is-callable "^1.2.7" functions-have-names@^1.2.3: version "1.2.3" @@ -17442,16 +17411,21 @@ get-func-name@^2.0.0, get-func-name@^2.0.1, get-func-name@^2.0.2: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.2, get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.7.tgz#dcfcb33d3272e15f445d15124bc0a216189b9044" + integrity sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA== dependencies: + call-bind-apply-helpers "^1.0.1" + es-define-property "^1.0.1" es-errors "^1.3.0" + es-object-atoms "^1.0.0" function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" + get-proto "^1.0.0" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" get-nonce@^1.0.0: version "1.0.1" @@ -17493,6 +17467,14 @@ get-port@^7.0.0: resolved "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz#d5a500ebfc7aa705294ec2b83cc38c5d0e364fec" integrity sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw== +get-proto@^1.0.0, get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@3.0.0, get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -17540,14 +17522,14 @@ get-stream@^8.0.1: resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== -get-symbol-description@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" - integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== +get-symbol-description@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" + integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== dependencies: - call-bind "^1.0.5" + call-bound "^1.0.3" es-errors "^1.3.0" - get-intrinsic "^1.2.4" + get-intrinsic "^1.2.6" get-uri@^6.0.1: version "6.0.1" @@ -17604,11 +17586,6 @@ gifwrap@^0.10.1: image-q "^4.0.0" omggif "^1.0.10" -git-hooks-list@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/git-hooks-list/-/git-hooks-list-1.0.3.tgz#be5baaf78203ce342f2f844a9d2b03dba1b45156" - integrity sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ== - git-log-parser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/git-log-parser/-/git-log-parser-1.2.0.tgz#2e6a4c1b13fc00028207ba795a7ac31667b9fd4a" @@ -17908,38 +17885,35 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0, globals@^13.20.0: +globals@^13.24.0: version "13.24.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globals@^15.11.0, globals@^15.14.0: + version "15.14.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.14.0.tgz#b8fd3a8941ff3b4d38f3319d433b61bbb482e73f" + integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig== + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== -globalthis@^1.0.1, globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.0.tgz#abfcd0630037ae174a88590132c2f6804e291072" - integrity sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw== +globalthis@^1.0.1, globalthis@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== dependencies: - "@types/glob" "^7.1.1" - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" - slash "^3.0.0" + define-properties "^1.2.1" + gopd "^1.0.1" globby@10.0.1, globby@^10.0.1: version "10.0.1" @@ -17955,18 +17929,6 @@ globby@10.0.1, globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -globby@11.0.3: - version "11.0.3" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" - integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - globby@11.1.0, globby@^11.0.1, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -18032,12 +17994,10 @@ glogg@^1.0.0: dependencies: sparkles "^1.0.0" -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== got@^11.7.0, got@^11.8.5: version "11.8.6" @@ -18126,23 +18086,6 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphql-config@^3.0.2: - version "3.4.1" - resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-3.4.1.tgz#59f937a1b4d3a3c2dcdb27ddf5b4d4d4b2c6e9e1" - integrity sha512-g9WyK4JZl1Ko++FSyE5Ir2g66njfxGzrDDhBOwnkoWf/t3TnnZG6BBkWP+pkqVJ5pqMJGPKHNrbew8jRxStjhw== - dependencies: - "@endemolshinegroup/cosmiconfig-typescript-loader" "3.0.2" - "@graphql-tools/graphql-file-loader" "^6.0.0" - "@graphql-tools/json-file-loader" "^6.0.0" - "@graphql-tools/load" "^6.0.0" - "@graphql-tools/merge" "6.0.0 - 6.2.14" - "@graphql-tools/url-loader" "^6.0.0" - "@graphql-tools/utils" "^7.0.0" - cosmiconfig "7.0.0" - cosmiconfig-toml-loader "1.0.0" - minimatch "3.0.4" - string-env-interpolation "1.0.1" - graphql-config@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.0.1.tgz#4ce43cb54f3f39dde5f023d6f8f04064edc16e6e" @@ -18203,11 +18146,6 @@ graphql-tag@^2.11.0, graphql-tag@^2.12.5: dependencies: tslib "^2.1.0" -graphql-ws@^4.4.1: - version "4.9.0" - resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-4.9.0.tgz#5cfd8bb490b35e86583d8322f5d5d099c26e365c" - integrity sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag== - graphql-ws@^5.4.1, graphql-ws@^5.5.5: version "5.5.5" resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.5.5.tgz#f375486d3f196e2a2527b503644693ae3a8670a9" @@ -18430,20 +18368,22 @@ has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: dependencies: es-define-property "^1.0.0" -has-proto@^1.0.1, has-proto@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== +has-proto@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" + integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== + dependencies: + dunder-proto "^1.0.0" has-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== -has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.0.0, has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== has-to-string-tag-x@^1.2.0: version "1.4.1" @@ -18535,7 +18475,7 @@ hasha@5.2.2: is-stream "^2.0.0" type-fest "^0.8.0" -hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: +hasown@^2.0.0, hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== @@ -18999,10 +18939,10 @@ ignore@^3.0.9, ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4, ignore@^5.2.0, ignore@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== +ignore@^5.0.4, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== image-q@^4.0.0: version "4.0.0" @@ -19049,13 +18989,6 @@ import-from-esm@^1.0.3, import-from-esm@^1.3.1: debug "^4.3.4" import-meta-resolve "^4.0.0" -import-from@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.0.0" - import-from@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-4.0.0.tgz#2710b8d66817d232e16f4166e319248d3d5492e2" @@ -19252,14 +19185,14 @@ inquirer@^8.2.4: through "^2.3.6" wrap-ansi "^7.0.0" -internal-slot@^1.0.4, internal-slot@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" - integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== +internal-slot@^1.0.4, internal-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" + integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== dependencies: es-errors "^1.3.0" - hasown "^2.0.0" - side-channel "^1.0.4" + hasown "^2.0.2" + side-channel "^1.1.0" interpret@^1.0.0, interpret@^1.4.0: version "1.4.0" @@ -19372,13 +19305,14 @@ is-arguments@^1.0.4, is-arguments@^1.1.1: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" - integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== +is-array-buffer@^3.0.2, is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" + integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" + call-bind "^1.0.8" + call-bound "^1.0.3" + get-intrinsic "^1.2.6" is-arrayish@^0.2.1: version "0.2.1" @@ -19390,10 +19324,22 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== -is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== +is-async-function@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.1.0.tgz#1d1080612c493608e93168fc4458c245074c06a6" + integrity sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ== + dependencies: + call-bound "^1.0.3" + get-proto "^1.0.1" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + +is-bigint@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" + integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== + dependencies: + has-bigints "^1.0.2" is-binary-path@^1.0.0: version "1.0.1" @@ -19409,12 +19355,13 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== +is-boolean-object@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.1.tgz#c20d0c654be05da4fbc23c562635c019e93daf89" + integrity sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng== dependencies: - call-bind "^1.0.0" + call-bound "^1.0.2" + has-tostringtag "^1.0.2" is-buffer@^1.1.5, is-buffer@~1.1.6: version "1.1.6" @@ -19426,7 +19373,7 @@ is-buffer@~2.0.3: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: +is-callable@^1.1.3, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== @@ -19452,7 +19399,7 @@ is-cidr@^5.1.0: dependencies: cidr-regex "^4.1.1" -is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0, is-core-module@^2.8.0: +is-core-module@^2.13.0, is-core-module@^2.5.0: version "2.13.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== @@ -19473,19 +19420,22 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-data-view@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" - integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== +is-data-view@^1.0.1, is-data-view@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e" + integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== dependencies: + call-bound "^1.0.2" + get-intrinsic "^1.2.6" is-typed-array "^1.1.13" -is-date-object@^1.0.1, is-date-object@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== +is-date-object@^1.0.5, is-date-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" + integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== dependencies: - has-tostringtag "^1.0.0" + call-bound "^1.0.2" + has-tostringtag "^1.0.2" is-descriptor@^0.1.0: version "0.1.6" @@ -19542,6 +19492,13 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finalizationregistry@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90" + integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== + dependencies: + call-bound "^1.0.3" + is-fork-pr@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/is-fork-pr/-/is-fork-pr-2.5.0.tgz#75f9f44ae245448c84f6c1b07fa816592538da56" @@ -19581,12 +19538,15 @@ is-function@^1.0.1: resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== +is-generator-function@^1.0.10, is-generator-function@^1.0.7: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" + integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== dependencies: - has-tostringtag "^1.0.0" + call-bound "^1.0.3" + get-proto "^1.0.0" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" is-glob@4.0.1: version "4.0.1" @@ -19662,10 +19622,10 @@ is-lower-case@^2.0.2: dependencies: tslib "^2.0.3" -is-map@^2.0.1, is-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== +is-map@^2.0.2, is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== is-module@^1.0.0: version "1.0.0" @@ -19685,20 +19645,18 @@ is-negated-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= -is-negative-zero@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" - integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== - is-network-error@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.1.0.tgz#d26a760e3770226d11c169052f266a4803d9c997" integrity sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g== -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== +is-number-object@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" + integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" is-number@^3.0.0: version "3.0.0" @@ -19782,21 +19740,21 @@ is-path-inside@^2.0.0, is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" -is-path-inside@^3.0.2, is-path-inside@^3.0.3: +is-path-inside@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-obj@2.1.0, is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-plain-obj@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" @@ -19848,13 +19806,15 @@ is-reference@^3.0.3: dependencies: "@types/estree" "^1.0.6" -is-regex@^1.1.0, is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== +is-regex@^1.1.0, is-regex@^1.1.4, is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" is-regexp@^1.0.0: version "1.0.0" @@ -19873,17 +19833,17 @@ is-retry-allowed@^1.1.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== -is-set@^2.0.1, is-set@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== +is-set@^2.0.2, is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== -is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" - integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" + integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== dependencies: - call-bind "^1.0.7" + call-bound "^1.0.3" is-ssh@^1.4.0: version "1.4.0" @@ -19907,19 +19867,22 @@ is-stream@^3.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== +is-string@^1.0.7, is-string@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" + integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== dependencies: - has-tostringtag "^1.0.0" + call-bound "^1.0.3" + has-tostringtag "^1.0.2" -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== +is-symbol@^1.0.4, is-symbol@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" + integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== dependencies: - has-symbols "^1.0.1" + call-bound "^1.0.2" + has-symbols "^1.1.0" + safe-regex-test "^1.1.0" is-text-path@^1.0.1: version "1.0.1" @@ -19935,12 +19898,12 @@ is-text-path@^2.0.0: dependencies: text-extensions "^2.0.0" -is-typed-array@^1.1.13, is-typed-array@^1.1.3: - version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" - integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== +is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15, is-typed-array@^1.1.3: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== dependencies: - which-typed-array "^1.1.14" + which-typed-array "^1.1.16" is-typedarray@~1.0.0: version "1.0.0" @@ -20000,22 +19963,25 @@ is-valid-hostname@1.0.1: resolved "https://registry.yarnpkg.com/is-valid-hostname/-/is-valid-hostname-1.0.1.tgz#4001a549e908bcc6a6d5347d8781779d8fedd9ce" integrity sha512-GuMwWwBVh+TiH/DzzcITaCJ3aMijgCwE+/Sa4Zh13PyslxaTX0xmWxnwkNOoXcCTCd3z/Dw8Pe5Brsgp+bULtA== -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== +is-weakref@^1.0.2, is-weakref@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.0.tgz#47e3472ae95a63fa9cf25660bcf0c181c39770ef" + integrity sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q== dependencies: - call-bind "^1.0.2" + call-bound "^1.0.2" -is-weakset@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" - integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== +is-weakset@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca" + integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== + dependencies: + call-bound "^1.0.3" + get-intrinsic "^1.2.6" is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" @@ -20161,6 +20127,18 @@ iterall@^1.2.1, iterall@^1.3.0: resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== +iterator.prototype@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" + integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g== + dependencies: + define-data-property "^1.1.4" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.6" + get-proto "^1.0.0" + has-symbols "^1.1.0" + set-function-name "^2.0.2" + its-name@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/its-name/-/its-name-1.0.0.tgz#2065f1883ecb568c65f7112ddbf123401fae4af0" @@ -20258,6 +20236,11 @@ jiti@^1.18.2, jiti@^1.21.6: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.7.tgz#9dd81043424a3d28458b193d965f0d18a2300ba9" integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== +jiti@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560" + integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A== + jose@^4.15.5: version "4.15.5" resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.5.tgz#6475d0f467ecd3c630a1b5dadd2735a7288df706" @@ -20369,15 +20352,6 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-fixer@^1.3.2: - version "1.6.15" - resolved "https://registry.yarnpkg.com/json-fixer/-/json-fixer-1.6.15.tgz#f1f03b6771fcb383695d458c53e50b10999fba7f" - integrity sha512-TuDuZ5KrgyjoCIppdPXBMqiGfota55+odM+j2cQ5rt/XKyKmqGB3Whz1F8SN8+60yYGy/Nu5lbRZ+rx8kBIvBw== - dependencies: - "@babel/runtime" "^7.18.9" - chalk "^4.1.2" - pegjs "^0.10.0" - json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -20647,10 +20621,10 @@ keyv@3.0.0, keyv@^3.0.0: dependencies: json-buffer "3.0.0" -keyv@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" - integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA== +keyv@^4.0.0, keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -21081,14 +21055,6 @@ lilconfig@^3.0.0, lilconfig@^3.1.3: resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== -line-column@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" - integrity sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww== - dependencies: - isarray "^1.0.0" - isobject "^2.0.0" - line-diff@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/line-diff/-/line-diff-2.1.1.tgz#a389799b931375a3b1e764964ad0b0b3ce60d6f6" @@ -21442,11 +21408,6 @@ lodash.escaperegexp@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - lodash.get@^4, lodash.get@^4.0.0, lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -21546,11 +21507,6 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= -lodash.without@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" - integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= - lodash@4.17.21, lodash@^4.16.4, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -21983,6 +21939,11 @@ matcher@^3.0.0: dependencies: escape-string-regexp "^4.0.0" +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -22614,7 +22575,7 @@ mobx@6.13.5: resolved "https://registry.npmjs.org/mobx/-/mobx-6.13.5.tgz#957d9df88c7f8b4baa7c6f8bdcb6d68b432a6ed5" integrity sha512-/HTWzW2s8J1Gqt+WmUj5Y0mddZk+LInejADc79NJadrWla3rHzmRHki/mnEUH1AvOmbNTZ1BRbKxr8DSgfdjMA== -"mocha-7.0.1@npm:mocha@7.0.1", mocha@7.0.1: +"mocha-7.0.1@npm:mocha@7.0.1": version "7.0.1" resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.0.1.tgz#276186d35a4852f6249808c6dd4a1376cbf6c6ce" integrity sha512-9eWmWTdHLXh72rGrdZjNbG3aa1/3NRPpul1z0D979QpEnFdCG0Q5tv834N+94QEN2cysfV72YocQ3fn87s70fg== @@ -22731,6 +22692,36 @@ mocha@6.2.2: yargs-parser "13.1.1" yargs-unparser "1.6.0" +mocha@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.0.1.tgz#276186d35a4852f6249808c6dd4a1376cbf6c6ce" + integrity sha512-9eWmWTdHLXh72rGrdZjNbG3aa1/3NRPpul1z0D979QpEnFdCG0Q5tv834N+94QEN2cysfV72YocQ3fn87s70fg== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "2.2.0" + minimatch "3.0.4" + mkdirp "0.5.1" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.0" + yargs-parser "13.1.1" + yargs-unparser "1.6.0" + mocha@7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.1.0.tgz#c784f579ad0904d29229ad6cb1e2514e4db7d249" @@ -24049,10 +24040,10 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" -nth-check@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== +nth-check@^2.0.1, nth-check@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" @@ -24151,10 +24142,10 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== +object-inspect@^1.13.3: + version "1.13.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" + integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== object-is@^1.0.1, object-is@^1.1.2, object-is@^1.1.5: version "1.1.5" @@ -24200,14 +24191,16 @@ object.assign@4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.4, object.assign@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== +object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.4, object.assign@^4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== dependencies: - call-bind "^1.0.5" + call-bind "^1.0.8" + call-bound "^1.0.3" define-properties "^1.2.1" - has-symbols "^1.0.3" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" object-keys "^1.1.1" object.defaults@^1.0.0, object.defaults@^1.1.0: @@ -24220,7 +24213,7 @@ object.defaults@^1.0.0, object.defaults@^1.1.0: for-own "^1.0.0" isobject "^3.0.0" -object.entries@^1.1.2: +object.entries@^1.1.2, object.entries@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== @@ -24229,7 +24222,7 @@ object.entries@^1.1.2: define-properties "^1.2.1" es-object-atoms "^1.0.0" -object.fromentries@^2.0.2, object.fromentries@^2.0.3, object.fromentries@^2.0.7: +object.fromentries@^2.0.3, object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== @@ -24248,15 +24241,6 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.3" es-abstract "^1.18.0-next.2" -object.groupby@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" - integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - object.map@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" @@ -24288,12 +24272,13 @@ object.reduce@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" -object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.5, object.values@^1.1.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" - integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== +object.values@^1.1.0, object.values@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" + integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.3" define-properties "^1.2.1" es-object-atoms "^1.0.0" @@ -24524,6 +24509,15 @@ ospath@1.2.2, ospath@^1.2.2: resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= +own-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" + integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== + dependencies: + get-intrinsic "^1.2.6" + object-keys "^1.1.1" + safe-push-apply "^1.0.0" + p-cancelable@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" @@ -25346,11 +25340,6 @@ peek-readable@^4.1.0: resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== -pegjs@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" - integrity sha512-qI5+oFNEGi3L5HAxDwN2LA4Gg7irF70Zs25edhjld9QemOgp0CbvMtbFcMvFtEo1OityPrcCzkQFB8JP/hxgow== - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -25719,7 +25708,7 @@ postcss-scss@^3.0.2: dependencies: postcss "^8.2.7" -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== @@ -25970,7 +25959,7 @@ prop-types@15.7.2: object-assign "^4.1.1" react-is "^16.8.1" -prop-types@15.8.1, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@15.8.1, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -26225,6 +26214,11 @@ quote@0.4.0: resolved "https://registry.yarnpkg.com/quote/-/quote-0.4.0.tgz#10839217f6c1362b89194044d29b233fd7f32f01" integrity sha1-EIOSF/bBNiuJGUBE0psjP9fzLwE= +rambda@^7.4.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/rambda/-/rambda-7.5.0.tgz#1865044c59bc0b16f63026c6e5a97e4b1bbe98fe" + integrity sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA== + ramda@0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" @@ -26250,7 +26244,7 @@ ramda@0.28.0: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" integrity sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA== -ramda@^0.27.1, ramda@^0.27.2: +ramda@^0.27.2: version "0.27.2" resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1" integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== @@ -26808,6 +26802,20 @@ reduce-css-calc@^2.1.6: css-unit-converter "^1.1.1" postcss-value-parser "^3.3.0" +reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" + integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.7" + get-proto "^1.0.1" + which-builtin-type "^1.2.1" + reflect.ownkeys@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" @@ -26860,15 +26868,17 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== +regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.3: + version "1.5.4" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" + integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== dependencies: - call-bind "^1.0.6" + call-bind "^1.0.8" define-properties "^1.2.1" es-errors "^1.3.0" - set-function-name "^2.0.1" + get-proto "^1.0.1" + gopd "^1.2.0" + set-function-name "^2.0.2" regexpu-core@^5.3.1: version "5.3.2" @@ -27241,7 +27251,7 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@1.22.8, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4, resolve@^1.22.8, resolve@^1.3.2, resolve@^1.4.0: +resolve@1.22.8, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.8, resolve@^1.3.2, resolve@^1.4.0: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -27255,6 +27265,15 @@ resolve@^0.6.3: resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" integrity sha1-3ZV5gufnNt699TtYpN2RdUV13UY= +resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + responselike@1.0.2, responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -27534,14 +27553,15 @@ safaridriver@^0.1.2: resolved "https://registry.npmjs.org/safaridriver/-/safaridriver-0.1.2.tgz#166571d5881c7d6f884900d92d51ee1309c05aa4" integrity sha512-4R309+gWflJktzPXBQCobbWEHlzC4aK3a+Ov3tz2Ib2aBxiwd11phkdIBH1l0EO22x24CJMUQkpKFumRriCSRg== -safe-array-concat@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" - integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== +safe-array-concat@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" + integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - has-symbols "^1.0.3" + call-bind "^1.0.8" + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + has-symbols "^1.1.0" isarray "^2.0.5" safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: @@ -27559,14 +27579,22 @@ safe-json-parse@~1.0.1: resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c= -safe-regex-test@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" - integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== +safe-push-apply@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" + integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== dependencies: - call-bind "^1.0.6" es-errors "^1.3.0" - is-regex "^1.1.4" + isarray "^2.0.5" + +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" safe-regex@^1.1.0: version "1.1.0" @@ -27801,7 +27829,7 @@ semver@7.5.3: dependencies: lru-cache "^6.0.0" -semver@7.6.3, semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.2, semver@^7.6.3: +semver@7.6.3, semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3: version "7.6.3" resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -27979,7 +28007,7 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-function-length@^1.2.1: +set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== @@ -27991,7 +28019,7 @@ set-function-length@^1.2.1: gopd "^1.0.1" has-property-descriptors "^1.0.2" -set-function-name@^2.0.1, set-function-name@^2.0.2: +set-function-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== @@ -28001,6 +28029,15 @@ set-function-name@^2.0.1, set-function-name@^2.0.2: functions-have-names "^1.2.3" has-property-descriptors "^1.0.2" +set-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" + integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== + dependencies: + dunder-proto "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -28111,15 +28148,45 @@ shiki@^0.9.12: onigasm "^2.2.5" vscode-textmate "5.2.0" -side-channel@^1.0.4, side-channel@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== dependencies: - call-bind "^1.0.7" es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.0.4, side-channel@^1.0.6, side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" siginfo@^2.0.0: version "2.0.0" @@ -28248,7 +28315,7 @@ sinon-chai@3.5.0: resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.5.0.tgz#c9a78304b0e15befe57ef68e8a85a00553f5c60e" integrity sha512-IifbusYiQBpUxxFJkR3wTU68xzBN0+bxCScEaKMjBvAQERg6FnTTc1F17rseLb1tjmkJ23730AXpFI0c47FgAg== -sinon-chai@3.7.0, sinon-chai@^3.3.0, sinon-chai@^3.5.0, sinon-chai@^3.7.0: +sinon-chai@3.7.0, sinon-chai@^3.5.0, sinon-chai@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.7.0.tgz#cfb7dec1c50990ed18c153f1840721cf13139783" integrity sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g== @@ -28363,7 +28430,7 @@ sinon@7.3.2: nise "^1.4.10" supports-color "^5.5.0" -sinon@7.5.0, sinon@^7.3.2: +sinon@7.5.0: version "7.5.0" resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.5.0.tgz#e9488ea466070ea908fd44a3d6478fd4923c67ec" integrity sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q== @@ -28766,23 +28833,6 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -sort-object-keys@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" - integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== - -sort-package-json@^1.22.1: - version "1.57.0" - resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-1.57.0.tgz#e95fb44af8ede0bb6147e3f39258102d4bb23fc4" - integrity sha512-FYsjYn2dHTRb41wqnv+uEqCUvBpK3jZcTp9rbz2qDTmel7Pmdtf+i2rLaaPMRZeSVM60V3Se31GyWFpmKs4Q5Q== - dependencies: - detect-indent "^6.0.0" - detect-newline "3.1.0" - git-hooks-list "1.0.3" - globby "10.0.0" - is-plain-obj "2.1.0" - sort-object-keys "^1.1.3" - source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -29277,7 +29327,7 @@ string-template@~0.2.1: resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -29303,6 +29353,15 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -29330,23 +29389,24 @@ string-width@^7.0.0: get-east-asian-width "^1.0.0" strip-ansi "^7.1.0" -string.prototype.matchall@^4.0.2: - version "4.0.11" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" - integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== +string.prototype.matchall@^4.0.12: + version "4.0.12" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz#6c88740e49ad4956b1332a911e949583a275d4c0" + integrity sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.3" define-properties "^1.2.1" - es-abstract "^1.23.2" + es-abstract "^1.23.6" es-errors "^1.3.0" es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - regexp.prototype.flags "^1.5.2" + get-intrinsic "^1.2.6" + gopd "^1.2.0" + has-symbols "^1.1.0" + internal-slot "^1.1.0" + regexp.prototype.flags "^1.5.3" set-function-name "^2.0.2" - side-channel "^1.0.6" + side-channel "^1.1.0" string.prototype.padend@^3.0.0: version "3.1.2" @@ -29357,22 +29417,34 @@ string.prototype.padend@^3.0.0: define-properties "^1.1.3" es-abstract "^1.18.0-next.2" -string.prototype.trim@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" - integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== +string.prototype.repeat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#e90872ee0308b29435aa26275f6e1b762daee01a" + integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w== dependencies: - call-bind "^1.0.7" + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trim@^1.2.10: + version "1.2.10" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" + integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-data-property "^1.1.4" define-properties "^1.2.1" - es-abstract "^1.23.0" + es-abstract "^1.23.5" es-object-atoms "^1.0.0" + has-property-descriptors "^1.0.2" -string.prototype.trimend@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" - integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== +string.prototype.trimend@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" + integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.2" define-properties "^1.2.1" es-object-atoms "^1.0.0" @@ -29413,7 +29485,7 @@ stringify-object@^3.0.0, stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -29434,6 +29506,13 @@ strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -29554,17 +29633,6 @@ subscriptions-transport-ws@^0.10.0: symbol-observable "^1.0.4" ws "^5.2.0 || ^6.0.0 || ^7.0.0" -subscriptions-transport-ws@^0.9.18: - version "0.9.19" - resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz#10ca32f7e291d5ee8eb728b9c02e43c52606cdcf" - integrity sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw== - dependencies: - backo2 "^1.0.2" - eventemitter3 "^3.1.0" - iterall "^1.2.1" - symbol-observable "^1.0.4" - ws "^5.2.0 || ^6.0.0 || ^7.0.0" - sucrase@^3.35.0: version "3.35.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" @@ -30125,7 +30193,7 @@ text-mask-addons@3.8.0: resolved "https://registry.yarnpkg.com/text-mask-addons/-/text-mask-addons-3.8.0.tgz#17b61ef665a4f36811f2ea1f01a223b4be61ab26" integrity sha1-F7Ye9mWk82gR8uofAaIjtL5hqyY= -text-table@^0.2.0, text-table@~0.2.0: +text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -30518,6 +30586,11 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== +ts-api-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.0.0.tgz#b9d7d5f7ec9f736f4d0f09758b8607979044a900" + integrity sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ== + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -30597,7 +30670,7 @@ tsconfig-paths@3.10.1: minimist "^1.2.0" strip-bom "^3.0.0" -tsconfig-paths@^3.12.0, tsconfig-paths@^3.15.0, tsconfig-paths@^3.9.0: +tsconfig-paths@^3.9.0: version "3.15.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== @@ -30641,11 +30714,6 @@ tslib@~2.0.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== -tslib@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - tslib@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" @@ -30851,49 +30919,50 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.3.0.tgz#ada7c045f07ead08abf9e2edd29be1a0c0661132" integrity sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg== -typed-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" - integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== dependencies: - call-bind "^1.0.7" + call-bound "^1.0.3" es-errors "^1.3.0" - is-typed-array "^1.1.13" + is-typed-array "^1.1.14" -typed-array-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" - integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== +typed-array-byte-length@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" + integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.14" -typed-array-byte-offset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" - integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== +typed-array-byte-offset@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" + integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== dependencies: available-typed-arrays "^1.0.7" - call-bind "^1.0.7" + call-bind "^1.0.8" for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.15" + reflect.getprototypeof "^1.0.9" -typed-array-length@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" - integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== +typed-array-length@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" + integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== dependencies: call-bind "^1.0.7" for-each "^0.3.3" gopd "^1.0.1" - has-proto "^1.0.3" is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" + reflect.getprototypeof "^1.0.6" typedarray-to-buffer@~1.0.0: version "1.0.4" @@ -30914,6 +30983,15 @@ typescript-cached-transpile@^0.0.6: fs-extra "^8.1.0" tslib "^1.10.0" +typescript-eslint@^8.20.0: + version "8.20.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.20.0.tgz#76d4ea6a483fd49830a7e8baccaed10f76d1e57b" + integrity sha512-Kxz2QRFsgbWj6Xcftlw3Dd154b3cEPFqQC+qMZrMypSijPd4UanKKvoKDrJ4o8AIfZFKAF+7sMaEIR8mTElozA== + dependencies: + "@typescript-eslint/eslint-plugin" "8.20.0" + "@typescript-eslint/parser" "8.20.0" + "@typescript-eslint/utils" "8.20.0" + typescript@5.3.3: version "5.3.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" @@ -30984,15 +31062,15 @@ ultron@~1.1.0: resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== +unbox-primitive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" + integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== dependencies: - call-bind "^1.0.2" + call-bound "^1.0.3" has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" + has-symbols "^1.1.0" + which-boxed-primitive "^1.1.1" unbzip2-stream@1.4.3, unbzip2-stream@^1.4.3: version "1.4.3" @@ -31193,7 +31271,7 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unixify@1.0.0, unixify@^1.0.0: +unixify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA= @@ -31565,11 +31643,6 @@ value-or-promise@1.0.11: resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140" integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== -value-or-promise@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.6.tgz#218aa4794aa2ee24dcf48a29aba4413ed584747f" - integrity sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg== - vanilla-text-mask@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/vanilla-text-mask/-/vanilla-text-mask-5.1.1.tgz#f854819b2785191cef651e3ee94869f45855f365" @@ -31846,7 +31919,7 @@ vue-demi@*: resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.11.2.tgz#faa06da53887c493a695b997f4fcb4784a667990" integrity sha512-J+X8Au6BhQdcej6LY4O986634hZLu55L0ewU2j8my7WIKlu8cK0dqmdUxqVHHMd/cMrKKZ9SywB/id6aLhwCtA== -vue-eslint-parser@7.11.0, vue-eslint-parser@^7.10.0: +vue-eslint-parser@7.11.0: version "7.11.0" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz#214b5dea961007fcffb2ee65b8912307628d0daf" integrity sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg== @@ -31859,6 +31932,19 @@ vue-eslint-parser@7.11.0, vue-eslint-parser@^7.10.0: lodash "^4.17.21" semver "^6.3.0" +vue-eslint-parser@^9.4.3: + version "9.4.3" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz#9b04b22c71401f1e8bca9be7c3e3416a4bde76a8" + integrity sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg== + dependencies: + debug "^4.3.4" + eslint-scope "^7.1.1" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" + esquery "^1.4.0" + lodash "^4.17.21" + semver "^7.3.6" + vue-i18n@9.13.1: version "9.13.1" resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.13.1.tgz#a292c8021b7be604ebfca5609ae1f8fafe5c36d7" @@ -32297,26 +32383,45 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== +which-boxed-primitive@^1.0.2, which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" + integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" + is-bigint "^1.1.0" + is-boolean-object "^1.2.1" + is-number-object "^1.1.1" + is-string "^1.1.1" + is-symbol "^1.1.1" -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== +which-builtin-type@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e" + integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" + call-bound "^1.0.2" + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" + is-async-function "^2.0.0" + is-date-object "^1.1.0" + is-finalizationregistry "^1.1.0" + is-generator-function "^1.0.10" + is-regex "^1.2.1" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.1.0" + which-collection "^1.0.2" + which-typed-array "^1.1.16" + +which-collection@^1.0.1, which-collection@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" which-module@^1.0.0: version "1.0.0" @@ -32333,15 +32438,16 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2: - version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" - integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== +which-typed-array@^1.1.13, which-typed-array@^1.1.16, which-typed-array@^1.1.18, which-typed-array@^1.1.2: + version "1.1.18" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.18.tgz#df2389ebf3fbb246a71390e90730a9edb6ce17ad" + integrity sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA== dependencies: available-typed-arrays "^1.0.7" - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.3" for-each "^0.3.3" - gopd "^1.0.1" + gopd "^1.2.0" has-tostringtag "^1.0.2" which@1.3.1, which@^1.1.1, which@^1.2.14, which@^1.2.4, which@^1.2.8, which@^1.2.9: @@ -32468,7 +32574,7 @@ workerpool@6.2.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -32511,6 +32617,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -32596,11 +32711,6 @@ ws@5.2.4: dependencies: async-limiter "~1.0.0" -ws@7.4.5, ws@~7.4.2: - version "7.4.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" - integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== - ws@8.14.1: version "8.14.1" resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.1.tgz#4b9586b4f70f9e6534c7bb1d3dc0baa8b8cf01e0" @@ -32621,6 +32731,11 @@ ws@^8.0.0, ws@^8.13.0, ws@^8.18.0, ws@^8.5.0, ws@^8.8.0: resolved "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== +ws@~7.4.2: + version "7.4.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" + integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== + ws@~8.11.0: version "8.11.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" @@ -32654,6 +32769,11 @@ xhr@^2.0.1: parse-headers "^2.0.0" xtend "^4.0.0" +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + xml-parse-from-string@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" From 920e1c7cfbb05ba76e5f9f32637672abc45a3905 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 13:48:59 -0500 Subject: [PATCH 003/113] use updated eslint for ./scripts --- .eslintrc.js | 109 ----------------------------------- eslint.config.ts | 80 ++++++++++++++++++++++++++ package.json | 147 +++++++++++++++++++++++------------------------ 3 files changed, 153 insertions(+), 183 deletions(-) delete mode 100644 .eslintrc.js create mode 100644 eslint.config.ts diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 94dcd6358b39..000000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,109 +0,0 @@ -const fs = require('fs') -const path = require('path') -const { specifiedRules } = require('graphql') - -const graphqlOpts = { - env: 'literal', - tagName: 'gql', - // eslint-disable-next-line no-restricted-syntax - schemaString: fs.readFileSync( - path.join(__dirname, 'packages/graphql/schemas/schema.graphql'), - 'utf8', - ), -} - -const validators = specifiedRules -.map((rule) => rule.name) -.filter( - (ruleName) => { - return [ - 'NoUnusedFragmentsRule', - 'KnownFragmentNamesRule', - 'NoUnusedVariablesRule', - ].findIndex((x) => x === ruleName) === -1 - }, -) - -module.exports = { - root: true, - plugins: [ - '@cypress/dev', - 'graphql', - ], - extends: [ - 'plugin:@cypress/dev/general', - 'plugin:@cypress/dev/tests', - ], - parser: '@typescript-eslint/parser', - ignorePatterns: [ - // cli types are checked by dtslint - 'cli/types/**', - // these fixtures are supposed to fail linting - 'npm/eslint-plugin-dev/test/fixtures/**', - // Cloud generated - 'system-tests/lib/validations/**', - ], - overrides: [ - { - files: [ - // ignore in tests and scripts - '**/scripts/**', - '**/test/**', - '**/system-tests/**', - 'tooling/**', - 'packages/{app,driver,frontend-shared,launchpad}/cypress/**', - '*.test.ts', - ], - rules: { - 'no-restricted-properties': 'off', - 'no-restricted-syntax': 'off', - }, - }, - { - files: ['*.json'], - extends: 'plugin:@cypress/dev/general', - }, - ], - rules: { - 'no-duplicate-imports': 'off', - 'import/no-duplicates': 'error', - 'prefer-spread': 'off', - 'prefer-rest-params': 'off', - 'no-useless-constructor': 'off', - 'no-restricted-properties': [ - 'error', - { - object: 'process', - property: 'geteuid', - message: 'process.geteuid() will throw on Windows. Do not use it unless you catch any potential errors.', - }, - { - object: 'os', - property: 'userInfo', - message: 'os.userInfo() will throw when there is not an `/etc/passwd` entry for the current user (like when running with --user 12345 in Docker). Do not use it unless you catch any potential errors.', - }, - ], - 'no-restricted-syntax': [ - // esquery tool: https://estools.github.io/esquery/ - 'error', - { - // match sync FS methods except for `existsSync` - // examples: fse.readFileSync, fs.readFileSync, this.ctx.fs.readFileSync... - selector: `MemberExpression[object.name='fs'][property.name=/^[A-z]+Sync$/]:not(MemberExpression[property.name='existsSync']), MemberExpression[property.name=/^[A-z]+Sync$/]:not(MemberExpression[property.name='existsSync']):has(MemberExpression[property.name='fs'])`, - message: 'Synchronous fs calls should not be used in Cypress. Use an async API instead.', - }, - ], - 'graphql/capitalized-type-name': ['warn', graphqlOpts], - 'graphql/no-deprecated-fields': ['error', graphqlOpts], - 'graphql/template-strings': ['error', { ...graphqlOpts, validators }], - 'graphql/required-fields': [ - 'error', - { ...graphqlOpts, requiredFields: ['id'] }, - ], - }, - settings: { - react: { - version: '16.8', - }, - }, -} diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 000000000000..bafedb53bc88 --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,80 @@ +import js from '@eslint/js' +import ts, { InfiniteDepthConfigWithExtends } from 'typescript-eslint' +import cy from 'eslint-plugin-cypress/flat' +import mocha from 'eslint-plugin-mocha' +import type { Linter } from 'eslint' +import globals from 'globals' +import path from 'path' + +/** + * baseConfig should be imported by other packages that define their own eslint.config.ts + * tsLanguageOptions may be shared, but is probably unnecessary + * the default config exported from this file applies to + * - ./scripts/* + */ + +export const baseConfig: InfiniteDepthConfigWithExtends[] = [ + js.configs.recommended, + ...ts.configs.recommended, + cy.configs.recommended, + mocha.configs.flat.recommended, + { + // rules that are gold standard, but have many violations + // these are off while developing eslint, but will be set to warn + rules: { + '@typescript-eslint/no-unused-expressions': 'off', + '@typescript-eslint/no-require-imports': 'off', + '@typescript-eslint/no-unused-vars': 'off', + 'no-useless-escape': 'off', + '@typescript-eslint/no-unsafe-function-type': 'off', + 'prefer-const': 'off', + 'prefer-rest-params': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/no-namespace': 'off', + '@typescript-eslint/no-explicit-any': 'off', + 'no-prototype-builtins': 'off', + '@typescript-eslint/no-this-alias': 'off', + }, + }, + + // conflicting mocha rules + { + rules: { + 'mocha/no-mocha-arrows': 'off', + 'mocha/no-setup-in-describe': 'off', //warn + 'mocha/max-top-level-suites': 'off', // warn + 'mocha/no-top-level-hooks': 'off', //warn + 'mocha/no-identical-title': 'off', // warn + 'mocha/consistent-spacing-between-blocks': 'off', + } + } +] + + +export default ts.config( + ...baseConfig, + { + ignores: [ + 'npm/**/*', + 'packages/**/*', + 'system-tests/**/*', + 'tooling/**/*', + 'cli/**/*', + '**/__snapshots__/**/*', + '.nx/**/*', + '.releaserc.js' + ] + }, + { + files: ['**/*.ts', '**/*.js'], + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: path.join(__dirname, './ts/tsconfig') + }, + globals: { + ...globals.node, + } + } + } +) \ No newline at end of file diff --git a/package.json b/package.json index e2bc39dd78bb..76d014d92839 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,53 @@ { "name": "cypress", "version": "13.17.0", - "description": "Cypress is a next generation front end testing tool built for the modern web", "private": true, + "description": "Cypress is a next generation front end testing tool built for the modern web", + "keywords": [ + "automation", + "browser", + "cypress", + "cypress.io", + "e2e", + "end-to-end", + "integration", + "component", + "mocks", + "runner", + "spies", + "stubs", + "test", + "testing" + ], + "homepage": "https://cypress.io", + "bugs": { + "url": "https://github.com/cypress-io/cypress/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/cypress-io/cypress.git" + }, + "license": "MIT", + "workspaces": { + "packages": [ + "cli", + "packages/*", + "npm/*", + "tooling/*", + "system-tests", + "scripts" + ], + "nohoist": [ + "**/@wdio/*", + "**/webpack-preprocessor/babel-loader", + "**/webpack-preprocessor/**/merge-source-map", + "**/webpack-preprocessor/**/patch-package", + "**/webpack-batteries-included-preprocessor/ts-loader", + "**/jest", + "**/jest*", + "**/expect" + ] + }, "scripts": { "binary-build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 node ./scripts/binary.js build", "binary-deploy": "node ./scripts/binary.js deploy", @@ -63,19 +108,38 @@ "test-scripts-watch": "yarn test-scripts --watch --watch-extensions 'ts,js'", "test-system": "yarn workspace @tooling/system-tests test", "pretest-unit": "yarn ensure-deps", - "test-unit": "lerna exec yarn test-unit --ignore={@packages/{driver,root,static,web-config,net-stubbing,rewriter},@cypress/{webpack-dev-server,eslint-plugin-dev}}", + "test-unit": "lerna exec yarn test-unit --ignore={@packages/{driver,root,static,web-config,net-stubbing,rewriter},@cypress/{webpack-dev-server}}", "pretest-watch": "yarn ensure-deps", "test-watch": "lerna exec yarn test-watch --ignore=@packages/{driver,root,static,web-config}", "type-check": "yarn lerna exec yarn type-check --scope=@tooling/system-tests && node scripts/type_check", "verify:mocha:results": "node ./scripts/verify-mocha-results", "watch": "yarn gulp watch" }, + "lint-staged": { + "*.coffee": "yarn stop-only --folder", + "*.{js,jsx,ts,tsx,json,eslintrc,vue}": "eslint --fix" + }, + "resolutions": { + "**/@types/cheerio": "0.22.21", + "**/@types/enzyme": "3.10.5", + "**/@wdio/logger": "9.0.0", + "**/jquery": "3.7.1", + "**/pretty-format": "26.4.0", + "**/sharp": "0.29.3", + "**/socket.io-parser": "4.0.5", + "**/ua-parser-js": "0.7.33", + "browserify-sign": "4.2.2", + "devtools-protocol": "0.0.1346313", + "sharp": "0.29.3", + "vue-template-compiler": "2.6.12" + }, "devDependencies": { "@aws-sdk/client-s3": "3.485.0", "@aws-sdk/credential-providers": "3.53.0", "@babel/eslint-parser": "7.25.1", "@cypress/request": "^3.0.6", "@cypress/request-promise": "^5.0.0", + "@eslint/js": "^9.18.0", "@electron/fuses": "1.8.0", "@electron/notarize": "^2.5.0", "@fellow/eslint-plugin-coffee": "0.4.13", @@ -144,20 +208,15 @@ "electron": "33.2.1", "electron-builder": "^25.1.8", "enzyme-adapter-react-16": "1.12.1", - "eslint": "^8.56.0", - "eslint-plugin-cypress": "3.5.0", - "eslint-plugin-graphql": "4.0.0", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-json-format": "2.0.1", - "eslint-plugin-mocha": "8.2.0", - "eslint-plugin-react": "7.22.0", - "eslint-plugin-react-hooks": "4.2.0", - "eslint-plugin-vue": "7.18.0", + "eslint": "^9.18.0", + "eslint-plugin-cypress": "^4.1.0", + "eslint-plugin-mocha": "^10.5.0", "execa": "4.0.0", "filesize": "10.1.1", "fs-extra": "9.1.0", "getenv": "^1.0.0", "glob": "7.1.6", + "globals": "^15.14.0", "graphql": "^15.5.1", "graphql-executor": "0.0.23", "gulp": "4.0.2", @@ -170,6 +229,7 @@ "husky": "7.0.2", "inquirer": "8.2.4", "inquirer-confirm": "2.0.3", + "jiti": "^2.4.2", "lazy-ass": "1.6.0", "lerna": "8.1.8", "lint-staged": "11.1.2", @@ -209,6 +269,7 @@ "tree-kill": "1.2.2", "ts-node": "^10.9.2", "typescript": "5.3.3", + "typescript-eslint": "^8.20.0", "yarn-deduplicate": "3.1.0" }, "engines": { @@ -216,67 +277,5 @@ "yarn": ">=1.22.22" }, "productName": "Cypress", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/cypress-io/cypress.git" - }, - "homepage": "https://cypress.io", - "bugs": { - "url": "https://github.com/cypress-io/cypress/issues" - }, - "keywords": [ - "automation", - "browser", - "cypress", - "cypress.io", - "e2e", - "end-to-end", - "integration", - "component", - "mocks", - "runner", - "spies", - "stubs", - "test", - "testing" - ], - "workspaces": { - "packages": [ - "cli", - "packages/*", - "npm/*", - "tooling/*", - "system-tests", - "scripts" - ], - "nohoist": [ - "**/@wdio/*", - "**/webpack-preprocessor/babel-loader", - "**/webpack-preprocessor/**/merge-source-map", - "**/webpack-preprocessor/**/patch-package", - "**/webpack-batteries-included-preprocessor/ts-loader", - "**/jest", - "**/jest*", - "**/expect" - ] - }, - "lint-staged": { - "*.coffee": "yarn stop-only --folder", - "*.{js,jsx,ts,tsx,json,eslintrc,vue}": "eslint --fix" - }, - "resolutions": { - "**/@types/cheerio": "0.22.21", - "**/@types/enzyme": "3.10.5", - "**/@wdio/logger": "9.0.0", - "**/jquery": "3.7.1", - "**/pretty-format": "26.4.0", - "**/sharp": "0.29.3", - "**/socket.io-parser": "4.0.5", - "**/ua-parser-js": "0.7.33", - "browserify-sign": "4.2.2", - "devtools-protocol": "0.0.1346313", - "sharp": "0.29.3", - "vue-template-compiler": "2.6.12" - } + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } From 00f124358226ea5a3c42fbf3f31baf3290362c5f Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 13:49:27 -0500 Subject: [PATCH 004/113] use new eslint for cli --- cli/.eslintignore | 16 ------------ cli/.eslintrc.json | 19 -------------- cli/eslint.config.ts | 62 ++++++++++++++++++++++++++++++++++++++++++++ cli/package.json | 2 +- 4 files changed, 63 insertions(+), 36 deletions(-) delete mode 100644 cli/.eslintignore delete mode 100644 cli/.eslintrc.json create mode 100644 cli/eslint.config.ts diff --git a/cli/.eslintignore b/cli/.eslintignore deleted file mode 100644 index 90471aa76fd3..000000000000 --- a/cli/.eslintignore +++ /dev/null @@ -1,16 +0,0 @@ -**/__snapshots__ -/build - -# do not lint package.json, it incorrect re-orders the `exports` -# https://github.com/cypress-io/cypress/pull/26630 -package.json - -# cli/types is linted by tslint/dtslint -/types - -# these are all copied from dist'd builds from the individual libs -/angular -/react -/vue -/svelte -/mount-utils \ No newline at end of file diff --git a/cli/.eslintrc.json b/cli/.eslintrc.json deleted file mode 100644 index c3cecddc84c3..000000000000 --- a/cli/.eslintrc.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "rules": { - "no-restricted-syntax": [ - "error", - { - "selector": "CallExpression[callee.name='arch']", - "message": "Do not use `arch()` to detect the user's machine architecture. Use util.getRealArch() instead." - }, - { - "selector": "CallExpression[callee.object.name='os'][callee.property.name='arch']", - "message": "Do not use `os.arch()` to detect the user's machine architecture. Use util.getRealArch() instead." - }, - { - "selector": "MemberExpression[object.name='process'][property.name='arch']", - "message": "Do not use `process.arch` to detect the user's machine architecture. Use util.getRealArch() instead." - } - ] - } -} diff --git a/cli/eslint.config.ts b/cli/eslint.config.ts new file mode 100644 index 000000000000..9bf8d3c40d11 --- /dev/null +++ b/cli/eslint.config.ts @@ -0,0 +1,62 @@ +/* +{ + "rules": { + "no-restricted-syntax": [ + "error", + { + "selector": "CallExpression[callee.name='arch']", + "message": "Do not use `arch()` to detect the user's machine architecture. Use util.getRealArch() instead." + }, + { + "selector": "CallExpression[callee.object.name='os'][callee.property.name='arch']", + "message": "Do not use `os.arch()` to detect the user's machine architecture. Use util.getRealArch() instead." + }, + { + "selector": "MemberExpression[object.name='process'][property.name='arch']", + "message": "Do not use `process.arch` to detect the user's machine architecture. Use util.getRealArch() instead." + } + ] + } +} +*/ +import path from 'path' +import { baseConfig } from "../eslint.config" +import globals from 'globals' + +export default [ + ...baseConfig, + { + files: ['**/*.{ts,js}'], + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: path.join(__dirname, '../packages/ts/tsconfig.json'), + }, + globals: { + ...globals.node + } + } + }, + { + ignores: [ + '__snapshots__/**/*', + 'angular/**/*', + 'build/**/*', + 'mount-utils/**/*', + 'node_modules/**/*', + 'react/**/*', + 'svelte/**/*', + 'vue/**/*', + 'types/**/*', + ] + }, + { + files: ['test/**/*.{ts,js}'], + languageOptions: { + globals: { + sinon: 'readonly', + lib: 'readonly', + } + } + } +] \ No newline at end of file diff --git a/cli/package.json b/cli/package.json index 62377435c439..be8b87f37071 100644 --- a/cli/package.json +++ b/cli/package.json @@ -8,7 +8,7 @@ "clean": "node ./scripts/clean.js", "dtslint": "dtslint types", "postinstall": "patch-package && node ./scripts/post-install.js", - "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json,.vue .", + "lint": "eslint .", "prebuild": "yarn postinstall && node ./scripts/start-build.js", "size": "t=\"cypress-v0.0.0.tgz\"; yarn pack --filename \"${t}\"; wc -c \"${t}\"; tar tvf \"${t}\"; rm \"${t}\";", "test": "yarn test-unit", From 7c30ac8c8c55965104d7acfe0fb22fcf90b1b4a8 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 13:57:24 -0500 Subject: [PATCH 005/113] npm/angular linting --- eslint.config.ts | 12 ++++++++++-- npm/angular/.eslintignore | 5 ----- npm/angular/.eslintrc | 8 -------- npm/angular/eslint.config.ts | 24 ++++++++++++++++++++++++ npm/angular/package.json | 2 +- 5 files changed, 35 insertions(+), 16 deletions(-) delete mode 100644 npm/angular/.eslintignore delete mode 100644 npm/angular/.eslintrc create mode 100644 npm/angular/eslint.config.ts diff --git a/eslint.config.ts b/eslint.config.ts index bafedb53bc88..4ae81abb6bd9 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -47,6 +47,14 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'mocha/no-identical-title': 'off', // warn 'mocha/consistent-spacing-between-blocks': 'off', } + }, + + // common file patterns to ignore + { + ignores: [ + '.releaserc.js', + 'dist/**/*', + ] } ] @@ -66,11 +74,11 @@ export default ts.config( ] }, { - files: ['**/*.ts', '**/*.js'], + files: ['**/*.{ts,js}'], languageOptions: { parserOptions: { projectService: true, - tsconfigRootDir: path.join(__dirname, './ts/tsconfig') + tsconfigRootDir: path.join(__dirname, './ts') }, globals: { ...globals.node, diff --git a/npm/angular/.eslintignore b/npm/angular/.eslintignore deleted file mode 100644 index 79afe972da7d..000000000000 --- a/npm/angular/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures \ No newline at end of file diff --git a/npm/angular/.eslintrc b/npm/angular/.eslintrc deleted file mode 100644 index f044f320923e..000000000000 --- a/npm/angular/.eslintrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "plugins": [ - "cypress" - ], - "extends": [ - "plugin:@cypress/dev/tests" - ] -} diff --git a/npm/angular/eslint.config.ts b/npm/angular/eslint.config.ts new file mode 100644 index 000000000000..339d3f6c8bd9 --- /dev/null +++ b/npm/angular/eslint.config.ts @@ -0,0 +1,24 @@ +import { baseConfig } from '../../eslint.config' +import path from 'path' +import globals from 'globals' + +export default [ + ...baseConfig, + { + ignores: ['dist/**'] + }, + { + languageOptions: { + parserOptions: { + projectService: { + allowDefaultProject: ['eslint.config.ts', 'rollup.config.mjs'], + }, + tsconfigRootDir: path.join(__dirname, '.'), + + }, + globals: { + ...globals.browser, + } + } + } +] \ No newline at end of file diff --git a/npm/angular/package.json b/npm/angular/package.json index a2b02d0cecf4..7409d42028c7 100644 --- a/npm/angular/package.json +++ b/npm/angular/package.json @@ -9,7 +9,7 @@ "postbuild": "node ../../scripts/sync-exported-npm-with-cli.js", "check-ts": "tsc --noEmit", "dev": "rollup -c rollup.config.mjs -w", - "lint": "eslint --ext .js,.ts,.json, ." + "lint": "eslint ." }, "dependencies": {}, "devDependencies": { From 0a7039bc0ba1f9fb3218d364642bb403074291a2 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 14:17:39 -0500 Subject: [PATCH 006/113] cypress-schematic eslint --- npm/cypress-schematic/.eslintignore | 5 ----- npm/cypress-schematic/.eslintrc | 16 --------------- npm/cypress-schematic/eslint-tsconfig.json | 7 +++++++ npm/cypress-schematic/eslint.config.ts | 23 ++++++++++++++++++++++ npm/cypress-schematic/tsconfig.json | 3 +-- 5 files changed, 31 insertions(+), 23 deletions(-) delete mode 100644 npm/cypress-schematic/.eslintignore delete mode 100644 npm/cypress-schematic/.eslintrc create mode 100644 npm/cypress-schematic/eslint-tsconfig.json create mode 100644 npm/cypress-schematic/eslint.config.ts diff --git a/npm/cypress-schematic/.eslintignore b/npm/cypress-schematic/.eslintignore deleted file mode 100644 index 79afe972da7d..000000000000 --- a/npm/cypress-schematic/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures \ No newline at end of file diff --git a/npm/cypress-schematic/.eslintrc b/npm/cypress-schematic/.eslintrc deleted file mode 100644 index 0e5150fbeb8f..000000000000 --- a/npm/cypress-schematic/.eslintrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "plugins": [ - "cypress", - "@cypress/dev" - ], - "extends": [ - "plugin:@cypress/dev/general" - ], - "parser": "@typescript-eslint/parser", - "env": { - "cypress/globals": true - }, - "rules": { - "no-console": "off" - } -} \ No newline at end of file diff --git a/npm/cypress-schematic/eslint-tsconfig.json b/npm/cypress-schematic/eslint-tsconfig.json new file mode 100644 index 000000000000..8a96a8471f69 --- /dev/null +++ b/npm/cypress-schematic/eslint-tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "include": [ + "src/**/*" + ], + "exclude": ["!src/**/files-core/**/*", "!src/**/files-ct/**/*", "!src/**/*.spec.ts"] +} \ No newline at end of file diff --git a/npm/cypress-schematic/eslint.config.ts b/npm/cypress-schematic/eslint.config.ts new file mode 100644 index 000000000000..5822704c0bd2 --- /dev/null +++ b/npm/cypress-schematic/eslint.config.ts @@ -0,0 +1,23 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' +import path from 'path' + +export default [ + ...baseConfig, + { + ignores: ['src/**/*.{js,js.map,d.ts}', 'src/schematics/cypress/files/cypress/plugins/*.js'] + }, + { + languageOptions: { + parserOptions: { + projectService: { + allowDefaultProject: ['eslint.config.ts', 'projects/sandbox/src/fake-component.component.ts'] + }, + project: './tsconfig.json', + }, + globals: { + ...globals.node, + } + } + } +] \ No newline at end of file diff --git a/npm/cypress-schematic/tsconfig.json b/npm/cypress-schematic/tsconfig.json index 798d992aa8ec..f5ba49335784 100644 --- a/npm/cypress-schematic/tsconfig.json +++ b/npm/cypress-schematic/tsconfig.json @@ -22,10 +22,9 @@ "target": "es6", "types": [ "node" - ] + ], }, "include": [ "src/**/*" ], - "exclude": ["src/**/files-core/**/*", "src/**/files-ct/**/*", "src/**/*.spec.ts"] } From 3f44b019ffd73a96c655a5ea936840bfbbb34481 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 14:27:54 -0500 Subject: [PATCH 007/113] eslint for npm/grep --- eslint.config.ts | 3 +++ npm/grep/.eslintrc | 16 ---------------- npm/grep/cypress/e2e/omit-and-skip-spec.js | 1 - npm/grep/cypress/e2e/skip-spec.js | 1 - npm/grep/eslint.config.ts | 22 ++++++++++++++++++++++ npm/grep/package.json | 2 +- 6 files changed, 26 insertions(+), 19 deletions(-) delete mode 100644 npm/grep/.eslintrc create mode 100644 npm/grep/eslint.config.ts diff --git a/eslint.config.ts b/eslint.config.ts index 4ae81abb6bd9..aa6959c16f3f 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -34,6 +34,8 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ '@typescript-eslint/no-explicit-any': 'off', 'no-prototype-builtins': 'off', '@typescript-eslint/no-this-alias': 'off', + '@typescript-eslint/triple-slash-reference': 'off', + 'no-global-assign': 'off', }, }, @@ -46,6 +48,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'mocha/no-top-level-hooks': 'off', //warn 'mocha/no-identical-title': 'off', // warn 'mocha/consistent-spacing-between-blocks': 'off', + 'mocha/no-global-tests': 'off', } }, diff --git a/npm/grep/.eslintrc b/npm/grep/.eslintrc deleted file mode 100644 index 667197d7aa46..000000000000 --- a/npm/grep/.eslintrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "plugins": [ - "cypress" - ], - "extends": [ - "plugin:@cypress/dev/tests" - ], - "env": { - "cypress/globals": true - }, - "rules": { - "mocha/no-global-tests": "off", - "no-console": "off", - "no-restricted-syntax": "off" - } -} diff --git a/npm/grep/cypress/e2e/omit-and-skip-spec.js b/npm/grep/cypress/e2e/omit-and-skip-spec.js index 253ad35be4c6..4c3a029f42a7 100644 --- a/npm/grep/cypress/e2e/omit-and-skip-spec.js +++ b/npm/grep/cypress/e2e/omit-and-skip-spec.js @@ -3,7 +3,6 @@ // @ts-check describe('Page', () => { describe('List', { tags: ['@us1'] }, () => { - // eslint-disable-next-line @cypress/dev/skip-comment it.skip('first test', () => {}) it('second test', () => {}) it('third test', () => {}) diff --git a/npm/grep/cypress/e2e/skip-spec.js b/npm/grep/cypress/e2e/skip-spec.js index 3ca63e02df46..0aa964e482c3 100644 --- a/npm/grep/cypress/e2e/skip-spec.js +++ b/npm/grep/cypress/e2e/skip-spec.js @@ -1,4 +1,3 @@ -/* eslint-disable @cypress/dev/skip-comment */ /// describe('tests that use .skip', () => { // use a template literal diff --git a/npm/grep/eslint.config.ts b/npm/grep/eslint.config.ts new file mode 100644 index 000000000000..2063e1ce99ac --- /dev/null +++ b/npm/grep/eslint.config.ts @@ -0,0 +1,22 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' +export default [ + ...baseConfig, + { + languageOptions: { + globals: { + ...globals['shared-node-browser'], + require: 'readonly', + module: 'readonly', + }, + }, + }, + { + files: ['expects/test-npm-module.js', 'src/plugin.js'], + languageOptions: { + globals: { + process: 'readonly', + } + } + } +] \ No newline at end of file diff --git a/npm/grep/package.json b/npm/grep/package.json index 7cb5f8ae95b6..e7605b9c184f 100644 --- a/npm/grep/package.json +++ b/npm/grep/package.json @@ -6,7 +6,7 @@ "scripts": { "cy:open": "node ../../scripts/cypress.js open --e2e -b electron --config specPattern='**/unit.js'", "cy:run": "node ../../scripts/cypress.js run --config specPattern='**/unit.js'", - "lint": "eslint . --ext .js,.ts" + "lint": "eslint ." }, "dependencies": { "debug": "^4.3.4", From 6d821ab8872aebc62b9d08e67cba498e093d1160 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 14:33:54 -0500 Subject: [PATCH 008/113] npm/mount-utils --- npm/mount-utils/.eslintignore | 5 ----- npm/mount-utils/eslint.config.ts | 9 +++++++++ npm/mount-utils/package.json | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) delete mode 100644 npm/mount-utils/.eslintignore create mode 100644 npm/mount-utils/eslint.config.ts diff --git a/npm/mount-utils/.eslintignore b/npm/mount-utils/.eslintignore deleted file mode 100644 index 79afe972da7d..000000000000 --- a/npm/mount-utils/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures \ No newline at end of file diff --git a/npm/mount-utils/eslint.config.ts b/npm/mount-utils/eslint.config.ts new file mode 100644 index 000000000000..b8ac3635181b --- /dev/null +++ b/npm/mount-utils/eslint.config.ts @@ -0,0 +1,9 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' + +export default [ + ...baseConfig, + { + ignores: ['dist/**/*', '**/*.d.ts'] + } +] \ No newline at end of file diff --git a/npm/mount-utils/package.json b/npm/mount-utils/package.json index 1b85db99c915..3a16a268db5a 100644 --- a/npm/mount-utils/package.json +++ b/npm/mount-utils/package.json @@ -7,7 +7,7 @@ "build": "tsc || echo 'built, with type errors'", "postbuild": "node ../../scripts/sync-exported-npm-with-cli.js", "check-ts": "tsc --noEmit", - "lint": "eslint --ext .js,.ts,.json, .", + "lint": "eslint .", "watch": "tsc -w" }, "dependencies": {}, From 57a038d83ffc54a98505042ae99d811fbc4768f8 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 14:37:44 -0500 Subject: [PATCH 009/113] npm/puppeteer --- npm/puppeteer/.eslintignore | 4 ---- npm/puppeteer/eslint.config.ts | 15 +++++++++++++++ npm/puppeteer/package.json | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) delete mode 100644 npm/puppeteer/.eslintignore create mode 100644 npm/puppeteer/eslint.config.ts diff --git a/npm/puppeteer/.eslintignore b/npm/puppeteer/.eslintignore deleted file mode 100644 index 9bd1cd76241e..000000000000 --- a/npm/puppeteer/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json diff --git a/npm/puppeteer/eslint.config.ts b/npm/puppeteer/eslint.config.ts new file mode 100644 index 000000000000..be04a32e1628 --- /dev/null +++ b/npm/puppeteer/eslint.config.ts @@ -0,0 +1,15 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' +export default [ + ...baseConfig, + { + ignores: ['**/dist'] + }, + { + languageOptions: { + globals: { + require: 'readonly' + } + } + } +] \ No newline at end of file diff --git a/npm/puppeteer/package.json b/npm/puppeteer/package.json index 2c9816035864..25d45d266f9a 100644 --- a/npm/puppeteer/package.json +++ b/npm/puppeteer/package.json @@ -10,7 +10,7 @@ "check-ts": "tsc --noEmit", "cypress:open": "node ../../scripts/cypress.js open", "cypress:run": "node ../../scripts/cypress.js run --browser chrome", - "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json, .", + "lint": "eslint .", "semantic-release": "semantic-release", "test": "mocha test/unit/*.spec.ts", "test-watch": "yarn test & chokidar '**/*.ts' 'test/unit/*.ts' -c 'yarn test'", From 32ebb377e862b7bc5e0580346da18400066d7969 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 14:38:06 -0500 Subject: [PATCH 010/113] some global cfg --- eslint.config.ts | 5 ++++- npm/mount-utils/eslint.config.ts | 3 --- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eslint.config.ts b/eslint.config.ts index aa6959c16f3f..e956c38a180f 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -36,6 +36,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ '@typescript-eslint/no-this-alias': 'off', '@typescript-eslint/triple-slash-reference': 'off', 'no-global-assign': 'off', + 'no-unsafe-finally': 'off', }, }, @@ -49,6 +50,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'mocha/no-identical-title': 'off', // warn 'mocha/consistent-spacing-between-blocks': 'off', 'mocha/no-global-tests': 'off', + 'mocha/no-sibling-hooks': 'off', } }, @@ -73,7 +75,8 @@ export default ts.config( 'cli/**/*', '**/__snapshots__/**/*', '.nx/**/*', - '.releaserc.js' + '.releaserc.js', + 'dist/**' ] }, { diff --git a/npm/mount-utils/eslint.config.ts b/npm/mount-utils/eslint.config.ts index b8ac3635181b..e98f1e64d9da 100644 --- a/npm/mount-utils/eslint.config.ts +++ b/npm/mount-utils/eslint.config.ts @@ -3,7 +3,4 @@ import globals from 'globals' export default [ ...baseConfig, - { - ignores: ['dist/**/*', '**/*.d.ts'] - } ] \ No newline at end of file From ed49878581be2e688a3b79016a935ce470199908 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 14:44:09 -0500 Subject: [PATCH 011/113] npm/react --- eslint.config.ts | 13 ++++++++++++- npm/react/.eslintrc | 30 ------------------------------ npm/react/eslint.config.ts | 12 ++++++++++++ npm/react/package.json | 2 +- npm/react/src/createMount.ts | 2 +- 5 files changed, 26 insertions(+), 33 deletions(-) delete mode 100644 npm/react/.eslintrc create mode 100644 npm/react/eslint.config.ts diff --git a/eslint.config.ts b/eslint.config.ts index e956c38a180f..0bd7c505ccc3 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -37,6 +37,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ '@typescript-eslint/triple-slash-reference': 'off', 'no-global-assign': 'off', 'no-unsafe-finally': 'off', + '@typescript-eslint/no-empty-object-type': 'off' }, }, @@ -60,6 +61,16 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ '.releaserc.js', 'dist/**/*', ] + }, + + // globals necessary for mixed js/ts + { + languageOptions: { + globals: { + require: 'readonly', + module: 'readonly', + } + } } ] @@ -87,7 +98,7 @@ export default ts.config( tsconfigRootDir: path.join(__dirname, './ts') }, globals: { - ...globals.node, + ...globals.node, } } } diff --git a/npm/react/.eslintrc b/npm/react/.eslintrc deleted file mode 100644 index ecfd74f652df..000000000000 --- a/npm/react/.eslintrc +++ /dev/null @@ -1,30 +0,0 @@ -{ - "plugins": [ - "cypress", - "@cypress/dev" - ], - "extends": [ - "plugin:@cypress/dev/general", - "plugin:@cypress/dev/tests", - "plugin:@cypress/dev/react" - ], - "parser": "@typescript-eslint/parser", - "env": { - "cypress/globals": true - }, - "root": true, - "rules": { - "no-console": "off", - "mocha/no-global-tests": "off", - "react/jsx-filename-extension": [ - "warn", - { - "extensions": [ - ".js", - ".jsx", - ".tsx" - ] - } - ] - } -} diff --git a/npm/react/eslint.config.ts b/npm/react/eslint.config.ts new file mode 100644 index 000000000000..4878d4b47675 --- /dev/null +++ b/npm/react/eslint.config.ts @@ -0,0 +1,12 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' + +export default [ + ...baseConfig, + { + files: ['src/createMount.ts'], + rules: { + 'cypress/no-unnecessary-waiting': 'warn', + } + } +] \ No newline at end of file diff --git a/npm/react/package.json b/npm/react/package.json index e6542d9ebd25..0be88aa001f4 100644 --- a/npm/react/package.json +++ b/npm/react/package.json @@ -11,7 +11,7 @@ "cy:open:debug": "node --inspect-brk ../../scripts/start.js --component-testing --run-project ${PWD}", "cy:run": "node ../../scripts/cypress.js run --component", "cy:run:debug": "node --inspect-brk ../../scripts/start.js --component-testing --run-project ${PWD}", - "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json, .", + "lint": "eslint .", "test": "yarn cy:run", "watch": "yarn build --watch --watch.exclude ./dist/**/*" }, diff --git a/npm/react/src/createMount.ts b/npm/react/src/createMount.ts index ca708731a0ae..56cf325ce2bc 100644 --- a/npm/react/src/createMount.ts +++ b/npm/react/src/createMount.ts @@ -77,7 +77,7 @@ export const makeMountFn = ( // by waiting, we delaying test execution for the next tick of event loop // and letting hooks and component lifecycle methods to execute mount // https://github.com/bahmutov/cypress-react-unit-test/issues/200 - .wait(0, { log: false }) + .wait(0, { log: false }) // eslint-disable-line cypress/no-unnecessary-waiting .then(() => { if (options.log !== false) { // Get the display name property via the component constructor From 0749dbedcb53b8cd5c2bc44a429449231401bfc1 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 14:46:21 -0500 Subject: [PATCH 012/113] npm/svelte --- npm/react/.eslintignore | 5 ----- npm/svelte/.eslintignore | 5 ----- npm/svelte/.eslintrc | 15 --------------- npm/svelte/eslint.config.ts | 12 ++++++++++++ npm/svelte/package.json | 2 +- 5 files changed, 13 insertions(+), 26 deletions(-) delete mode 100644 npm/react/.eslintignore delete mode 100644 npm/svelte/.eslintignore delete mode 100644 npm/svelte/.eslintrc create mode 100644 npm/svelte/eslint.config.ts diff --git a/npm/react/.eslintignore b/npm/react/.eslintignore deleted file mode 100644 index 79afe972da7d..000000000000 --- a/npm/react/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures \ No newline at end of file diff --git a/npm/svelte/.eslintignore b/npm/svelte/.eslintignore deleted file mode 100644 index 79afe972da7d..000000000000 --- a/npm/svelte/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures \ No newline at end of file diff --git a/npm/svelte/.eslintrc b/npm/svelte/.eslintrc deleted file mode 100644 index f191aaa0e6d3..000000000000 --- a/npm/svelte/.eslintrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "plugins": [ - "cypress" - ], - "extends": [ - "plugin:@cypress/dev/tests" - ], - "env": { - "cypress/globals": true - }, - "rules": { - "mocha/no-global-tests": "off", - "no-console": "off" - } -} diff --git a/npm/svelte/eslint.config.ts b/npm/svelte/eslint.config.ts new file mode 100644 index 000000000000..a881097d9ffa --- /dev/null +++ b/npm/svelte/eslint.config.ts @@ -0,0 +1,12 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' + +export default [ + ...baseConfig, + { + files: ['src/mount.ts'], + rules: { + 'cypress/no-unnecessary-waiting': 'warn', + } + } +] \ No newline at end of file diff --git a/npm/svelte/package.json b/npm/svelte/package.json index 2d871996fe95..fe01969ab3f8 100644 --- a/npm/svelte/package.json +++ b/npm/svelte/package.json @@ -8,7 +8,7 @@ "build": "rollup -c rollup.config.mjs", "postbuild": "node ../../scripts/sync-exported-npm-with-cli.js", "check-ts": "tsc --noEmit", - "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json, ." + "lint": "eslint ." }, "devDependencies": { "@cypress/mount-utils": "0.0.0-development", From 4c15d08cca5256dbc36440a3a61ddce0d32a9cac Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 14:48:30 -0500 Subject: [PATCH 013/113] npm/vite-dev-server --- npm/vite-dev-server/.eslintignore | 5 ----- npm/vite-dev-server/.eslintrc | 32 ---------------------------- npm/vite-dev-server/eslint.config.ts | 13 +++++++++++ npm/vite-dev-server/package.json | 2 +- 4 files changed, 14 insertions(+), 38 deletions(-) delete mode 100644 npm/vite-dev-server/.eslintignore delete mode 100644 npm/vite-dev-server/.eslintrc create mode 100644 npm/vite-dev-server/eslint.config.ts diff --git a/npm/vite-dev-server/.eslintignore b/npm/vite-dev-server/.eslintignore deleted file mode 100644 index 79afe972da7d..000000000000 --- a/npm/vite-dev-server/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures \ No newline at end of file diff --git a/npm/vite-dev-server/.eslintrc b/npm/vite-dev-server/.eslintrc deleted file mode 100644 index 7158598773c0..000000000000 --- a/npm/vite-dev-server/.eslintrc +++ /dev/null @@ -1,32 +0,0 @@ -{ - "plugins": [ - "cypress", - "@cypress/dev" - ], - "extends": [ - "plugin:@cypress/dev/general", - "plugin:@cypress/dev/tests", - "plugin:@cypress/dev/react" - ], - "parser": "vue-eslint-parser", - "parserOptions": { - "parser": "@typescript-eslint/parser" - }, - "env": { - "cypress/globals": true - }, - "rules": { - "no-console": "off", - "mocha/no-global-tests": "off", - "react/jsx-filename-extension": [ - "warn", - { - "extensions": [ - ".js", - ".jsx", - ".tsx" - ] - } - ] - } -} diff --git a/npm/vite-dev-server/eslint.config.ts b/npm/vite-dev-server/eslint.config.ts new file mode 100644 index 000000000000..be2d4c16fd8a --- /dev/null +++ b/npm/vite-dev-server/eslint.config.ts @@ -0,0 +1,13 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' + +export default [ + ...baseConfig, + { + languageOptions: { + globals: { + process: 'readonly' + } + } + } +] \ No newline at end of file diff --git a/npm/vite-dev-server/package.json b/npm/vite-dev-server/package.json index 8bf3fbcd6dff..4fb68e4b0736 100644 --- a/npm/vite-dev-server/package.json +++ b/npm/vite-dev-server/package.json @@ -9,7 +9,7 @@ "cypress:open": "yarn cypress:run-cypress-in-cypress gulp open --project .", "cypress:run": "yarn cypress:run-cypress-in-cypress node ../../scripts/cypress run --project . --browser chrome", "cypress:run-cypress-in-cypress": "cross-env CYPRESS_INTERNAL_E2E_TESTING_SELF_PARENT_PROJECT=1 HTTP_PROXY_TARGET_FOR_ORIGIN_REQUESTS=http://localhost:4455 CYPRESS_REMOTE_DEBUGGING_PORT=6666 TZ=America/New_York", - "lint": "eslint --ext .js,.ts,.json, .", + "lint": "eslint .", "test": "yarn test-unit", "test-unit": "mocha -r ts-node/register/transpile-only --config ./test/.mocharc.js", "watch": "tsc -w" From 9433e5d1525217de366f714018cd7d1d14b133b6 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 14:50:35 -0500 Subject: [PATCH 014/113] npm/vite-plugin-cypress-esm --- eslint.config.ts | 1 + .../cypress/component/importSyntax.cy.ts | 1 - npm/vite-plugin-cypress-esm/eslint.config.ts | 5 +++++ npm/vite-plugin-cypress-esm/package.json | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 npm/vite-plugin-cypress-esm/eslint.config.ts diff --git a/eslint.config.ts b/eslint.config.ts index 0bd7c505ccc3..cbe0608c2710 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -52,6 +52,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'mocha/consistent-spacing-between-blocks': 'off', 'mocha/no-global-tests': 'off', 'mocha/no-sibling-hooks': 'off', + 'mocha/no-skipped-tests': 'off', } }, diff --git a/npm/vite-plugin-cypress-esm/cypress/component/importSyntax.cy.ts b/npm/vite-plugin-cypress-esm/cypress/component/importSyntax.cy.ts index ee771102568b..1bd8b798ac80 100644 --- a/npm/vite-plugin-cypress-esm/cypress/component/importSyntax.cy.ts +++ b/npm/vite-plugin-cypress-esm/cypress/component/importSyntax.cy.ts @@ -1,6 +1,5 @@ /// -/* eslint-disable import/no-duplicates */ import defaultExport1 from './fixtures/kitchenSink' import * as name1 from './fixtures/kitchenSink' import { export1 } from './fixtures/kitchenSink' diff --git a/npm/vite-plugin-cypress-esm/eslint.config.ts b/npm/vite-plugin-cypress-esm/eslint.config.ts new file mode 100644 index 000000000000..088413c81d73 --- /dev/null +++ b/npm/vite-plugin-cypress-esm/eslint.config.ts @@ -0,0 +1,5 @@ +import { baseConfig } from '../../eslint.config' + +export default [ + ...baseConfig, +] \ No newline at end of file diff --git a/npm/vite-plugin-cypress-esm/package.json b/npm/vite-plugin-cypress-esm/package.json index f111d493a2b7..7c5f3d82ec0a 100644 --- a/npm/vite-plugin-cypress-esm/package.json +++ b/npm/vite-plugin-cypress-esm/package.json @@ -8,7 +8,7 @@ "check-ts": "tsc --noEmit", "cypress:open": "node ../../scripts/cypress open --project . --component", "cypress:run": "node ../../scripts/cypress run --project . --component", - "lint": "eslint --ext .js,.ts,.json, .", + "lint": "eslint .", "test": "npm run cypress:run", "watch": "tsc -w" }, From fe99b9f793c60b1992defc0a3133ff8af733cad1 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 14:56:22 -0500 Subject: [PATCH 015/113] adds react linting to npm/react --- eslint.config.ts | 1 - npm/react/eslint.config.ts | 7 +++++++ npm/react/package.json | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/eslint.config.ts b/eslint.config.ts index cbe0608c2710..54cb690392af 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -2,7 +2,6 @@ import js from '@eslint/js' import ts, { InfiniteDepthConfigWithExtends } from 'typescript-eslint' import cy from 'eslint-plugin-cypress/flat' import mocha from 'eslint-plugin-mocha' -import type { Linter } from 'eslint' import globals from 'globals' import path from 'path' diff --git a/npm/react/eslint.config.ts b/npm/react/eslint.config.ts index 4878d4b47675..ca09769ad951 100644 --- a/npm/react/eslint.config.ts +++ b/npm/react/eslint.config.ts @@ -1,12 +1,19 @@ import { baseConfig } from '../../eslint.config' import globals from 'globals' +import react from 'eslint-plugin-react' export default [ ...baseConfig, + react.configs.flat.recommended, { files: ['src/createMount.ts'], rules: { 'cypress/no-unnecessary-waiting': 'warn', } + }, + { + rules: { + 'react/prop-types': 'warn', + } } ] \ No newline at end of file diff --git a/npm/react/package.json b/npm/react/package.json index 0be88aa001f4..d705c78daaab 100644 --- a/npm/react/package.json +++ b/npm/react/package.json @@ -29,7 +29,8 @@ "semver": "^7.5.3", "typescript": "~5.4.5", "vite": "5.4.10", - "vite-plugin-require-transform": "1.0.12" + "vite-plugin-require-transform": "1.0.12", + "eslint-plugin-react": "^7.37.4" }, "peerDependencies": { "@types/react": "^18 || ^19", From d9c243931d434ccffa97f9cc24f33239953bebed Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 15:14:13 -0500 Subject: [PATCH 016/113] npm/vue --- eslint.config.ts | 30 ++++++++++++++----- npm/vue/.eslintignore | 5 ---- npm/vue/.eslintrc | 25 ---------------- .../cypress/component/setup/HelloWorld.vue | 2 +- npm/vue/eslint.config.ts | 15 ++++++++++ npm/vue/package.json | 2 +- npm/vue/rollup.config.mjs | 1 - 7 files changed, 40 insertions(+), 40 deletions(-) delete mode 100644 npm/vue/.eslintignore delete mode 100644 npm/vue/.eslintrc create mode 100644 npm/vue/eslint.config.ts diff --git a/eslint.config.ts b/eslint.config.ts index 54cb690392af..26f9bd6fafcc 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -4,6 +4,7 @@ import cy from 'eslint-plugin-cypress/flat' import mocha from 'eslint-plugin-mocha' import globals from 'globals' import path from 'path' +import vue from 'eslint-plugin-vue' /** * baseConfig should be imported by other packages that define their own eslint.config.ts @@ -17,26 +18,34 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ ...ts.configs.recommended, cy.configs.recommended, mocha.configs.flat.recommended, + ...vue.configs['flat/recommended'], { // rules that are gold standard, but have many violations // these are off while developing eslint, but will be set to warn rules: { + 'no-useless-escape': 'off', + 'prefer-const': 'off', + 'prefer-rest-params': 'off', + 'no-prototype-builtins': 'off', + 'no-global-assign': 'off', + 'no-unsafe-finally': 'off', + '@typescript-eslint/no-unused-expressions': 'off', '@typescript-eslint/no-require-imports': 'off', '@typescript-eslint/no-unused-vars': 'off', - 'no-useless-escape': 'off', '@typescript-eslint/no-unsafe-function-type': 'off', - 'prefer-const': 'off', - 'prefer-rest-params': 'off', '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/no-namespace': 'off', '@typescript-eslint/no-explicit-any': 'off', - 'no-prototype-builtins': 'off', '@typescript-eslint/no-this-alias': 'off', '@typescript-eslint/triple-slash-reference': 'off', - 'no-global-assign': 'off', - 'no-unsafe-finally': 'off', - '@typescript-eslint/no-empty-object-type': 'off' + '@typescript-eslint/no-empty-object-type': 'off', + + 'vue/multi-word-component-names': 'off', + 'vue/html-closing-bracket-spacing': 'off', + + 'cypress/no-unnecessary-waiting': 'off', + 'cypress/unsafe-to-chain-command': 'off', }, }, @@ -71,6 +80,13 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ module: 'readonly', } } + }, + + { + files: ['webpack.config.js'], + languageOptions: { + globals: globals.node + } } ] diff --git a/npm/vue/.eslintignore b/npm/vue/.eslintignore deleted file mode 100644 index 79afe972da7d..000000000000 --- a/npm/vue/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures \ No newline at end of file diff --git a/npm/vue/.eslintrc b/npm/vue/.eslintrc deleted file mode 100644 index 39a4c517a740..000000000000 --- a/npm/vue/.eslintrc +++ /dev/null @@ -1,25 +0,0 @@ -{ - "plugins": [ - "cypress" - ], - "extends": [ - "plugin:@cypress/dev/tests", - "plugin:vue/vue3-recommended" - ], - "parser": "vue-eslint-parser", - "parserOptions": { - "parser": "@typescript-eslint/parser" - }, - "globals": { - "defineProps": "readonly", - "defineEmits": "readonly" - }, - "env": { - "cypress/globals": true - }, - "rules": { - "mocha/no-global-tests": "off", - "no-console": "off", - "vue/multi-word-component-names": "off" - } -} diff --git a/npm/vue/cypress/component/setup/HelloWorld.vue b/npm/vue/cypress/component/setup/HelloWorld.vue index 6d6f39efeb5a..290601e1fbe6 100644 --- a/npm/vue/cypress/component/setup/HelloWorld.vue +++ b/npm/vue/cypress/component/setup/HelloWorld.vue @@ -12,7 +12,7 @@ import { ref } from 'vue' defineProps<{ - msg: String + msg: string }>() const count = ref(0) diff --git a/npm/vue/eslint.config.ts b/npm/vue/eslint.config.ts new file mode 100644 index 000000000000..3cadca00d647 --- /dev/null +++ b/npm/vue/eslint.config.ts @@ -0,0 +1,15 @@ +import { baseConfig } from '../../eslint.config' +import ts from 'typescript-eslint' +import globals from 'globals' + +export default [ + ...baseConfig, + { + files: ['**/*.vue'], + languageOptions: { + parserOptions: { + parser: ts.parser + } + } + } +] \ No newline at end of file diff --git a/npm/vue/package.json b/npm/vue/package.json index bb4da793467a..97a7be93cfe2 100644 --- a/npm/vue/package.json +++ b/npm/vue/package.json @@ -9,7 +9,7 @@ "check-ts": "yarn tsd && vue-tsc --noEmit", "cy:open": "node ../../scripts/cypress.js open --component --project ${PWD}", "cy:run": "node ../../scripts/cypress.js run --component --project ${PWD}", - "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json,.vue .", + "lint": "eslint .", "test": "yarn cy:run", "tsd": "yarn build && yarn tsc -p test-tsd/tsconfig.json", "watch": "yarn build --watch --watch.exclude ./dist/**/*" diff --git a/npm/vue/rollup.config.mjs b/npm/vue/rollup.config.mjs index 20a827b13cae..58c7fb56eb85 100644 --- a/npm/vue/rollup.config.mjs +++ b/npm/vue/rollup.config.mjs @@ -8,7 +8,6 @@ const config = { ], output: { globals: { - vue: 'Vue', vue: 'Vue', '@vue/compiler-dom': 'VueCompilerDOM', '@vue/server-renderer': 'VueServerRenderer' From 520596301ad0dc47b8aa46b6b7b36c23f182273a Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 15:18:08 -0500 Subject: [PATCH 017/113] npm/webpack-batteries-included-preprocessor --- .../.eslintignore | 1 - .../eslint.config.ts | 13 +++++++++++++ .../package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) delete mode 100644 npm/webpack-batteries-included-preprocessor/.eslintignore create mode 100644 npm/webpack-batteries-included-preprocessor/eslint.config.ts diff --git a/npm/webpack-batteries-included-preprocessor/.eslintignore b/npm/webpack-batteries-included-preprocessor/.eslintignore deleted file mode 100644 index d5857ea71fbd..000000000000 --- a/npm/webpack-batteries-included-preprocessor/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -**/tsconfig.json diff --git a/npm/webpack-batteries-included-preprocessor/eslint.config.ts b/npm/webpack-batteries-included-preprocessor/eslint.config.ts new file mode 100644 index 000000000000..0afa204ee27e --- /dev/null +++ b/npm/webpack-batteries-included-preprocessor/eslint.config.ts @@ -0,0 +1,13 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' + +export default [ + ...baseConfig, + { + languageOptions: { + globals: { + ...globals.node + } + } +} +] \ No newline at end of file diff --git a/npm/webpack-batteries-included-preprocessor/package.json b/npm/webpack-batteries-included-preprocessor/package.json index 278b6743726c..dfefa621551b 100644 --- a/npm/webpack-batteries-included-preprocessor/package.json +++ b/npm/webpack-batteries-included-preprocessor/package.json @@ -4,7 +4,7 @@ "description": "Cypress preprocessor for bundling JavaScript via webpack with dependencies included and support for various ES features, TypeScript, and CoffeeScript", "private": false, "scripts": { - "lint": "eslint --ext .js,.json, .", + "lint": "eslint .", "test": "mocha test/**/*.spec.* --timeout 4000" }, "dependencies": { From 5be93e7ef673dcad797beef7c19f836b9dc69c17 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 15:22:04 -0500 Subject: [PATCH 018/113] npm/webpack-dev-server --- eslint.config.ts | 2 ++ npm/webpack-dev-server/.eslintignore | 7 ------- npm/webpack-dev-server/eslint.config.ts | 9 +++++++++ npm/webpack-dev-server/package.json | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) delete mode 100644 npm/webpack-dev-server/.eslintignore create mode 100644 npm/webpack-dev-server/eslint.config.ts diff --git a/eslint.config.ts b/eslint.config.ts index 26f9bd6fafcc..62505b91f892 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -29,6 +29,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'no-prototype-builtins': 'off', 'no-global-assign': 'off', 'no-unsafe-finally': 'off', + 'no-async-promise-executor': 'off', '@typescript-eslint/no-unused-expressions': 'off', '@typescript-eslint/no-require-imports': 'off', @@ -46,6 +47,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'cypress/no-unnecessary-waiting': 'off', 'cypress/unsafe-to-chain-command': 'off', + 'cypress/no-async-tests': 'off', }, }, diff --git a/npm/webpack-dev-server/.eslintignore b/npm/webpack-dev-server/.eslintignore deleted file mode 100644 index 8d2416a026fd..000000000000 --- a/npm/webpack-dev-server/.eslintignore +++ /dev/null @@ -1,7 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures -**/test/fixtures -**/__snapshots__ \ No newline at end of file diff --git a/npm/webpack-dev-server/eslint.config.ts b/npm/webpack-dev-server/eslint.config.ts new file mode 100644 index 000000000000..c61f466716ee --- /dev/null +++ b/npm/webpack-dev-server/eslint.config.ts @@ -0,0 +1,9 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' + +export default [ + ...baseConfig, + { + ignores: ['__snapshots__/**/*', 'test/fixtures/compilation-fails.spec.js'] + } +] \ No newline at end of file diff --git a/npm/webpack-dev-server/package.json b/npm/webpack-dev-server/package.json index e5863b5aa6ee..8c734c722721 100644 --- a/npm/webpack-dev-server/package.json +++ b/npm/webpack-dev-server/package.json @@ -12,7 +12,7 @@ "cypress:run": "yarn cypress:run-cypress-in-cypress node ../../scripts/cypress run --project . --browser chrome", "cypress:run-cypress-in-cypress": "cross-env CYPRESS_INTERNAL_E2E_TESTING_SELF_PARENT_PROJECT=1 HTTP_PROXY_TARGET_FOR_ORIGIN_REQUESTS=http://localhost:4455 CYPRESS_REMOTE_DEBUGGING_PORT=6666 TZ=America/New_York", "dev": "tsc --watch", - "lint": "eslint --ext .js,.ts,.json, .", + "lint": "eslint .", "test": "yarn test-unit", "test-unit": "mocha -r ts-node/register/transpile-only --config ./test/.mocharc.js" }, From 1b1862ae7dec9c5e798553a9a6373b4ad9cb21b8 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 15:25:36 -0500 Subject: [PATCH 019/113] npm/webpack-preprocessor --- eslint.config.ts | 3 +++ npm/webpack-preprocessor/.eslintignore | 8 -------- npm/webpack-preprocessor/eslint.config.ts | 16 ++++++++++++++++ npm/webpack-preprocessor/package.json | 2 +- 4 files changed, 20 insertions(+), 9 deletions(-) delete mode 100644 npm/webpack-preprocessor/.eslintignore create mode 100644 npm/webpack-preprocessor/eslint.config.ts diff --git a/eslint.config.ts b/eslint.config.ts index 62505b91f892..f9583d0c09f7 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -41,6 +41,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ '@typescript-eslint/no-this-alias': 'off', '@typescript-eslint/triple-slash-reference': 'off', '@typescript-eslint/no-empty-object-type': 'off', + '@typescript-eslint/no-wrapper-object-types': 'off', 'vue/multi-word-component-names': 'off', 'vue/html-closing-bracket-spacing': 'off', @@ -63,6 +64,8 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'mocha/no-global-tests': 'off', 'mocha/no-sibling-hooks': 'off', 'mocha/no-skipped-tests': 'off', + 'mocha/no-exports': 'off', + 'mocha/no-async-describe': 'off', } }, diff --git a/npm/webpack-preprocessor/.eslintignore b/npm/webpack-preprocessor/.eslintignore deleted file mode 100644 index 465e063be1c1..000000000000 --- a/npm/webpack-preprocessor/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures -**/test/fixtures -**/_test-output -/cypress/tests/e2e/compile-error.js \ No newline at end of file diff --git a/npm/webpack-preprocessor/eslint.config.ts b/npm/webpack-preprocessor/eslint.config.ts new file mode 100644 index 000000000000..3f74a8464348 --- /dev/null +++ b/npm/webpack-preprocessor/eslint.config.ts @@ -0,0 +1,16 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' + +export default [ + ...baseConfig, + { + ignores: ['__snapshots__/**/*', 'cypress/tests/e2e/compile-error.js', 'test/fixtures/syntax_error_spec.js'] + }, + { + languageOptions: { + globals: { + ...globals.node, + } + } + } +] \ No newline at end of file diff --git a/npm/webpack-preprocessor/package.json b/npm/webpack-preprocessor/package.json index 0a614f0051c1..719378691e6a 100644 --- a/npm/webpack-preprocessor/package.json +++ b/npm/webpack-preprocessor/package.json @@ -7,7 +7,7 @@ "scripts": { "build": "rimraf dist && tsc || echo 'built, with errors'", "check-ts": "tsc --noEmit", - "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json, .", + "lint": "eslint .", "secure": "nsp check", "semantic-release": "semantic-release", "size": "npm pack --dry", From 7ce76dba63c99059fdae5c899fab885329b96ed1 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:02:57 -0500 Subject: [PATCH 020/113] use stylistic for ./scripts --- eslint.config.ts | 61 ++++++++++++++++++++--------- npm/cypress-schematic/tsconfig.json | 1 + package.json | 4 +- scripts/binary/meta.ts | 4 +- yarn.lock | 18 ++++++--- 5 files changed, 62 insertions(+), 26 deletions(-) diff --git a/eslint.config.ts b/eslint.config.ts index f9583d0c09f7..d8a389f910c4 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -5,6 +5,7 @@ import mocha from 'eslint-plugin-mocha' import globals from 'globals' import path from 'path' import vue from 'eslint-plugin-vue' +import stylistic from '@stylistic/eslint-plugin' /** * baseConfig should be imported by other packages that define their own eslint.config.ts @@ -14,11 +15,36 @@ import vue from 'eslint-plugin-vue' */ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ - js.configs.recommended, + js.configs.recommended, ...ts.configs.recommended, cy.configs.recommended, mocha.configs.flat.recommended, ...vue.configs['flat/recommended'], + stylistic.configs.customize({ + 'braceStyle': '1tbs', + 'arrowParens': true, + }), + + // overrides for stylistic rules + { + rules: { + '@stylistic/space-before-function-paren': ['error', 'always'], + '@stylistic/comma-dangle': ['error', 'always-multiline'], + '@stylistic/multiline-ternary': 'off', + // the following rules are very inconsistent across the codebase. + // enabling them, even with customized options, may result in large diffs. + '@stylistic/indent': 'off', // ['warn', 2, { MemberExpression: 0 }], + '@stylistic/operator-linebreak': 'off', + '@stylistic/max-statements-per-line': 'off', + '@stylistic/quote-props': 'off', + '@stylistic/spaced-comment': 'off', + '@stylistic/no-extra-parens': 'off', + '@stylistic/new-parens': 'off', + '@stylistic/indent-binary-ops': 'off', + '@stylistic/template-curly-spacing': 'off', + }, + }, + { // rules that are gold standard, but have many violations // these are off while developing eslint, but will be set to warn @@ -66,7 +92,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'mocha/no-skipped-tests': 'off', 'mocha/no-exports': 'off', 'mocha/no-async-describe': 'off', - } + }, }, // common file patterns to ignore @@ -74,28 +100,27 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ ignores: [ '.releaserc.js', 'dist/**/*', - ] + ], }, - // globals necessary for mixed js/ts + // globals necessary for mixed js/ts { languageOptions: { globals: { require: 'readonly', module: 'readonly', - } - } + }, + }, }, { files: ['webpack.config.js'], languageOptions: { - globals: globals.node - } - } + globals: globals.node, + }, + }, ] - export default ts.config( ...baseConfig, { @@ -108,19 +133,19 @@ export default ts.config( '**/__snapshots__/**/*', '.nx/**/*', '.releaserc.js', - 'dist/**' - ] + 'dist/**', + ], }, { files: ['**/*.{ts,js}'], languageOptions: { parserOptions: { projectService: true, - tsconfigRootDir: path.join(__dirname, './ts') + tsconfigRootDir: path.join(__dirname, './ts'), }, globals: { - ...globals.node, - } - } - } -) \ No newline at end of file + ...globals.node, + }, + }, + }, +) diff --git a/npm/cypress-schematic/tsconfig.json b/npm/cypress-schematic/tsconfig.json index f5ba49335784..23e4f1d70211 100644 --- a/npm/cypress-schematic/tsconfig.json +++ b/npm/cypress-schematic/tsconfig.json @@ -27,4 +27,5 @@ "include": [ "src/**/*" ], + "exclude": ["src/**/*.spec.ts"] } diff --git a/package.json b/package.json index 76d014d92839..288da162e370 100644 --- a/package.json +++ b/package.json @@ -270,7 +270,9 @@ "ts-node": "^10.9.2", "typescript": "5.3.3", "typescript-eslint": "^8.20.0", - "yarn-deduplicate": "3.1.0" + "yarn-deduplicate": "3.1.0", + "@stylistic/eslint-plugin": "^2.13.0", + "eslint-plugin-vue": "^9.32.0" }, "engines": { "node": ">=20.18.1", diff --git a/scripts/binary/meta.ts b/scripts/binary/meta.ts index 2fc9c912494f..ba72f136aa99 100644 --- a/scripts/binary/meta.ts +++ b/scripts/binary/meta.ts @@ -14,7 +14,9 @@ if (!Object.values(platforms).includes(PLATFORM)) { throw new Error(`Invalid build platform ${PLATFORM}`) } -export type PlatformName = {[K in keyof typeof platforms]: typeof platforms[K]}[keyof typeof platforms] +export type PlatformName = { + [K in keyof typeof platforms]: typeof platforms[K] +}[keyof typeof platforms] export const buildRootDir = () => { return path.join(TMP_BUILD_DIR, 'build') diff --git a/yarn.lock b/yarn.lock index 9b7e26bb94f3..c0cd1708d9af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7230,6 +7230,17 @@ "@smithy/types" "^2.8.0" tslib "^2.5.0" +"@stylistic/eslint-plugin@^2.13.0": + version "2.13.0" + resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz#53bf175dac8c1ec055b370a6ff77d491cae9a70d" + integrity sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ== + dependencies: + "@typescript-eslint/utils" "^8.13.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + estraverse "^5.3.0" + picomatch "^4.0.2" + "@svgr/babel-plugin-add-jsx-attribute@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" @@ -8741,7 +8752,7 @@ "@typescript-eslint/typescript-estree" "7.2.0" semver "^7.5.4" -"@typescript-eslint/utils@8.20.0": +"@typescript-eslint/utils@8.20.0", "@typescript-eslint/utils@^8.13.0": version "8.20.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.20.0.tgz#53127ecd314b3b08836b4498b71cdb86f4ef3aa2" integrity sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA== @@ -15682,11 +15693,6 @@ eslint-plugin-mocha@^10.5.0: globals "^13.24.0" rambda "^7.4.0" -eslint-plugin-react-hooks@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz#3d34e37d5770866c34b87d5b499f5f0b53bf0854" - integrity sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw== - eslint-plugin-react@^7.37.4: version "7.37.4" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz#1b6c80b6175b6ae4b26055ae4d55d04c414c7181" From 2ac9889deedd16efe1e2bd5afd5078f1c8fdf42c Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:10:11 -0500 Subject: [PATCH 021/113] npm/angular with styles --- eslint.config.ts | 1 + npm/angular/eslint.config.ts | 10 +++++----- npm/angular/src/mount.ts | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/eslint.config.ts b/eslint.config.ts index d8a389f910c4..6857782c56b3 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -49,6 +49,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ // rules that are gold standard, but have many violations // these are off while developing eslint, but will be set to warn rules: { + 'no-console': 'error', 'no-useless-escape': 'off', 'prefer-const': 'off', 'prefer-rest-params': 'off', diff --git a/npm/angular/eslint.config.ts b/npm/angular/eslint.config.ts index 339d3f6c8bd9..6dfcd19dce95 100644 --- a/npm/angular/eslint.config.ts +++ b/npm/angular/eslint.config.ts @@ -5,7 +5,7 @@ import globals from 'globals' export default [ ...baseConfig, { - ignores: ['dist/**'] + ignores: ['dist/**'], }, { languageOptions: { @@ -18,7 +18,7 @@ export default [ }, globals: { ...globals.browser, - } - } - } -] \ No newline at end of file + }, + }, + }, +] diff --git a/npm/angular/src/mount.ts b/npm/angular/src/mount.ts index 982c3200adee..b84b33a2706c 100644 --- a/npm/angular/src/mount.ts +++ b/npm/angular/src/mount.ts @@ -73,7 +73,7 @@ export interface MountConfig extends TestModuleMetadata { * }) */ // allow InputSignals to be type primitive and WritableSignal for type compliance - componentProperties?: Partial<{ [P in keyof T]: T[P] extends InputSignal ? InputSignal | WritableSignal | V : T[P]}> + componentProperties?: Partial<{ [P in keyof T]: T[P] extends InputSignal ? InputSignal | WritableSignal | V : T[P] }> } let activeFixture: ComponentFixture | null = null @@ -121,7 +121,7 @@ export type MountResponse = { * @see https://angular.io/api/core/testing/ComponentFixture#componentInstance */ component: T -}; +} // 'zone.js/testing' is not properly aliasing `it.skip` but it does provide `xit`/`xspecify` // Written up under https://github.com/angular/angular/issues/46297 but is not seeing movement @@ -449,7 +449,7 @@ function setupComponent ( acc[key] = new SimpleChange(null, value, true) return acc - }, {} as {[key: string]: SimpleChange}) + }, {} as { [key: string]: SimpleChange }) if (Object.keys(componentProperties).length > 0) { component.ngOnChanges(simpleChanges) From 53d7cab7dd934e8f209859014d02a915102ecd77 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:14:00 -0500 Subject: [PATCH 022/113] npm/cypress-schematic stylistic --- eslint.config.ts | 9 ++++++++- npm/cypress-schematic/eslint.config.ts | 12 ++++++------ npm/cypress-schematic/src/builders/cypress/index.ts | 3 ++- .../src/schematics/ng-generate/component/index.ts | 2 +- .../src/schematics/ng-generate/cypress-test/index.ts | 2 +- npm/cypress-schematic/src/schematics/utils/index.ts | 10 +++++----- .../src/schematics/utils/jsonFile.ts | 4 ++-- 7 files changed, 25 insertions(+), 17 deletions(-) diff --git a/eslint.config.ts b/eslint.config.ts index 6857782c56b3..5b6802c009b4 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -42,6 +42,14 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ '@stylistic/new-parens': 'off', '@stylistic/indent-binary-ops': 'off', '@stylistic/template-curly-spacing': 'off', + '@stylistic/no-mixed-operators': 'off', + }, + }, + + // overrides for basic recommended rules + { + rules: { + 'no-console': 'error', }, }, @@ -49,7 +57,6 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ // rules that are gold standard, but have many violations // these are off while developing eslint, but will be set to warn rules: { - 'no-console': 'error', 'no-useless-escape': 'off', 'prefer-const': 'off', 'prefer-rest-params': 'off', diff --git a/npm/cypress-schematic/eslint.config.ts b/npm/cypress-schematic/eslint.config.ts index 5822704c0bd2..51b98287594e 100644 --- a/npm/cypress-schematic/eslint.config.ts +++ b/npm/cypress-schematic/eslint.config.ts @@ -5,19 +5,19 @@ import path from 'path' export default [ ...baseConfig, { - ignores: ['src/**/*.{js,js.map,d.ts}', 'src/schematics/cypress/files/cypress/plugins/*.js'] + ignores: ['src/**/*.{js,js.map,d.ts}', 'src/schematics/cypress/files/cypress/plugins/*.js', '**/*.spec.ts'], }, { languageOptions: { parserOptions: { projectService: { - allowDefaultProject: ['eslint.config.ts', 'projects/sandbox/src/fake-component.component.ts'] + allowDefaultProject: ['eslint.config.ts', 'projects/sandbox/src/fake-component.component.ts'], }, project: './tsconfig.json', }, globals: { ...globals.node, - } - } - } -] \ No newline at end of file + }, + }, + }, +] diff --git a/npm/cypress-schematic/src/builders/cypress/index.ts b/npm/cypress-schematic/src/builders/cypress/index.ts index c3283d200d0d..61ad88246ab4 100644 --- a/npm/cypress-schematic/src/builders/cypress/index.ts +++ b/npm/cypress-schematic/src/builders/cypress/index.ts @@ -14,7 +14,7 @@ import { catchError, concatMap, first, map, switchMap, tap } from 'rxjs/operator import { CypressBuilderOptions } from './cypressBuilderOptions' type CypressOptions = Partial & -Partial; +Partial type CypressStartDevServerProps = { devServerTarget: string @@ -114,6 +114,7 @@ export function startDevServer ({ // for instance @nguniversal/builders:ssr-dev-server. // see https://github.com/nrwl/nx/blob/f930117ed6ab13dccc40725c7e9551be081cc83d/packages/cypress/src/executors/cypress/cypress.impl.ts if (builderName !== '@nguniversal/builders:ssr-dev-server') { + // eslint-disable-next-line no-console console.info(`Passing watch mode to DevServer - watch mode is ${watch}`) overrides = { watch, diff --git a/npm/cypress-schematic/src/schematics/ng-generate/component/index.ts b/npm/cypress-schematic/src/schematics/ng-generate/component/index.ts index 5f926c54a65e..9829931c2455 100644 --- a/npm/cypress-schematic/src/schematics/ng-generate/component/index.ts +++ b/npm/cypress-schematic/src/schematics/ng-generate/component/index.ts @@ -1,6 +1,6 @@ import { chain, externalSchematic, noop, Rule, SchematicContext, Tree } from '@angular-devkit/schematics' import cypressTest from '../cypress-test' -import path = require('path'); +import path = require('path') export default function (options: any): Rule { return (_: Tree, _context: SchematicContext) => { diff --git a/npm/cypress-schematic/src/schematics/ng-generate/cypress-test/index.ts b/npm/cypress-schematic/src/schematics/ng-generate/cypress-test/index.ts index 9a1b22617553..10a8ac2895d6 100644 --- a/npm/cypress-schematic/src/schematics/ng-generate/cypress-test/index.ts +++ b/npm/cypress-schematic/src/schematics/ng-generate/cypress-test/index.ts @@ -56,7 +56,7 @@ export default function (options: Schema): Rule { if (options.path === undefined) { options.path = testType === 'component' ? `${project.sourceRoot}/${project.prefix}` : `${project.root}/cypress/e2e` } - + // eslint-disable-next-line no-console console.log(`Creating new ${testType} spec named: ${options.name}`) const templatePath = testType === 'component' ? '../files/ct/__path__' : '../files/e2e/__path__' diff --git a/npm/cypress-schematic/src/schematics/utils/index.ts b/npm/cypress-schematic/src/schematics/utils/index.ts index ef78888d6e33..c6b5496434c8 100644 --- a/npm/cypress-schematic/src/schematics/utils/index.ts +++ b/npm/cypress-schematic/src/schematics/utils/index.ts @@ -52,7 +52,7 @@ export function getLatestNodeVersion (packageName: string): Promise } } -const ctSpecContent = ({ componentName, componentFilename }: {componentName: string, componentFilename: string}): string => { +const ctSpecContent = ({ componentName, componentFilename }: { componentName: string, componentFilename: string }): string => { return `import { ${componentName} } from './${componentFilename}.component'\n describe('${componentName}', () => { it('should mount', () => { @@ -62,19 +62,19 @@ const ctSpecContent = ({ componentName, componentFilename }: {componentName: str ` } -function generateCTSpec ({ tree, appPath, component }: { tree: Tree, appPath: string, component: any}): Rule | void { +function generateCTSpec ({ tree, appPath, component }: { tree: Tree, appPath: string, component: any }): Rule | void { const buffer = tree.read(`${appPath}/${component['name']}`) const componentString = buffer?.toString() const componentMatch = componentString?.match(/(?<=class )\S+/g) const componentFilename = component['name'].split('.')[0] const componentName = componentMatch ? componentMatch[0] : componentFilename - + // eslint-disable-next-line no-console console.log(`Creating new component spec for: ${componentName}\n`) return tree.create(`${appPath}/${componentFilename}.component.cy.ts`, ctSpecContent({ componentName, componentFilename })) } -export function getDirectoriesAndCreateSpecs ({ appPath, tree }: { appPath: string, tree: Tree}) { +export function getDirectoriesAndCreateSpecs ({ appPath, tree }: { appPath: string, tree: Tree }) { let components = [] let directories = [] @@ -99,7 +99,7 @@ export function getDirectoriesAndCreateSpecs ({ appPath, tree }: { appPath: stri } } -export function createTemplate ({ templatePath, options }: {templatePath: string, options: Schema}): any { +export function createTemplate ({ templatePath, options }: { templatePath: string, options: Schema }): any { return apply(url(templatePath), [ applyTemplates({ classify: strings.classify, diff --git a/npm/cypress-schematic/src/schematics/utils/jsonFile.ts b/npm/cypress-schematic/src/schematics/utils/jsonFile.ts index 3e0f812b20a3..9ea0145606e0 100644 --- a/npm/cypress-schematic/src/schematics/utils/jsonFile.ts +++ b/npm/cypress-schematic/src/schematics/utils/jsonFile.ts @@ -19,9 +19,9 @@ import { printParseErrorCode, } from 'jsonc-parser' -export type InsertionIndex = (properties: string[]) => number; +export type InsertionIndex = (properties: string[]) => number -export type JSONPath = (string | number)[]; +export type JSONPath = (string | number)[] /** @internal */ export class JSONFile { From 8c866c1549ce51b608483e3987c1027c1abdf307 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:17:40 -0500 Subject: [PATCH 023/113] npm/grep stylistic --- npm/grep/eslint.config.ts | 8 ++++---- npm/grep/expects/test-npm-module.js | 1 + npm/grep/src/plugin.js | 1 + npm/grep/src/support.js | 1 + npm/grep/src/utils.js | 4 +++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/npm/grep/eslint.config.ts b/npm/grep/eslint.config.ts index 2063e1ce99ac..0d0482492336 100644 --- a/npm/grep/eslint.config.ts +++ b/npm/grep/eslint.config.ts @@ -16,7 +16,7 @@ export default [ languageOptions: { globals: { process: 'readonly', - } - } - } -] \ No newline at end of file + }, + }, + }, +] diff --git a/npm/grep/expects/test-npm-module.js b/npm/grep/expects/test-npm-module.js index 0abade82e82f..b101871a26ed 100644 --- a/npm/grep/expects/test-npm-module.js +++ b/npm/grep/expects/test-npm-module.js @@ -1,6 +1,7 @@ // https://github.com/cypress-io/cypress-grep/issues/41 // shows how to pass grep parameters using Cypress NPM Module API // https://on.cypress.io/module-api +/* eslint no-console: 0 */ const cypress = require('cypress') cypress diff --git a/npm/grep/src/plugin.js b/npm/grep/src/plugin.js index 483b3aa85f18..852d89ffb170 100644 --- a/npm/grep/src/plugin.js +++ b/npm/grep/src/plugin.js @@ -1,3 +1,4 @@ +/* eslint no-console: 0 */ const debug = require('debug')('@cypress/grep') const globby = require('globby') const { getTestNames } = require('find-test-names') diff --git a/npm/grep/src/support.js b/npm/grep/src/support.js index 8797d6786990..fd577e93b28c 100644 --- a/npm/grep/src/support.js +++ b/npm/grep/src/support.js @@ -6,6 +6,7 @@ const { parseGrep, shouldTestRun } = require('./utils') const { version } = require('../package.json') const debug = require('debug')('@cypress/grep') +// eslint-disable-next-line no-console debug.log = console.info.bind(console) // preserve the real "it" function diff --git a/npm/grep/src/utils.js b/npm/grep/src/utils.js index 9ba2dc544cc3..bc8d325b8cd3 100644 --- a/npm/grep/src/utils.js +++ b/npm/grep/src/utils.js @@ -88,7 +88,7 @@ function parseTagsGrep (s) { }) if (ORS_filtered.length === 0) { - ORS_filtered[ 0 ] = explicitNotTags + ORS_filtered[0] = explicitNotTags } } @@ -132,7 +132,9 @@ function shouldTestRunTitle (parsedGrep, testName) { } if (!Array.isArray(parsedGrep)) { + // eslint-disable-next-line no-console console.error('Invalid parsed title grep') + // eslint-disable-next-line no-console console.error(parsedGrep) throw new Error('Expected title grep to be an array') } From d4d06376d28af0dd34dad2c9092b3025677dc996 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:18:17 -0500 Subject: [PATCH 024/113] npm/mount-utils stylistic --- npm/mount-utils/eslint.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/mount-utils/eslint.config.ts b/npm/mount-utils/eslint.config.ts index e98f1e64d9da..e8a3f34babbb 100644 --- a/npm/mount-utils/eslint.config.ts +++ b/npm/mount-utils/eslint.config.ts @@ -3,4 +3,4 @@ import globals from 'globals' export default [ ...baseConfig, -] \ No newline at end of file +] From 77f38fcc78f9e90592639786e4f5a1f2ba90b00f Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:18:43 -0500 Subject: [PATCH 025/113] npm/puppeteer stylistic --- npm/puppeteer/eslint.config.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/npm/puppeteer/eslint.config.ts b/npm/puppeteer/eslint.config.ts index be04a32e1628..be64517873b9 100644 --- a/npm/puppeteer/eslint.config.ts +++ b/npm/puppeteer/eslint.config.ts @@ -3,13 +3,13 @@ import globals from 'globals' export default [ ...baseConfig, { - ignores: ['**/dist'] + ignores: ['**/dist'], }, { languageOptions: { globals: { - require: 'readonly' - } - } - } -] \ No newline at end of file + require: 'readonly', + }, + }, + }, +] From c62768e9c8113ffac38efc1b692187be74f54d76 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:20:01 -0500 Subject: [PATCH 026/113] npm/react stylistic --- .../advanced/lazy-loaded-suspense/LazyComponent.tsx | 2 +- npm/react/eslint.config.ts | 8 ++++---- npm/react/src/createMount.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/npm/react/cypress/component/advanced/lazy-loaded-suspense/LazyComponent.tsx b/npm/react/cypress/component/advanced/lazy-loaded-suspense/LazyComponent.tsx index 05410fe8182c..62a1d18bb565 100644 --- a/npm/react/cypress/component/advanced/lazy-loaded-suspense/LazyComponent.tsx +++ b/npm/react/cypress/component/advanced/lazy-loaded-suspense/LazyComponent.tsx @@ -11,7 +11,7 @@ export const LazyComponent: React.FC = () => { return (
Loading a dog: - +
diff --git a/npm/react/eslint.config.ts b/npm/react/eslint.config.ts index ca09769ad951..65ba4ca3b18c 100644 --- a/npm/react/eslint.config.ts +++ b/npm/react/eslint.config.ts @@ -9,11 +9,11 @@ export default [ files: ['src/createMount.ts'], rules: { 'cypress/no-unnecessary-waiting': 'warn', - } + }, }, { rules: { 'react/prop-types': 'warn', - } - } -] \ No newline at end of file + }, + }, +] diff --git a/npm/react/src/createMount.ts b/npm/react/src/createMount.ts index 56cf325ce2bc..ca708731a0ae 100644 --- a/npm/react/src/createMount.ts +++ b/npm/react/src/createMount.ts @@ -77,7 +77,7 @@ export const makeMountFn = ( // by waiting, we delaying test execution for the next tick of event loop // and letting hooks and component lifecycle methods to execute mount // https://github.com/bahmutov/cypress-react-unit-test/issues/200 - .wait(0, { log: false }) // eslint-disable-line cypress/no-unnecessary-waiting + .wait(0, { log: false }) .then(() => { if (options.log !== false) { // Get the display name property via the component constructor From fb74c9389c57c8247eee696454fb5edbbc1a651a Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:20:30 -0500 Subject: [PATCH 027/113] npm/svelte stylistic --- npm/svelte/eslint.config.ts | 6 +++--- npm/svelte/src/mount.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/npm/svelte/eslint.config.ts b/npm/svelte/eslint.config.ts index a881097d9ffa..740023207080 100644 --- a/npm/svelte/eslint.config.ts +++ b/npm/svelte/eslint.config.ts @@ -7,6 +7,6 @@ export default [ files: ['src/mount.ts'], rules: { 'cypress/no-unnecessary-waiting': 'warn', - } - } -] \ No newline at end of file + }, + }, +] diff --git a/npm/svelte/src/mount.ts b/npm/svelte/src/mount.ts index 1e651a25026c..c1f76eef6db1 100644 --- a/npm/svelte/src/mount.ts +++ b/npm/svelte/src/mount.ts @@ -7,7 +7,7 @@ import type { MountOptions, Component } from 'svelte' const DEFAULT_COMP_NAME = 'unknown' -export interface MountReturn{ +export interface MountReturn { component: Record } @@ -50,7 +50,7 @@ const getComponentDisplayName = (Component: Component, Recor */ export function mount ( Component: Component, Record, any>, - options: Omit & {log?: boolean} = {}, + options: Omit & { log?: boolean } = {}, ): Cypress.Chainable { // In Svelte 5, the component name is no longer easily discoverable and logs as "wrapper" // so we default the logging of it to false as it doesn't provide a lot of value From a0ea82b8274c90450e02d68a7f3d8d8c072ce9fc Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:22:30 -0500 Subject: [PATCH 028/113] adds back some restricted properties and syntax --- eslint.config.ts | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/eslint.config.ts b/eslint.config.ts index 5b6802c009b4..2b706840245e 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -46,10 +46,33 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ }, }, - // overrides for basic recommended rules + // overrides for basic recommended rules, and custom rules { rules: { 'no-console': 'error', + 'no-restricted-properties': [ + 'error', + { + object: 'process', + property: 'geteuid', + message: 'process.geteuid() will throw on Windows. Do not use it unless you catch any potential errors.', + }, + { + object: 'os', + property: 'userInfo', + message: 'os.userInfo() will throw when there is not an `/etc/passwd` entry for the current user (like when running with --user 12345 in Docker). Do not use it unless you catch any potential errors.', + }, + ], + 'no-restricted-syntax': [ + // esquery tool: https://estools.github.io/esquery/ + 'error', + { + // match sync FS methods except for `existsSync` + // examples: fse.readFileSync, fs.readFileSync, this.ctx.fs.readFileSync... + selector: `MemberExpression[object.name='fs'][property.name=/^[A-z]+Sync$/]:not(MemberExpression[property.name='existsSync']), MemberExpression[property.name=/^[A-z]+Sync$/]:not(MemberExpression[property.name='existsSync']):has(MemberExpression[property.name='fs'])`, + message: 'Synchronous fs calls should not be used in Cypress. Use an async API instead.', + }, + ], }, }, From c34babcce072c1316ca5b89fa990069892220d8f Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:22:54 -0500 Subject: [PATCH 029/113] npm/vite-dev-server stylistic --- npm/vite-dev-server/eslint.config.ts | 10 +++++----- npm/vite-dev-server/index.d.ts | 2 +- npm/vite-dev-server/src/plugins/cypress.ts | 2 +- npm/vite-dev-server/test/resolveConfig.spec.ts | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/npm/vite-dev-server/eslint.config.ts b/npm/vite-dev-server/eslint.config.ts index be2d4c16fd8a..59d3d5a4c460 100644 --- a/npm/vite-dev-server/eslint.config.ts +++ b/npm/vite-dev-server/eslint.config.ts @@ -6,8 +6,8 @@ export default [ { languageOptions: { globals: { - process: 'readonly' - } - } - } -] \ No newline at end of file + process: 'readonly', + }, + }, + }, +] diff --git a/npm/vite-dev-server/index.d.ts b/npm/vite-dev-server/index.d.ts index 9ae0af320b63..5d960ddb8bba 100644 --- a/npm/vite-dev-server/index.d.ts +++ b/npm/vite-dev-server/index.d.ts @@ -1 +1 @@ -export * from "./dist" +export * from './dist' diff --git a/npm/vite-dev-server/src/plugins/cypress.ts b/npm/vite-dev-server/src/plugins/cypress.ts index 7d85fdd07b97..f4345069308c 100644 --- a/npm/vite-dev-server/src/plugins/cypress.ts +++ b/npm/vite-dev-server/src/plugins/cypress.ts @@ -42,7 +42,7 @@ export const Cypress = ( // eslint-disable-next-line no-restricted-syntax let loader = fs.readFileSync(INIT_FILEPATH, 'utf8') - devServerEvents.on('dev-server:specs:changed', ({ specs, options }: { specs: Spec[], options?: { neededForJustInTimeCompile: boolean }}) => { + devServerEvents.on('dev-server:specs:changed', ({ specs, options }: { specs: Spec[], options?: { neededForJustInTimeCompile: boolean } }) => { if (options?.neededForJustInTimeCompile) { // if an option is needed for just in time compile, no-op as this isn't supported in vite return diff --git a/npm/vite-dev-server/test/resolveConfig.spec.ts b/npm/vite-dev-server/test/resolveConfig.spec.ts index f027a8b28a8d..09f82e408d05 100644 --- a/npm/vite-dev-server/test/resolveConfig.spec.ts +++ b/npm/vite-dev-server/test/resolveConfig.spec.ts @@ -23,7 +23,7 @@ const getViteDevServerConfig = (projectRoot: string) => { framework: 'react', } as unknown as ViteDevServerConfig } -const MAJOR_VERSIONS: ({version: 4, vite: any } | {version: 5, vite: any } | {version: 6, vite: any })[] = [ +const MAJOR_VERSIONS: ({ version: 4, vite: any } | { version: 5, vite: any } | { version: 6, vite: any })[] = [ { version: 4, vite: vite4, From 58a38ac22badc3e7720cb2624ec0ce9b2d7cff7b Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:24:54 -0500 Subject: [PATCH 030/113] npm/vite-plugin-cypress-esm stylistic --- npm/vite-plugin-cypress-esm/.eslintignore | 5 --- npm/vite-plugin-cypress-esm/.eslintrc | 32 ------------------- .../client/moduleCache.js | 3 +- .../cypress/component/fixtures/Foo.tsx | 1 - .../cypress/component/fixtures/MyAsyncMod.ts | 1 + .../cypress/component/importSyntax.cy.ts | 1 + .../cypress/component/stub.cy.tsx | 6 ++-- npm/vite-plugin-cypress-esm/eslint.config.ts | 2 +- 8 files changed, 8 insertions(+), 43 deletions(-) delete mode 100644 npm/vite-plugin-cypress-esm/.eslintignore delete mode 100644 npm/vite-plugin-cypress-esm/.eslintrc diff --git a/npm/vite-plugin-cypress-esm/.eslintignore b/npm/vite-plugin-cypress-esm/.eslintignore deleted file mode 100644 index 79afe972da7d..000000000000 --- a/npm/vite-plugin-cypress-esm/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures \ No newline at end of file diff --git a/npm/vite-plugin-cypress-esm/.eslintrc b/npm/vite-plugin-cypress-esm/.eslintrc deleted file mode 100644 index 7158598773c0..000000000000 --- a/npm/vite-plugin-cypress-esm/.eslintrc +++ /dev/null @@ -1,32 +0,0 @@ -{ - "plugins": [ - "cypress", - "@cypress/dev" - ], - "extends": [ - "plugin:@cypress/dev/general", - "plugin:@cypress/dev/tests", - "plugin:@cypress/dev/react" - ], - "parser": "vue-eslint-parser", - "parserOptions": { - "parser": "@typescript-eslint/parser" - }, - "env": { - "cypress/globals": true - }, - "rules": { - "no-console": "off", - "mocha/no-global-tests": "off", - "react/jsx-filename-extension": [ - "warn", - { - "extensions": [ - ".js", - ".jsx", - ".tsx" - ] - } - ] - } -} diff --git a/npm/vite-plugin-cypress-esm/client/moduleCache.js b/npm/vite-plugin-cypress-esm/client/moduleCache.js index 3309bdcba58c..20c905bcda06 100644 --- a/npm/vite-plugin-cypress-esm/client/moduleCache.js +++ b/npm/vite-plugin-cypress-esm/client/moduleCache.js @@ -175,7 +175,7 @@ function log (msg) { if (!debug) { return } - + // eslint-disable-next-line no-console console.log(`[cypress:vite-plugin-cypress-esm]: ${msg}`) } @@ -197,6 +197,7 @@ function cacheAndProxifyModule (id, module) { return moduleProxy } catch (err) { + // eslint-disable-next-line no-console console.warn(`Failed to proxy module ${id}, using original which will *not* support stub/spy`, err) return module diff --git a/npm/vite-plugin-cypress-esm/cypress/component/fixtures/Foo.tsx b/npm/vite-plugin-cypress-esm/cypress/component/fixtures/Foo.tsx index f485f06380d6..bcfae67f75eb 100644 --- a/npm/vite-plugin-cypress-esm/cypress/component/fixtures/Foo.tsx +++ b/npm/vite-plugin-cypress-esm/cypress/component/fixtures/Foo.tsx @@ -22,7 +22,6 @@ export class Dog extends Animal { } export class BarClassComponent extends React.Component<{ msg: string }> { - /* eslint-disable @typescript-eslint/no-useless-constructor */ constructor (props) { super(props) } diff --git a/npm/vite-plugin-cypress-esm/cypress/component/fixtures/MyAsyncMod.ts b/npm/vite-plugin-cypress-esm/cypress/component/fixtures/MyAsyncMod.ts index c73dbed72e89..33efec920397 100644 --- a/npm/vite-plugin-cypress-esm/cypress/component/fixtures/MyAsyncMod.ts +++ b/npm/vite-plugin-cypress-esm/cypress/component/fixtures/MyAsyncMod.ts @@ -1,3 +1,4 @@ export default function foo () { + // eslint-disable-next-line no-console console.log('foo') } diff --git a/npm/vite-plugin-cypress-esm/cypress/component/importSyntax.cy.ts b/npm/vite-plugin-cypress-esm/cypress/component/importSyntax.cy.ts index 1bd8b798ac80..51d26b75009c 100644 --- a/npm/vite-plugin-cypress-esm/cypress/component/importSyntax.cy.ts +++ b/npm/vite-plugin-cypress-esm/cypress/component/importSyntax.cy.ts @@ -136,6 +136,7 @@ describe('supports every combination of import syntax in a single file', () => { it(`import defaultExport4, { export5, } from './fixtures/kitchenSink'`, () => { + // eslint-disable-next-line no-console console.log(defaultExport4) expect(defaultExport4).to.deep.eq({ export1: 'export1', diff --git a/npm/vite-plugin-cypress-esm/cypress/component/stub.cy.tsx b/npm/vite-plugin-cypress-esm/cypress/component/stub.cy.tsx index 6ded0642e0df..41c25ca73e0f 100644 --- a/npm/vite-plugin-cypress-esm/cypress/component/stub.cy.tsx +++ b/npm/vite-plugin-cypress-esm/cypress/component/stub.cy.tsx @@ -33,18 +33,18 @@ describe('stubbing ES modules', () => { }) it('works with react class component', () => { - mount() + mount() cy.contains('Hello world').should('exist') }) it('works with react function component', () => { - mount() + mount() cy.contains('Hello world').should('exist') }) it('stubs react component', () => { cy.stub(Foo, 'Foo').callsFake(() =>

Stub Component

) - mount() + mount() cy.contains('Stub Component').should('exist') cy.contains('Hello world').should('not.exist') }) diff --git a/npm/vite-plugin-cypress-esm/eslint.config.ts b/npm/vite-plugin-cypress-esm/eslint.config.ts index 088413c81d73..8c91f1e0c081 100644 --- a/npm/vite-plugin-cypress-esm/eslint.config.ts +++ b/npm/vite-plugin-cypress-esm/eslint.config.ts @@ -2,4 +2,4 @@ import { baseConfig } from '../../eslint.config' export default [ ...baseConfig, -] \ No newline at end of file +] From 816ba0d7cbca6e48cb97ce758a4ba2803475a6ef Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:27:25 -0500 Subject: [PATCH 031/113] npm/vue stylistic --- .../advanced/access-component/Message.vue | 1 + .../component/basic/document-body.cy.js | 2 ++ .../cypress/component/basic/hello/Hello.vue | 1 + npm/vue/eslint.config.ts | 10 +++--- npm/vue/rollup.config.mjs | 4 +-- npm/vue/src/index.ts | 31 +++++++++---------- npm/vue/src/shims-vue.d.ts | 8 ++--- npm/vue/test-tsd/index.d.ts | 7 ++--- 8 files changed, 33 insertions(+), 31 deletions(-) diff --git a/npm/vue/cypress/component/advanced/access-component/Message.vue b/npm/vue/cypress/component/advanced/access-component/Message.vue index 2ab0a3b8c6d7..32aef6e08d02 100644 --- a/npm/vue/cypress/component/advanced/access-component/Message.vue +++ b/npm/vue/cypress/component/advanced/access-component/Message.vue @@ -29,6 +29,7 @@ export default { emits: ['message-clicked'], methods: { handleClick () { + // eslint-disable-next-line no-console console.log('lalala') this.$emit('message-clicked', this.message) }, diff --git a/npm/vue/cypress/component/basic/document-body.cy.js b/npm/vue/cypress/component/basic/document-body.cy.js index b7f396c8e484..f7dbe46004ad 100644 --- a/npm/vue/cypress/component/basic/document-body.cy.js +++ b/npm/vue/cypress/component/basic/document-body.cy.js @@ -5,7 +5,9 @@ describe('document.body', () => { it('is set correctly', () => { mount({ mounted () { + // eslint-disable-next-line no-console console.log('mounted!') + // eslint-disable-next-line no-console console.log('document.body', document.body) document.body.innerText = 'Mounted!' }, diff --git a/npm/vue/cypress/component/basic/hello/Hello.vue b/npm/vue/cypress/component/basic/hello/Hello.vue index e48b2e8f1508..66c36feddf6a 100644 --- a/npm/vue/cypress/component/basic/hello/Hello.vue +++ b/npm/vue/cypress/component/basic/hello/Hello.vue @@ -24,6 +24,7 @@ export default { computed: { error () { + // eslint-disable-next-line no-console console.log(this.username) return this.username.trim().length < 7 diff --git a/npm/vue/eslint.config.ts b/npm/vue/eslint.config.ts index 3cadca00d647..4cf7a7b6a095 100644 --- a/npm/vue/eslint.config.ts +++ b/npm/vue/eslint.config.ts @@ -8,8 +8,8 @@ export default [ files: ['**/*.vue'], languageOptions: { parserOptions: { - parser: ts.parser - } - } - } -] \ No newline at end of file + parser: ts.parser, + }, + }, + }, +] diff --git a/npm/vue/rollup.config.mjs b/npm/vue/rollup.config.mjs index 58c7fb56eb85..cc64def81639 100644 --- a/npm/vue/rollup.config.mjs +++ b/npm/vue/rollup.config.mjs @@ -4,13 +4,13 @@ const config = { external: [ 'vue', '@vue/compiler-dom', - '@vue/server-renderer' + '@vue/server-renderer', ], output: { globals: { vue: 'Vue', '@vue/compiler-dom': 'VueCompilerDOM', - '@vue/server-renderer': 'VueServerRenderer' + '@vue/server-renderer': 'VueServerRenderer', }, }, } diff --git a/npm/vue/src/index.ts b/npm/vue/src/index.ts index b3826b409b69..2e615eb800ad 100644 --- a/npm/vue/src/index.ts +++ b/npm/vue/src/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-redeclare */ /// import type { ComponentPublicInstance, @@ -49,7 +48,7 @@ type GlobalMountOptions = Required>['global'] // when we mount a Vue component, we add it to the global Cypress object // so here we extend the global Cypress namespace and its Cypress interface declare global { - // eslint-disable-next-line no-redeclare + namespace Cypress { interface Cypress { vueWrapper: VueWrapper @@ -113,7 +112,7 @@ type ComponentMountingOptions = T extends DefineComponent< : MountingOptions // Class component (without vue-class-component) - no props -export function mount( +export function mount ( originalComponent: { new (...args: any[]): V __vccOpts: any @@ -125,7 +124,7 @@ export function mount( }> // Class component (without vue-class-component) - props -export function mount( +export function mount ( originalComponent: { new (...args: any[]): V __vccOpts: any @@ -138,7 +137,7 @@ export function mount( }> // Class component - no props -export function mount( +export function mount ( originalComponent: { new (...args: any[]): V registerHooks(keys: string[]): void @@ -150,7 +149,7 @@ export function mount( }> // Class component - props -export function mount( +export function mount ( originalComponent: { new (...args: any[]): V props(Props: P): any @@ -163,7 +162,7 @@ export function mount( }> // Functional component with emits -export function mount( +export function mount ( originalComponent: FunctionalComponent, options?: MountingOptions & Record ): Cypress.Chainable<{ @@ -184,8 +183,8 @@ export function mount< EE extends string = string, PP = PublicProps, Props = Readonly>, - Defaults extends {} = ExtractDefaultPropTypes ->( + Defaults extends {} = ExtractDefaultPropTypes, +> ( component: DefineComponent< PropsOrPropOptions, RawBindings, @@ -246,7 +245,7 @@ export function mount< }> // component declared by vue-tsc ScriptSetup -export function mount>( +export function mount> ( component: T, options?: ComponentMountingOptions ): Cypress.Chainable<{ @@ -264,8 +263,8 @@ export function mount< E extends EmitsOptions = Record, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, - EE extends string = string ->( + EE extends string = string, +> ( componentOptions: ComponentOptionsWithoutProps< Props, RawBindings, @@ -304,8 +303,8 @@ export function mount< EE extends string = string, Props extends Readonly<{ [key in PropNames]?: any }> = Readonly<{ [key in PropNames]?: any - }> ->( + }>, +> ( componentOptions: ComponentOptionsWithArrayProps< PropNames, RawBindings, @@ -336,8 +335,8 @@ export function mount< E extends EmitsOptions = Record, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, - EE extends string = string ->( + EE extends string = string, +> ( componentOptions: ComponentOptionsWithObjectProps< PropsOptions, RawBindings, diff --git a/npm/vue/src/shims-vue.d.ts b/npm/vue/src/shims-vue.d.ts index f43ed923b679..ac1ded792334 100644 --- a/npm/vue/src/shims-vue.d.ts +++ b/npm/vue/src/shims-vue.d.ts @@ -1,5 +1,5 @@ declare module '*.vue' { - import { DefineComponent } from 'vue' - const component: DefineComponent<{}, {}, any> - export default component -} \ No newline at end of file + import { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/npm/vue/test-tsd/index.d.ts b/npm/vue/test-tsd/index.d.ts index 61aeaea7a3b2..cc81ad487355 100644 --- a/npm/vue/test-tsd/index.d.ts +++ b/npm/vue/test-tsd/index.d.ts @@ -1,4 +1,3 @@ -export function expectType(value: T): void -export function expectError(value: T): void -export function expectAssignable(value: T2): void - +export function expectType (value: T): void +export function expectError (value: T): void +export function expectAssignable (value: T2): void From 124ad491807661fcc26ffee0e6ba3c675aaac432 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:28:14 -0500 Subject: [PATCH 032/113] npm/webpack-batteries-included stylistic --- .../eslint.config.ts | 10 +++++----- .../test/fixtures/mjs_spec.mjs | 2 +- .../test/fixtures/various_imports_spec.js | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/npm/webpack-batteries-included-preprocessor/eslint.config.ts b/npm/webpack-batteries-included-preprocessor/eslint.config.ts index 0afa204ee27e..751f84b2ae2d 100644 --- a/npm/webpack-batteries-included-preprocessor/eslint.config.ts +++ b/npm/webpack-batteries-included-preprocessor/eslint.config.ts @@ -6,8 +6,8 @@ export default [ { languageOptions: { globals: { - ...globals.node - } - } -} -] \ No newline at end of file + ...globals.node, + }, + }, +}, +] diff --git a/npm/webpack-batteries-included-preprocessor/test/fixtures/mjs_spec.mjs b/npm/webpack-batteries-included-preprocessor/test/fixtures/mjs_spec.mjs index babd0da4930f..18454bd2850a 100644 --- a/npm/webpack-batteries-included-preprocessor/test/fixtures/mjs_spec.mjs +++ b/npm/webpack-batteries-included-preprocessor/test/fixtures/mjs_spec.mjs @@ -3,6 +3,6 @@ import { expect } from 'chai' // make sure built in resolves correctly in mjs through the provide plugin, including process & buffer process.env.foo = 'bar' -const buffer = new Buffer('foo'); +const buffer = new Buffer('foo') expect(true).to.be.true diff --git a/npm/webpack-batteries-included-preprocessor/test/fixtures/various_imports_spec.js b/npm/webpack-batteries-included-preprocessor/test/fixtures/various_imports_spec.js index c07ee74a8df6..1172468aec30 100644 --- a/npm/webpack-batteries-included-preprocessor/test/fixtures/various_imports_spec.js +++ b/npm/webpack-batteries-included-preprocessor/test/fixtures/various_imports_spec.js @@ -2,7 +2,7 @@ // for .mjs files. don't upgrade graphql from 14.0.0 or it won't reproduce // the issue properly // https://github.com/cypress-io/cypress/issues/8361 -import graphql from 'graphql' // eslint-disable-line no-unused-vars +import graphql from 'graphql' import { fromJs } from './file-types/js-file' import { fromJsx } from './file-types/jsx-file' From 3cb0c44b9257e96d357a2438dd2822bc0d8d226f Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:30:27 -0500 Subject: [PATCH 033/113] npm/webpack-dev-server stylistic --- npm/webpack-dev-server/eslint.config.ts | 6 +++--- npm/webpack-dev-server/src/CypressCTWebpackPlugin.ts | 2 +- npm/webpack-dev-server/src/helpers/angularHandler.ts | 2 +- .../src/helpers/sourceRelativeWebpackModules.ts | 8 ++++---- npm/webpack-dev-server/test/devServer-e2e.spec.ts | 2 ++ npm/webpack-dev-server/test/fixtures/dependency.js | 2 +- npm/webpack-dev-server/test/fixtures/webpack.config.js | 8 ++++---- .../test/sourceRelativeWebpackModules.spec.ts | 2 ++ .../test/test-helpers/createModuleMatrixResult.ts | 2 +- 9 files changed, 19 insertions(+), 15 deletions(-) diff --git a/npm/webpack-dev-server/eslint.config.ts b/npm/webpack-dev-server/eslint.config.ts index c61f466716ee..a00264fdb05b 100644 --- a/npm/webpack-dev-server/eslint.config.ts +++ b/npm/webpack-dev-server/eslint.config.ts @@ -4,6 +4,6 @@ import globals from 'globals' export default [ ...baseConfig, { - ignores: ['__snapshots__/**/*', 'test/fixtures/compilation-fails.spec.js'] - } -] \ No newline at end of file + ignores: ['__snapshots__/**/*', 'test/fixtures/compilation-fails.spec.js'], + }, +] diff --git a/npm/webpack-dev-server/src/CypressCTWebpackPlugin.ts b/npm/webpack-dev-server/src/CypressCTWebpackPlugin.ts index c80f3ab8c294..fd931f82c1f6 100644 --- a/npm/webpack-dev-server/src/CypressCTWebpackPlugin.ts +++ b/npm/webpack-dev-server/src/CypressCTWebpackPlugin.ts @@ -108,7 +108,7 @@ export class CypressCTWebpackPlugin { * * See https://github.com/cypress-io/cypress/issues/24398 */ - private onSpecsChange = async ({ specs, options }: { specs: Cypress.Cypress['spec'][], options?: { neededForJustInTimeCompile: boolean}}) => { + private onSpecsChange = async ({ specs, options }: { specs: Cypress.Cypress['spec'][], options?: { neededForJustInTimeCompile: boolean } }) => { if (!this.compilation || _.isEqual(specs, this.files)) { return } diff --git a/npm/webpack-dev-server/src/helpers/angularHandler.ts b/npm/webpack-dev-server/src/helpers/angularHandler.ts index 707fb65c3dc1..99e65be4f567 100644 --- a/npm/webpack-dev-server/src/helpers/angularHandler.ts +++ b/npm/webpack-dev-server/src/helpers/angularHandler.ts @@ -14,7 +14,7 @@ const debug = debugLib(debugPrefix) export type BuildOptions = Record -export type AngularWebpackDevServerConfig = Extract +export type AngularWebpackDevServerConfig = Extract type Configurations = { configurations?: { diff --git a/npm/webpack-dev-server/src/helpers/sourceRelativeWebpackModules.ts b/npm/webpack-dev-server/src/helpers/sourceRelativeWebpackModules.ts index 627212aaaae0..db01254eca27 100644 --- a/npm/webpack-dev-server/src/helpers/sourceRelativeWebpackModules.ts +++ b/npm/webpack-dev-server/src/helpers/sourceRelativeWebpackModules.ts @@ -132,7 +132,7 @@ export function sourceWebpack (config: WebpackDevServerConfig, framework: Source paths: [searchRoot], }) } catch (e) { - if ((e as {code?: string}).code !== 'MODULE_NOT_FOUND') { + if ((e as { code?: string }).code !== 'MODULE_NOT_FOUND') { debug('Webpack: Failed to source webpack - %s', e) throw e } @@ -196,7 +196,7 @@ export function sourceWebpackDevServer (config: WebpackDevServerConfig, webpackM paths: [searchRoot], }) } catch (e) { - if ((e as {code?: string}).code !== 'MODULE_NOT_FOUND') { + if ((e as { code?: string }).code !== 'MODULE_NOT_FOUND') { debug('WebpackDevServer: Failed to source webpack-dev-server - %s', e) throw e } @@ -248,7 +248,7 @@ export function sourceHtmlWebpackPlugin (config: WebpackDevServerConfig, framewo // we shouldn't be concerned with using our own copy if they've shipped w/ an earlier version htmlWebpackPlugin.majorVersion = getMajorVersion(htmlWebpackPlugin.packageJson, [4, 5]) } catch (e) { - const err = e as Error & {code?: string} + const err = e as Error & { code?: string } if (err.code !== 'MODULE_NOT_FOUND' && !err.message.includes('Unexpected major version')) { debug('HtmlWebpackPlugin: Failed to source html-webpack-plugin - %s', e) @@ -291,7 +291,7 @@ export function sourceDefaultWebpackDependencies (config: WebpackDevServerConfig } } -export function getMajorVersion (json: PackageJson, acceptedVersions: T[]): T { +export function getMajorVersion (json: PackageJson, acceptedVersions: T[]): T { const major = Number(json.version.split('.')[0]) if (!acceptedVersions.includes(major as T)) { diff --git a/npm/webpack-dev-server/test/devServer-e2e.spec.ts b/npm/webpack-dev-server/test/devServer-e2e.spec.ts index cf6d3c863a73..0bb6c96dfb6d 100644 --- a/npm/webpack-dev-server/test/devServer-e2e.spec.ts +++ b/npm/webpack-dev-server/test/devServer-e2e.spec.ts @@ -187,6 +187,7 @@ describe('#devServer', () => { absolute: `${root}/test/fixtures/bar.spec.js`, } + // eslint-disable-next-line no-restricted-syntax const oldmtime = fs.statSync(cypressConfig.indexHtmlFile).mtimeMs await once(devServerEvents, 'dev-server:compile:success') @@ -195,6 +196,7 @@ describe('#devServer', () => { }) await once(devServerEvents, 'dev-server:compile:success') + // eslint-disable-next-line no-restricted-syntax const updatedmtime = fs.statSync(cypressConfig.indexHtmlFile).mtimeMs expect(oldmtime).to.not.equal(updatedmtime) diff --git a/npm/webpack-dev-server/test/fixtures/dependency.js b/npm/webpack-dev-server/test/fixtures/dependency.js index 693da49fc40b..336ce12bb910 100644 --- a/npm/webpack-dev-server/test/fixtures/dependency.js +++ b/npm/webpack-dev-server/test/fixtures/dependency.js @@ -1 +1 @@ -export {} \ No newline at end of file +export {} diff --git a/npm/webpack-dev-server/test/fixtures/webpack.config.js b/npm/webpack-dev-server/test/fixtures/webpack.config.js index ae138660dd9d..c8b08781bdfc 100644 --- a/npm/webpack-dev-server/test/fixtures/webpack.config.js +++ b/npm/webpack-dev-server/test/fixtures/webpack.config.js @@ -1,11 +1,11 @@ class FromWebpackConfigFile { - apply() { + apply () { } } module.exports = { plugins: [ - new FromWebpackConfigFile() - ] -} \ No newline at end of file + new FromWebpackConfigFile(), + ], +} diff --git a/npm/webpack-dev-server/test/sourceRelativeWebpackModules.spec.ts b/npm/webpack-dev-server/test/sourceRelativeWebpackModules.spec.ts index 94c5663aafee..9e667ea84b84 100644 --- a/npm/webpack-dev-server/test/sourceRelativeWebpackModules.spec.ts +++ b/npm/webpack-dev-server/test/sourceRelativeWebpackModules.spec.ts @@ -57,6 +57,7 @@ describe('sourceDefaultWebpackDependencies', () => { describe(fixture, () => { it(`sources the correct webpack versions for ${fixture}`, async () => { const { result, projectRoot } = await sourceModulesForProject(fixture as ProjectDirs[number]) + // eslint-disable-next-line no-restricted-syntax const projectNodeModules = fs.realpathSync(path.resolve(projectRoot, 'node_modules')) expect(result.webpack.majorVersion).to.eq(versionsToMatch.webpack, 'match webpackVersion') @@ -72,6 +73,7 @@ describe('sourceDefaultWebpackDependencies', () => { const localWebpack = require('webpack') const { result, projectRoot } = await sourceModulesForProject('webpack5_wds5-react') + // eslint-disable-next-line no-restricted-syntax const projectNodeModules = fs.realpathSync(path.resolve(projectRoot, 'node_modules')) expect(localWebpack).not.to.eq(result.webpack.module) diff --git a/npm/webpack-dev-server/test/test-helpers/createModuleMatrixResult.ts b/npm/webpack-dev-server/test/test-helpers/createModuleMatrixResult.ts index 01518f415aa6..bc5ed5a44460 100644 --- a/npm/webpack-dev-server/test/test-helpers/createModuleMatrixResult.ts +++ b/npm/webpack-dev-server/test/test-helpers/createModuleMatrixResult.ts @@ -1,7 +1,7 @@ import path from 'path' import type { SourceRelativeWebpackResult } from '../../src/helpers/sourceRelativeWebpackModules' -type ModulesDef = {[K in keyof ModuleMatrixResultOptions]: Record} +type ModulesDef = { [K in keyof ModuleMatrixResultOptions]: Record } const moduleSources: ModulesDef = { webpack: { From 9d84f3db57ae11d690c87c46f6f215c72e0ec1d3 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:32:06 -0500 Subject: [PATCH 034/113] npm/webpack-preprocessor stylistic --- npm/webpack-preprocessor/eslint.config.ts | 10 +++++----- npm/webpack-preprocessor/index.ts | 2 +- npm/webpack-preprocessor/scripts/test-webpack-5.js | 2 ++ npm/webpack-preprocessor/test/e2e/compilation.spec.js | 1 + npm/webpack-preprocessor/test/e2e/helpers.js | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/npm/webpack-preprocessor/eslint.config.ts b/npm/webpack-preprocessor/eslint.config.ts index 3f74a8464348..41fa2d3a7258 100644 --- a/npm/webpack-preprocessor/eslint.config.ts +++ b/npm/webpack-preprocessor/eslint.config.ts @@ -4,13 +4,13 @@ import globals from 'globals' export default [ ...baseConfig, { - ignores: ['__snapshots__/**/*', 'cypress/tests/e2e/compile-error.js', 'test/fixtures/syntax_error_spec.js'] + ignores: ['__snapshots__/**/*', 'cypress/tests/e2e/compile-error.js', 'test/fixtures/syntax_error_spec.js'], }, { languageOptions: { globals: { ...globals.node, - } - } - } -] \ No newline at end of file + }, + }, + }, +] diff --git a/npm/webpack-preprocessor/index.ts b/npm/webpack-preprocessor/index.ts index 7e5c8af2696d..db80399dbaaa 100644 --- a/npm/webpack-preprocessor/index.ts +++ b/npm/webpack-preprocessor/index.ts @@ -18,7 +18,7 @@ interface BundleObject { } // bundle promises from input spec filename to output bundled file paths -let bundles: {[key: string]: BundleObject} = {} +let bundles: { [key: string]: BundleObject } = {} // we don't automatically load the rules, so that the babel dependencies are // not required if a user passes in their own configuration diff --git a/npm/webpack-preprocessor/scripts/test-webpack-5.js b/npm/webpack-preprocessor/scripts/test-webpack-5.js index bb0945ee56a2..a1f290865915 100644 --- a/npm/webpack-preprocessor/scripts/test-webpack-5.js +++ b/npm/webpack-preprocessor/scripts/test-webpack-5.js @@ -20,6 +20,7 @@ const main = async () => { const install = () => execa('yarn', ['install', '--ignore-scripts'], { stdio: 'inherit' }) const resetPkg = async () => { + // eslint-disable-next-line no-restricted-syntax fs.writeFileSync(pkgJsonPath, originalPkg, 'utf8') await install() } @@ -41,6 +42,7 @@ const main = async () => { delete pkg.devDependencies['webpack'] // eslint-disable-next-line no-console console.log('[@cypress/webpack-preprocessor]: updating package.json...') + // eslint-disable-next-line no-restricted-syntax fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, 2)) // eslint-disable-next-line no-console diff --git a/npm/webpack-preprocessor/test/e2e/compilation.spec.js b/npm/webpack-preprocessor/test/e2e/compilation.spec.js index 1d1816f4a43a..c085ed999630 100644 --- a/npm/webpack-preprocessor/test/e2e/compilation.spec.js +++ b/npm/webpack-preprocessor/test/e2e/compilation.spec.js @@ -52,6 +52,7 @@ describe('webpack preprocessor - e2e', () => { file = createFile() return preprocessor(options)(file).then((outputPath) => { + // eslint-disable-next-line no-restricted-syntax snapshot(fs.readFileSync(outputPath).toString()) }) }) diff --git a/npm/webpack-preprocessor/test/e2e/helpers.js b/npm/webpack-preprocessor/test/e2e/helpers.js index 621155b7f1df..12c42bf7839c 100644 --- a/npm/webpack-preprocessor/test/e2e/helpers.js +++ b/npm/webpack-preprocessor/test/e2e/helpers.js @@ -1,4 +1,4 @@ -/* eslint-disable no-console, prefer-rest-params */ +/* eslint-disable no-console */ const { codeFrameColumns } = require('@babel/code-frame') const fs = require('fs-extra') From 27797d0d9cf16887293f11b4084be5bdb8bfd9c7 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 16:37:28 -0500 Subject: [PATCH 035/113] cli stylistic --- cli/eslint.config.ts | 18 +++++++++--------- cli/lib/util.js | 3 +-- cli/scripts/clean.js | 2 ++ cli/scripts/post-install.js | 8 +++++--- cli/test/lib/tasks/download_spec.js | 1 + cli/test/lib/tasks/verify_spec.js | 2 -- cli/test/spec_helper.js | 1 - cli/test/support/stdout.js | 1 - 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/cli/eslint.config.ts b/cli/eslint.config.ts index 9bf8d3c40d11..cd64459c7d23 100644 --- a/cli/eslint.config.ts +++ b/cli/eslint.config.ts @@ -20,7 +20,7 @@ } */ import path from 'path' -import { baseConfig } from "../eslint.config" +import { baseConfig } from '../eslint.config' import globals from 'globals' export default [ @@ -33,9 +33,9 @@ export default [ tsconfigRootDir: path.join(__dirname, '../packages/ts/tsconfig.json'), }, globals: { - ...globals.node - } - } + ...globals.node, + }, + }, }, { ignores: [ @@ -48,7 +48,7 @@ export default [ 'svelte/**/*', 'vue/**/*', 'types/**/*', - ] + ], }, { files: ['test/**/*.{ts,js}'], @@ -56,7 +56,7 @@ export default [ globals: { sinon: 'readonly', lib: 'readonly', - } - } - } -] \ No newline at end of file + }, + }, + }, +] diff --git a/cli/lib/util.js b/cli/lib/util.js index 4f7a67e88e9e..0abbe4c13e58 100644 --- a/cli/lib/util.js +++ b/cli/lib/util.js @@ -467,7 +467,7 @@ const util = { async function _getRealArch () { const osPlatform = os.platform() - // eslint-disable-next-line no-restricted-syntax + const osArch = os.arch() debug('detecting arch %o', { osPlatform, osArch }) @@ -492,7 +492,6 @@ const util = { if (['aarch64_be', 'aarch64', 'armv8b', 'armv8l'].includes(stdout)) return 'arm64' } - // eslint-disable-next-line no-restricted-syntax const pkgArch = arch() if (pkgArch === 'x86') return 'ia32' diff --git a/cli/scripts/clean.js b/cli/scripts/clean.js index 406d3b225aa4..871bc19bae59 100644 --- a/cli/scripts/clean.js +++ b/cli/scripts/clean.js @@ -2,10 +2,12 @@ const fs = require('fs-extra') const path = require('path') const { includeTypes } = require('./utils') +// eslint-disable-next-line no-restricted-syntax fs.removeSync(path.join(__dirname, '..', 'build')) includeTypes.forEach((folder) => { try { + // eslint-disable-next-line no-restricted-syntax fs.removeSync(path.join(__dirname, '..', 'types', folder)) } catch (e) { // diff --git a/cli/scripts/post-install.js b/cli/scripts/post-install.js index fdc4c6d947a5..08b822f49213 100644 --- a/cli/scripts/post-install.js +++ b/cli/scripts/post-install.js @@ -19,12 +19,12 @@ shell.set('-e') // any error is fatal // This ensures that globals like Cypress.$, Cypress._ etc are property typed // yet we do not install "@types/.." packages with "npm install cypress" // because they can conflict with user's own libraries - +// eslint-disable-next-line no-restricted-syntax fs.ensureDirSync(join(__dirname, '..', 'types')) includeTypes.forEach((folder) => { const source = resolvePkg(`@types/${folder}`, { cwd: __dirname }) - + // eslint-disable-next-line no-restricted-syntax fs.copySync(source, join(__dirname, '..', 'types', folder)) }) @@ -75,6 +75,7 @@ shell.sed('-i', 'from \'sinon\';', 'from \'../sinon\';', sinonChaiFilename) // copy experimental network stubbing type definitions // so users can import: `import 'cypress/types/net-stubbing'` +// eslint-disable-next-line no-restricted-syntax fs.copySync(resolvePkg('@packages/net-stubbing/lib/external-types.ts'), 'types/net-stubbing.d.ts') // https://github.com/cypress-io/cypress/issues/18069 @@ -90,11 +91,12 @@ const filesToUncomment = [ filesToUncomment.forEach((file) => { const filePath = join(__dirname, '../types', file) + // eslint-disable-next-line no-restricted-syntax const str = fs.readFileSync(filePath).toString() const result = str.split('\n').map((line) => { return line.startsWith('//z ') ? line.substring(4) : line }).join('\n') - + // eslint-disable-next-line no-restricted-syntax fs.writeFileSync(filePath, result) }) diff --git a/cli/test/lib/tasks/download_spec.js b/cli/test/lib/tasks/download_spec.js index b808492e0389..759c7adbdbe3 100644 --- a/cli/test/lib/tasks/download_spec.js +++ b/cli/test/lib/tasks/download_spec.js @@ -186,6 +186,7 @@ describe('lib/tasks/download', function () { context('verify downloaded file', function () { before(function () { this.expectedChecksum = hasha.fromFileSync(examplePath) + // eslint-disable-next-line no-restricted-syntax this.expectedFileSize = fs.statSync(examplePath).size this.onProgress = sinon.stub().returns(undefined) debug('example file %s should have checksum %s and file size %d', diff --git a/cli/test/lib/tasks/verify_spec.js b/cli/test/lib/tasks/verify_spec.js index 78a8272eec37..5fa96d5e947f 100644 --- a/cli/test/lib/tasks/verify_spec.js +++ b/cli/test/lib/tasks/verify_spec.js @@ -31,8 +31,6 @@ const DEFAULT_VERIFY_TIMEOUT = 30000 let stdout let spawnedProcess -/* eslint-disable no-octal */ - context('lib/tasks/verify', () => { require('mocha-banner').register() diff --git a/cli/test/spec_helper.js b/cli/test/spec_helper.js index 41ff9d6e8b12..0118c7c46b0c 100644 --- a/cli/test/spec_helper.js +++ b/cli/test/spec_helper.js @@ -69,7 +69,6 @@ function throwIfFnNotStubbed (stub, method) { const $stub = sinon.stub sinon.stub = function (obj, method) { - /* eslint-disable prefer-rest-params */ const stub = $stub.apply(this, arguments) let fns = [method] diff --git a/cli/test/support/stdout.js b/cli/test/support/stdout.js index e6372856873f..b4b34c4861a1 100644 --- a/cli/test/support/stdout.js +++ b/cli/test/support/stdout.js @@ -9,7 +9,6 @@ module.exports = { process.stdout.write = function (str) { logs.push(str) - /* eslint-disable prefer-rest-params */ write.apply(this, arguments) } From d7bac786f2bfe17b1887c338dae559d17279c043 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 17:16:10 -0500 Subject: [PATCH 036/113] new linting for packages/app --- eslint.config.ts | 26 +++++++++++++++++++ packages/app/cypress/e2e/run-all-specs.cy.ts | 1 + .../e2e/runner/reporter-ct-mount-hover.cy.ts | 2 +- .../runner/runner-ct.justInTimeCompile.cy.ts | 2 +- .../e2e/specs_list_actual_git_repo.cy.ts | 2 ++ .../cypress/e2e/specs_list_latest_runs.cy.ts | 6 ++--- .../cypress/e2e/specs_list_no_git_repo.cy.ts | 1 + packages/app/cypress/tasks/git.ts | 3 +++ packages/app/cypress/tasks/mochaEvents.ts | 3 +++ packages/app/eslint.config.ts | 22 ++++++++++++++++ packages/app/package.json | 2 +- packages/app/src/components/FileMatch.cy.tsx | 2 +- .../app/src/composables/useTestingType.cy.tsx | 2 +- .../app/src/debug/DebugArtifactLink.cy.tsx | 2 +- packages/app/src/debug/DebugRunNavigation.vue | 2 +- packages/app/src/debug/DebugSpec.cy.tsx | 14 +++++----- packages/app/src/debug/DebugSpec.vue | 4 +-- .../app/src/debug/GroupedDebugFailedTest.vue | 2 +- packages/app/src/debug/StatsMetadata.vue | 2 +- packages/app/src/debug/utils/DebugMapping.ts | 6 ++--- .../src/navigation/SidebarNavigation.cy.tsx | 2 +- packages/app/src/pages/Debug.vue | 2 +- packages/app/src/paths.ts | 5 ++-- packages/app/src/runner/ResizablePanels.vue | 2 +- packages/app/src/runner/aut-iframe.ts | 2 +- packages/app/src/runner/event-manager.ts | 3 +-- .../app/src/runner/events/capture-protocol.ts | 2 +- .../src/runner/studio/AssertionsMenu.ce.vue | 1 + packages/app/src/runs/RunCard.vue | 22 ++++++++-------- packages/app/src/runs/RunsLayout.vue | 2 +- packages/app/src/runs/useGitTreeRuns.ts | 2 +- .../src/settings/project/projectSettings.ts | 2 +- .../project/renderers/RenderPrimitive.vue | 2 +- .../renderers/RendererPrimitive.cy.tsx | 2 +- packages/app/src/specs/HighlightedText.vue | 2 +- packages/app/src/specs/InlineSpecList.cy.tsx | 2 +- .../app/src/specs/InlineSpecListHeader.cy.tsx | 2 +- .../app/src/specs/SpecsListRunWatcher.vue | 2 +- .../generators/ExpandableFileChooser.vue | 1 - .../specs/generators/ExpandableFileList.vue | 2 +- .../app/src/specs/generators/FileChooser.vue | 1 - packages/app/src/specs/spec-utils.ts | 2 +- .../app/src/specs/tree/useCollapsibleTree.ts | 10 +++---- .../specs/tree/useVirtualListNavigation.ts | 2 +- 44 files changed, 119 insertions(+), 64 deletions(-) create mode 100644 packages/app/eslint.config.ts diff --git a/eslint.config.ts b/eslint.config.ts index 2b706840245e..d2c0c0d87d62 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -25,6 +25,16 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'arrowParens': true, }), + // set up ts parser + { + files: ['**/*.{ts,js,jsx,vue}'], + languageOptions: { + parserOptions: { + parser: ts.parser, + }, + }, + }, + // overrides for stylistic rules { rules: { @@ -43,6 +53,16 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ '@stylistic/indent-binary-ops': 'off', '@stylistic/template-curly-spacing': 'off', '@stylistic/no-mixed-operators': 'off', + '@stylistic/jsx-tag-spacing': 'off', + '@stylistic/jsx-function-call-newline': 'off', + '@stylistic/jsx-wrap-multilines': 'off', + '@stylistic/jsx-closing-tag-location': 'off', + '@stylistic/jsx-first-prop-new-line': 'off', + '@stylistic/jsx-closing-bracket-location': 'off', + '@stylistic/jsx-one-expression-per-line': 'off', + '@stylistic/jsx-max-props-per-line': 'off', + '@stylistic/jsx-curly-brace-presence': 'off', + '@stylistic/jsx-quotes': 'off', }, }, @@ -87,6 +107,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'no-global-assign': 'off', 'no-unsafe-finally': 'off', 'no-async-promise-executor': 'off', + 'no-unsafe-optional-chaining': 'off', '@typescript-eslint/no-unused-expressions': 'off', '@typescript-eslint/no-require-imports': 'off', @@ -102,10 +123,15 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'vue/multi-word-component-names': 'off', 'vue/html-closing-bracket-spacing': 'off', + 'vue/no-dupe-keys': 'off', + 'vue/v-on-event-hyphenation': 'off', + 'vue/attribute-hyphenation': 'off', + 'vue/no-useless-template-attributes': 'off', 'cypress/no-unnecessary-waiting': 'off', 'cypress/unsafe-to-chain-command': 'off', 'cypress/no-async-tests': 'off', + 'cypress/no-assigning-return-values': 'warn', }, }, diff --git a/packages/app/cypress/e2e/run-all-specs.cy.ts b/packages/app/cypress/e2e/run-all-specs.cy.ts index d5f17c82eb23..a1e6f827335b 100644 --- a/packages/app/cypress/e2e/run-all-specs.cy.ts +++ b/packages/app/cypress/e2e/run-all-specs.cy.ts @@ -18,6 +18,7 @@ describe('run-all-specs', () => { return cy.findByTestId('run-all-specs-for-all').click() } + // eslint-disable cypress/no-assigning-return-values const command = cy.get('[data-cy=spec-item-directory]').contains(platformDir) return command.realHover().then(() => { diff --git a/packages/app/cypress/e2e/runner/reporter-ct-mount-hover.cy.ts b/packages/app/cypress/e2e/runner/reporter-ct-mount-hover.cy.ts index ded41c185eeb..7ae3afd18417 100644 --- a/packages/app/cypress/e2e/runner/reporter-ct-mount-hover.cy.ts +++ b/packages/app/cypress/e2e/runner/reporter-ct-mount-hover.cy.ts @@ -2,7 +2,7 @@ import type { fixtureDirs } from '@tooling/system-tests' type ProjectDirs = typeof fixtureDirs -const PROJECTS: {projectName: ProjectDirs[number], test: string}[] = [ +const PROJECTS: { projectName: ProjectDirs[number], test: string }[] = [ { projectName: 'angular-19', test: 'app.component' }, { projectName: 'react-vite-ts-configured', test: 'App.cy' }, { projectName: 'react18', test: 'App.cy' }, diff --git a/packages/app/cypress/e2e/runner/runner-ct.justInTimeCompile.cy.ts b/packages/app/cypress/e2e/runner/runner-ct.justInTimeCompile.cy.ts index 1e003516c0e7..6cab0b46132a 100644 --- a/packages/app/cypress/e2e/runner/runner-ct.justInTimeCompile.cy.ts +++ b/packages/app/cypress/e2e/runner/runner-ct.justInTimeCompile.cy.ts @@ -4,7 +4,7 @@ type ProjectDirs = typeof fixtureDirs const JIT_DIR: ProjectDirs[number] = 'justInTimeCompile' -const PROJECTS: {bundler: 'vite' | 'webpack'}[] = [ +const PROJECTS: { bundler: 'vite' | 'webpack' }[] = [ // when running for vite, justInTimeCompile=true is set but is a no-op for vite since JIT compiling is not supported in vite { bundler: 'vite' }, { bundler: 'webpack' }, diff --git a/packages/app/cypress/e2e/specs_list_actual_git_repo.cy.ts b/packages/app/cypress/e2e/specs_list_actual_git_repo.cy.ts index 593db486e42b..7fcc362c59ce 100644 --- a/packages/app/cypress/e2e/specs_list_actual_git_repo.cy.ts +++ b/packages/app/cypress/e2e/specs_list_actual_git_repo.cy.ts @@ -54,6 +54,7 @@ describe('Spec List - Last updated with git info', () => { .trigger('mouseleave') cy.withCtx((ctx) => { + // eslint-disable-next-line no-restricted-syntax ctx.fs.appendFileSync( ctx.path.join(ctx.currentProject!, 'cypress', 'e2e', 'dom-container.spec.js'), '// modifying the spec.', @@ -74,6 +75,7 @@ describe('Spec List - Last updated with git info', () => { .trigger('mouseleave') cy.withCtx((ctx) => { + // eslint-disable-next-line no-restricted-syntax ctx.fs.appendFileSync( ctx.path.join(ctx.currentProject!, 'cypress', 'e2e', 'foo.spec.js'), '// modifying the spec.', diff --git a/packages/app/cypress/e2e/specs_list_latest_runs.cy.ts b/packages/app/cypress/e2e/specs_list_latest_runs.cy.ts index 80923b676e9a..ca7753a40fdf 100644 --- a/packages/app/cypress/e2e/specs_list_latest_runs.cy.ts +++ b/packages/app/cypress/e2e/specs_list_latest_runs.cy.ts @@ -5,7 +5,7 @@ function specRowSelector (specFileName: string) { return `[data-cy-row="${specFileName}"]` } -function dotSelector (specFileName: string, dotNumber: 0 | 1 | 2 |'latest') { +function dotSelector (specFileName: string, dotNumber: 0 | 1 | 2 | 'latest') { return `${specRowSelector(specFileName)} [data-cy="run-status-dot-${dotNumber}"]` } @@ -44,10 +44,10 @@ function validateTooltip (status: string) { }) } -function specShouldShow (specFileName: string, runDotsClasses: string[], latestRunStatus: CloudRunStatus|'PLACEHOLDER') { +function specShouldShow (specFileName: string, runDotsClasses: string[], latestRunStatus: CloudRunStatus | 'PLACEHOLDER') { const latestStatusSpinning = latestRunStatus === 'RUNNING' - type dotIndex = Parameters[1]; + type dotIndex = Parameters[1] const indexes: Exclude[] = [0, 1, 2] indexes.forEach((i) => { diff --git a/packages/app/cypress/e2e/specs_list_no_git_repo.cy.ts b/packages/app/cypress/e2e/specs_list_no_git_repo.cy.ts index 7a9e55c0f682..0107c00b9bc1 100644 --- a/packages/app/cypress/e2e/specs_list_no_git_repo.cy.ts +++ b/packages/app/cypress/e2e/specs_list_no_git_repo.cy.ts @@ -13,6 +13,7 @@ describe('Spec List - Last updated with no git info', () => { .should('not.exist') cy.withCtx((ctx) => { + // eslint-disable-next-line no-restricted-syntax ctx.fs.appendFileSync( ctx.path.join(ctx.currentProject!, 'cypress', 'e2e', 'blank-contents.spec.js'), '// touching the spec.', diff --git a/packages/app/cypress/tasks/git.ts b/packages/app/cypress/tasks/git.ts index 9500c47a6108..b283fceea721 100644 --- a/packages/app/cypress/tasks/git.ts +++ b/packages/app/cypress/tasks/git.ts @@ -14,6 +14,7 @@ export async function initGitRepoForTestProject (projectPath: string) { } const e2eFolder = path.join(projectPath, 'cypress', 'e2e') + // eslint-disable-next-line no-restricted-syntax const allSpecs = fs.readdirSync(e2eFolder) await git.init() @@ -25,7 +26,9 @@ export async function initGitRepoForTestProject (projectPath: string) { const fooSpec = path.join(e2eFolder, 'foo.spec.js') const blankContentsSpec = path.join(e2eFolder, 'blank-contents.spec.js') + // eslint-disable-next-line no-restricted-syntax fs.createFileSync(fooSpec) + // eslint-disable-next-line no-restricted-syntax fs.writeFileSync(blankContentsSpec, 'it(\'modifies the file\', () => {})') return null diff --git a/packages/app/cypress/tasks/mochaEvents.ts b/packages/app/cypress/tasks/mochaEvents.ts index 99d6598e05d4..1da7c0f43c2b 100644 --- a/packages/app/cypress/tasks/mochaEvents.ts +++ b/packages/app/cypress/tasks/mochaEvents.ts @@ -6,7 +6,9 @@ const snapshotFile = (filename: string) => path.join(__dirname, '..', 'e2e', 'ru export const writeMochaEventSnapshot = ({ filename, snapshots }) => { const jsonFile = snapshotFile(filename) + // eslint-disable-next-line no-restricted-syntax fs.ensureFileSync(jsonFile) + // eslint-disable-next-line no-restricted-syntax fs.writeFileSync(jsonFile, JSON.stringify(snapshots, null, 2)) return null @@ -19,5 +21,6 @@ export const readMochaEventSnapshot = ({ filename }) => { return null } + // eslint-disable-next-line no-restricted-syntax return fs.readJsonSync(jsonFile) } diff --git a/packages/app/eslint.config.ts b/packages/app/eslint.config.ts new file mode 100644 index 000000000000..ac977c2fbfc3 --- /dev/null +++ b/packages/app/eslint.config.ts @@ -0,0 +1,22 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' + +export default [ + ...baseConfig, + { + files: ['**/*.{tsx,jsx,vue,ts,js'], + languageOptions: { + globals: { + ...globals.browser, + }, + }, + }, + { + files: ['vite.config.mjs'], + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, +] diff --git a/packages/app/package.json b/packages/app/package.json index bc84d3851d03..884ab7fbdca0 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -14,7 +14,7 @@ "cypress:run:e2e": "yarn cypress:run-cypress-in-cypress node ../../scripts/cypress run --project .", "cypress:run:e2e:update:snapshots": "CYPRESS_SNAPSHOT_UPDATE=1 yarn cypress:run-cypress-in-cypress node ../../scripts/cypress run --project . --spec **/*mochaEvents* --browser chrome", "dev": "yarn cypress:run-cypress-in-cypress gulp dev --project .", - "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json, .", + "lint": "eslint .", "start": "echo \"run 'yarn dev' or 'yarn watch' from the root\" && exit 1", "test": "echo 'ok'", "watch": "echo \"run 'yarn dev' or 'yarn watch' from the root\" && exit 1" diff --git a/packages/app/src/components/FileMatch.cy.tsx b/packages/app/src/components/FileMatch.cy.tsx index fc9cd872d48e..81d5b1f84f52 100644 --- a/packages/app/src/components/FileMatch.cy.tsx +++ b/packages/app/src/components/FileMatch.cy.tsx @@ -155,7 +155,7 @@ describe('', { viewportWidth: 600, viewportHeight: 300 }, () => { /*---------- Fixtures ----------*/ // Matches const total = 10 - const matchesData: Record = { + const matchesData: Record = { all: [ { matches: { found: 10, total } }, '10 matches', diff --git a/packages/app/src/composables/useTestingType.cy.tsx b/packages/app/src/composables/useTestingType.cy.tsx index 289e4cc2b169..caff193f6bd0 100644 --- a/packages/app/src/composables/useTestingType.cy.tsx +++ b/packages/app/src/composables/useTestingType.cy.tsx @@ -5,7 +5,7 @@ import type { FunctionalComponent } from 'vue' describe('useTestingType', () => { type ComposableWrapperProps = { useComposable: () => R, callback: (result: R) => void } - const ComposableWrapper: FunctionalComponent> = ({ useComposable, callback }: ComposableWrapperProps) => { + const ComposableWrapper: FunctionalComponent> = ({ useComposable, callback }: ComposableWrapperProps) => { const result = useComposable() callback(result) diff --git a/packages/app/src/debug/DebugArtifactLink.cy.tsx b/packages/app/src/debug/DebugArtifactLink.cy.tsx index c6f3732fead0..a9c74eac428b 100644 --- a/packages/app/src/debug/DebugArtifactLink.cy.tsx +++ b/packages/app/src/debug/DebugArtifactLink.cy.tsx @@ -2,7 +2,7 @@ import DebugArtifactLink from './DebugArtifactLink.vue' import type { ArtifactType } from './utils/debugArtifacts' describe('', () => { - const artifactMapping: {icon: ArtifactType, text: string, url: string}[] = [ + const artifactMapping: { icon: ArtifactType, text: string, url: string }[] = [ { icon: 'TERMINAL_LOG', text: 'View Log', url: 'www.cypress.io' }, { icon: 'IMAGE_SCREENSHOT', text: 'View Screenshot', url: 'cloud.cypress.io' }, { icon: 'PLAY', text: 'View Video', url: 'www.cypress.io' }, diff --git a/packages/app/src/debug/DebugRunNavigation.vue b/packages/app/src/debug/DebugRunNavigation.vue index 7bd9be4e92d2..c18fd07ddef1 100644 --- a/packages/app/src/debug/DebugRunNavigation.vue +++ b/packages/app/src/debug/DebugRunNavigation.vue @@ -237,7 +237,7 @@ const groupByCommit = computed(() => { mapped[props.currentCommitInfo.sha] = props.currentCommitInfo } - const result = Object.keys(grouped).reduce>((acc, curr) => { + const result = Object.keys(grouped).reduce>((acc, curr) => { acc[curr] = { sha: curr, message: grouped[curr][0].commitInfo?.summary, diff --git a/packages/app/src/debug/DebugSpec.cy.tsx b/packages/app/src/debug/DebugSpec.cy.tsx index 0520035be8db..3b47a67beaa3 100644 --- a/packages/app/src/debug/DebugSpec.cy.tsx +++ b/packages/app/src/debug/DebugSpec.cy.tsx @@ -8,7 +8,7 @@ const resultCounts = (min: number, max: number) => { } } -const multipleGroups: {[groupId: string]: any} = { +const multipleGroups: { [groupId: string]: any } = { '123': { os: { name: 'Linux', @@ -35,7 +35,7 @@ const multipleGroups: {[groupId: string]: any} = { }, } -const singleGroup: {[groupId: string]: any} = { +const singleGroup: { [groupId: string]: any } = { '123': { os: { name: 'Linux', @@ -50,7 +50,7 @@ const singleGroup: {[groupId: string]: any} = { }, } -const testResultMultipleGroups: {[thumbprint: string]: TestResults[]} = { +const testResultMultipleGroups: { [thumbprint: string]: TestResults[] } = { 'abcd': [ { id: '676df87878', @@ -123,7 +123,7 @@ const testResultMultipleGroups: {[thumbprint: string]: TestResults[]} = { ], } -const testResultSingleGroup: {[thumbprint: string]: TestResults[]} = { +const testResultSingleGroup: { [thumbprint: string]: TestResults[] } = { 'abcd': [ { id: '676df87878', @@ -270,7 +270,7 @@ describe(' responsive UI', () => { }, } - const testResult: {[thumbprint: string]: TestResults[]} = { + const testResult: { [thumbprint: string]: TestResults[] } = { 'abcd': [ { id: '676df87878', @@ -378,7 +378,7 @@ describe('testing groupings', () => { }, } - const repeatedValueGroups: {[groupId: string]: any} = { + const repeatedValueGroups: { [groupId: string]: any } = { '456': { os: { name: 'Apple', @@ -405,7 +405,7 @@ describe('testing groupings', () => { }, } - const tests: {[thumbprint: string]: TestResults[]} = { + const tests: { [thumbprint: string]: TestResults[] } = { 'abcd': [ { id: '676df87878', diff --git a/packages/app/src/debug/DebugSpec.vue b/packages/app/src/debug/DebugSpec.vue index 61aa90af937a..df0ba94ce398 100644 --- a/packages/app/src/debug/DebugSpec.vue +++ b/packages/app/src/debug/DebugSpec.vue @@ -256,8 +256,8 @@ const { t } = useI18n() const props = defineProps<{ spec: Spec - testResults: {[thumbprint: string]: TestResults[]} - groups: {[groupId: string]: StatsMetadata_GroupsFragment } + testResults: { [thumbprint: string]: TestResults[] } + groups: { [groupId: string]: StatsMetadata_GroupsFragment } testingType: TestingTypeEnum foundLocally: boolean matchesCurrentTestingType: boolean diff --git a/packages/app/src/debug/GroupedDebugFailedTest.vue b/packages/app/src/debug/GroupedDebugFailedTest.vue index c19df850a6a2..97fbbd4562b1 100644 --- a/packages/app/src/debug/GroupedDebugFailedTest.vue +++ b/packages/app/src/debug/GroupedDebugFailedTest.vue @@ -53,7 +53,7 @@ const props = defineProps<{ const { t } = useI18n() const debugArtifacts = computed(() => { - return props.failedTests.reduce<{[groupID: string]: DebugArtifact[] }>((acc, curr) => { + return props.failedTests.reduce<{ [groupID: string]: DebugArtifact[] }>((acc, curr) => { acc[curr.instance?.groupId ?? ''] = getDebugArtifacts(curr.instance, t) return acc diff --git a/packages/app/src/debug/StatsMetadata.vue b/packages/app/src/debug/StatsMetadata.vue index c61edb1db0be..6903db67c738 100644 --- a/packages/app/src/debug/StatsMetadata.vue +++ b/packages/app/src/debug/StatsMetadata.vue @@ -127,7 +127,7 @@ const results = computed(() => { }) const arrMapping = computed(() => { - const acc: {browsers: string[], oses: string[], firstBrowser: string, firstOs: string} = { browsers: [], oses: [], firstBrowser: '', firstOs: '' } + const acc: { browsers: string[], oses: string[], firstBrowser: string, firstOs: string } = { browsers: [], oses: [], firstBrowser: '', firstOs: '' } const uniqueBrowsers = new Set() const uniqueOSes = new Set() diff --git a/packages/app/src/debug/utils/DebugMapping.ts b/packages/app/src/debug/utils/DebugMapping.ts index cbd8627dd6f9..996ffd7121cb 100644 --- a/packages/app/src/debug/utils/DebugMapping.ts +++ b/packages/app/src/debug/utils/DebugMapping.ts @@ -20,9 +20,9 @@ export type CloudDebugSpec = { export const specsList = ({ specs, tests, localSpecs, currentTestingType, groups }: DebugSpecsArgs): CloudDebugSpec[] => { const localSpecsSet = new Set(localSpecs.map(((spec) => posixify(spec.relative)))) - const groupsMap = groups.reduce<{[id: string]: DebugSpecListGroupsFragment}>((acc, group) => ({ ...acc, [group.id]: group }), {}) + const groupsMap = groups.reduce<{ [id: string]: DebugSpecListGroupsFragment }>((acc, group) => ({ ...acc, [group.id]: group }), {}) - const mappedTests = tests.reduce<{[id: string]: CloudDebugSpec}>((acc, curr) => { + const mappedTests = tests.reduce<{ [id: string]: CloudDebugSpec }>((acc, curr) => { let debugResult = acc[curr.specId] if (!debugResult) { @@ -34,7 +34,7 @@ export const specsList = ({ specs, tests, localSpecs, currentTestingType, groups throw new Error(`Could not find spec for id ${ curr.specId}`) } - const groupsMapping = (foundSpec.groupIds || []).reduce<{[grpId: string]: DebugSpecListGroupsFragment}>((acc, id) => { + const groupsMapping = (foundSpec.groupIds || []).reduce<{ [grpId: string]: DebugSpecListGroupsFragment }>((acc, id) => { if (id) { acc[id] = groupsMap[id] } diff --git a/packages/app/src/navigation/SidebarNavigation.cy.tsx b/packages/app/src/navigation/SidebarNavigation.cy.tsx index b72051c03077..46618f80dca8 100644 --- a/packages/app/src/navigation/SidebarNavigation.cy.tsx +++ b/packages/app/src/navigation/SidebarNavigation.cy.tsx @@ -5,7 +5,7 @@ import { CloudRunStubs } from '@packages/graphql/test/stubCloudTypes' import { cloneDeep } from 'lodash' import { useUserProjectStatusStore } from '@packages/frontend-shared/src/store/user-project-status-store' -function mountComponent (props: { initialNavExpandedVal?: boolean, cloudProject?: { status: CloudRunStatus, numFailedTests: number }, latestCloudProject?: { status: CloudRunStatus, numFailedTests: number }, isLoading?: boolean, online?: boolean} = {}) { +function mountComponent (props: { initialNavExpandedVal?: boolean, cloudProject?: { status: CloudRunStatus, numFailedTests: number }, latestCloudProject?: { status: CloudRunStatus, numFailedTests: number }, isLoading?: boolean, online?: boolean } = {}) { const withDefaults = { initialNavExpandedVal: false, isLoading: false, online: true, ...props } let _gql: SidebarNavigationFragment diff --git a/packages/app/src/pages/Debug.vue b/packages/app/src/pages/Debug.vue index 960792e4c63d..d09971152ecf 100644 --- a/packages/app/src/pages/Debug.vue +++ b/packages/app/src/pages/Debug.vue @@ -36,7 +36,7 @@ subscription Debug_specsChange { } ` -gql ` +gql` query Debug($runNumber: Int!, $commitShas: [String!]!) { ...DebugSpecs } diff --git a/packages/app/src/paths.ts b/packages/app/src/paths.ts index 1c889ca8fbf1..39010723e441 100644 --- a/packages/app/src/paths.ts +++ b/packages/app/src/paths.ts @@ -1,9 +1,8 @@ -/* eslint-disable no-redeclare */ import { decodeBase64Unicode } from '@packages/frontend-shared/src/utils/base64' -export function getPathForPlatform(): null +export function getPathForPlatform (): null -export function getPathForPlatform(posixPath: string): string +export function getPathForPlatform (posixPath: string): string export function getPathForPlatform (posixPath?: string) { if (!posixPath) { diff --git a/packages/app/src/runner/ResizablePanels.vue b/packages/app/src/runner/ResizablePanels.vue index 288adccfe92c..f546c11de47d 100644 --- a/packages/app/src/runner/ResizablePanels.vue +++ b/packages/app/src/runner/ResizablePanels.vue @@ -93,7 +93,7 @@ const props = withDefaults(defineProps<{ const emit = defineEmits<{ (e: 'resizeEnd', value: DraggablePanel): void - (e: 'panelWidthUpdated', value: {panel: DraggablePanel, width: number}): void + (e: 'panelWidthUpdated', value: { panel: DraggablePanel, width: number }): void }>() const panel1HandleX = ref(props.initialPanel1Width) diff --git a/packages/app/src/runner/aut-iframe.ts b/packages/app/src/runner/aut-iframe.ts index c73aff2da0a3..e52debb2cbb9 100644 --- a/packages/app/src/runner/aut-iframe.ts +++ b/packages/app/src/runner/aut-iframe.ts @@ -2,7 +2,7 @@ import { useSelectorPlaygroundStore } from '../store/selector-playground-store' import { blankContents } from '../components/Blank' import { logger } from './logger' import _ from 'lodash' -/* eslint-disable no-duplicate-imports */ + import type { DebouncedFunc } from 'lodash' import { useStudioStore } from '../store/studio-store' import { getElementDimensions, setOffset } from './dimensions' diff --git a/packages/app/src/runner/event-manager.ts b/packages/app/src/runner/event-manager.ts index ea8585fef3ad..15badc89466d 100644 --- a/packages/app/src/runner/event-manager.ts +++ b/packages/app/src/runner/event-manager.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-dupe-class-members */ import Bluebird from 'bluebird' import { EventEmitter } from 'events' import type { MobxRunnerStore } from '@packages/app/src/store/mobx-runner-store' @@ -32,7 +31,7 @@ let crossOriginOnMessageRef = ({ data, source }: MessageEvent<{ }>) => { return undefined } -let crossOriginLogs: {[key: string]: Cypress.Log} = {} +let crossOriginLogs: { [key: string]: Cypress.Log } = {} let hasMochaRunEnded: boolean = false interface AddGlobalListenerOptions { diff --git a/packages/app/src/runner/events/capture-protocol.ts b/packages/app/src/runner/events/capture-protocol.ts index 3559cf291c38..80bf35dc461e 100644 --- a/packages/app/src/runner/events/capture-protocol.ts +++ b/packages/app/src/runner/events/capture-protocol.ts @@ -1,5 +1,5 @@ type ProtocolInfo = { - type: 'cy:protocol-snapshot' | 'log:added' | 'log:changed' | 'page:loading'| 'test:before:run:async' | 'test:before:after:run:async' | 'test:after:run:async' | 'url:changed' | 'viewport:changed' + type: 'cy:protocol-snapshot' | 'log:added' | 'log:changed' | 'page:loading' | 'test:before:run:async' | 'test:before:after:run:async' | 'test:after:run:async' | 'url:changed' | 'viewport:changed' timestamp: DOMHighResTimeStamp } diff --git a/packages/app/src/runner/studio/AssertionsMenu.ce.vue b/packages/app/src/runner/studio/AssertionsMenu.ce.vue index 6ce79f6b9602..e7fc86e74c1e 100644 --- a/packages/app/src/runner/studio/AssertionsMenu.ce.vue +++ b/packages/app/src/runner/studio/AssertionsMenu.ce.vue @@ -52,6 +52,7 @@ import { nextTick, onMounted, Ref, ref, StyleValue } from 'vue' import type { PossibleAssertions, AddAssertion, AssertionArgs } from './types' const props = defineProps <{ + // eslint-disable-next-line no-undef jqueryElement: JQuery possibleAssertions: PossibleAssertions addAssertion: AddAssertion diff --git a/packages/app/src/runs/RunCard.vue b/packages/app/src/runs/RunCard.vue index 1dac4f95d8a6..6e1007d4ebd3 100644 --- a/packages/app/src/runs/RunCard.vue +++ b/packages/app/src/runs/RunCard.vue @@ -162,9 +162,9 @@ const { t } = useI18n() gql` fragment RunCard on CloudRun { - id - createdAt - status + id + createdAt + status totalDuration url runNumber @@ -172,14 +172,14 @@ fragment RunCard on CloudRun { id name } - ...RunResults - commitInfo { - authorName - authorEmail - summary - branch - sha - } + ...RunResults + commitInfo { + authorName + authorEmail + summary + branch + sha + } } ` diff --git a/packages/app/src/runs/RunsLayout.vue b/packages/app/src/runs/RunsLayout.vue index f944d4419690..3fe63d7ba334 100644 --- a/packages/app/src/runs/RunsLayout.vue +++ b/packages/app/src/runs/RunsLayout.vue @@ -141,7 +141,7 @@ const groupByCommit = computed(() => { mapped[props.currentCommitInfo.sha] = props.currentCommitInfo } - const result = Object.keys(grouped).reduce>((acc, curr) => { + const result = Object.keys(grouped).reduce>((acc, curr) => { acc[curr] = { sha: curr, message: grouped[curr][0].commitInfo?.summary, diff --git a/packages/app/src/runs/useGitTreeRuns.ts b/packages/app/src/runs/useGitTreeRuns.ts index 5a4eb6ff919f..430afcfadff8 100644 --- a/packages/app/src/runs/useGitTreeRuns.ts +++ b/packages/app/src/runs/useGitTreeRuns.ts @@ -10,7 +10,7 @@ gql` } ` -gql ` +gql` fragment RunsGitTreeProject on Query { ...RunsErrorRenderer currentProject { diff --git a/packages/app/src/settings/project/projectSettings.ts b/packages/app/src/settings/project/projectSettings.ts index 317d5cc33bc7..8e9b443576b2 100644 --- a/packages/app/src/settings/project/projectSettings.ts +++ b/packages/app/src/settings/project/projectSettings.ts @@ -17,6 +17,6 @@ export interface Experiment { export type CypressResolvedConfig = Array<{ field: string - from: 'default'| 'config' | 'plugin' | 'env' + from: 'default' | 'config' | 'plugin' | 'env' value: string | number | boolean | Record | Array }> diff --git a/packages/app/src/settings/project/renderers/RenderPrimitive.vue b/packages/app/src/settings/project/renderers/RenderPrimitive.vue index 2bc9a6f89026..852ca834cb70 100644 --- a/packages/app/src/settings/project/renderers/RenderPrimitive.vue +++ b/packages/app/src/settings/project/renderers/RenderPrimitive.vue @@ -20,7 +20,7 @@ import Tooltip from '@packages/frontend-shared/src/components/Tooltip.vue' import { computed } from 'vue' const props = defineProps<{ - value?: string | number| null + value?: string | number | null from: string class?: string }>() diff --git a/packages/app/src/settings/project/renderers/RendererPrimitive.cy.tsx b/packages/app/src/settings/project/renderers/RendererPrimitive.cy.tsx index c2badda615ec..e0e91427b791 100644 --- a/packages/app/src/settings/project/renderers/RendererPrimitive.cy.tsx +++ b/packages/app/src/settings/project/renderers/RendererPrimitive.cy.tsx @@ -1,7 +1,7 @@ import { CONFIG_LEGEND_COLOR_MAP } from '../ConfigSourceColors' import RenderPrimitive from './RenderPrimitive.vue' -function mountWithPrimitive (value: string| number | null, from: string) { +function mountWithPrimitive (value: string | number | null, from: string) { cy.mount(() => { return (
diff --git a/packages/app/src/specs/HighlightedText.vue b/packages/app/src/specs/HighlightedText.vue index 020bc67fef4a..9e4809992a24 100644 --- a/packages/app/src/specs/HighlightedText.vue +++ b/packages/app/src/specs/HighlightedText.vue @@ -21,7 +21,7 @@ import { computed } from 'vue' const props = withDefaults( - defineProps<{text: string, indexes: number[], highlightClasses?: string}>(), + defineProps<{ text: string, indexes: number[], highlightClasses?: string }>(), { text: '', indexes: () => [], highlightClasses: 'text-white' }, ) diff --git a/packages/app/src/specs/InlineSpecList.cy.tsx b/packages/app/src/specs/InlineSpecList.cy.tsx index 31a0b2731c2d..ac8da6fd3f7c 100644 --- a/packages/app/src/specs/InlineSpecList.cy.tsx +++ b/packages/app/src/specs/InlineSpecList.cy.tsx @@ -5,7 +5,7 @@ import { defaultMessages } from '@cy/i18n' let specs: Array = [] describe('InlineSpecList', () => { - const mountInlineSpecList = ({ specFilter, experimentalRunAllSpecs }: {specFilter?: string, experimentalRunAllSpecs?: boolean} = {}) => cy.mountFragment(Specs_InlineSpecListFragmentDoc, { + const mountInlineSpecList = ({ specFilter, experimentalRunAllSpecs }: { specFilter?: string, experimentalRunAllSpecs?: boolean } = {}) => cy.mountFragment(Specs_InlineSpecListFragmentDoc, { onResult: (ctx) => { if (!ctx.currentProject?.specs) { return ctx diff --git a/packages/app/src/specs/InlineSpecListHeader.cy.tsx b/packages/app/src/specs/InlineSpecListHeader.cy.tsx index bbaf88550d6a..555768412652 100644 --- a/packages/app/src/specs/InlineSpecListHeader.cy.tsx +++ b/packages/app/src/specs/InlineSpecListHeader.cy.tsx @@ -4,7 +4,7 @@ import { defaultMessages } from '@cy/i18n' import { defineStore } from 'pinia' describe('InlineSpecListHeader', () => { - const mountWithProps = (props: {resultCount?: number, isRunAllSpecsAllowed?: boolean} = {}) => { + const mountWithProps = (props: { resultCount?: number, isRunAllSpecsAllowed?: boolean } = {}) => { const specFilterModel = ref('') const propsWithDefaults = { diff --git a/packages/app/src/specs/SpecsListRunWatcher.vue b/packages/app/src/specs/SpecsListRunWatcher.vue index eef02c194e9d..aa99491000e9 100644 --- a/packages/app/src/specs/SpecsListRunWatcher.vue +++ b/packages/app/src/specs/SpecsListRunWatcher.vue @@ -26,7 +26,7 @@ subscription SpecsListRunWatcher($id: ID!) { ` const props = defineProps<{ - run: {runId: string, status: CloudRunStatus | null } + run: { runId: string, status: CloudRunStatus | null } }>() const emits = defineEmits<{ diff --git a/packages/app/src/specs/generators/ExpandableFileChooser.vue b/packages/app/src/specs/generators/ExpandableFileChooser.vue index 2618152a5cc5..6c68abc3e7e0 100644 --- a/packages/app/src/specs/generators/ExpandableFileChooser.vue +++ b/packages/app/src/specs/generators/ExpandableFileChooser.vue @@ -98,7 +98,6 @@ const emits = defineEmits<{ (eventName: 'update:extensionPattern', value: string) }>() -// eslint-disable-next-line const initialExtensionPattern = props.extensionPattern const localExtensionPattern = ref(props.extensionPattern) const filePathSearch = ref('') diff --git a/packages/app/src/specs/generators/ExpandableFileList.vue b/packages/app/src/specs/generators/ExpandableFileList.vue index afec6a6f5c67..152be57ad4e2 100644 --- a/packages/app/src/specs/generators/ExpandableFileList.vue +++ b/packages/app/src/specs/generators/ExpandableFileList.vue @@ -70,7 +70,7 @@ defineProps<{ }>() defineEmits<{ - (eventName: 'selectItem', value: {file: FileListItemFragment, item: any}) + (eventName: 'selectItem', value: { file: FileListItemFragment, item: any }) }>() // [...all].vue returns as [ when using the normal fileName diff --git a/packages/app/src/specs/generators/FileChooser.vue b/packages/app/src/specs/generators/FileChooser.vue index 796527ade2cf..1ff279623fc1 100644 --- a/packages/app/src/specs/generators/FileChooser.vue +++ b/packages/app/src/specs/generators/FileChooser.vue @@ -99,7 +99,6 @@ const emits = defineEmits<{ (eventName: 'update:extensionPattern', value: string) }>() -// eslint-disable-next-line const initialExtensionPattern = props.extensionPattern const localExtensionPattern = ref(props.extensionPattern) const filePathSearch = ref('') diff --git a/packages/app/src/specs/spec-utils.ts b/packages/app/src/specs/spec-utils.ts index 8ead50a2c436..e9f7fc8cf2cd 100644 --- a/packages/app/src/specs/spec-utils.ts +++ b/packages/app/src/specs/spec-utils.ts @@ -4,7 +4,7 @@ import { ComputedRef, Ref, ref, watch } from 'vue' import _ from 'lodash' import { FuzzyFoundSpec, getPlatform } from './tree/useCollapsibleTree' -export function fuzzySortSpecs (specs: T[], searchValue: string) { +export function fuzzySortSpecs (specs: T[], searchValue: string) { const normalizedSearchValue = normalizeSpecValue(searchValue) const fuzzySortResult = fuzzySort diff --git a/packages/app/src/specs/tree/useCollapsibleTree.ts b/packages/app/src/specs/tree/useCollapsibleTree.ts index 7770c70164ad..ab67a7c3876c 100644 --- a/packages/app/src/specs/tree/useCollapsibleTree.ts +++ b/packages/app/src/specs/tree/useCollapsibleTree.ts @@ -4,7 +4,7 @@ import { useToggle } from '@vueuse/core' import type { FoundSpec } from '@packages/types/src' import { getRunnerConfigFromWindow } from '../../runner/get-runner-config-from-window' -export type RawNode = { +export type RawNode = { id: string name: string children: RawNode[] @@ -62,7 +62,7 @@ export function buildSpecTree (specs: FoundSpec[], root: Sp // - components // - index.ts // tree (given that src/comp is not collapsed) -function getHighlightIndexes (node: SpecTreeNode) { +function getHighlightIndexes (node: SpecTreeNode) { if (!(node.data as any)?.fuzzyIndexes) { return [] } @@ -135,7 +135,7 @@ function collapseEmptyChildren (node: SpecTreeNode) { return } -export type UseCollapsibleTreeNode > = { +export type UseCollapsibleTreeNode> = { // control open/close state hidden: ComputedRef expanded: Ref @@ -146,7 +146,7 @@ export type UseCollapsibleTreeNode > = { parent?: UseCollapsibleTreeNode children: UseCollapsibleTreeNode[] -} & { [K in keyof T]: T[K]} +} & { [K in keyof T]: T[K] } export interface UseCollapsibleTreeOptions { expandInitially?: boolean @@ -246,7 +246,7 @@ function sortTree> (tree: T) { } } -export function useCollapsibleTree > (tree: T, options: UseCollapsibleTreeOptions = {}) { +export function useCollapsibleTree> (tree: T, options: UseCollapsibleTreeOptions = {}) { options.expandInitially = options.expandInitially ?? true sortTree(tree) const collapsibleTree = buildTree(tree, options) diff --git a/packages/app/src/specs/tree/useVirtualListNavigation.ts b/packages/app/src/specs/tree/useVirtualListNavigation.ts index 1b514c69aadd..ae82412e2249 100644 --- a/packages/app/src/specs/tree/useVirtualListNavigation.ts +++ b/packages/app/src/specs/tree/useVirtualListNavigation.ts @@ -19,7 +19,7 @@ export function useVirtualListNavigation ({ scrollTo, }: UseVirtualListApi) { const activeItem = ref(null) - const itemRefs = ref<{[key: number]: any}>({}) + const itemRefs = ref<{ [key: number]: any }>({}) const setItemRef = (el, index: number) => { if (el) { itemRefs.value[index] = el From 6434772f94da2a854c00775b882e7cb0f5b90907 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 15 Jan 2025 09:16:05 -0500 Subject: [PATCH 037/113] remove conflicting old eslintrc from app --- packages/app/.eslintignore | 7 ------- packages/app/.eslintrc.json | 3 --- 2 files changed, 10 deletions(-) delete mode 100644 packages/app/.eslintignore delete mode 100644 packages/app/.eslintrc.json diff --git a/packages/app/.eslintignore b/packages/app/.eslintignore deleted file mode 100644 index 0a4f19fad609..000000000000 --- a/packages/app/.eslintignore +++ /dev/null @@ -1,7 +0,0 @@ -**/dist -**/dist-* -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures -/src/store/mobx-runner-store.ts \ No newline at end of file diff --git a/packages/app/.eslintrc.json b/packages/app/.eslintrc.json deleted file mode 100644 index 6eeb52459992..000000000000 --- a/packages/app/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../frontend-shared/.eslintrc.json" -} From eed56c06f447f26a9e1434ff75810ba2d0d0a121 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 15 Jan 2025 09:20:32 -0500 Subject: [PATCH 038/113] lint fix for packages/config --- packages/config/.eslintignore | 8 -------- packages/config/eslint.config.ts | 18 ++++++++++++++++++ .../config/src/ast-utils/addToCypressConfig.ts | 2 +- packages/config/src/validation.ts | 8 ++++---- .../config/test/__fixtures__/has-e2e.config.ts | 4 ++-- .../config/test/__fixtures__/invalid.config.ts | 2 +- packages/config/test/validation.spec.ts | 2 +- 7 files changed, 27 insertions(+), 17 deletions(-) delete mode 100644 packages/config/.eslintignore create mode 100644 packages/config/eslint.config.ts diff --git a/packages/config/.eslintignore b/packages/config/.eslintignore deleted file mode 100644 index d9c909f1aed8..000000000000 --- a/packages/config/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures -/test/__fixtures__/**/* -/test/__babel_fixtures__/**/* -**/__snapshots__ \ No newline at end of file diff --git a/packages/config/eslint.config.ts b/packages/config/eslint.config.ts new file mode 100644 index 000000000000..6a27c6713787 --- /dev/null +++ b/packages/config/eslint.config.ts @@ -0,0 +1,18 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' + +export default [ + ...baseConfig, + { + ignores: ['**/__babel_fixtures__/**/*'], + }, + { + languageOptions: { + globals: { + exports: 'readonly', + process: 'readonly', + __dirname: 'readonly', + }, + }, + }, +] diff --git a/packages/config/src/ast-utils/addToCypressConfig.ts b/packages/config/src/ast-utils/addToCypressConfig.ts index 5c5a7896b4cc..c70a846efb31 100644 --- a/packages/config/src/ast-utils/addToCypressConfig.ts +++ b/packages/config/src/ast-utils/addToCypressConfig.ts @@ -155,7 +155,7 @@ type OutputExtension = '.ts' | '.mjs' | '.js' // Necessary to handle the edge case of them deleting the contents of their Cypress // config file, just before we merge in the testing type -function getEmptyCodeBlock ({ outputType, isProjectUsingESModules, projectRoot }: { outputType: OutputExtension, isProjectUsingESModules: boolean, projectRoot: string}) { +function getEmptyCodeBlock ({ outputType, isProjectUsingESModules, projectRoot }: { outputType: OutputExtension, isProjectUsingESModules: boolean, projectRoot: string }) { if (defineConfigAvailable(projectRoot)) { if (outputType === '.ts' || outputType === '.mjs' || isProjectUsingESModules) { return dedent` diff --git a/packages/config/src/validation.ts b/packages/config/src/validation.ts index 8143038e5b7c..51c1de1f2032 100644 --- a/packages/config/src/validation.ts +++ b/packages/config/src/validation.ts @@ -40,7 +40,7 @@ const isFalse = (value: any): boolean => { return value === false } -type ValidationResult = ErrResult | boolean | string; +type ValidationResult = ErrResult | boolean | string type ValidationFn = (key: string, value: any) => ValidationResult export const validateAny = (...validations: ValidationFn[]): ValidationFn => { @@ -107,7 +107,7 @@ export const isValidBrowserList = (_key: string, browsers: any): ErrResult | tru } for (let k = 0; k < browsers.length; k += 1) { - const validationResult: boolean | {key: string, value: string, type: string, list?: string} = isValidBrowser(browsers[k]) + const validationResult: boolean | { key: string, value: string, type: string, list?: string } = isValidBrowser(browsers[k]) if (validationResult !== true) { validationResult.list = 'browsers' @@ -168,7 +168,7 @@ const isValidExperimentalRetryOptionsConfig = (key: string, value: any, strategy return true } -const isValidRetryValue = (key: string, value: any, minimumValue: 0|1): ErrResult | true => { +const isValidRetryValue = (key: string, value: any, minimumValue: 0 | 1): ErrResult | true => { if (_.isNull(value)) return true if (Number.isInteger(value) && value >= minimumValue) return true @@ -330,7 +330,7 @@ export const isValidClientCertificatesSet = (_key: string, certsForUrls: Array<{ key: string cert: string pfx: string - }>}>): ErrResult | true | string => { + }> }>): ErrResult | true | string => { debug('clientCerts: %o', certsForUrls) if (!Array.isArray(certsForUrls)) { diff --git a/packages/config/test/__fixtures__/has-e2e.config.ts b/packages/config/test/__fixtures__/has-e2e.config.ts index 5ab096df40a2..2fc45a20fc41 100644 --- a/packages/config/test/__fixtures__/has-e2e.config.ts +++ b/packages/config/test/__fixtures__/has-e2e.config.ts @@ -1,3 +1,3 @@ export default { - e2e: {} -} \ No newline at end of file + e2e: {}, +} diff --git a/packages/config/test/__fixtures__/invalid.config.ts b/packages/config/test/__fixtures__/invalid.config.ts index 5d42783117b5..0eb88e62b23f 100644 --- a/packages/config/test/__fixtures__/invalid.config.ts +++ b/packages/config/test/__fixtures__/invalid.config.ts @@ -1 +1 @@ -const x = {} \ No newline at end of file +const x = {} diff --git a/packages/config/test/validation.spec.ts b/packages/config/test/validation.spec.ts index a698dbef73af..dc4516cda579 100644 --- a/packages/config/test/validation.spec.ts +++ b/packages/config/test/validation.spec.ts @@ -117,7 +117,7 @@ describe('config/src/validation', () => { // data-driven testing - computers snapshot value for each item in the list passed through the function // https://github.com/bahmutov/snap-shot-it#data-driven-testing - return snapshot.apply(null, [validation.isValidBrowser].concat(browsers as any)) + return snapshot.apply(null, [validation.isValidBrowser, ...browsers]) }) }) From d035fa9f801a8303cd8c4e6840b50b3e2c30382e Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 15 Jan 2025 09:20:47 -0500 Subject: [PATCH 039/113] redundant rules in puppeteer --- npm/puppeteer/eslint.config.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/npm/puppeteer/eslint.config.ts b/npm/puppeteer/eslint.config.ts index be64517873b9..9b2c6c680b93 100644 --- a/npm/puppeteer/eslint.config.ts +++ b/npm/puppeteer/eslint.config.ts @@ -1,10 +1,7 @@ import { baseConfig } from '../../eslint.config' -import globals from 'globals' + export default [ ...baseConfig, - { - ignores: ['**/dist'], - }, { languageOptions: { globals: { From 8ba5ccb9c69775946b9baf5de996cf64b1cc5ca0 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 15 Jan 2025 09:32:14 -0500 Subject: [PATCH 040/113] eslint for packages/data-context --- eslint.config.ts | 47 ++++++++++++++++++- packages/data-context/.eslintignore | 9 ---- packages/data-context/eslint.config.ts | 13 +++++ .../src/actions/CodegenActions.ts | 2 +- .../src/actions/DataEmitterActions.ts | 4 +- .../src/actions/MigrationActions.ts | 1 - .../src/actions/ProjectActions.ts | 4 +- .../data-context/src/data/LegacyPluginsIpc.ts | 11 ++--- .../data-context/src/data/ProjectConfigIpc.ts | 31 ++++++------ packages/data-context/src/globalPubSub.ts | 13 +++-- packages/data-context/src/polling/index.ts | 1 - packages/data-context/src/polling/poller.ts | 2 +- .../src/sources/BrowserDataSource.ts | 2 +- .../src/sources/CloudDataSource.ts | 5 +- .../src/sources/ProjectDataSource.ts | 2 +- .../src/sources/RelevantRunsDataSource.ts | 2 +- .../src/sources/RemoteRequestDataSource.ts | 8 ++-- .../src/sources/VersionsDataSource.ts | 2 +- .../src/sources/migration/legacyOptions.ts | 2 +- .../src/util/DocumentNodeBuilder.ts | 2 +- .../data-context/src/util/autoBindDebug.ts | 2 +- packages/data-context/src/util/cached.ts | 1 - .../src/util/config-file-updater.ts | 4 +- packages/data-context/src/util/testCounts.ts | 2 +- .../data-context/test/fixtures/browsers.ts | 6 +-- .../unit/actions/DataEmitterActions.spec.ts | 4 -- .../test/unit/codegen/files/react/Button.jsx | 21 +++++---- .../test/unit/codegen/files/vue/Button.vue | 30 +++++++----- .../test/unit/polling/poller.spec.ts | 2 +- 29 files changed, 141 insertions(+), 94 deletions(-) delete mode 100644 packages/data-context/.eslintignore create mode 100644 packages/data-context/eslint.config.ts diff --git a/eslint.config.ts b/eslint.config.ts index d2c0c0d87d62..7061ff87e769 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -71,7 +71,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ rules: { 'no-console': 'error', 'no-restricted-properties': [ - 'error', + 'warn', { object: 'process', property: 'geteuid', @@ -85,7 +85,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ ], 'no-restricted-syntax': [ // esquery tool: https://estools.github.io/esquery/ - 'error', + 'warn', { // match sync FS methods except for `existsSync` // examples: fse.readFileSync, fs.readFileSync, this.ctx.fs.readFileSync... @@ -93,6 +93,47 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ message: 'Synchronous fs calls should not be used in Cypress. Use an async API instead.', }, ], + 'padding-line-between-statements': [ + 'error', + { + 'blankLine': 'always', + 'prev': '*', + 'next': 'return', + }, + { + 'blankLine': 'always', + 'prev': [ + 'const', + 'let', + 'var', + 'if', + 'while', + 'export', + 'cjs-export', + 'import', + 'cjs-import', + 'multiline-expression', + ], + 'next': '*', + }, + { + 'blankLine': 'any', + 'prev': [ + 'const', + 'let', + 'var', + 'import', + 'cjs-import', + ], + 'next': [ + 'const', + 'let', + 'var', + 'import', + 'cjs-import', + ], + }, + ], }, }, @@ -120,6 +161,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ '@typescript-eslint/triple-slash-reference': 'off', '@typescript-eslint/no-empty-object-type': 'off', '@typescript-eslint/no-wrapper-object-types': 'off', + '@typescript-eslint/no-non-null-asserted-optional-chain': 'off', 'vue/multi-word-component-names': 'off', 'vue/html-closing-bracket-spacing': 'off', @@ -157,6 +199,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ ignores: [ '.releaserc.js', 'dist/**/*', + '**/__snapshots__/*', ], }, diff --git a/packages/data-context/.eslintignore b/packages/data-context/.eslintignore deleted file mode 100644 index 055ebf00d392..000000000000 --- a/packages/data-context/.eslintignore +++ /dev/null @@ -1,9 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures -/test/unit/codegen/files -/test/unit/codegen/tmp -/test/fixtures/** -**/__snapshots__ \ No newline at end of file diff --git a/packages/data-context/eslint.config.ts b/packages/data-context/eslint.config.ts new file mode 100644 index 000000000000..c07e0d7b2273 --- /dev/null +++ b/packages/data-context/eslint.config.ts @@ -0,0 +1,13 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' + +export default [ + ...baseConfig, + { + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, +] diff --git a/packages/data-context/src/actions/CodegenActions.ts b/packages/data-context/src/actions/CodegenActions.ts index d777923df7aa..210db2199da9 100644 --- a/packages/data-context/src/actions/CodegenActions.ts +++ b/packages/data-context/src/actions/CodegenActions.ts @@ -15,7 +15,7 @@ export interface ReactComponentDescriptor { export class CodegenActions { constructor (private ctx: DataContext) {} - async getReactComponentsFromFile (filePath: string, reactDocgen?: typeof import('react-docgen')): Promise<{components: ReactComponentDescriptor[], errored?: boolean }> { + async getReactComponentsFromFile (filePath: string, reactDocgen?: typeof import('react-docgen')): Promise<{ components: ReactComponentDescriptor[], errored?: boolean }> { try { // this dance to get react-docgen is for now because react-docgen is a module and our typescript settings are set up to transpile to commonjs // which will require the module, which will fail because it's an es module. This is a temporary workaround. diff --git a/packages/data-context/src/actions/DataEmitterActions.ts b/packages/data-context/src/actions/DataEmitterActions.ts index 90215793c763..fd6ab3f5ceda 100644 --- a/packages/data-context/src/actions/DataEmitterActions.ts +++ b/packages/data-context/src/actions/DataEmitterActions.ts @@ -226,7 +226,7 @@ export class DataEmitterActions extends DataEmitterEvents { * the particular event. When the `listenerCount` is zero, then there are no * longer any subscribers for that event */ - subscribeTo (evt: keyof DataEmitterEvents, opts?: {sendInitial: boolean, initialValue?: T, filter?: (val: any) => boolean, onUnsubscribe?: (listenerCount: number) => void }): AsyncGenerator { + subscribeTo (evt: keyof DataEmitterEvents, opts?: { sendInitial: boolean, initialValue?: T, filter?: (val: any) => boolean, onUnsubscribe?: (listenerCount: number) => void }): AsyncGenerator { const { sendInitial = true } = opts ?? {} let hasSentInitial = false let dfd: pDefer.DeferredPromise | undefined @@ -279,7 +279,7 @@ export class DataEmitterActions extends DataEmitterEvents { throw: async (error: Error) => { throw error }, - return: async (): Promise<{ done: true, value: T | undefined}> => { + return: async (): Promise<{ done: true, value: T | undefined }> => { this.pub.off(evt, subscribed) if (opts?.onUnsubscribe) { diff --git a/packages/data-context/src/actions/MigrationActions.ts b/packages/data-context/src/actions/MigrationActions.ts index ab40842bd032..90cc7b9fce44 100644 --- a/packages/data-context/src/actions/MigrationActions.ts +++ b/packages/data-context/src/actions/MigrationActions.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-dupe-class-members */ import path from 'path' import debugLib from 'debug' import { fork } from 'child_process' diff --git a/packages/data-context/src/actions/ProjectActions.ts b/packages/data-context/src/actions/ProjectActions.ts index fb9a8fa2acb0..1ae84aecc19d 100644 --- a/packages/data-context/src/actions/ProjectActions.ts +++ b/packages/data-context/src/actions/ProjectActions.ts @@ -47,7 +47,7 @@ export interface ProjectApiShape { makeProjectSavedState(projectRoot: string): void getDevServer (): { updateSpecs(specs: SpecWithRelativeRoot[]): void - start(options: {specs: Cypress.Spec[], config: FullConfig}): Promise<{port: number}> + start(options: { specs: Cypress.Spec[], config: FullConfig }): Promise<{ port: number }> close(): void emitter: EventEmitter } @@ -490,7 +490,7 @@ export class ProjectActions { } } - async runSpec ({ specPath }: { specPath: string}) { + async runSpec ({ specPath }: { specPath: string }) { const waitForBrowserToOpen = async () => { const browserStatusSubscription = this.ctx.emitter.subscribeTo('browserStatusChange', { sendInitial: false }) diff --git a/packages/data-context/src/data/LegacyPluginsIpc.ts b/packages/data-context/src/data/LegacyPluginsIpc.ts index 7687e4bc403e..3a7962d62081 100644 --- a/packages/data-context/src/data/LegacyPluginsIpc.ts +++ b/packages/data-context/src/data/LegacyPluginsIpc.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-dupe-class-members */ import type { ChildProcess } from 'child_process' import EventEmitter from 'events' import type { CypressError } from '@packages/errors' @@ -16,7 +15,7 @@ export class LegacyPluginsIpc extends EventEmitter { }) } - send(event: 'loadLegacyPlugins', legacyConfig: LegacyCypressConfigJson): boolean + send (event: 'loadLegacyPlugins', legacyConfig: LegacyCypressConfigJson): boolean send (event: string, ...args: any[]) { if (this.childProcess.killed || !this.childProcess.connected) { return false @@ -25,10 +24,10 @@ export class LegacyPluginsIpc extends EventEmitter { return this.childProcess.send({ event, args }) } - on(event: 'ready', listener: () => void): this - on(event: 'loadLegacyPlugins:error', listener: (error: CypressError) => void): this - on(event: 'childProcess:unhandledError', listener: (legacyConfig: LegacyCypressConfigJson) => void): this - on(event: 'loadLegacyPlugins:reply', listener: (legacyConfig: LegacyCypressConfigJson) => void): this + on (event: 'ready', listener: () => void): this + on (event: 'loadLegacyPlugins:error', listener: (error: CypressError) => void): this + on (event: 'childProcess:unhandledError', listener: (legacyConfig: LegacyCypressConfigJson) => void): this + on (event: 'loadLegacyPlugins:reply', listener: (legacyConfig: LegacyCypressConfigJson) => void): this on (evt: string, listener: (...args: any[]) => void) { return super.on(evt, listener) } diff --git a/packages/data-context/src/data/ProjectConfigIpc.ts b/packages/data-context/src/data/ProjectConfigIpc.ts index eaa11a34772f..7d833c0b303a 100644 --- a/packages/data-context/src/data/ProjectConfigIpc.ts +++ b/packages/data-context/src/data/ProjectConfigIpc.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-dupe-class-members */ import { CypressError, getError } from '@packages/errors' import type { FullConfig, TestingType } from '@packages/types' import { ChildProcess, fork, ForkOptions, spawn } from 'child_process' @@ -36,7 +35,7 @@ const isSandboxNeeded = () => { export interface SetupNodeEventsReply { setupConfig: Cypress.ConfigOptions | null requires: string[] - registrations: Array<{event: string, eventId: string}> + registrations: Array<{ event: string, eventId: string }> } export interface LoadConfigReply { @@ -96,10 +95,10 @@ export class ProjectConfigIpc extends EventEmitter { } // TODO: options => Cypress.TestingTypeOptions - send(event: 'execute:plugins', evt: string, ids: {eventId: string, invocationId: string}, args: any[]): boolean - send(event: 'setupTestingType', testingType: TestingType, options: Cypress.PluginConfigOptions): boolean - send(event: 'loadConfig'): boolean - send(event: 'main:process:will:disconnect'): void + send (event: 'execute:plugins', evt: string, ids: { eventId: string, invocationId: string }, args: any[]): boolean + send (event: 'setupTestingType', testingType: TestingType, options: Cypress.PluginConfigOptions): boolean + send (event: 'loadConfig'): boolean + send (event: 'main:process:will:disconnect'): void send (event: string, ...args: any[]) { if (this._childProcess.killed || !this._childProcess.connected) { return false @@ -108,29 +107,29 @@ export class ProjectConfigIpc extends EventEmitter { return this._childProcess.send({ event, args }) } - on(evt: 'childProcess:unhandledError', listener: (err: CypressError) => void): this - on(evt: 'export:telemetry', listener: (data: string) => void): void - on(evt: 'main:process:will:disconnect:ack', listener: () => void): void - on(evt: 'warning', listener: (warningErr: CypressError) => void): this + on (evt: 'childProcess:unhandledError', listener: (err: CypressError) => void): this + on (evt: 'export:telemetry', listener: (data: string) => void): void + on (evt: 'main:process:will:disconnect:ack', listener: () => void): void + on (evt: 'warning', listener: (warningErr: CypressError) => void): this on (evt: string, listener: (...args: any[]) => void) { return super.on(evt, listener) } - once(evt: `promise:fulfilled:${string}`, listener: (err: any, value: any) => void): this + once (evt: `promise:fulfilled:${string}`, listener: (err: any, value: any) => void): this /** * When the config is loaded, it comes back with either a "reply", or an "error" if there was a problem * sourcing the config (script error, etc.) */ - once(evt: 'ready', listener: () => void): this - once(evt: 'loadConfig:reply', listener: (payload: SerializedLoadConfigReply) => void): this - once(evt: 'loadConfig:error', listener: (err: CypressError) => void): this + once (evt: 'ready', listener: () => void): this + once (evt: 'loadConfig:reply', listener: (payload: SerializedLoadConfigReply) => void): this + once (evt: 'loadConfig:error', listener: (err: CypressError) => void): this /** * When */ - once(evt: 'setupTestingType:reply', listener: (payload: SetupNodeEventsReply) => void): this - once(evt: 'setupTestingType:error', listener: (error: CypressError) => void): this + once (evt: 'setupTestingType:reply', listener: (payload: SetupNodeEventsReply) => void): this + once (evt: 'setupTestingType:error', listener: (error: CypressError) => void): this once (evt: string, listener: (...args: any[]) => void) { return super.once(evt, listener) } diff --git a/packages/data-context/src/globalPubSub.ts b/packages/data-context/src/globalPubSub.ts index 9f6afdaf45cb..868879a47e9b 100644 --- a/packages/data-context/src/globalPubSub.ts +++ b/packages/data-context/src/globalPubSub.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-dupe-class-members */ import EventEmitter from 'events' import type { DataContext } from './DataContext' @@ -11,20 +10,20 @@ type MenuItem = 'log:out' * to reset the global state for testing / resetting when there is an error */ export class GlobalPubSub extends EventEmitter { - on(msg: 'reset:data-context', listener: (ctx: DataContext) => void): this - on(msg: 'menu:item:clicked', listener: (item: MenuItem) => void): this - on(msg: 'test:cleanup', listener: (...args: any[]) => void): this + on (msg: 'reset:data-context', listener: (ctx: DataContext) => void): this + on (msg: 'menu:item:clicked', listener: (item: MenuItem) => void): this + on (msg: 'test:cleanup', listener: (...args: any[]) => void): this on (msg: string, listener: (...args: any[]) => void) { return super.on(msg, listener) } - emit(msg: 'menu:item:clicked', arg: MenuItem): boolean - emit(msg: 'reset:data-context', arg: DataContext): boolean + emit (msg: 'menu:item:clicked', arg: MenuItem): boolean + emit (msg: 'reset:data-context', arg: DataContext): boolean emit (msg: string, ...args: any[]) { return super.emit(msg, ...args) } - emitThen(msg: 'test:cleanup'): Promise + emitThen (msg: 'test:cleanup'): Promise async emitThen (msg: string, ...args: any[]): Promise { // @ts-expect-error const events = this._events diff --git a/packages/data-context/src/polling/index.ts b/packages/data-context/src/polling/index.ts index be30f9691070..af7675ce0222 100644 --- a/packages/data-context/src/polling/index.ts +++ b/packages/data-context/src/polling/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable padding-line-between-statements */ // created by autobarrel, do not modify directly export * from './poller' diff --git a/packages/data-context/src/polling/poller.ts b/packages/data-context/src/polling/poller.ts index ba78cbe9e43a..eabf6219d7b5 100644 --- a/packages/data-context/src/polling/poller.ts +++ b/packages/data-context/src/polling/poller.ts @@ -25,7 +25,7 @@ export class Poller { this.pollingInterval = interval } - start (config: {initialValue?: T, meta?: M, filter?: (val: any) => boolean} = {}) { + start (config: { initialValue?: T, meta?: M, filter?: (val: any) => boolean } = {}) { const subscriptionId = ++this.#subscriptionId debug(`subscribing to ${this.event} with initial value %o and meta %o`, config?.initialValue, config?.meta) diff --git a/packages/data-context/src/sources/BrowserDataSource.ts b/packages/data-context/src/sources/BrowserDataSource.ts index e8a933f58b9d..81abf61b6a04 100644 --- a/packages/data-context/src/sources/BrowserDataSource.ts +++ b/packages/data-context/src/sources/BrowserDataSource.ts @@ -23,7 +23,7 @@ if (os.platform() === 'win32') { const platform = os.platform() -function getBrowserKey (browser: T) { +function getBrowserKey (browser: T) { return `${browser.name}-${browser.version}` } diff --git a/packages/data-context/src/sources/CloudDataSource.ts b/packages/data-context/src/sources/CloudDataSource.ts index 510e8fc4a136..586a5579db22 100644 --- a/packages/data-context/src/sources/CloudDataSource.ts +++ b/packages/data-context/src/sources/CloudDataSource.ts @@ -38,7 +38,6 @@ const REMOTE_SCHEMA_URLS = { production: 'https://cloud.cypress.io', } -// eslint-disable-next-line @typescript-eslint/no-unused-vars type StartsWith = T extends `${Prefix}${infer _U}` ? T : never type CloudQueryField = StartsWith @@ -121,10 +120,10 @@ export class CloudDataSource { ...urqlCacheKeys, updates: { Mutation: { - _cloudCacheInvalidate: (parent, { args }: {args: Parameters}, cache, info) => { + _cloudCacheInvalidate: (parent, { args }: { args: Parameters }, cache, info) => { cache.invalidate(...args) }, - _showUrqlCache: (parent, { args }: {args: Parameters}, cache, info) => { + _showUrqlCache: (parent, { args }: { args: Parameters }, cache, info) => { this.#lastCache = JSON.stringify(cache, function replacer (key, value) { if (value instanceof Map) { const reducer = (obj: any, mapKey: any) => { diff --git a/packages/data-context/src/sources/ProjectDataSource.ts b/packages/data-context/src/sources/ProjectDataSource.ts index 8476c15c6f2c..75997a247a3e 100644 --- a/packages/data-context/src/sources/ProjectDataSource.ts +++ b/packages/data-context/src/sources/ProjectDataSource.ts @@ -149,7 +149,7 @@ export function getPathFromSpecPattern ({ { specPattern: string testingType: TestingType fileExtensionToUse?: FileExtension - name?: string}) { + name?: string }) { function replaceWildCard (s: string, fallback: string) { return s.replace(/\*/g, fallback) } diff --git a/packages/data-context/src/sources/RelevantRunsDataSource.ts b/packages/data-context/src/sources/RelevantRunsDataSource.ts index 0d378bbd117d..cf37a827400e 100644 --- a/packages/data-context/src/sources/RelevantRunsDataSource.ts +++ b/packages/data-context/src/sources/RelevantRunsDataSource.ts @@ -44,7 +44,7 @@ export class RelevantRunsDataSource { #pollingInterval: number = 30 #cached: RelevantRun = RUNS_EMPTY_RETURN - #runsPoller?: Poller<'relevantRunChange', RelevantRun, { name: RelevantRunLocationEnum}> + #runsPoller?: Poller<'relevantRunChange', RelevantRun, { name: RelevantRunLocationEnum }> constructor (private ctx: DataContext) {} diff --git a/packages/data-context/src/sources/RemoteRequestDataSource.ts b/packages/data-context/src/sources/RemoteRequestDataSource.ts index 67b4cbfed821..015063918da5 100644 --- a/packages/data-context/src/sources/RemoteRequestDataSource.ts +++ b/packages/data-context/src/sources/RemoteRequestDataSource.ts @@ -27,7 +27,7 @@ interface OperationDefinition { operation: string operationDoc: DocumentNode operationHash: string - operationVariableDefs: [string, {type: TypeNode, defaultValue?: ValueNode}][] + operationVariableDefs: [string, { type: TypeNode, defaultValue?: ValueNode }][] remoteQueryField: string fieldArgMapping: Record } @@ -312,7 +312,7 @@ export class RemoteRequestDataSource { const remoteFieldArgs = queryFieldDef.args - const operationVariableDefs: [string, {type: TypeNode, defaultValue?: ValueNode}][] = [] + const operationVariableDefs: [string, { type: TypeNode, defaultValue?: ValueNode }][] = [] const fieldArgs: [string, ValueNode][] = [] const fieldArgMapping: Record = {} @@ -371,7 +371,7 @@ export class RemoteRequestDataSource { // Gather the referenced variables from each of the field nodes we // are generating a query with #getReferencedVariables (selectionNodes: readonly SelectionNode[], outerVariableDefs: readonly VariableDefinitionNode[]) { - const variableDefinitions: Record = {} + const variableDefinitions: Record = {} selectionNodes.map((node) => { visit(node, { @@ -410,7 +410,7 @@ export class RemoteRequestDataSource { fieldName: string fieldArgs: [string, ValueNode][] fieldNodes: readonly SelectionNode[] - operationVariableDefs: [string, {type: TypeNode, defaultValue?: ValueNode}][] + operationVariableDefs: [string, { type: TypeNode, defaultValue?: ValueNode }][] }, ): DocumentNode { const { operationVariableDefs = [], fieldArgs = [] } = params diff --git a/packages/data-context/src/sources/VersionsDataSource.ts b/packages/data-context/src/sources/VersionsDataSource.ts index 4c464884374c..f72f1fa95a64 100644 --- a/packages/data-context/src/sources/VersionsDataSource.ts +++ b/packages/data-context/src/sources/VersionsDataSource.ts @@ -110,7 +110,7 @@ export class VersionsDataSource { try { response = await this.ctx.util.fetch(NPM_CYPRESS_REGISTRY_URL) - const responseJson = await response.json() as { time: Record} + const responseJson = await response.json() as { time: Record } debug('NPM release dates received %o', { modified: responseJson.time.modified }) diff --git a/packages/data-context/src/sources/migration/legacyOptions.ts b/packages/data-context/src/sources/migration/legacyOptions.ts index c0cd4ba8da2a..f7ee9af2d694 100644 --- a/packages/data-context/src/sources/migration/legacyOptions.ts +++ b/packages/data-context/src/sources/migration/legacyOptions.ts @@ -290,7 +290,7 @@ const runtimeOptions: Array = [ }, ] -export const legacyOptions: Array = [ +export const legacyOptions: Array = [ ...resolvedOptions, ...runtimeOptions, ] diff --git a/packages/data-context/src/util/DocumentNodeBuilder.ts b/packages/data-context/src/util/DocumentNodeBuilder.ts index f71fc6c799ab..230f17932b9a 100644 --- a/packages/data-context/src/util/DocumentNodeBuilder.ts +++ b/packages/data-context/src/util/DocumentNodeBuilder.ts @@ -5,7 +5,7 @@ export interface RemoteQueryConfig { variableDefinitions: VariableDefinitionNode[] } -export type DocumentNodeBuilderParams = Pick & {isNode?: boolean, isRemoteFetchable?: boolean, variableDefinitions: readonly VariableDefinitionNode[] | undefined, operationName: string} +export type DocumentNodeBuilderParams = Pick & { isNode?: boolean, isRemoteFetchable?: boolean, variableDefinitions: readonly VariableDefinitionNode[] | undefined, operationName: string } /** * Builds a DocumentNode from a given GraphQLResolveInfo payload diff --git a/packages/data-context/src/util/autoBindDebug.ts b/packages/data-context/src/util/autoBindDebug.ts index b88d80657d34..b4726d990f61 100644 --- a/packages/data-context/src/util/autoBindDebug.ts +++ b/packages/data-context/src/util/autoBindDebug.ts @@ -11,7 +11,7 @@ const debugLibCache: Record = {} * to the constructor of the class for which you want to enable logging, you can then * set DEBUG=cypress-trace: to utilize the logging */ -export function autoBindDebug (obj: T): T { +export function autoBindDebug (obj: T): T { const ns = `trace-cypress:${obj.constructor.name}` const debug = debugLibCache[ns] = debugLibCache[ns] || debugLib(ns) diff --git a/packages/data-context/src/util/cached.ts b/packages/data-context/src/util/cached.ts index f93c68b84f21..9d5db8d1d96b 100644 --- a/packages/data-context/src/util/cached.ts +++ b/packages/data-context/src/util/cached.ts @@ -27,7 +27,6 @@ export const cached = ( throw new Error('@cached target must be configurable') } else { descriptor.get = function () { - // eslint-disable-next-line const value = originalMethod.apply(this, arguments as any) const newDescriptor: PropertyDescriptor = { configurable: false, diff --git a/packages/data-context/src/util/config-file-updater.ts b/packages/data-context/src/util/config-file-updater.ts index 421136c73385..ac5be8a2889e 100644 --- a/packages/data-context/src/util/config-file-updater.ts +++ b/packages/data-context/src/util/config-file-updater.ts @@ -200,7 +200,7 @@ function setSubKeysSplicers ( const keysToUpdateWithObjects: string[] = [] - const objSubkeys = Object.keys(obj).filter((key) => typeof obj[key] === 'object').reduce((acc: Array<{parent: string, subkey: string}>, key) => { + const objSubkeys = Object.keys(obj).filter((key) => typeof obj[key] === 'object').reduce((acc: Array<{ parent: string, subkey: string }>, key) => { keysToUpdateWithObjects.push(key) Object.entries(obj[key]).forEach(([subkey, value]) => { if (['boolean', 'number', 'string'].includes(typeof value)) { @@ -294,7 +294,7 @@ function isUndefinedOrNull (value: NodePath['node']): value is namedTypes.Identi return value.type === 'Identifier' && ['undefined', 'null'].includes(value.name) } -interface Splicer{ +interface Splicer { start: number end: number replaceString: string diff --git a/packages/data-context/src/util/testCounts.ts b/packages/data-context/src/util/testCounts.ts index 1607c2721914..a645961ee1f1 100644 --- a/packages/data-context/src/util/testCounts.ts +++ b/packages/data-context/src/util/testCounts.ts @@ -13,7 +13,7 @@ export async function getTestCounts (specs: SpecWithRelativeRoot[]) { const startTime = performance.now() const specCountPromises = specs.map((spec) => { - return new Promise<{path: string, isExample: boolean, testCounts: number}>((resolve, reject) => { + return new Promise<{ path: string, isExample: boolean, testCounts: number }>((resolve, reject) => { let testCounts = 0 readline.createInterface({ diff --git a/packages/data-context/test/fixtures/browsers.ts b/packages/data-context/test/fixtures/browsers.ts index 4a2772dc405c..466ec96338bd 100644 --- a/packages/data-context/test/fixtures/browsers.ts +++ b/packages/data-context/test/fixtures/browsers.ts @@ -1,4 +1,4 @@ -import { FoundBrowser } from "@packages/types"; +import { FoundBrowser } from '@packages/types' export const foundBrowserChrome: FoundBrowser = { name: 'chrome', @@ -6,7 +6,7 @@ export const foundBrowserChrome: FoundBrowser = { channel: 'stable', displayName: 'Chrome', path: '/usr/bin/chrome', - version: '100.0.0' + version: '100.0.0', } as const export const userBrowser: Cypress.Browser = { @@ -16,4 +16,4 @@ export const userBrowser: Cypress.Browser = { isHeadless: false, family: 'chromium', majorVersion: '100', -} \ No newline at end of file +} diff --git a/packages/data-context/test/unit/actions/DataEmitterActions.spec.ts b/packages/data-context/test/unit/actions/DataEmitterActions.spec.ts index be7aa26c83d6..03b1c27d214e 100644 --- a/packages/data-context/test/unit/actions/DataEmitterActions.spec.ts +++ b/packages/data-context/test/unit/actions/DataEmitterActions.spec.ts @@ -20,7 +20,6 @@ describe('DataEmitterActions', () => { let completed = false const testIterator = async () => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars for await (const _value of subscription) { items += 1 } @@ -56,7 +55,6 @@ describe('DataEmitterActions', () => { let completed = false const testIterator = async () => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars for await (const _value of subscription) { items += 1 } @@ -87,7 +85,6 @@ describe('DataEmitterActions', () => { let completed = false const testIterator = async () => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars for await (const _value of subscription) { items += 1 } @@ -115,7 +112,6 @@ describe('DataEmitterActions', () => { } const testIterator = async () => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars for await (const _value of subscription) { returnVal.items += 1 } diff --git a/packages/data-context/test/unit/codegen/files/react/Button.jsx b/packages/data-context/test/unit/codegen/files/react/Button.jsx index a7990e65bb99..aaa8a894321b 100644 --- a/packages/data-context/test/unit/codegen/files/react/Button.jsx +++ b/packages/data-context/test/unit/codegen/files/react/Button.jsx @@ -1,13 +1,14 @@ // @ts-nocheck -import React from 'react'; -import PropTypes from 'prop-types'; -import './button.css'; +import React from 'react' +import PropTypes from 'prop-types' +import './button.css' /** * Primary UI component for user interaction */ -export default Button = ({ primary, backgroundColor, size, label, ...props }) => { - const mode = primary ? 'button--primary' : 'button--secondary'; +const Button = ({ primary, backgroundColor, size, label, ...props }) => { + const mode = primary ? 'button--primary' : 'button--secondary' + return ( - ); -}; + ) +} + +export default Button Button.propTypes = { /** @@ -41,11 +44,11 @@ Button.propTypes = { * Optional click handler */ onClick: PropTypes.func, -}; +} Button.defaultProps = { backgroundColor: null, primary: false, size: 'medium', onClick: undefined, -}; +} diff --git a/packages/data-context/test/unit/codegen/files/vue/Button.vue b/packages/data-context/test/unit/codegen/files/vue/Button.vue index f010c2cc6083..2d9ab6c111c0 100644 --- a/packages/data-context/test/unit/codegen/files/vue/Button.vue +++ b/packages/data-context/test/unit/codegen/files/vue/Button.vue @@ -1,14 +1,21 @@ diff --git a/packages/data-context/test/unit/polling/poller.spec.ts b/packages/data-context/test/unit/polling/poller.spec.ts index 56609186439f..4a27f5038c97 100644 --- a/packages/data-context/test/unit/polling/poller.spec.ts +++ b/packages/data-context/test/unit/polling/poller.spec.ts @@ -111,7 +111,7 @@ describe('Poller', () => { const callback = sinon.stub() const interval = 5 - const poller = new Poller<'relevantRunChange', { name: string }, { name: string}>(ctx, 'relevantRunChange', interval, callback) + const poller = new Poller<'relevantRunChange', { name: string }, { name: string }>(ctx, 'relevantRunChange', interval, callback) expect(poller.subscriptions).to.have.length(0) From b664d1ba744a716c2ba89c7fbf1c5ce77e50b2b7 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 15 Jan 2025 09:51:15 -0500 Subject: [PATCH 041/113] eslint for packages/driver --- packages/driver/.eslintignore | 5 ----- .../cypress/e2e/commands/assertions.cy.js | 3 ++- .../driver/cypress/e2e/e2e/origin/events.cy.ts | 4 ++-- .../cypress/e2e/e2e/origin/integrity.cy.ts | 4 ++-- .../e2e/e2e/origin/uncaught_errors.cy.ts | 2 ++ .../cypress/e2e/e2e/testConfigOverrides.cy.js | 2 -- packages/driver/eslint.config.ts | 18 ++++++++++++++++++ packages/driver/index.d.ts | 3 ++- packages/driver/package.json | 2 +- .../driver/src/cross-origin/communicator.ts | 5 +++-- packages/driver/src/cross-origin/cypress.ts | 1 - packages/driver/src/cross-origin/origin_fn.ts | 2 +- packages/driver/src/cy/aliases.ts | 1 - packages/driver/src/cy/chai.ts | 1 - packages/driver/src/cy/chai/inspect.ts | 1 - .../driver/src/cy/commands/actions/submit.ts | 2 +- packages/driver/src/cy/commands/asserting.ts | 4 ++-- packages/driver/src/cy/commands/commands.ts | 2 +- packages/driver/src/cy/commands/connectors.ts | 1 - packages/driver/src/cy/commands/screenshot.ts | 4 ++-- .../driver/src/cy/commands/sessions/index.ts | 2 +- packages/driver/src/cy/focused.ts | 1 - packages/driver/src/cy/jquery.ts | 1 - packages/driver/src/cy/keyboard.ts | 4 ++-- packages/driver/src/cy/listeners.ts | 2 +- packages/driver/src/cy/location.ts | 1 - packages/driver/src/cy/mouse.ts | 2 +- packages/driver/src/cy/retries.ts | 1 - packages/driver/src/cy/stability.ts | 1 - packages/driver/src/cy/testConfigOverrides.ts | 6 +++--- packages/driver/src/cy/timeouts.ts | 1 - packages/driver/src/cy/timers.ts | 1 - packages/driver/src/cy/top_attr_guards.ts | 4 ++-- packages/driver/src/cy/xhrs.ts | 1 - packages/driver/src/cypress/command_queue.ts | 2 -- packages/driver/src/cypress/cy.ts | 4 +--- packages/driver/src/cypress/error_messages.ts | 4 ++-- packages/driver/src/cypress/log.ts | 2 +- packages/driver/src/cypress/mocha.ts | 3 +-- packages/driver/src/cypress/runner.ts | 1 - packages/driver/src/dom/coordinates.ts | 3 --- packages/driver/src/dom/elements/find.ts | 2 +- packages/driver/src/util/serialization/log.ts | 2 +- packages/driver/types/cypress/log.d.ts | 4 ++-- 44 files changed, 58 insertions(+), 64 deletions(-) delete mode 100644 packages/driver/.eslintignore create mode 100644 packages/driver/eslint.config.ts diff --git a/packages/driver/.eslintignore b/packages/driver/.eslintignore deleted file mode 100644 index 2b42008bda67..000000000000 --- a/packages/driver/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures diff --git a/packages/driver/cypress/e2e/commands/assertions.cy.js b/packages/driver/cypress/e2e/commands/assertions.cy.js index 3da8fa44a2fe..e245409c4d85 100644 --- a/packages/driver/cypress/e2e/commands/assertions.cy.js +++ b/packages/driver/cypress/e2e/commands/assertions.cy.js @@ -1189,6 +1189,7 @@ describe('src/cy/commands/assertions', () => { describe('message formatting', () => { const expectMarkdown = (test, message, done) => { cy.then(() => { + // eslint-disable-next-line mocha/no-empty-description test() }) @@ -1325,7 +1326,7 @@ describe('src/cy/commands/assertions', () => { describe('#contain', () => { it('can find input type submit by value', function () { // $input creates an HTML element to be tested. - // eslint-disable-next-line no-unused-vars + const $input = cy.$$('').appendTo(this.$body) cy.get('input[type=submit]').should('contain', 'click me') diff --git a/packages/driver/cypress/e2e/e2e/origin/events.cy.ts b/packages/driver/cypress/e2e/e2e/origin/events.cy.ts index e0c80a28bdb8..335f734e0470 100644 --- a/packages/driver/cypress/e2e/e2e/origin/events.cy.ts +++ b/packages/driver/cypress/e2e/e2e/origin/events.cy.ts @@ -1,7 +1,7 @@ describe('cy.origin', { browser: '!webkit' }, () => { it('window:before:load event', () => { cy.visit('/fixtures/primary-origin.html') - cy.on('window:before:load', (win: {testPrimaryOriginBeforeLoad: boolean}) => { + cy.on('window:before:load', (win: { testPrimaryOriginBeforeLoad: boolean }) => { win.testPrimaryOriginBeforeLoad = true }) @@ -9,7 +9,7 @@ describe('cy.origin', { browser: '!webkit' }, () => { // Needs to be declared before the visit cy.origin('http://www.foobar.com:3500', () => { - cy.on('window:before:load', (win: {testSecondaryWindowBeforeLoad: boolean}) => { + cy.on('window:before:load', (win: { testSecondaryWindowBeforeLoad: boolean }) => { win.testSecondaryWindowBeforeLoad = true }) }) diff --git a/packages/driver/cypress/e2e/e2e/origin/integrity.cy.ts b/packages/driver/cypress/e2e/e2e/origin/integrity.cy.ts index bdf1ae2f1014..c1bea3c6441c 100644 --- a/packages/driver/cypress/e2e/e2e/origin/integrity.cy.ts +++ b/packages/driver/cypress/e2e/e2e/origin/integrity.cy.ts @@ -14,8 +14,8 @@ describe('Integrity Preservation', { browser: '!webkit' }, () => { // See https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity on SRI integrity. const availableDigests = ['SHA256', 'SHA384', 'SHA512'] - const integrityJSDigests: {[key: string]: string} = {} - const integrityCSSDigests: {[key: string]: string} = {} + const integrityJSDigests: { [key: string]: string } = {} + const integrityCSSDigests: { [key: string]: string } = {} let templateExecutor: TemplateExecutor before(() => { diff --git a/packages/driver/cypress/e2e/e2e/origin/uncaught_errors.cy.ts b/packages/driver/cypress/e2e/e2e/origin/uncaught_errors.cy.ts index 097c254430c4..f6cdf5f0d738 100644 --- a/packages/driver/cypress/e2e/e2e/origin/uncaught_errors.cy.ts +++ b/packages/driver/cypress/e2e/e2e/origin/uncaught_errors.cy.ts @@ -363,6 +363,7 @@ describe('cy.origin - uncaught errors', { browser: '!webkit' }, () => { get name () { return this._name } + set name (name: string) { this._name = name } @@ -399,6 +400,7 @@ describe('cy.origin - uncaught errors', { browser: '!webkit' }, () => { get metasyntaticList (): string[] { return this._metasyntaticList } + set metasyntaticList (itemsToAdd: string[]) { this._metasyntaticList = this._metasyntaticList.concat(itemsToAdd) } diff --git a/packages/driver/cypress/e2e/e2e/testConfigOverrides.cy.js b/packages/driver/cypress/e2e/e2e/testConfigOverrides.cy.js index d7431df2f1c3..f58af1d9c80c 100644 --- a/packages/driver/cypress/e2e/e2e/testConfigOverrides.cy.js +++ b/packages/driver/cypress/e2e/e2e/testConfigOverrides.cy.js @@ -1,5 +1,3 @@ -/* eslint-disable @cypress/dev/skip-comment,mocha/no-exclusive-tests */ - describe('per-test config', () => { const testState = { ranFirefox: false, diff --git a/packages/driver/eslint.config.ts b/packages/driver/eslint.config.ts new file mode 100644 index 000000000000..19bd8f3a4aa8 --- /dev/null +++ b/packages/driver/eslint.config.ts @@ -0,0 +1,18 @@ +import { baseConfig } from '../../eslint.config' +import globals from 'globals' + +export default [ + ...baseConfig, + { + ignores: ['cypress/fixtures/**/*', 'src/config/jquery.scrollto.ts'], + }, + { + languageOptions: { + parserOptions: { + projectService: { + allowDefaultProject: ['index.d.ts', 'cypress/e2e/e2e/origin/dependencies.cy.jsx', 'src/cypress/setter_getter.d.ts'], + }, + }, + }, + }, +] diff --git a/packages/driver/index.d.ts b/packages/driver/index.d.ts index 10d847e97a11..434e09c3fea0 100644 --- a/packages/driver/index.d.ts +++ b/packages/driver/index.d.ts @@ -4,4 +4,5 @@ export const $Cypress: Cypress.Cypress export const $: JQuery -export default $Cypress \ No newline at end of file + +export default $Cypress diff --git a/packages/driver/package.json b/packages/driver/package.json index 041cfc593e44..d5ef57c5ea8f 100644 --- a/packages/driver/package.json +++ b/packages/driver/package.json @@ -9,7 +9,7 @@ "cypress:run": "node ../../scripts/cypress run --config-file ./cypress.config.ts", "cypress:run:inject-document-domain": "node ../../scripts/cypress run --config-file ./cypress.config-injectDocumentDomain.ts", "postinstall": "patch-package", - "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json, .", + "lint": "eslint .", "start": "node -e 'console.log(require(`chalk`).red(`\nError:\n\tRunning \\`yarn start\\` is no longer needed for driver/cypress tests.\n\tWe now automatically spawn the server in e2e.setupNodeEvents config.\n\tChanges to the server will be watched and reloaded automatically.`))'" }, "dependencies": {}, diff --git a/packages/driver/src/cross-origin/communicator.ts b/packages/driver/src/cross-origin/communicator.ts index 550a6955f79c..f8cacf1faa37 100644 --- a/packages/driver/src/cross-origin/communicator.ts +++ b/packages/driver/src/cross-origin/communicator.ts @@ -68,7 +68,7 @@ const sharedPromiseSetup = ({ * @extends EventEmitter */ export class PrimaryOriginCommunicator extends EventEmitter { - private crossOriginDriverWindows: {[key: string]: Window} = {} + private crossOriginDriverWindows: { [key: string]: Window } = {} userInvocationStack?: string /** @@ -320,6 +320,7 @@ export class SpecBridgeCommunicator extends EventEmitter { }, '*') }) } + /** * Promisified event sent to the primary communicator that expects the same event reflected back with the response. * @param {string} event - the name of the event to be sent. @@ -336,7 +337,7 @@ export class SpecBridgeCommunicator extends EventEmitter { }: { event: string data?: Cypress.ObjectLike - options: {syncGlobals: boolean} + options: { syncGlobals: boolean } timeout: number }) { return new Promise((resolve, reject) => { diff --git a/packages/driver/src/cross-origin/cypress.ts b/packages/driver/src/cross-origin/cypress.ts index 1ea7a3498b1c..9acf3a7a4f2a 100644 --- a/packages/driver/src/cross-origin/cypress.ts +++ b/packages/driver/src/cross-origin/cypress.ts @@ -149,7 +149,6 @@ const setup = (cypressConfig: Cypress.Config, env: Cypress.ObjectLike) => { cy.onBeforeAppWindowLoad = onBeforeAppWindowLoad(Cypress, cy) } -// eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces const onBeforeAppWindowLoad = (Cypress: Cypress.Cypress, cy: $Cy) => (autWindow: Window) => { autWindow.Cypress = Cypress diff --git a/packages/driver/src/cross-origin/origin_fn.ts b/packages/driver/src/cross-origin/origin_fn.ts index 3a6106886e2a..cf9dfd5750f7 100644 --- a/packages/driver/src/cross-origin/origin_fn.ts +++ b/packages/driver/src/cross-origin/origin_fn.ts @@ -33,7 +33,7 @@ interface GetFileResult { error?: string } -const rehydrateRunnable = (data: serializedRunnable): Runnable|Test => { +const rehydrateRunnable = (data: serializedRunnable): Runnable | Test => { let runnable if (data.type === 'test') { diff --git a/packages/driver/src/cy/aliases.ts b/packages/driver/src/cy/aliases.ts index 30ae2565e2c7..6a1276ef7b6d 100644 --- a/packages/driver/src/cy/aliases.ts +++ b/packages/driver/src/cy/aliases.ts @@ -16,7 +16,6 @@ export const aliasDisplayName = (name) => { return name.replace(aliasDisplayRe, '') } -// eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces export const create = (cy: $Cy) => ({ addAlias (ctx, aliasObj) { const { alias } = aliasObj diff --git a/packages/driver/src/cy/chai.ts b/packages/driver/src/cy/chai.ts index 948fd67eccef..c91685b83054 100644 --- a/packages/driver/src/cy/chai.ts +++ b/packages/driver/src/cy/chai.ts @@ -1,4 +1,3 @@ -/* eslint-disable prefer-rest-params */ // tests in driver/cypress/integration/commands/assertions_spec.js import _ from 'lodash' diff --git a/packages/driver/src/cy/chai/inspect.ts b/packages/driver/src/cy/chai/inspect.ts index 5dfccd83fdc0..46e51d3e6482 100644 --- a/packages/driver/src/cy/chai/inspect.ts +++ b/packages/driver/src/cy/chai/inspect.ts @@ -215,7 +215,6 @@ export function create (chai) { return formatError(value) } - // eslint-disable-next-line eqeqeq if (keys.length === 0 && (!array || value.length == 0)) { return braces[0] + base + braces[1] } diff --git a/packages/driver/src/cy/commands/actions/submit.ts b/packages/driver/src/cy/commands/actions/submit.ts index 62f382792b36..b48e426de7d0 100644 --- a/packages/driver/src/cy/commands/actions/submit.ts +++ b/packages/driver/src/cy/commands/actions/submit.ts @@ -7,7 +7,7 @@ import $errUtils from '../../../cypress/error_utils' import $actionability from '../../actionability' import type { Log } from '../../../cypress/log' -interface InternalSubmitOptions extends Partial{ +interface InternalSubmitOptions extends Partial { _log?: Log $el: JQuery } diff --git a/packages/driver/src/cy/commands/asserting.ts b/packages/driver/src/cy/commands/asserting.ts index ac480e549dc8..c9e6df76217a 100644 --- a/packages/driver/src/cy/commands/asserting.ts +++ b/packages/driver/src/cy/commands/asserting.ts @@ -216,13 +216,13 @@ export default function (Commands, Cypress, cy, state) { Commands.addAll({ type: 'assertion', prevSubject: true }, { should () { // Cast to `any` to pass all arguments - // eslint-disable-next-line prefer-rest-params + return shouldFn.apply(this, arguments as any) }, and () { // Cast to `any` to pass all arguments - // eslint-disable-next-line prefer-rest-params + return shouldFn.apply(this, arguments as any) }, }) diff --git a/packages/driver/src/cy/commands/commands.ts b/packages/driver/src/cy/commands/commands.ts index f0169ea33ea4..27af454b9186 100644 --- a/packages/driver/src/cy/commands/commands.ts +++ b/packages/driver/src/cy/commands/commands.ts @@ -12,7 +12,7 @@ const command = function (ctx, name, ...args) { }) } - return ctx[name].apply(ctx, args) + return ctx[name](...args) } export default function (Commands, Cypress, cy) { diff --git a/packages/driver/src/cy/commands/connectors.ts b/packages/driver/src/cy/commands/connectors.ts index 5c54c52dff1f..237a00549887 100644 --- a/packages/driver/src/cy/commands/connectors.ts +++ b/packages/driver/src/cy/commands/connectors.ts @@ -372,7 +372,6 @@ export default function (Commands, Cypress, cy, state) { Commands.addAll({ prevSubject: 'optional' }, { then (subject, userOptions, fn) { - // eslint-disable-next-line prefer-rest-params return thenFn.apply(this, [subject, userOptions, fn]) }, }) diff --git a/packages/driver/src/cy/commands/screenshot.ts b/packages/driver/src/cy/commands/screenshot.ts index 6437d54a4f6e..0d9c6b767ca9 100644 --- a/packages/driver/src/cy/commands/screenshot.ts +++ b/packages/driver/src/cy/commands/screenshot.ts @@ -33,7 +33,7 @@ type TakeScreenshotOptions = { timeout?: number } -type AutomationOptions = TakeScreenshotOptions & Omit & Partial +type AutomationOptions = TakeScreenshotOptions & Omit & Partial const getViewportHeight = (state: StateFunc) => { // TODO this doesn't seem correct @@ -310,7 +310,7 @@ const takeElementScreenshot = ($el: JQuery, state: StateFunc, autom } // "app only" means we're hiding the runner UI -const isAppOnly = ({ capture }: { capture: Cypress.ScreenshotOptions['capture']}) => { +const isAppOnly = ({ capture }: { capture: Cypress.ScreenshotOptions['capture'] }) => { return (capture === 'viewport') || (capture === 'fullPage') } diff --git a/packages/driver/src/cy/commands/sessions/index.ts b/packages/driver/src/cy/commands/sessions/index.ts index 8c116c8870ed..6943e30ab7fa 100644 --- a/packages/driver/src/cy/commands/sessions/index.ts +++ b/packages/driver/src/cy/commands/sessions/index.ts @@ -32,7 +32,7 @@ export default function (Commands, Cypress, cy) { } }) - Cypress.on('test:before:after:run:async', (test, Cypress, { nextTestHasTestIsolationOn }: {nextTestHasTestIsolationOn?: boolean} = {}) => { + Cypress.on('test:before:after:run:async', (test, Cypress, { nextTestHasTestIsolationOn }: { nextTestHasTestIsolationOn?: boolean } = {}) => { if (nextTestHasTestIsolationOn || nextTestHasTestIsolationOn === undefined) { return navigateAboutBlank({ inBetweenTestsAndNextTestHasTestIsolationOn: true }) } diff --git a/packages/driver/src/cy/focused.ts b/packages/driver/src/cy/focused.ts index 85edd76541eb..cf3a8637342c 100644 --- a/packages/driver/src/cy/focused.ts +++ b/packages/driver/src/cy/focused.ts @@ -49,7 +49,6 @@ const simulateFocusEvent = (el, win) => { return el.dispatchEvent(focusinEvt) } -// eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces export const create = (state: StateFunc) => ({ documentHasFocus () { // hardcode document has focus as true diff --git a/packages/driver/src/cy/jquery.ts b/packages/driver/src/cy/jquery.ts index 7196ebe2190a..3e9a81e8f7f6 100644 --- a/packages/driver/src/cy/jquery.ts +++ b/packages/driver/src/cy/jquery.ts @@ -8,7 +8,6 @@ const remoteJQueryisNotSameAsGlobal = (remoteJQuery) => { return remoteJQuery && (remoteJQuery !== $) } -// eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces export const create = (state: StateFunc) => ({ $$ (selector, context?) { if (context == null) { diff --git a/packages/driver/src/cy/keyboard.ts b/packages/driver/src/cy/keyboard.ts index fbeb454fe78d..2da05198d219 100644 --- a/packages/driver/src/cy/keyboard.ts +++ b/packages/driver/src/cy/keyboard.ts @@ -7,7 +7,7 @@ import { USKeyboard } from '../cypress/UsKeyboardLayout' import $dom from '../dom' import $document from '../dom/document' import $elements, { HTMLTextLikeInputElement } from '../dom/elements' -// eslint-disable-next-line no-duplicate-imports + import type { HTMLTextLikeElement } from '../dom/elements' import $selection from '../dom/selection' import $utils from '../cypress/utils' @@ -302,7 +302,7 @@ const parseCharsBetweenCurlyBraces = (chars: string) => { const shouldIgnoreEvent = < T extends KeyEventType, - K extends { [key in T]?: boolean } + K extends { [key in T]?: boolean }, >( eventName: T, options: K, diff --git a/packages/driver/src/cy/listeners.ts b/packages/driver/src/cy/listeners.ts index eff5b04a354f..f013ec71c79b 100644 --- a/packages/driver/src/cy/listeners.ts +++ b/packages/driver/src/cy/listeners.ts @@ -13,7 +13,7 @@ type BoundEvent = [ win: Window, event: keyof WindowEventMap, fn: BoundEventHandler, - capture?: boolean + capture?: boolean, ] let events: BoundEvent[] = [] diff --git a/packages/driver/src/cy/location.ts b/packages/driver/src/cy/location.ts index 4e22bf57a021..7fee21cc3133 100644 --- a/packages/driver/src/cy/location.ts +++ b/packages/driver/src/cy/location.ts @@ -15,7 +15,6 @@ const getRemoteLocationFromCrossOriginWindow = (autWindow: Window): Promise ({ getRemoteLocation (key?: string | undefined, win?: Window) { try { diff --git a/packages/driver/src/cy/mouse.ts b/packages/driver/src/cy/mouse.ts index c87e4b110a4b..1a2701b6d896 100644 --- a/packages/driver/src/cy/mouse.ts +++ b/packages/driver/src/cy/mouse.ts @@ -14,7 +14,7 @@ const debug = debugFn('cypress:driver:mouse') export type ForceEl = false | HTMLElement -export type MouseCoords = { x?: number, y?: number} +export type MouseCoords = { x?: number, y?: number } /** * @typedef Coords diff --git a/packages/driver/src/cy/retries.ts b/packages/driver/src/cy/retries.ts index 7ad67b052828..c3b2a218be6e 100644 --- a/packages/driver/src/cy/retries.ts +++ b/packages/driver/src/cy/retries.ts @@ -24,7 +24,6 @@ type retryOptions = { total?: number } -// eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces export const create = (Cypress: ICypress, state: StateFunc, timeout: $Cy['timeout'], clearTimeout: $Cy['clearTimeout'], whenStable: $Cy['whenStable'], finishAssertions: (err?: Error) => void) => ({ retry (fn, options: retryOptions, log?) { // remove the runnables timeout because we are now in retry diff --git a/packages/driver/src/cy/stability.ts b/packages/driver/src/cy/stability.ts index 8e213adb3c82..714182c72972 100644 --- a/packages/driver/src/cy/stability.ts +++ b/packages/driver/src/cy/stability.ts @@ -2,7 +2,6 @@ import Promise from 'bluebird' import type { ICypress } from '../cypress' import type { StateFunc } from '../cypress/state' -// eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces export const create = (Cypress: ICypress, state: StateFunc) => ({ isStable: (stable: boolean = true, event: string) => { if (state('isStable') === stable) { diff --git a/packages/driver/src/cy/testConfigOverrides.ts b/packages/driver/src/cy/testConfigOverrides.ts index 92097243f2aa..56785dfbe65a 100644 --- a/packages/driver/src/cy/testConfigOverrides.ts +++ b/packages/driver/src/cy/testConfigOverrides.ts @@ -12,7 +12,7 @@ type ResolvedTestConfigOverride = { * The list of test config overrides and the invocation details used to add helpful * error messaging to consumers if a test override fails validation. */ - testConfigList: Array + testConfigList: Array /** * The test config overrides that will apply to the test if it passes validation. */ @@ -33,11 +33,11 @@ type TestConfig = { invocationDetails: { stack: Object } -}; +} type ConfigOverrides = { env: Object | undefined -}; +} function setConfig (testConfig: ResolvedTestConfigOverride, config, localConfigOverrides: ConfigOverrides = { env: undefined }) { const { testConfigList = [] } = testConfig diff --git a/packages/driver/src/cy/timeouts.ts b/packages/driver/src/cy/timeouts.ts index f076a62b0ec9..1cd4b536c5b8 100644 --- a/packages/driver/src/cy/timeouts.ts +++ b/packages/driver/src/cy/timeouts.ts @@ -2,7 +2,6 @@ import _ from 'lodash' import $errUtils from '../cypress/error_utils' import type { StateFunc } from '../cypress/state' -// eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces export const create = (state: StateFunc) => ({ timeout (ms?: number, delta: boolean = false) { const runnable = state('runnable') diff --git a/packages/driver/src/cy/timers.ts b/packages/driver/src/cy/timers.ts index 9c55ad2ab7ee..c935dda2a42c 100644 --- a/packages/driver/src/cy/timers.ts +++ b/packages/driver/src/cy/timers.ts @@ -1,6 +1,5 @@ import type { ICypress } from '../cypress' -// eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces export const create = (Cypress: ICypress) => ({ reset () { return Cypress.action('app:timers:reset') diff --git a/packages/driver/src/cy/top_attr_guards.ts b/packages/driver/src/cy/top_attr_guards.ts index cb98268d6c3a..5afc052574d5 100644 --- a/packages/driver/src/cy/top_attr_guards.ts +++ b/packages/driver/src/cy/top_attr_guards.ts @@ -2,7 +2,7 @@ import $elements from '../dom/elements' const invalidTargets = new Set(['_parent', '_top']) -export type GuardedEvent = Event & {target: HTMLFormElement | HTMLAnchorElement} +export type GuardedEvent = Event & { target: HTMLFormElement | HTMLAnchorElement } /** * Guard against target being set to something other than blank or self, while trying @@ -12,7 +12,7 @@ export function handleInvalidEventTarget (e: GuardedEvent) { handleInvalidTarget(e.target) } -export type GuardedAnchorEvent = Event & {target: HTMLAnchorElement} +export type GuardedAnchorEvent = Event & { target: HTMLAnchorElement } /** * We need to listen to all click events on the window, but only handle anchor elements, diff --git a/packages/driver/src/cy/xhrs.ts b/packages/driver/src/cy/xhrs.ts index 157ca472b2f9..5ee94174753a 100644 --- a/packages/driver/src/cy/xhrs.ts +++ b/packages/driver/src/cy/xhrs.ts @@ -23,7 +23,6 @@ const xhrNotWaitedOnByIndex = (state: StateFunc, alias: string, index: number, p } } -// eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces export const create = (state: StateFunc) => ({ getIndexedXhrByAlias (alias: string, index: number) { let prop diff --git a/packages/driver/src/cypress/command_queue.ts b/packages/driver/src/cypress/command_queue.ts index 09ac6e460bf2..7d8db9ea4e96 100644 --- a/packages/driver/src/cypress/command_queue.ts +++ b/packages/driver/src/cypress/command_queue.ts @@ -295,8 +295,6 @@ export class CommandQueue extends Queue<$Command> { command.set('queryFn', ret) ret = retryQuery(command, ret, this.cy) } - } catch (err) { - throw err } finally { // always remove this listener Cypress.removeListener('command:enqueued', commandEnqueued) diff --git a/packages/driver/src/cypress/cy.ts b/packages/driver/src/cypress/cy.ts index 8f82d49b298f..1ca24948e51c 100644 --- a/packages/driver/src/cypress/cy.ts +++ b/packages/driver/src/cypress/cy.ts @@ -1,4 +1,3 @@ -/* eslint-disable prefer-rest-params */ import _ from 'lodash' import Promise from 'bluebird' import debugFn from 'debug' @@ -81,7 +80,6 @@ const setTopOnError = function (Cypress, cy: $Cy) { return } - // eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces const onTopError = (handlerType) => (event) => { const { originalErr, err, promise } = $errUtils.errorFromUncaughtEvent(handlerType, event) as ErrorFromProjectRejectionEvent @@ -151,6 +149,7 @@ export class $Cy extends EventEmitter2 implements ITimeouts, IStability, IAssert keyboard: Keyboard mouse: Mouse } + queue: CommandQueue timeout: ITimeouts['timeout'] @@ -1088,7 +1087,6 @@ export class $Cy extends EventEmitter2 implements ITimeouts, IStability, IAssert const cy = this bindToListeners(contentWindow, { - // eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces onError: (handlerType) => (event) => { const { originalErr, err, promise } = $errUtils.errorFromUncaughtEvent(handlerType, event) as ErrorFromProjectRejectionEvent diff --git a/packages/driver/src/cypress/error_messages.ts b/packages/driver/src/cypress/error_messages.ts index 34e998fe8d6b..18ae4aae6a42 100644 --- a/packages/driver/src/cypress/error_messages.ts +++ b/packages/driver/src/cypress/error_messages.ts @@ -1373,7 +1373,7 @@ export default { If you're trying to send a \`x-www-form-urlencoded\` request then pass either a string or object literal to the \`body\` property.`, docsUrl: 'https://on.cypress.io/request', }, - /* eslint-disable indent */ + loading_failed (obj) { return { message: cyStripIndent(`\ @@ -1462,7 +1462,7 @@ export default { docsUrl: 'https://on.cypress.io/request', } }, - /* eslint-enable indent */ + url_missing: { message: `${cmd('request')} requires a \`url\`. You did not provide a \`url\`.`, docsUrl: 'https://on.cypress.io/request', diff --git a/packages/driver/src/cypress/log.ts b/packages/driver/src/cypress/log.ts index 2bf8c360733b..ad5b3636c8a0 100644 --- a/packages/driver/src/cypress/log.ts +++ b/packages/driver/src/cypress/log.ts @@ -101,7 +101,7 @@ export const LogUtils = { return _ .chain(tests) .flatMap((test) => test.prevAttempts ? [test, ...test.prevAttempts] : [test]) - .flatMap<{id: string}>((tests) => [].concat(tests.agents, tests.routes, tests.commands)) + .flatMap<{ id: string }>((tests) => [].concat(tests.agents, tests.routes, tests.commands)) .compact() .union([{ id: '0' }]) // id is a string in the form of 'log-origin-#', grab the number off the end. diff --git a/packages/driver/src/cypress/mocha.ts b/packages/driver/src/cypress/mocha.ts index 125c36672bba..445b29533b20 100644 --- a/packages/driver/src/cypress/mocha.ts +++ b/packages/driver/src/cypress/mocha.ts @@ -1,4 +1,3 @@ -/* eslint-disable prefer-rest-params */ import _ from 'lodash' import $errUtils, { CypressError } from './error_utils' import $utils from './utils' @@ -450,7 +449,7 @@ function getNormalizedRetriesConfig (Cypress: Cypress.Cypress): NormalizedRetrie } } - const enablementKey: 'openMode'|'runMode' = isInOpenMode ? 'openMode' : 'runMode' + const enablementKey: 'openMode' | 'runMode' = isInOpenMode ? 'openMode' : 'runMode' const enablementValue = retriesConfig[enablementKey] // if retries are explicitly disabled, return an empty object diff --git a/packages/driver/src/cypress/runner.ts b/packages/driver/src/cypress/runner.ts index aa26ca18f9a4..01a52c832434 100644 --- a/packages/driver/src/cypress/runner.ts +++ b/packages/driver/src/cypress/runner.ts @@ -1248,7 +1248,6 @@ export default { return foundTest } - // eslint-disable-next-line @cypress/dev/arrow-body-multiline-braces const onSpecError = (handlerType: HandlerType) => (event) => { let { originalErr, err } = $errUtils.errorFromUncaughtEvent(handlerType, event) diff --git a/packages/driver/src/dom/coordinates.ts b/packages/driver/src/dom/coordinates.ts index 670e8da325d7..f0c7ee86acf2 100644 --- a/packages/driver/src/dom/coordinates.ts +++ b/packages/driver/src/dom/coordinates.ts @@ -189,7 +189,6 @@ const getCoordsByPosition = ( yPosition: 'top' | 'center' | 'bottom' = 'center', ) => { const getLeft = () => { - /* eslint-disable default-case */ switch (xPosition) { case 'left': return Math.ceil(left) case 'center': return Math.floor(left) @@ -205,8 +204,6 @@ const getCoordsByPosition = ( } } - /* eslint-disable default-case */ - // returning x/y here because this is // about the target position we want // to fire the event at based on what diff --git a/packages/driver/src/dom/elements/find.ts b/packages/driver/src/dom/elements/find.ts index caceed6d7295..ea63fc78e60f 100644 --- a/packages/driver/src/dom/elements/find.ts +++ b/packages/driver/src/dom/elements/find.ts @@ -303,7 +303,7 @@ export const getContainsSelector = (text, filter = '', options: { matchCase?: boolean } = {}) => { if (_.isRegExp(text) && options.matchCase === false && !text.flags.includes('i')) { - text = new RegExp(text.source, text.flags + 'i') // eslint-disable-line prefer-template + text = new RegExp(text.source, text.flags + 'i') } const escapedText = _.isString(text) ? JSON.stringify(text).slice(1, -1) : text.toString() diff --git a/packages/driver/src/util/serialization/log.ts b/packages/driver/src/util/serialization/log.ts index 1769bfd1be22..9b63cf88e42f 100644 --- a/packages/driver/src/util/serialization/log.ts +++ b/packages/driver/src/util/serialization/log.ts @@ -413,7 +413,7 @@ export const preprocessLogForSerialization = (logAttrs) => { * @returns a reified version of what a log is supposed to look like in Cypress */ export const reifyLogFromSerialization = (logAttrs) => { - let { snapshots, ... logAttrsRest } = logAttrs + let { snapshots, ...logAttrsRest } = logAttrs // if the protocol is enabled, we don't need to reify the snapshot since the snapshot was serializable coming into the primary instance of Cypress. // also make sure numTestsKeptInMemory is 0, otherwise we will want to preprocess the snapshot diff --git a/packages/driver/types/cypress/log.d.ts b/packages/driver/types/cypress/log.d.ts index 72875cadc405..851d29b0e805 100644 --- a/packages/driver/types/cypress/log.d.ts +++ b/packages/driver/types/cypress/log.d.ts @@ -20,8 +20,8 @@ declare namespace Cypress { } type Snapshot = { - body?: {get: () => any} - htmlAttrs?: {[key: string]: any} + body?: { get: () => any } + htmlAttrs?: { [key: string]: any } name?: string } From 007aae2d6da757138ea438200c63906b8f2f732c Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 15 Jan 2025 09:51:28 -0500 Subject: [PATCH 042/113] eslint cleanup general --- eslint.config.ts | 21 ++++++++++++--------- npm/puppeteer/eslint.config.ts | 11 +---------- packages/data-context/package.json | 2 +- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/eslint.config.ts b/eslint.config.ts index 7061ff87e769..77049cd76ef6 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -31,6 +31,10 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ languageOptions: { parserOptions: { parser: ts.parser, + projectService: true, + }, + globals: { + ...globals.node, }, }, }, @@ -149,6 +153,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'no-unsafe-finally': 'off', 'no-async-promise-executor': 'off', 'no-unsafe-optional-chaining': 'off', + 'prefer-spread': 'warn', '@typescript-eslint/no-unused-expressions': 'off', '@typescript-eslint/no-require-imports': 'off', @@ -173,7 +178,7 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ 'cypress/no-unnecessary-waiting': 'off', 'cypress/unsafe-to-chain-command': 'off', 'cypress/no-async-tests': 'off', - 'cypress/no-assigning-return-values': 'warn', + 'cypress/no-assigning-return-values': 'off', }, }, @@ -181,16 +186,18 @@ export const baseConfig: InfiniteDepthConfigWithExtends[] = [ { rules: { 'mocha/no-mocha-arrows': 'off', - 'mocha/no-setup-in-describe': 'off', //warn - 'mocha/max-top-level-suites': 'off', // warn - 'mocha/no-top-level-hooks': 'off', //warn - 'mocha/no-identical-title': 'off', // warn + 'mocha/no-setup-in-describe': 'off', + 'mocha/max-top-level-suites': 'off', + 'mocha/no-top-level-hooks': 'off', + 'mocha/no-identical-title': 'off', 'mocha/consistent-spacing-between-blocks': 'off', 'mocha/no-global-tests': 'off', 'mocha/no-sibling-hooks': 'off', 'mocha/no-skipped-tests': 'off', 'mocha/no-exports': 'off', 'mocha/no-async-describe': 'off', + 'mocha/no-return-and-callback': 'off', + 'mocha/no-pending-tests': 'off', }, }, @@ -239,10 +246,6 @@ export default ts.config( { files: ['**/*.{ts,js}'], languageOptions: { - parserOptions: { - projectService: true, - tsconfigRootDir: path.join(__dirname, './ts'), - }, globals: { ...globals.node, }, diff --git a/npm/puppeteer/eslint.config.ts b/npm/puppeteer/eslint.config.ts index 9b2c6c680b93..8b9636ce36e2 100644 --- a/npm/puppeteer/eslint.config.ts +++ b/npm/puppeteer/eslint.config.ts @@ -1,12 +1,3 @@ import { baseConfig } from '../../eslint.config' -export default [ - ...baseConfig, - { - languageOptions: { - globals: { - require: 'readonly', - }, - }, - }, -] +export default baseConfig diff --git a/packages/data-context/package.json b/packages/data-context/package.json index 6664b048d8bf..99c1c641ee50 100644 --- a/packages/data-context/package.json +++ b/packages/data-context/package.json @@ -10,7 +10,7 @@ "check-ts": "tsc --noEmit && yarn -s tslint", "clean": "rimraf --glob \"./{src,test}/**/*.js\"", "clean-deps": "rimraf node_modules", - "lint": "eslint --ext .js,.ts,.json, .", + "lint": "eslint .", "test": "yarn test-unit", "test-unit": "mocha -r @packages/ts/register --config ./test/.mocharc.js --reporter mocha-multi-reporters --reporter-options configFile=../../mocha-reporter-config.json", "tslint": "tslint --config ../ts/tslint.json --project ." From 85be1363023321938524357e53a0216f46e2eef9 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 15 Jan 2025 09:59:39 -0500 Subject: [PATCH 043/113] packages/electron --- packages/electron/.eslintignore | 5 ----- packages/electron/eslint.config.ts | 13 +++++++++++++ packages/electron/package.json | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) delete mode 100644 packages/electron/.eslintignore create mode 100644 packages/electron/eslint.config.ts diff --git a/packages/electron/.eslintignore b/packages/electron/.eslintignore deleted file mode 100644 index 79afe972da7d..000000000000 --- a/packages/electron/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -**/dist -**/*.d.ts -**/package-lock.json -**/tsconfig.json -**/cypress/fixtures \ No newline at end of file diff --git a/packages/electron/eslint.config.ts b/packages/electron/eslint.config.ts new file mode 100644 index 000000000000..83e393538748 --- /dev/null +++ b/packages/electron/eslint.config.ts @@ -0,0 +1,13 @@ +import { baseConfig } from '../../eslint.config' + +export default [ + ...baseConfig, { + languageOptions: { + parserOptions: { + projectService: { + allowDefaultProject: ['lib/*.js', 'app/*.js', 'index.js', 'test/*.js', 'eslint.config.ts'], + }, + }, + }, + }, +] diff --git a/packages/electron/package.json b/packages/electron/package.json index 0c319335656a..619826b2f135 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -7,7 +7,7 @@ "build-binary": "node ./bin/cypress-electron --install", "clean-deps": "rimraf node_modules", "postinstall": "echo '@packages/electron needs: yarn build'", - "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json, .", + "lint": "eslint .", "start": "./bin/cypress-electron", "test": "yarn test-unit", "test-debug": "yarn test-unit --inspect-brk=5566", From e2ed7793f5e9ca0d5c983db544cee1143a789320 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 15 Jan 2025 10:03:57 -0500 Subject: [PATCH 044/113] packages/errors --- packages/errors/.eslintignore | 1 - packages/errors/eslint.config.ts | 17 +++++ packages/errors/package.json | 2 +- packages/errors/src/errors.ts | 67 +++++++++---------- packages/errors/src/stackUtils.ts | 2 +- .../test/support/error-comparison-tool.ts | 6 +- .../test/unit/visualSnapshotErrors_spec.ts | 4 +- packages/errors/tsconfig.json | 2 + 8 files changed, 58 insertions(+), 43 deletions(-) delete mode 100644 packages/errors/.eslintignore create mode 100644 packages/errors/eslint.config.ts diff --git a/packages/errors/.eslintignore b/packages/errors/.eslintignore deleted file mode 100644 index d5857ea71fbd..000000000000 --- a/packages/errors/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -**/tsconfig.json diff --git a/packages/errors/eslint.config.ts b/packages/errors/eslint.config.ts new file mode 100644 index 000000000000..cb97f9b3e777 --- /dev/null +++ b/packages/errors/eslint.config.ts @@ -0,0 +1,17 @@ +import { baseConfig } from '../../eslint.config' + +export default [ + ...baseConfig, + { + ignores: ['__snapshot-html__/**/*'], + }, + { + languageOptions: { + parserOptions: { + projectService: { + allowDefaultProject: ['eslint.config.ts', 'index.js'], + }, + }, + }, + }, +] diff --git a/packages/errors/package.json b/packages/errors/package.json index c5098dd2d383..ede4ced44859 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -11,7 +11,7 @@ "clean": "rimraf ./src/*.js ./src/**/*.js ./src/**/**/*.js ./test/**/*.js || echo 'cleaned'", "clean-deps": "rimraf node_modules", "comparison": "node -r @packages/ts/register test/support/error-comparison-tool.ts", - "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json, .", + "lint": "eslint .", "test": "yarn test-unit", "test-electron": "HTML_IMAGE_CONVERSION=1 xvfb-maybe electron --no-sandbox ./node_modules/.bin/_mocha", "pretest-unit": "yarn clean", diff --git a/packages/errors/src/errors.ts b/packages/errors/src/errors.ts index 9df295c5ed1e..078def067a8c 100644 --- a/packages/errors/src/errors.ts +++ b/packages/errors/src/errors.ts @@ -1,6 +1,6 @@ import AU from 'ansi_up' import os from 'os' -/* eslint-disable no-console */ + import chalk from 'chalk' import _ from 'lodash' import path from 'path' @@ -155,7 +155,7 @@ export const AllCypressErrors = { CLOUD_CANCEL_SKIPPED_SPEC: () => { return errTemplate`${fmt.off(`\n `)}This spec and its tests were skipped because the run has been canceled.` }, - CLOUD_API_RESPONSE_FAILED_RETRYING: (arg1: {tries: number, delayMs: number, response: Error}) => { + CLOUD_API_RESPONSE_FAILED_RETRYING: (arg1: { tries: number, delayMs: number, response: Error }) => { const time = pluralize('time', arg1.tries) const delay = humanTime.long(arg1.delayMs, false) @@ -167,9 +167,8 @@ export const AllCypressErrors = { We will retry ${fmt.off(arg1.tries)} more ${fmt.off(time)} in ${fmt.off(delay)}... ` /* Because of fmt.listFlags() and fmt.listItems() */ - /* eslint-disable indent */ }, - CLOUD_CANNOT_PROCEED_IN_PARALLEL: (arg1: {flags: any, response: Error}) => { + CLOUD_CANNOT_PROCEED_IN_PARALLEL: (arg1: { flags: any, response: Error }) => { return errTemplate`\ We encountered an unexpected error communicating with our servers. @@ -182,7 +181,7 @@ export const AllCypressErrors = { ciBuildId: '--ciBuildId', })}` }, - CLOUD_CANNOT_PROCEED_IN_SERIAL: (arg1: {flags: any, response: Error}) => { + CLOUD_CANNOT_PROCEED_IN_SERIAL: (arg1: { flags: any, response: Error }) => { return errTemplate`\ We encountered an unexpected error communicating with our servers. @@ -195,7 +194,7 @@ export const AllCypressErrors = { ciBuildId: '--ciBuildId', })}` }, - CLOUD_UNKNOWN_INVALID_REQUEST: (arg1: {flags: any, response: Error}) => { + CLOUD_UNKNOWN_INVALID_REQUEST: (arg1: { flags: any, response: Error }) => { return errTemplate`\ We encountered an unexpected error communicating with our servers. @@ -210,7 +209,7 @@ export const AllCypressErrors = { ciBuildId: '--ciBuildId', })}` }, - CLOUD_UNKNOWN_CREATE_RUN_WARNING: (arg1: {props?: any, message: string}) => { + CLOUD_UNKNOWN_CREATE_RUN_WARNING: (arg1: { props?: any, message: string }) => { if (!Object.keys(arg1.props).length) { return errTemplate`\ Warning from Cypress Cloud: ${fmt.highlight(arg1.message)} @@ -223,7 +222,7 @@ export const AllCypressErrors = { Details: ${fmt.meta(arg1.props)}` }, - CLOUD_STALE_RUN: (arg1: {runUrl: string, [key: string]: any}) => { + CLOUD_STALE_RUN: (arg1: { runUrl: string, [key: string]: any }) => { return errTemplate`\ You are attempting to pass the ${fmt.flag(`--parallel`)} flag to a run that was completed over 24 hours ago. @@ -240,7 +239,7 @@ export const AllCypressErrors = { https://on.cypress.io/stale-run` }, - CLOUD_ALREADY_COMPLETE: (props: {runUrl: string}) => { + CLOUD_ALREADY_COMPLETE: (props: { runUrl: string }) => { return errTemplate`\ The run you are attempting to access is already complete and will not accept new groups. @@ -257,7 +256,7 @@ export const AllCypressErrors = { https://on.cypress.io/already-complete` }, - CLOUD_PARALLEL_REQUIRED: (arg1: {runUrl: string}) => { + CLOUD_PARALLEL_REQUIRED: (arg1: { runUrl: string }) => { return errTemplate`\ You did not pass the ${fmt.flag(`--parallel`)} flag, but this run's group was originally created with the --parallel flag. @@ -274,7 +273,7 @@ export const AllCypressErrors = { https://on.cypress.io/parallel-required` }, - CLOUD_PARALLEL_DISALLOWED: (arg1: {runUrl: string}) => { + CLOUD_PARALLEL_DISALLOWED: (arg1: { runUrl: string }) => { return errTemplate`\ You passed the ${fmt.flag(`--parallel`)} flag, but this run group was originally created without the --parallel flag. @@ -290,7 +289,7 @@ export const AllCypressErrors = { https://on.cypress.io/parallel-disallowed` }, - CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH: (arg1: {runUrl: string, parameters: any, payload: any }) => { + CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH: (arg1: { runUrl: string, parameters: any, payload: any }) => { let params: any = arg1.parameters if (arg1.payload?.differentParams) { @@ -344,7 +343,7 @@ export const AllCypressErrors = { https://on.cypress.io/parallel-group-params-mismatch` }, - CLOUD_RUN_GROUP_NAME_NOT_UNIQUE: (arg1: {runUrl: string, ciBuildId?: string | null}) => { + CLOUD_RUN_GROUP_NAME_NOT_UNIQUE: (arg1: { runUrl: string, ciBuildId?: string | null }) => { return errTemplate`\ You passed the ${fmt.flag(`--group`)} flag, but this group name has already been used for this run. @@ -362,7 +361,7 @@ export const AllCypressErrors = { https://on.cypress.io/run-group-name-not-unique` }, - CLOUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN: (arg1: {link: string}) => { + CLOUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN: (arg1: { link: string }) => { return errTemplate`\ ${fmt.highlightSecondary(`Auto Cancellation`)} is not included under your current billing plan. @@ -370,7 +369,7 @@ export const AllCypressErrors = { ${fmt.off(arg1.link)}` }, - CLOUD_AUTO_CANCEL_MISMATCH: (arg1: {runUrl: string}) => { + CLOUD_AUTO_CANCEL_MISMATCH: (arg1: { runUrl: string }) => { return errTemplate`\ You passed the ${fmt.flag(`--auto-cancel-after-failures`)} flag, but this run originally started with a different value for the ${fmt.flag(`--auto-cancel-after-failures`)} flag. @@ -442,7 +441,6 @@ export const AllCypressErrors = { The --ci-build-id flag is used to either group or parallelize multiple runs together. https://on.cypress.io/incorrect-ci-build-id-usage` - /* eslint-enable indent */ }, RECORD_KEY_MISSING: () => { return errTemplate`\ @@ -491,7 +489,7 @@ export const AllCypressErrors = { https://on.cypress.io/recording-project-runs` }, - CLOUD_INVALID_RUN_REQUEST: (arg1: {message: string, errors: string[], object: object}) => { + CLOUD_INVALID_RUN_REQUEST: (arg1: { message: string, errors: string[], object: object }) => { return errTemplate`\ Recording this run failed. The request was invalid. @@ -629,7 +627,7 @@ export const AllCypressErrors = { return AllCypressErrors.CLOUD_PROTOCOL_UPLOAD_NETWORK_FAILURE(firstError as Error & { url: string }) } - return AllCypressErrors.CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE(error.errors[0] as Error & { url: string, status: number, statusText: string, responseBody: string}) + return AllCypressErrors.CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE(error.errors[0] as Error & { url: string, status: number, statusText: string, responseBody: string }) } let systemErr = error.errors.find((err) => { @@ -934,7 +932,7 @@ export const AllCypressErrors = { Instead the value was: ${fmt.stringify(value)}` }, - RENAMED_CONFIG_OPTION: (arg1: {name: string, newName: string}) => { + RENAMED_CONFIG_OPTION: (arg1: { name: string, newName: string }) => { return errTemplate`\ The ${fmt.highlight(arg1.name)} configuration option you have supplied has been renamed. @@ -955,7 +953,7 @@ export const AllCypressErrors = { This server has been configured as your ${fmt.highlight(`baseUrl`)}, and tests will likely fail if it is not running.` }, // TODO: test this - CANNOT_CONNECT_BASE_URL_RETRYING: (arg1: {attempt: number, baseUrl: string, remaining: number, delay: number}) => { + CANNOT_CONNECT_BASE_URL_RETRYING: (arg1: { attempt: number, baseUrl: string, remaining: number, delay: number }) => { switch (arg1.attempt) { case 1: return errTemplate`\ @@ -973,7 +971,7 @@ export const AllCypressErrors = { } }, // TODO: test this - INVALID_REPORTER_NAME: (arg1: {name: string, paths: string[], error: Error}) => { + INVALID_REPORTER_NAME: (arg1: { name: string, paths: string[], error: Error }) => { return errTemplate`\ Error loading the reporter: ${fmt.highlight(arg1.name)} @@ -1019,7 +1017,7 @@ export const AllCypressErrors = { https://on.cypress.io/installing-cypress` }, - FREE_PLAN_EXCEEDS_MONTHLY_PRIVATE_TESTS: (arg1: {link: string, usedTestsMessage: string, limit: number}) => { + FREE_PLAN_EXCEEDS_MONTHLY_PRIVATE_TESTS: (arg1: { link: string, usedTestsMessage: string, limit: number }) => { return errTemplate`\ You've exceeded the limit of private test results under your free plan this month. ${getUsedTestsMessage(arg1.limit, arg1.usedTestsMessage)} @@ -1027,7 +1025,7 @@ export const AllCypressErrors = { ${fmt.off(arg1.link)}` }, - FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_PRIVATE_TESTS: (arg1: {link: string, usedTestsMessage: string, gracePeriodMessage: string, limit: number}) => { + FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_PRIVATE_TESTS: (arg1: { link: string, usedTestsMessage: string, gracePeriodMessage: string, limit: number }) => { return errTemplate`\ You've exceeded the limit of private test results under your free plan this month. ${getUsedTestsMessage(arg1.limit, arg1.usedTestsMessage)} @@ -1035,7 +1033,7 @@ export const AllCypressErrors = { ${fmt.off(arg1.link)}` }, - PAID_PLAN_EXCEEDS_MONTHLY_PRIVATE_TESTS: (arg1: {link: string, usedTestsMessage: string, limit: number}) => { + PAID_PLAN_EXCEEDS_MONTHLY_PRIVATE_TESTS: (arg1: { link: string, usedTestsMessage: string, limit: number }) => { return errTemplate`\ You've exceeded the limit of private test results under your current billing plan this month. ${getUsedTestsMessage(arg1.limit, arg1.usedTestsMessage)} @@ -1043,7 +1041,7 @@ export const AllCypressErrors = { ${fmt.off(arg1.link)}` }, - FREE_PLAN_EXCEEDS_MONTHLY_TESTS: (arg1: {link: string, usedTestsMessage: string, limit: number}) => { + FREE_PLAN_EXCEEDS_MONTHLY_TESTS: (arg1: { link: string, usedTestsMessage: string, limit: number }) => { return errTemplate`\ You've exceeded the limit of test results under your free plan this month. ${getUsedTestsMessage(arg1.limit, arg1.usedTestsMessage)} @@ -1051,7 +1049,7 @@ export const AllCypressErrors = { ${fmt.off(arg1.link)}` }, - FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS: (arg1: {link: string, usedTestsMessage: string, gracePeriodMessage: string, limit: number}) => { + FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS: (arg1: { link: string, usedTestsMessage: string, gracePeriodMessage: string, limit: number }) => { return errTemplate`\ You've exceeded the limit of test results under your free plan this month. ${getUsedTestsMessage(arg1.limit, arg1.usedTestsMessage)} @@ -1061,7 +1059,7 @@ export const AllCypressErrors = { ${fmt.off(arg1.link)}` }, - PLAN_EXCEEDS_MONTHLY_TESTS: (arg1: {link: string, planType: string, usedTestsMessage: string, limit: number}) => { + PLAN_EXCEEDS_MONTHLY_TESTS: (arg1: { link: string, planType: string, usedTestsMessage: string, limit: number }) => { return errTemplate`\ You've exceeded the limit of test results under your ${fmt.highlight(arg1.planType)} billing plan this month. ${getUsedTestsMessage(arg1.limit, arg1.usedTestsMessage)} @@ -1069,7 +1067,7 @@ export const AllCypressErrors = { ${fmt.off(arg1.link)}` }, - FREE_PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE: (arg1: {link: string, gracePeriodMessage: string}) => { + FREE_PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE: (arg1: { link: string, gracePeriodMessage: string }) => { return errTemplate`\ ${fmt.highlightSecondary(`Parallelization`)} is not included under your free plan. @@ -1077,7 +1075,7 @@ export const AllCypressErrors = { ${fmt.off(arg1.link)}` }, - PARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN: (arg1: {link: string}) => { + PARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN: (arg1: { link: string }) => { return errTemplate`\ ${fmt.highlightSecondary(`Parallelization`)} is not included under your current billing plan. @@ -1085,7 +1083,7 @@ export const AllCypressErrors = { ${fmt.off(arg1.link)}` }, - PLAN_IN_GRACE_PERIOD_RUN_GROUPING_FEATURE_USED: (arg1: {link: string, gracePeriodMessage: string}) => { + PLAN_IN_GRACE_PERIOD_RUN_GROUPING_FEATURE_USED: (arg1: { link: string, gracePeriodMessage: string }) => { return errTemplate`\ ${fmt.highlightSecondary(`Grouping`)} is not included under your free plan. @@ -1093,7 +1091,7 @@ export const AllCypressErrors = { ${fmt.off(arg1.link)}` }, - RUN_GROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN: (arg1: {link: string}) => { + RUN_GROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN: (arg1: { link: string }) => { return errTemplate`\ ${fmt.highlightSecondary(`Grouping`)} is not included under your current billing plan. @@ -1140,7 +1138,7 @@ export const AllCypressErrors = { CYPRESS_INTERNAL_ENV is reserved for internal use and cannot be modified.` }, - CDP_VERSION_TOO_OLD: (minimumVersion: string, currentVersion: {major: number, minor: string | number}) => { + CDP_VERSION_TOO_OLD: (minimumVersion: string, currentVersion: { major: number, minor: string | number }) => { const phrase = currentVersion.major !== 0 ? fmt.highlight(`${currentVersion.major}.${currentVersion.minor}`) : fmt.off('an older version') @@ -1249,7 +1247,7 @@ export const AllCypressErrors = { }, // TODO: verify configFile is absolute path // TODO: make this relative path, not absolute - EXPERIMENTAL_COMPONENT_TESTING_REMOVED: (arg1: {configFile: string}) => { + EXPERIMENTAL_COMPONENT_TESTING_REMOVED: (arg1: { configFile: string }) => { return errTemplate`\ The ${fmt.highlight('experimentalComponentTesting')} configuration option was removed in ${fmt.cypressVersion(`7.0.0`)}. @@ -1879,7 +1877,6 @@ export const AllCypressErrors = { }, } as const -// eslint-disable-next-line @typescript-eslint/no-unused-vars const _typeCheck: Record ErrTemplateResult> = AllCypressErrors type AllCypressErrorObj = typeof AllCypressErrors @@ -1966,7 +1963,7 @@ interface GenericError extends Error { [key: string]: any } -export const cloneErr = function (err: CypressError | GenericError, options: {html?: boolean} = {}) { +export const cloneErr = function (err: CypressError | GenericError, options: { html?: boolean } = {}) { _.defaults(options, { html: false, }) diff --git a/packages/errors/src/stackUtils.ts b/packages/errors/src/stackUtils.ts index 4f4d5b0ab75e..27cd02ee1efe 100644 --- a/packages/errors/src/stackUtils.ts +++ b/packages/errors/src/stackUtils.ts @@ -3,7 +3,7 @@ import type { ErrorLike } from './errorTypes' export const stackLineRegex = /^\s*(at )?.*@?(?:\(?.*(?::\d+:\d+||\[native code\])+\)?)$/ -type MessageLines = [string[], string[]] & {messageEnded?: boolean} +type MessageLines = [string[], string[]] & { messageEnded?: boolean } // returns tuple of [message, stack] export const splitStack = (stack: string) => { diff --git a/packages/errors/test/support/error-comparison-tool.ts b/packages/errors/test/support/error-comparison-tool.ts index 14a8062ec03d..dbd27509363a 100644 --- a/packages/errors/test/support/error-comparison-tool.ts +++ b/packages/errors/test/support/error-comparison-tool.ts @@ -140,13 +140,13 @@ app.get('/base-list', async (req, res) => { } }) -app.get<{offset: number}>('/load-more/:offset', async (req, res) => { +app.get<{ offset: number }>('/load-more/:offset', async (req, res) => { const rows = await getRows(req.params.offset) res.send(rows) }) -app.get<{offset: number}>('/load-more-base/:offset', async (req, res) => { +app.get<{ offset: number }>('/load-more-base/:offset', async (req, res) => { const rows = await getRows(req.params.offset, true) res.send(rows) @@ -166,7 +166,7 @@ app.get('/looks-good/:name', async (req, res) => { } }) -app.get<{name: string, type: string}>('/html/:name/:type', async (req, res) => { +app.get<{ name: string, type: string }>('/html/:name/:type', async (req, res) => { const pathToFile = path.join(ERRORS_DIR, req.params.type, `${req.params.name}.html`) try { diff --git a/packages/errors/test/unit/visualSnapshotErrors_spec.ts b/packages/errors/test/unit/visualSnapshotErrors_spec.ts index 88d8fa118b84..e5c2e5ea9989 100644 --- a/packages/errors/test/unit/visualSnapshotErrors_spec.ts +++ b/packages/errors/test/unit/visualSnapshotErrors_spec.ts @@ -185,7 +185,7 @@ const testVisualError = (errorGeneratorFn: () => Er } } -const testVisualErrors = (whichError: CypressErrorType | '*', errorsToTest: {[K in CypressErrorType]: () => ErrorGenerator}) => { +const testVisualErrors = (whichError: CypressErrorType | '*', errorsToTest: { [K in CypressErrorType]: () => ErrorGenerator }) => { // if we aren't testing all the errors if (whichError !== '*') { // then just test this individual error @@ -291,7 +291,7 @@ const makeErr = () => { err.stack = err.stack?.split('\n').slice(0, 3).join('\n') ?? '' - return err as Error & {stack: string} + return err as Error & { stack: string } } process.on('uncaughtException', (err) => { diff --git a/packages/errors/tsconfig.json b/packages/errors/tsconfig.json index dfb951b17cde..c745576400fd 100644 --- a/packages/errors/tsconfig.json +++ b/packages/errors/tsconfig.json @@ -1,7 +1,9 @@ { "extends": "../ts/tsconfig.json", "include": [ + "index.js", "src", + "test" ], "compilerOptions": { "allowJs": false, From abf276f0296991d908f32ab125599a9bc5c45448 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 15 Jan 2025 10:09:20 -0500 Subject: [PATCH 045/113] packages/example --- packages/example/bin/convert.js | 14 +- .../cypress/e2e/1-getting-started/todo.cy.js | 143 ++++++++ .../e2e/2-advanced-examples/actions.cy.js | 321 ++++++++++++++++++ .../e2e/2-advanced-examples/aliasing.cy.js | 39 +++ .../e2e/2-advanced-examples/assertions.cy.js | 176 ++++++++++ .../e2e/2-advanced-examples/connectors.cy.js | 98 ++++++ .../e2e/2-advanced-examples/cookies.cy.js | 118 +++++++ .../e2e/2-advanced-examples/cypress_api.cy.js | 185 ++++++++++ .../e2e/2-advanced-examples/files.cy.js | 85 +++++ .../e2e/2-advanced-examples/location.cy.js | 32 ++ .../e2e/2-advanced-examples/misc.cy.js | 90 +++++ .../e2e/2-advanced-examples/navigation.cy.js | 55 +++ .../network_requests.cy.js | 163 +++++++++ .../e2e/2-advanced-examples/querying.cy.js | 114 +++++++ .../spies_stubs_clocks.cy.js | 204 +++++++++++ .../e2e/2-advanced-examples/storage.cy.js | 117 +++++++ .../e2e/2-advanced-examples/traversal.cy.js | 121 +++++++ .../e2e/2-advanced-examples/utilities.cy.js | 107 ++++++ .../e2e/2-advanced-examples/viewport.cy.js | 58 ++++ .../e2e/2-advanced-examples/waiting.cy.js | 30 ++ .../e2e/2-advanced-examples/window.cy.js | 22 ++ .../example/cypress/fixtures/example.json | 5 + packages/example/cypress/support/commands.js | 25 ++ packages/example/cypress/support/component.js | 20 ++ packages/example/cypress/support/e2e.js | 20 ++ packages/example/eslint.config.ts | 18 + 26 files changed, 2372 insertions(+), 8 deletions(-) create mode 100644 packages/example/cypress/e2e/1-getting-started/todo.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/actions.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/aliasing.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/assertions.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/connectors.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/cookies.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/cypress_api.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/files.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/location.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/misc.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/navigation.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/network_requests.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/querying.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/spies_stubs_clocks.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/storage.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/traversal.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/utilities.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/viewport.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/waiting.cy.js create mode 100644 packages/example/cypress/e2e/2-advanced-examples/window.cy.js create mode 100644 packages/example/cypress/fixtures/example.json create mode 100644 packages/example/cypress/support/commands.js create mode 100644 packages/example/cypress/support/component.js create mode 100644 packages/example/cypress/support/e2e.js create mode 100644 packages/example/eslint.config.ts diff --git a/packages/example/bin/convert.js b/packages/example/bin/convert.js index 8ba38500d38f..81fa0c6c5612 100755 --- a/packages/example/bin/convert.js +++ b/packages/example/bin/convert.js @@ -1,7 +1,5 @@ #!/usr/bin/env node -/* eslint-disable quotes */ - const fs = require('fs') const path = require('path') const glob = require('glob') @@ -17,12 +15,12 @@ function replaceStringsIn (file) { } replace('http://localhost:8080', 'https://example.cypress.io') - replace("to.eq('localhost:8080')", "to.eq('example.cypress.io')") - replace("to.eq('localhost')", "to.eq('example.cypress.io')") - replace("to.eq('8080')", "to.eq('')") - replace("to.eq('http:')", "to.eq('https:')") - replace(eslintRe, "") - replace("imgSrcToDataURL('/assets", "imgSrcToDataURL('https://example.cypress.io/assets") + replace('to.eq(\'localhost:8080\')', 'to.eq(\'example.cypress.io\')') + replace('to.eq(\'localhost\')', 'to.eq(\'example.cypress.io\')') + replace('to.eq(\'8080\')', 'to.eq(\'\')') + replace('to.eq(\'http:\')', 'to.eq(\'https:\')') + replace(eslintRe, '') + replace('imgSrcToDataURL(\'/assets', 'imgSrcToDataURL(\'https://example.cypress.io/assets') fs.writeFile(file, str, function (err) { if (err) throw err diff --git a/packages/example/cypress/e2e/1-getting-started/todo.cy.js b/packages/example/cypress/e2e/1-getting-started/todo.cy.js new file mode 100644 index 000000000000..4768ff923ece --- /dev/null +++ b/packages/example/cypress/e2e/1-getting-started/todo.cy.js @@ -0,0 +1,143 @@ +/// + +// Welcome to Cypress! +// +// This spec file contains a variety of sample tests +// for a todo list app that are designed to demonstrate +// the power of writing tests in Cypress. +// +// To learn more about how Cypress works and +// what makes it such an awesome testing tool, +// please read our getting started guide: +// https://on.cypress.io/introduction-to-cypress + +describe('example to-do app', () => { + beforeEach(() => { + // Cypress starts out with a blank slate for each test + // so we must tell it to visit our website with the `cy.visit()` command. + // Since we want to visit the same URL at the start of all our tests, + // we include it in our beforeEach function so that it runs before each test + cy.visit('https://example.cypress.io/todo') + }) + + it('displays two todo items by default', () => { + // We use the `cy.get()` command to get all elements that match the selector. + // Then, we use `should` to assert that there are two matched items, + // which are the two default items. + cy.get('.todo-list li').should('have.length', 2) + + // We can go even further and check that the default todos each contain + // the correct text. We use the `first` and `last` functions + // to get just the first and last matched elements individually, + // and then perform an assertion with `should`. + cy.get('.todo-list li').first().should('have.text', 'Pay electric bill') + cy.get('.todo-list li').last().should('have.text', 'Walk the dog') + }) + + it('can add new todo items', () => { + // We'll store our item text in a variable so we can reuse it + const newItem = 'Feed the cat' + + // Let's get the input element and use the `type` command to + // input our new list item. After typing the content of our item, + // we need to type the enter key as well in order to submit the input. + // This input has a data-test attribute so we'll use that to select the + // element in accordance with best practices: + // https://on.cypress.io/selecting-elements + cy.get('[data-test=new-todo]').type(`${newItem}{enter}`) + + // Now that we've typed our new item, let's check that it actually was added to the list. + // Since it's the newest item, it should exist as the last element in the list. + // In addition, with the two default items, we should have a total of 3 elements in the list. + // Since assertions yield the element that was asserted on, + // we can chain both of these assertions together into a single statement. + cy.get('.todo-list li') + .should('have.length', 3) + .last() + .should('have.text', newItem) + }) + + it('can check off an item as completed', () => { + // In addition to using the `get` command to get an element by selector, + // we can also use the `contains` command to get an element by its contents. + // However, this will yield the