diff --git a/.eslintrc.js b/.eslintrc.js index 2cef63a500b..2fe883f22c0 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -43,7 +43,14 @@ module.exports = { 'plugin:react/jsx-runtime', 'prettier', ], - + plugins: [ + 'promise', + 'sonarjs', + 'unicorn', + '@arthurgeron/react-usememo', + 'sonar', + '@shopify', + ], globals: { atom: false, document: false, @@ -52,8 +59,9 @@ module.exports = { Map: true, Set: true, }, - rules: { + '@shopify/prefer-early-return': ['error', { maximumStatements: 2 }], + 'sonarjs/no-inverted-boolean-check': 'error', '@arthurgeron/react-usememo/require-usememo': [ 'error', { checkHookCalls: false }, @@ -314,14 +322,6 @@ module.exports = { // TODO: Fix all errors for the following rules included in recommended config '@typescript-eslint/no-var-requires': 'off', }, - - plugins: [ - 'promise', - 'sonarjs', - 'unicorn', - '@arthurgeron/react-usememo', - 'sonar', - ], }, { // Rules that requires type information diff --git a/examples/monaco-graphql-nextjs/src/components/editor.tsx b/examples/monaco-graphql-nextjs/src/components/editor.tsx index 6937b40fcb1..c2d7ab503d4 100644 --- a/examples/monaco-graphql-nextjs/src/components/editor.tsx +++ b/examples/monaco-graphql-nextjs/src/components/editor.tsx @@ -4,6 +4,7 @@ import { Uri, editor, KeyMod, KeyCode, languages } from 'monaco-editor'; import { initializeMode } from 'monaco-graphql/esm/initializeMode'; import { createGraphiQLFetcher } from '@graphiql/toolkit'; import * as JSONC from 'jsonc-parser'; + /** * Copied from graphql/graphiql/examples/monaco-graphql-vite */ @@ -154,42 +155,44 @@ export default function Editor() { * Handle the initial schema load */ useEffect(() => { - if (!schema && !loading) { - setLoading(true); - void getSchema() - .then(data => { - if (!('data' in data)) { - throw new Error( - 'this demo does not support subscriptions or http multipart yet', - ); - } - initializeMode({ - diagnosticSettings: { - validateVariablesJSON: { - [Uri.file('operation.graphql').toString()]: [ - Uri.file('variables.json').toString(), - ], - }, - jsonDiagnosticSettings: { - validate: true, - schemaValidation: 'error', - // set these again, because we are entirely re-setting them here - allowComments: true, - trailingCommas: 'ignore', - }, + if (schema || loading) { + return; + } + + setLoading(true); + void getSchema() + .then(data => { + if (!('data' in data)) { + throw new Error( + 'this demo does not support subscriptions or http multipart yet', + ); + } + initializeMode({ + diagnosticSettings: { + validateVariablesJSON: { + [Uri.file('operation.graphql').toString()]: [ + Uri.file('variables.json').toString(), + ], }, - schemas: [ - { - introspectionJSON: data.data as unknown as IntrospectionQuery, - uri: 'myschema.graphql', - }, - ], - }); + jsonDiagnosticSettings: { + validate: true, + schemaValidation: 'error', + // set these again, because we are entirely re-setting them here + allowComments: true, + trailingCommas: 'ignore', + }, + }, + schemas: [ + { + introspectionJSON: data.data as unknown as IntrospectionQuery, + uri: 'myschema.graphql', + }, + ], + }); - setSchema(data.data); - }) - .then(() => setLoading(false)); - } + setSchema(data.data); + }) + .then(() => setLoading(false)); }, [schema, loading]); return (
diff --git a/examples/monaco-graphql-react-vite/src/App.tsx b/examples/monaco-graphql-react-vite/src/App.tsx index e7018397c73..a4d88b7907a 100644 --- a/examples/monaco-graphql-react-vite/src/App.tsx +++ b/examples/monaco-graphql-react-vite/src/App.tsx @@ -156,42 +156,43 @@ export default function App() { * Handle the initial schema load */ useEffect(() => { - if (!schema && !loading) { - setLoading(true); - void getSchema() - .then(data => { - if (!('data' in data)) { - throw new Error( - 'this demo does not support subscriptions or http multipart yet', - ); - } - initializeMode({ - diagnosticSettings: { - validateVariablesJSON: { - [Uri.file('operation.graphql').toString()]: [ - Uri.file('variables.json').toString(), - ], - }, - jsonDiagnosticSettings: { - validate: true, - schemaValidation: 'error', - // set these again, because we are entirely re-setting them here - allowComments: true, - trailingCommas: 'ignore', - }, + if (schema || loading) { + return; + } + setLoading(true); + void getSchema() + .then(data => { + if (!('data' in data)) { + throw new Error( + 'this demo does not support subscriptions or http multipart yet', + ); + } + initializeMode({ + diagnosticSettings: { + validateVariablesJSON: { + [Uri.file('operation.graphql').toString()]: [ + Uri.file('variables.json').toString(), + ], + }, + jsonDiagnosticSettings: { + validate: true, + schemaValidation: 'error', + // set these again, because we are entirely re-setting them here + allowComments: true, + trailingCommas: 'ignore', }, - schemas: [ - { - introspectionJSON: data.data as unknown as IntrospectionQuery, - uri: 'myschema.graphql', - }, - ], - }); + }, + schemas: [ + { + introspectionJSON: data.data as unknown as IntrospectionQuery, + uri: 'myschema.graphql', + }, + ], + }); - setSchema(data.data); - }) - .then(() => setLoading(false)); - } + setSchema(data.data); + }) + .then(() => setLoading(false)); }, [schema, loading]); return (
diff --git a/examples/monaco-graphql-webpack/src/index.ts b/examples/monaco-graphql-webpack/src/index.ts index 20ab3e320a7..8c31b56e556 100644 --- a/examples/monaco-graphql-webpack/src/index.ts +++ b/examples/monaco-graphql-webpack/src/index.ts @@ -111,19 +111,19 @@ async function render() { schemaPicker.addEventListener( 'input', async function SchemaSelectionHandler(_ev: Event) { - if (schemaPicker.value !== schemaFetcher.currentSchema.value) { - const schemaResult = await schemaFetcher.changeSchema( - schemaPicker.value, - ); - if (schemaResult && monacoGraphQLAPI) { - monacoGraphQLAPI.setSchemaConfig([ - { - ...schemaResult, - fileMatch: [operationModel.uri.toString()], - }, - ]); - schemaEditor.setValue(schemaResult.documentString || ''); - } + if (schemaPicker.value === schemaFetcher.currentSchema.value) { + return; + } + + const schemaResult = await schemaFetcher.changeSchema(schemaPicker.value); + if (schemaResult && monacoGraphQLAPI) { + monacoGraphQLAPI.setSchemaConfig([ + { + ...schemaResult, + fileMatch: [operationModel.uri.toString()], + }, + ]); + schemaEditor.setValue(schemaResult.documentString || ''); } }, ); diff --git a/package.json b/package.json index 8ca597f37e8..7d5b23cd4ef 100644 --- a/package.json +++ b/package.json @@ -94,6 +94,7 @@ "@changesets/changelog-github": "^0.4.7", "@changesets/cli": "^2.25.2", "@manypkg/get-packages": "^1.1.3", + "@shopify/eslint-plugin": "^42.1.0", "@strictsoftware/typedoc-plugin-monorepo": "^0.3.1", "@testing-library/jest-dom": "5.16.5", "@types/aws-serverless-express": "^3.3.3", diff --git a/packages/graphiql-react/src/editor/completion.ts b/packages/graphiql-react/src/editor/completion.ts index b60e4b6d050..231a53851ec 100644 --- a/packages/graphiql-react/src/editor/completion.ts +++ b/packages/graphiql-react/src/editor/completion.ts @@ -161,26 +161,27 @@ export function onHasCompletion( hintsUl.addEventListener( 'DOMNodeRemoved', (onRemoveFn = (event: Event) => { - if (event.target === hintsUl) { - hintsUl.removeEventListener('scroll', handleScroll); - hintsUl.removeEventListener('DOMNodeRemoved', onRemoveFn); - if (information) { - information.removeEventListener( - 'click', - onClickHintInformation, - ); - } - information = null; - fieldName = null; - typeNamePill = null; - typeNamePrefix = null; - typeName = null; - typeNameSuffix = null; - description = null; - deprecation = null; - deprecationReason = null; - onRemoveFn = null; + if (event.target !== hintsUl) { + return; } + hintsUl.removeEventListener('scroll', handleScroll); + hintsUl.removeEventListener('DOMNodeRemoved', onRemoveFn); + if (information) { + information.removeEventListener( + 'click', + onClickHintInformation, + ); + } + information = null; + fieldName = null; + typeNamePill = null; + typeNamePrefix = null; + typeName = null; + typeNameSuffix = null; + description = null; + deprecation = null; + deprecationReason = null; + onRemoveFn = null; }), ); } diff --git a/packages/graphiql-toolkit/src/storage/history.ts b/packages/graphiql-toolkit/src/storage/history.ts index fdb7b6f9fd4..50fad886609 100644 --- a/packages/graphiql-toolkit/src/storage/history.ts +++ b/packages/graphiql-toolkit/src/storage/history.ts @@ -75,23 +75,24 @@ export class HistoryStore { operationName?: string, ) => { if ( - this.shouldSaveQuery( + !this.shouldSaveQuery( query, variables, headers, this.history.fetchRecent(), ) ) { - this.history.push({ - query, - variables, - headers, - operationName, - }); - const historyQueries = this.history.items; - const favoriteQueries = this.favorite.items; - this.queries = historyQueries.concat(favoriteQueries); + return; } + this.history.push({ + query, + variables, + headers, + operationName, + }); + const historyQueries = this.history.items; + const favoriteQueries = this.favorite.items; + this.queries = historyQueries.concat(favoriteQueries); }; toggleFavorite( diff --git a/packages/graphiql/__mocks__/codemirror.ts b/packages/graphiql/__mocks__/codemirror.ts index 24efe344a7c..da0e7e838a6 100644 --- a/packages/graphiql/__mocks__/codemirror.ts +++ b/packages/graphiql/__mocks__/codemirror.ts @@ -36,15 +36,16 @@ function CodeMirror(node: HTMLElement, { value, ...options }) { }, off(event) { - if (Object.prototype.hasOwnProperty.call(_eventListeners, event)) { - const updatedEventListeners = {}; - for (const e in _eventListeners) { - if (e !== event) { - updatedEventListeners[e] = _eventListeners[e]; - } + if (!Object.prototype.hasOwnProperty.call(_eventListeners, event)) { + return; + } + const updatedEventListeners = {}; + for (const e in _eventListeners) { + if (e !== event) { + updatedEventListeners[e] = _eventListeners[e]; } - _eventListeners = updatedEventListeners; } + _eventListeners = updatedEventListeners; }, getValue() { diff --git a/packages/graphql-language-service-server/src/findGraphQLTags.ts b/packages/graphql-language-service-server/src/findGraphQLTags.ts index 478b4ae3966..b415fd59f9b 100644 --- a/packages/graphql-language-service-server/src/findGraphQLTags.ts +++ b/packages/graphql-language-service-server/src/findGraphQLTags.ts @@ -80,6 +80,7 @@ type ParseVueSFCResult = scriptSetupAst?: import('@babel/types').Statement[]; scriptAst?: import('@babel/types').Statement[]; }; + function parseVueSFC(source: string): ParseVueSFCResult { const { errors, descriptor } = VueParser.parse(source); @@ -199,24 +200,25 @@ export function findGraphQLTags( }; const visitors = { - CallExpression: (node: Expression) => { - if ('callee' in node) { - const { callee } = node; - - if ( - callee.type === 'Identifier' && - getGraphQLTagName(callee) && - 'arguments' in node - ) { - const templateLiteral = node.arguments[0]; - if (templateLiteral && templateLiteral.type === 'TemplateLiteral') { - parseTemplateLiteral(templateLiteral); - return; - } + CallExpression(node: Expression) { + if (!('callee' in node)) { + return; + } + const { callee } = node; + + if ( + callee.type === 'Identifier' && + getGraphQLTagName(callee) && + 'arguments' in node + ) { + const templateLiteral = node.arguments[0]; + if (templateLiteral && templateLiteral.type === 'TemplateLiteral') { + parseTemplateLiteral(templateLiteral); + return; } - - traverse(node, visitors); } + + traverse(node, visitors); }, TaggedTemplateExpression: (node: TaggedTemplateExpression) => { const tagName = getGraphQLTagName(node.tag); diff --git a/packages/graphql-language-service-server/src/startServer.ts b/packages/graphql-language-service-server/src/startServer.ts index 0f9cf102f0d..89250907096 100644 --- a/packages/graphql-language-service-server/src/startServer.ts +++ b/packages/graphql-language-service-server/src/startServer.ts @@ -149,58 +149,59 @@ const buildOptions = (options: ServerOptions): MappedServerOptions => { export default async function startServer( options: ServerOptions, ): Promise { - if (options?.method) { - const finalOptions = buildOptions(options); - let reader; - let writer; - switch (options.method) { - case 'socket': - // For socket connection, the message connection needs to be - // established before the server socket starts listening. - // Do that, and return at the end of this block. - if (!options.port) { - process.stderr.write( - '--port is required to establish socket connection.', - ); - process.exit(1); - } - - const { port, hostname } = options; - const socket = net - .createServer(async client => { - client.setEncoding('utf8'); - reader = new SocketMessageReader(client); - writer = new SocketMessageWriter(client); - client.on('end', () => { - socket.close(); - process.exit(0); - }); - const s = await initializeHandlers({ - reader, - writer, - options: finalOptions, - }); - s.listen(); - }) - .listen(port, hostname); - return; - case 'stream': - reader = new StreamMessageReader(process.stdin); - writer = new StreamMessageWriter(process.stdout); - break; - default: - reader = new IPCMessageReader(process); - writer = new IPCMessageWriter(process); - break; - } + if (!options?.method) { + return; + } + const finalOptions = buildOptions(options); + let reader; + let writer; + switch (options.method) { + case 'socket': + // For socket connection, the message connection needs to be + // established before the server socket starts listening. + // Do that, and return at the end of this block. + if (!options.port) { + process.stderr.write( + '--port is required to establish socket connection.', + ); + process.exit(1); + } - const serverWithHandlers = await initializeHandlers({ - reader, - writer, - options: finalOptions, - }); - serverWithHandlers.listen(); + const { port, hostname } = options; + const socket = net + .createServer(async client => { + client.setEncoding('utf8'); + reader = new SocketMessageReader(client); + writer = new SocketMessageWriter(client); + client.on('end', () => { + socket.close(); + process.exit(0); + }); + const s = await initializeHandlers({ + reader, + writer, + options: finalOptions, + }); + s.listen(); + }) + .listen(port, hostname); + return; + case 'stream': + reader = new StreamMessageReader(process.stdin); + writer = new StreamMessageWriter(process.stdout); + break; + default: + reader = new IPCMessageReader(process); + writer = new IPCMessageWriter(process); + break; } + + const serverWithHandlers = await initializeHandlers({ + reader, + writer, + options: finalOptions, + }); + serverWithHandlers.listen(); } type InitializerParams = { diff --git a/packages/graphql-language-service/src/interface/getAutocompleteSuggestions.ts b/packages/graphql-language-service/src/interface/getAutocompleteSuggestions.ts index 3f4d79ded27..5c01896a22d 100644 --- a/packages/graphql-language-service/src/interface/getAutocompleteSuggestions.ts +++ b/packages/graphql-language-service/src/interface/getAutocompleteSuggestions.ts @@ -970,14 +970,15 @@ export function getTokenAtPosition( let stringAtCursor = null; const token = runOnlineParser(queryText, (stream, state, style, index) => { if ( - index === cursor.line && - stream.getCurrentPosition() + offset >= cursor.character + 1 + index !== cursor.line || + stream.getCurrentPosition() + offset < cursor.character + 1 ) { - styleAtCursor = style; - stateAtCursor = { ...state }; - stringAtCursor = stream.current(); - return 'BREAK'; + return; } + styleAtCursor = style; + stateAtCursor = { ...state }; + stringAtCursor = stream.current(); + return 'BREAK'; }); // Return the state/style of parsed token in case those at cursor aren't diff --git a/yarn.lock b/yarn.lock index 6e6083dfc76..42b0ad06d42 100644 --- a/yarn.lock +++ b/yarn.lock @@ -169,7 +169,7 @@ json5 "^2.1.2" semver "^6.3.0" -"@babel/eslint-parser@^7.22.5": +"@babel/eslint-parser@^7.16.3", "@babel/eslint-parser@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.5.tgz#fa032503b9e2d188e25b1b95d29e8b8431042d78" integrity sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ== @@ -178,6 +178,13 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" +"@babel/eslint-plugin@^7.14.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/eslint-plugin/-/eslint-plugin-7.22.5.tgz#47407d8c9e527b62ff75ee11e4baa6de3da7cf0e" + integrity sha512-lDXW06rf1sXywWWw+UdS/iYxRjrqhH4AXdPeKE4+fEgEoGBXcdIDQ+uCJOUcvCb0jCTvfwHOSXkwnfd24EAkLQ== + dependencies: + eslint-rule-composer "^0.3.0" + "@babel/generator@^7.17.3", "@babel/generator@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" @@ -1514,6 +1521,13 @@ dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.20.7": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" + integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" @@ -3912,6 +3926,35 @@ dependencies: any-observable "^0.3.0" +"@shopify/eslint-plugin@^42.1.0": + version "42.1.0" + resolved "https://registry.yarnpkg.com/@shopify/eslint-plugin/-/eslint-plugin-42.1.0.tgz#77588f5529d56eab1335d4ecf1c92a36cc69ff0e" + integrity sha512-b45SXfXoE9+BvQjHrhInWlOMhsXrqIzts+setaXecR5WW6NcEKeeSfHvTvLVk231NHnrE5h+MuHp1Ci1pR5nfA== + dependencies: + "@babel/eslint-parser" "^7.16.3" + "@babel/eslint-plugin" "^7.14.5" + "@typescript-eslint/eslint-plugin" "^5.4.0" + "@typescript-eslint/parser" "^5.4.0" + change-case "^4.1.2" + common-tags "^1.8.2" + doctrine "^2.1.0" + eslint-config-prettier "^8.3.0" + eslint-module-utils "^2.7.1" + eslint-plugin-eslint-comments "^3.2.0" + eslint-plugin-import "^2.26.0" + eslint-plugin-jest "^25.3.0" + eslint-plugin-jest-formatting "^3.1.0" + eslint-plugin-jsx-a11y "^6.5.0" + eslint-plugin-node "^11.1.0" + eslint-plugin-prettier "^4.1.0" + eslint-plugin-promise "^6.0.0" + eslint-plugin-react "^7.30.0" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-sort-class-members "^1.14.0" + jsx-ast-utils "^3.2.1" + pkg-dir "^5.0.0" + pluralize "^8.0.0" + "@sideway/address@^4.1.0": version "4.1.1" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.1.tgz#9e321e74310963fdf8eebfbee09c7bd69972de4d" @@ -4824,7 +4867,7 @@ semver "^7.5.0" ts-api-utils "^1.0.0" -"@typescript-eslint/eslint-plugin@^5.60.0": +"@typescript-eslint/eslint-plugin@^5.4.0", "@typescript-eslint/eslint-plugin@^5.60.0": version "5.60.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.0.tgz#2f4bea6a3718bed2ba52905358d0f45cd3620d31" integrity sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg== @@ -4840,6 +4883,13 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/experimental-utils@^5.0.0": + version "5.60.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.60.0.tgz#48ffa47238592397c3d857fe1403eed3b1d5e604" + integrity sha512-ovid3u7CNBrr0Ct35LUPkNYH4e+z4Kc6dPfSG99oMmH9SfoEoefq09uSnJI4mUb/UM7a/peVM03G+MzLxrD16g== + dependencies: + "@typescript-eslint/utils" "5.60.0" + "@typescript-eslint/parser@6.0.0-alpha.159": version "6.0.0-alpha.159" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.0.0-alpha.159.tgz#50c7472dc7ebc8ecb19190774e2176d2cb889bbf" @@ -4851,6 +4901,16 @@ "@typescript-eslint/visitor-keys" "6.0.0-alpha.159+36b65ebc7" debug "^4.3.4" +"@typescript-eslint/parser@^5.4.0": + version "5.60.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.60.0.tgz#08f4daf5fc6548784513524f4f2f359cebb4068a" + integrity sha512-jBONcBsDJ9UoTWrARkRRCgDz6wUggmH5RpQVlt7BimSwaTkTjwypGzKORXbR4/2Hqjk9hgwlon2rVQAjWNpkyQ== + dependencies: + "@typescript-eslint/scope-manager" "5.60.0" + "@typescript-eslint/types" "5.60.0" + "@typescript-eslint/typescript-estree" "5.60.0" + debug "^4.3.4" + "@typescript-eslint/scope-manager@5.27.0": version "5.27.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.27.0.tgz#a272178f613050ed62f51f69aae1e19e870a8bbb" @@ -5632,7 +5692,7 @@ aria-query@5.1.3, aria-query@^5.0.0: dependencies: deep-equal "^2.0.5" -aria-query@^5.2.1: +aria-query@^5.1.3, aria-query@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.2.1.tgz#bc285d9d654d1df121bcd0c134880d415ca67c15" integrity sha512-7uFg4b+lETFgdaJyETnILsXgnnzVnkHcgRbwbPwevm5x/LmUlt3MjczMRe1zg824iBgXZNRPTBftNYyRSKLp2g== @@ -5682,7 +5742,7 @@ array-includes@^3.1.4: get-intrinsic "^1.1.1" is-string "^1.0.7" -array-includes@^3.1.6: +array-includes@^3.1.5, array-includes@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== @@ -5775,6 +5835,11 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -5846,6 +5911,11 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== +axe-core@^4.6.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.2.tgz#040a7342b20765cb18bb50b628394c21bccc17a0" + integrity sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g== + axios@^0.21.1: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -5853,7 +5923,7 @@ axios@^0.21.1: dependencies: follow-redirects "^1.14.0" -axobject-query@^3.2.1: +axobject-query@^3.1.1, axobject-query@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== @@ -6415,6 +6485,15 @@ caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.30001449: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001457.tgz#6af34bb5d720074e2099432aa522c21555a18301" integrity sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA== +capital-case@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" + integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + capitalize@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/capitalize/-/capitalize-2.0.4.tgz#eed7f94c6699a318eeef6e68967fe139c764b866" @@ -6483,6 +6562,24 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +change-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" + integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== + dependencies: + camel-case "^4.1.2" + capital-case "^1.0.4" + constant-case "^3.0.4" + dot-case "^3.0.4" + header-case "^2.0.4" + no-case "^3.0.4" + param-case "^3.0.4" + pascal-case "^3.1.2" + path-case "^3.0.4" + sentence-case "^3.0.4" + snake-case "^3.0.4" + tslib "^2.0.3" + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -6894,6 +6991,11 @@ common-tags@^1.8.0: resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== +common-tags@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -6995,6 +7097,15 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= +constant-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" + integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case "^2.0.2" + content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" @@ -7532,6 +7643,11 @@ cypress@^12.6.0: untildify "^4.0.0" yauzl "^2.10.0" +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -8529,7 +8645,7 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^8.8.0: +eslint-config-prettier@^8.3.0, eslint-config-prettier@^8.8.0: version "8.8.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== @@ -8577,7 +8693,7 @@ eslint-mdx@^2.1.0: uvu "^0.5.6" vfile "^5.3.7" -eslint-module-utils@^2.7.4: +eslint-module-utils@^2.7.1, eslint-module-utils@^2.7.4: version "2.8.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== @@ -8591,7 +8707,23 @@ eslint-plugin-cypress@^2.13.3: dependencies: globals "^11.12.0" -eslint-plugin-import@^2.27.5: +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-eslint-comments@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" + integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== + dependencies: + escape-string-regexp "^1.0.5" + ignore "^5.0.5" + +eslint-plugin-import@^2.26.0, eslint-plugin-import@^2.27.5: version "2.27.5" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== @@ -8612,6 +8744,18 @@ eslint-plugin-import@^2.27.5: semver "^6.3.0" tsconfig-paths "^3.14.1" +eslint-plugin-jest-formatting@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest-formatting/-/eslint-plugin-jest-formatting-3.1.0.tgz#b26dd5a40f432b642dcc880021a771bb1c93dcd2" + integrity sha512-XyysraZ1JSgGbLSDxjj5HzKKh0glgWf+7CkqxbTqb7zEhW7X2WHo5SBQ8cGhnszKN+2Lj3/oevBlHNbHezoc/A== + +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== + dependencies: + "@typescript-eslint/experimental-utils" "^5.0.0" + eslint-plugin-jest@^27.2.2: version "27.2.2" resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.2.2.tgz#be4ded5f91905d9ec89aa8968d39c71f3b072c0c" @@ -8619,6 +8763,28 @@ eslint-plugin-jest@^27.2.2: dependencies: "@typescript-eslint/utils" "^5.10.0" +eslint-plugin-jsx-a11y@^6.5.0: + version "6.7.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== + dependencies: + "@babel/runtime" "^7.20.7" + aria-query "^5.1.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + ast-types-flow "^0.0.7" + axe-core "^4.6.2" + axobject-query "^3.1.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.3" + language-tags "=1.0.5" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + semver "^6.3.0" + eslint-plugin-markdown@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.0.tgz#69a63ab3445076a3c2eb6fce6f5114785b19d318" @@ -8640,17 +8806,36 @@ eslint-plugin-mdx@^2.1.0: unified "^10.1.2" vfile "^5.3.7" -eslint-plugin-promise@^6.1.1: +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-prettier@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-promise@^6.0.0, eslint-plugin-promise@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== -eslint-plugin-react-hooks@^4.6.0: +eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react@^7.32.2: +eslint-plugin-react@^7.30.0, eslint-plugin-react@^7.32.2: version "7.32.2" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== @@ -8693,6 +8878,11 @@ eslint-plugin-sonarjs@^0.19.0: resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.19.0.tgz#6654bc1c6d24c2183891b8bfe1175004dbba1e3c" integrity sha512-6+s5oNk5TFtVlbRxqZN7FIGmjdPCYQKaTzFPmqieCmsU1kBYDzndTeQav0xtQNwZJWu5awWfTGe8Srq9xFOGnw== +eslint-plugin-sort-class-members@^1.14.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-sort-class-members/-/eslint-plugin-sort-class-members-1.18.0.tgz#561746eb30abc4e8bb8d582d359c652299e450d8" + integrity sha512-y4r5OC3LJNHJZCWfVwFnnRiNrQ/LRf7Pb1wD6/CP8Y4qmUvjtmkwrLvyY755p8SFTOOXVd33HgFuF3XxVW1xbg== + eslint-plugin-unicorn@^47.0.0: version "47.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-47.0.0.tgz#960e9d3789f656ba3e21982420793b069a911011" @@ -8715,6 +8905,11 @@ eslint-plugin-unicorn@^47.0.0: semver "^7.3.8" strip-indent "^3.0.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== + eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -8731,6 +8926,13 @@ eslint-scope@^7.2.0: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + 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" @@ -8738,6 +8940,11 @@ eslint-utils@^3.0.0: 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.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" @@ -9257,6 +9464,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + fast-glob@^3.1.1: version "3.2.5" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" @@ -10408,6 +10620,14 @@ he@1.2.0, he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +header-case@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" + integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== + dependencies: + capital-case "^1.0.4" + tslib "^2.0.3" + helpertypes@^0.0.18: version "0.0.18" resolved "https://registry.yarnpkg.com/helpertypes/-/helpertypes-0.0.18.tgz#fd2bf5d3351cc7d80f7876732361d3adba63e5b4" @@ -10702,7 +10922,7 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.0.0, ignore@^5.2.4: +ignore@^5.0.0, ignore@^5.0.5, ignore@^5.1.1, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -12233,6 +12453,14 @@ jsprim@^2.0.2: array-includes "^3.1.4" object.assign "^4.1.2" +jsx-ast-utils@^3.2.1, jsx-ast-utils@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" + jszip@^3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.0.tgz#faf3db2b4b8515425e34effcdbb086750a346061" @@ -12290,6 +12518,18 @@ klona@^2.0.5: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== +language-subtag-registry@~0.3.2: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@=1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== + dependencies: + language-subtag-registry "~0.3.2" + lazy-ass@1.6.0, lazy-ass@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" @@ -13853,7 +14093,7 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.assign@^4.1.4: +object.assign@^4.1.3, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== @@ -14254,6 +14494,14 @@ pascal-case@^3.1.1, pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" +path-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" + integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -15047,6 +15295,13 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + prettier@3.0.0-alpha.12: version "3.0.0-alpha.12" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.0-alpha.12.tgz#c38228f277e870298b6d95e579e54ea500487505" @@ -15618,7 +15873,7 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexpp@^3.2.0: +regexpp@^3.0.0, regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== @@ -15849,7 +16104,7 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.15. path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.22.1: +resolve@^1.10.1, resolve@^1.22.1: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -16142,7 +16397,7 @@ semver@7.x, semver@^7.3.7: dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -16213,6 +16468,15 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +sentence-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" + integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -16481,6 +16745,14 @@ smartwrap@^2.0.2: wcwidth "^1.0.1" yargs "^15.1.0" +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + sockjs@^0.3.24: version "0.3.24" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" @@ -17856,6 +18128,20 @@ update-check@1.5.2: registry-auth-token "3.3.2" registry-url "3.1.0" +upper-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" + integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== + dependencies: + tslib "^2.0.3" + +upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" + integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== + dependencies: + tslib "^2.0.3" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"