From d7f595e3034a05bcd739cdae590221d60bf55f19 Mon Sep 17 00:00:00 2001 From: Dimitri POSTOLOV Date: Thu, 6 Jul 2023 11:15:49 +0300 Subject: [PATCH] avoid bundling unnecesary languages, except `graphql`/`json` (#3285) * simplify `monaco-graphql-react-vite`, fix sending variables --------- Co-authored-by: Ted Thibodeau Jr Co-authored-by: Rikki Schulte --- .changeset/gold-nails-share.md | 5 + .eslintrc.js | 24 +- .github/workflows/pr-tests.yml | 2 +- custom-words.txt | 7 +- .../monaco-graphql-nextjs/src/constants.ts | 2 +- examples/monaco-graphql-nextjs/src/editor.tsx | 22 +- examples/monaco-graphql-webpack/package.json | 3 +- .../monaco-graphql-webpack/src/editors.ts | 98 ++-- examples/monaco-graphql-webpack/src/index.ts | 10 +- examples/monaco-graphql-webpack/src/schema.ts | 4 +- package.json | 20 +- packages/cm6-graphql/package.json | 2 +- .../package.json | 2 +- .../graphiql-plugin-explorer/package.json | 2 +- packages/graphiql-react/package.json | 2 +- .../graphiql-toolkit/docs/create-fetcher.md | 16 +- packages/monaco-graphql/README.md | 60 ++- packages/monaco-graphql/jest.config.js | 1 - packages/monaco-graphql/package.json | 7 +- .../scripts/patch-monaco-editor-types.mjs | 10 + packages/monaco-graphql/src/GraphQLWorker.ts | 2 +- packages/monaco-graphql/src/api.ts | 4 +- packages/monaco-graphql/src/graphql.worker.ts | 2 +- packages/monaco-graphql/src/graphqlMode.ts | 2 +- packages/monaco-graphql/src/initializeMode.ts | 2 +- .../monaco-graphql/src/languageFeatures.ts | 4 +- packages/monaco-graphql/src/monaco-editor.ts | 22 + .../monaco-graphql/src/monaco.contribution.ts | 2 +- packages/monaco-graphql/src/typings/index.ts | 2 +- .../src/typings/monaco-editor.d.ts | 6 + packages/monaco-graphql/src/utils.ts | 2 +- packages/monaco-graphql/src/workerManager.ts | 2 +- .../monaco-graphql/test/monaco-editor.test.ts | 28 ++ packages/monaco-graphql/vite.config.ts | 8 + packages/vscode-graphql-execution/esbuild.js | 1 - .../vscode-graphql-execution/package.json | 2 +- packages/vscode-graphql/esbuild.js | 1 - packages/vscode-graphql/package.json | 2 +- tsconfig.eslint.json | 2 +- yarn.lock | 453 +++++++----------- 40 files changed, 431 insertions(+), 417 deletions(-) create mode 100644 .changeset/gold-nails-share.md delete mode 100644 packages/monaco-graphql/jest.config.js create mode 100644 packages/monaco-graphql/scripts/patch-monaco-editor-types.mjs create mode 100644 packages/monaco-graphql/src/monaco-editor.ts create mode 100644 packages/monaco-graphql/src/typings/monaco-editor.d.ts create mode 100644 packages/monaco-graphql/test/monaco-editor.test.ts create mode 100644 packages/monaco-graphql/vite.config.ts diff --git a/.changeset/gold-nails-share.md b/.changeset/gold-nails-share.md new file mode 100644 index 00000000000..d8bf9eac71e --- /dev/null +++ b/.changeset/gold-nails-share.md @@ -0,0 +1,5 @@ +--- +'monaco-graphql': minor +--- + +avoid bundling unnecessary languages — import `monaco-graphql/esm/monaco-editor` instead of `monaco-editor` to reduce your bundle size, as that imports only `graphql` and `json` languages and leaves out `ts`, `css`, `html`, and much more diff --git a/.eslintrc.js b/.eslintrc.js index 2f0032df32e..3f54ca438bc 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -14,6 +14,11 @@ const RESTRICTED_IMPORTS = [ { name: 'graphql/type/definition', message: 'use `graphql`' }, { name: 'graphql/type/directives', message: 'use `graphql`' }, { name: 'graphql/version', message: 'use `graphql`' }, + { + name: 'monaco-editor', + message: + '`monaco-editor` imports all languages; use `monaco-graphql/esm/monaco-editor` instead to import only `json` and `graphql` languages', + }, ]; module.exports = { @@ -249,7 +254,6 @@ module.exports = { 'unicorn/prefer-dom-node-remove': 'error', // ECMAScript 6 (http://eslint.org/docs/rules/#ecmascript-6) 'arrow-body-style': 'off', - 'no-duplicate-imports': 'off', '@typescript-eslint/no-restricted-imports': [ 'error', ...RESTRICTED_IMPORTS, @@ -327,6 +331,7 @@ module.exports = { 'unicorn/prefer-node-protocol': 'error', 'import/no-unresolved': ['error', { ignore: ['^node:'] }], 'unicorn/prefer-string-replace-all': 'error', + 'unicorn/no-hex-escape': 'off', // TODO: enable // doesn't catch a lot of cases; we use ESLint builtin `no-restricted-syntax` to forbid `.keyCode` 'unicorn/prefer-keyboard-event-key': 'off', @@ -431,6 +436,21 @@ module.exports = { 'promise/prefer-await-to-then': 'error', }, }, + { + // Monaco-GraphQL rules + files: ['packages/monaco-graphql/**'], + rules: { + '@typescript-eslint/no-restricted-imports': [ + 'error', + ...RESTRICTED_IMPORTS.filter(({ name }) => name !== 'monaco-editor'), + { + name: 'monaco-editor', + message: + '`monaco-editor` imports all languages; use locale `monaco-editor.ts` instead to import only `json` and `graphql` languages', + }, + ], + }, + }, { // Parsing Markdown/MDX files: ['**/*.{md,mdx}'], @@ -442,6 +462,7 @@ module.exports = { }, }, { + // ❗ALWAYS LAST // Rules for codeblocks inside Markdown/MDX files: ['**/*.{md,mdx}/*.{js,jsx,ts,tsx}'], rules: { @@ -454,6 +475,7 @@ module.exports = { 'react-hooks/rules-of-hooks': 'off', '@arthurgeron/react-usememo/require-usememo': 'off', 'sonar/no-dead-store': 'off', + '@typescript-eslint/no-restricted-imports': 'off', }, }, ], diff --git a/.github/workflows/pr-tests.yml b/.github/workflows/pr-tests.yml index ee586cc28a2..322dfb313b0 100644 --- a/.github/workflows/pr-tests.yml +++ b/.github/workflows/pr-tests.yml @@ -22,7 +22,7 @@ jobs: - run: yarn install --frozen-lockfile --immutable - name: Run Unit Tests - run: yarn test:ci --coverage + run: yarn test:ci - uses: codecov/codecov-action@v3 with: diff --git a/custom-words.txt b/custom-words.txt index 0b139a557bf..714e3df7e0b 100644 --- a/custom-words.txt +++ b/custom-words.txt @@ -90,8 +90,10 @@ sonarjs svgr typedoc vite +vitest vitejs wonka +urql // identifiers used in code and configs acmerc @@ -123,7 +125,6 @@ marko matchingbracket middlewares modulemap -myschema newhope nocheck nocursor @@ -152,11 +153,9 @@ streamable subword testid testonly -typeof unfocus unnormalized unsubscribable -urql vash websockets @@ -221,3 +220,5 @@ typeahead typeaheads unparsable randomthing +codicon +edcore diff --git a/examples/monaco-graphql-nextjs/src/constants.ts b/examples/monaco-graphql-nextjs/src/constants.ts index 237816702e7..e6964c76988 100644 --- a/examples/monaco-graphql-nextjs/src/constants.ts +++ b/examples/monaco-graphql-nextjs/src/constants.ts @@ -1,4 +1,4 @@ -import { editor, Uri } from 'monaco-editor'; +import { editor, Uri } from 'monaco-graphql/esm/monaco-editor'; import { initializeMode } from 'monaco-graphql/esm/initializeMode'; type ModelType = 'operations' | 'variables' | 'response'; diff --git a/examples/monaco-graphql-nextjs/src/editor.tsx b/examples/monaco-graphql-nextjs/src/editor.tsx index 5ae0986ebb8..ea861a67230 100644 --- a/examples/monaco-graphql-nextjs/src/editor.tsx +++ b/examples/monaco-graphql-nextjs/src/editor.tsx @@ -1,6 +1,11 @@ import { ReactElement, useEffect, useRef, useState } from 'react'; import { getIntrospectionQuery, IntrospectionQuery } from 'graphql'; -import { editor, KeyMod, KeyCode, languages } from 'monaco-editor'; +import { + editor, + KeyMod, + KeyCode, + languages, +} from 'monaco-graphql/esm/monaco-editor'; import { createGraphiQLFetcher } from '@graphiql/toolkit'; import * as JSONC from 'jsonc-parser'; import { @@ -69,16 +74,17 @@ languages.json.jsonDefaults.setDiagnosticsOptions({ trailingCommas: 'ignore', }); -type CodeEditor = editor.IStandaloneCodeEditor | null; - export default function Editor(): ReactElement { const operationsRef = useRef(null); const variablesRef = useRef(null); const responseRef = useRef(null); - const [operationsEditor, setOperationsEditor] = useState(null); - const [variablesEditor, setVariablesEditor] = useState(null); - const [responseEditor, setResponseEditor] = useState(null); - const [schema, setSchema] = useState(null); + const [operationsEditor, setOperationsEditor] = + useState(); + const [variablesEditor, setVariablesEditor] = + useState(); + const [responseEditor, setResponseEditor] = + useState(); + const [schema, setSchema] = useState(); const [loading, setLoading] = useState(false); /** * Create the models & editors @@ -137,7 +143,7 @@ export default function Editor(): ReactElement { setLoading(true); void getSchema().then(async introspectionJSON => { MONACO_GRAPHQL_API.setSchemaConfig([ - { introspectionJSON, uri: 'myschema.graphql' }, + { introspectionJSON, uri: 'my-schema.graphql' }, ]); setSchema(introspectionJSON); setLoading(false); diff --git a/examples/monaco-graphql-webpack/package.json b/examples/monaco-graphql-webpack/package.json index 09a52c2a5d6..b48f5edccd9 100644 --- a/examples/monaco-graphql-webpack/package.json +++ b/examples/monaco-graphql-webpack/package.json @@ -15,7 +15,7 @@ "jsonc-parser": "3.2.0", "monaco-editor": "^0.36.0", "monaco-graphql": "^1.2.4", - "prettier": "^2.8.4" + "prettier": "3.0.0-alpha.12" }, "devDependencies": { "@babel/core": "^7.21.0", @@ -24,7 +24,6 @@ "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.21.0", - "@types/prettier": "^2.7.2", "@webpack-cli/serve": "^2.0.1", "babel-loader": "^9.1.2", "cross-env": "^7.0.2", diff --git a/examples/monaco-graphql-webpack/src/editors.ts b/examples/monaco-graphql-webpack/src/editors.ts index 2eec0cdc975..f9fa905c666 100644 --- a/examples/monaco-graphql-webpack/src/editors.ts +++ b/examples/monaco-graphql-webpack/src/editors.ts @@ -1,4 +1,4 @@ -import * as monaco from 'monaco-editor'; +import { editor, Uri } from 'monaco-graphql/esm/monaco-editor'; const GRAPHQL_LANGUAGE_ID = 'graphql'; @@ -35,80 +35,68 @@ const schemaSdlString = localStorage.getItem('schema-sdl') ?? ''; const THEME = 'vs-dark'; export function createEditors() { - const variablesModel = monaco.editor.createModel( + const variablesModel = editor.createModel( variablesString, 'json', - monaco.Uri.file('/1/variables.json'), + Uri.file('/1/variables.json'), ); - const variablesEditor = monaco.editor.create( - document.getElementById('variables'), - { - model: variablesModel, - language: 'json', - formatOnPaste: true, - formatOnType: true, - theme: THEME, - comments: { - insertSpace: true, - ignoreEmptyLines: true, - }, + const variablesEditor = editor.create(document.getElementById('variables'), { + model: variablesModel, + language: 'json', + formatOnPaste: true, + formatOnType: true, + theme: THEME, + comments: { + insertSpace: true, + ignoreEmptyLines: true, }, - ); + }); - const operationModel = monaco.editor.createModel( + const operationModel = editor.createModel( operationString, GRAPHQL_LANGUAGE_ID, - monaco.Uri.file('/1/operation.graphql'), + Uri.file('/1/operation.graphql'), ); - const operationEditor = monaco.editor.create( - document.getElementById('operation'), - { - model: operationModel, - formatOnPaste: true, - formatOnType: true, - folding: true, - theme: THEME, - language: GRAPHQL_LANGUAGE_ID, - }, - ); + const operationEditor = editor.create(document.getElementById('operation'), { + model: operationModel, + formatOnPaste: true, + formatOnType: true, + folding: true, + theme: THEME, + language: GRAPHQL_LANGUAGE_ID, + }); - const schemaModel = monaco.editor.createModel( + const schemaModel = editor.createModel( schemaSdlString, GRAPHQL_LANGUAGE_ID, - monaco.Uri.file('/1/schema.graphqls'), + Uri.file('/1/schema.graphqls'), ); - const schemaEditor = monaco.editor.create( - document.getElementById('schema-sdl'), - { - model: schemaModel, - formatOnPaste: true, - formatOnType: true, - folding: true, - theme: THEME, - language: GRAPHQL_LANGUAGE_ID, - }, - ); + const schemaEditor = editor.create(document.getElementById('schema-sdl'), { + model: schemaModel, + formatOnPaste: true, + formatOnType: true, + folding: true, + theme: THEME, + language: GRAPHQL_LANGUAGE_ID, + }); - const resultsModel = monaco.editor.createModel( + const resultsModel = editor.createModel( resultsString, 'json', - monaco.Uri.file('/1/results.json'), + Uri.file('/1/results.json'), ); - const resultsEditor = monaco.editor.create( - document.getElementById('results'), - { - model: resultsModel, - language: 'json', - theme: THEME, - wordWrap: 'on', - readOnly: true, - showFoldingControls: 'always', - }, - ); + const resultsEditor = editor.create(document.getElementById('results'), { + model: resultsModel, + language: 'json', + theme: THEME, + wordWrap: 'on', + readOnly: true, + showFoldingControls: 'always', + }); return { operationEditor, diff --git a/examples/monaco-graphql-webpack/src/index.ts b/examples/monaco-graphql-webpack/src/index.ts index d40239ef775..3b7c47fc821 100644 --- a/examples/monaco-graphql-webpack/src/index.ts +++ b/examples/monaco-graphql-webpack/src/index.ts @@ -1,6 +1,6 @@ /* global netlify */ -import * as monaco from 'monaco-editor'; +import { editor, KeyMod, KeyCode } from 'monaco-graphql/esm/monaco-editor'; import * as JSONC from 'jsonc-parser'; import { initializeMode } from 'monaco-graphql/esm/initializeMode'; @@ -181,14 +181,14 @@ async function render() { /** * Add an editor operation to the command palette & keyboard shortcuts */ - const opAction: monaco.editor.IActionDescriptor = { + const opAction: editor.IActionDescriptor = { id: 'graphql-run', label: 'Run Operation', contextMenuOrder: 0, contextMenuGroupId: 'graphql', keybindings: [ // eslint-disable-next-line no-bitwise - monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter, + KeyMod.CtrlCmd | KeyCode.Enter, ], run: operationHandler, }; @@ -196,13 +196,13 @@ async function render() { /** * Add a reload operation to the command palette & keyboard shortcuts */ - const reloadAction: monaco.editor.IActionDescriptor = { + const reloadAction: editor.IActionDescriptor = { id: 'graphql-reload', label: 'Reload Schema', contextMenuOrder: 0, contextMenuGroupId: 'graphql', keybindings: [ - monaco.KeyMod.CtrlCmd | monaco.KeyCode?.KeyR, // eslint-disable-line no-bitwise + KeyMod.CtrlCmd | KeyCode?.KeyR, // eslint-disable-line no-bitwise ], async run() { await schemaFetcher.loadSchema(); diff --git a/examples/monaco-graphql-webpack/src/schema.ts b/examples/monaco-graphql-webpack/src/schema.ts index 8e3891d090a..b3c2b677203 100644 --- a/examples/monaco-graphql-webpack/src/schema.ts +++ b/examples/monaco-graphql-webpack/src/schema.ts @@ -5,8 +5,8 @@ import { parse, buildASTSchema, } from 'graphql'; -import type { SchemaConfig } from 'monaco-graphql/src/typings'; -import { Uri } from 'monaco-editor'; +import type { SchemaConfig } from 'monaco-graphql'; +import { Uri } from 'monaco-graphql/esm/monaco-editor'; const SCHEMA_URL = 'https://api.github.com/graphql'; const API_TOKEN = localStorage.getItem('ghapi') || null; diff --git a/package.json b/package.json index 5f06dc9967b..cb7e853dfb1 100644 --- a/package.json +++ b/package.json @@ -34,21 +34,21 @@ "scripts": { "build": "yarn build:clean && yarn build:cm6-graphql && yarn build:packages && yarn build:graphiql-react && yarn build:graphiql-plugin-explorer && yarn build:graphiql-plugin-code-exporter && yarn build:graphiql", "build-bundles": "yarn prebuild-bundles && wsrun -p -m -s build-bundles", - "build-bundles-clean": "rimraf '{packages,examples,plugins}/**/{bundle,cdn,webpack}' && yarn workspace graphiql run build-bundles-clean", + "build-bundles-clean": "rimraf '{packages,examples,plugins}/**/{bundle,cdn,webpack}' && yarn workspace graphiql build-bundles-clean", "build-clean": "wsrun -m build-clean", "build-demo": "wsrun -m -s build-demo", "build-docs": "rimraf packages/graphiql/typedoc && typedoc packages", "build:clean": "yarn tsc --clean && yarn tsc --clean resources/tsconfig.graphiql.json", - "build:cm6-graphql": "yarn workspace cm6-graphql run build", + "build:cm6-graphql": "yarn workspace cm6-graphql build", "build:graphiql": "yarn tsc resources/tsconfig.graphiql.json", - "build:graphiql-plugin-explorer": "yarn workspace @graphiql/plugin-explorer run build", - "build:graphiql-plugin-code-exporter": "yarn workspace @graphiql/plugin-code-exporter run build", - "build:graphiql-react": "yarn workspace @graphiql/react run build", + "build:graphiql-plugin-explorer": "yarn workspace @graphiql/plugin-explorer build", + "build:graphiql-plugin-code-exporter": "yarn workspace @graphiql/plugin-code-exporter build", + "build:graphiql-react": "yarn workspace @graphiql/react build", "build:packages": "yarn tsc", "build:watch": "yarn tsc --watch", "watch": "yarn build:watch", - "watch-vscode": "yarn workspace vscode-graphql run compile", - "watch-vscode-exec": "yarn workspace vscode-graphql-execution run compile", + "watch-vscode": "yarn workspace vscode-graphql compile", + "watch-vscode-exec": "yarn workspace vscode-graphql-execution compile", "check": "yarn tsc --noEmit", "cypress-open": "yarn workspace graphiql cypress-open", "dev-graphiql": "yarn workspace graphiql dev", @@ -61,7 +61,7 @@ "lint": "yarn eslint && yarn pretty-check && yarn lint-cspell", "lint-cspell": "cspell --unique --no-progress --no-must-find-files", "lint-fix": "yarn eslint --fix", - "postbuild": "yarn workspace codemirror-graphql run postbuild", + "postbuild": "yarn workspace codemirror-graphql postbuild && yarn workspace monaco-graphql postbuild", "prebuild-bundles": "yarn build-bundles-clean", "prepublishOnly": "./scripts/prepublish.sh", "pretty": "yarn pretty-check --write", @@ -74,9 +74,9 @@ "repo:resolve": "node scripts/set-resolution.js", "start-graphiql": "yarn workspace graphiql dev", "start-monaco": "yarn workspace example-monaco-graphql-webpack start", - "t": "yarn run test", + "t": "yarn test", "test": "yarn jest", - "test:ci": "yarn build:cm6-graphql && jest", + "test:ci": "yarn build && jest --coverage && yarn workspace monaco-graphql test", "test:coverage": "yarn jest --coverage", "test:watch": "yarn jest --watch", "tsc": "tsc --build" diff --git a/packages/cm6-graphql/package.json b/packages/cm6-graphql/package.json index dcd32a876b3..87cb0df8683 100644 --- a/packages/cm6-graphql/package.json +++ b/packages/cm6-graphql/package.json @@ -28,7 +28,7 @@ "@lezer/generator": "^1.1.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.1.0", - "esbuild": "0.15.1", + "esbuild": "0.18.10", "graphql": "^16.5.0", "rollup": "^2.60.2", "rollup-plugin-dts": "^4.0.1", diff --git a/packages/graphiql-plugin-code-exporter/package.json b/packages/graphiql-plugin-code-exporter/package.json index d7c8303366f..1531b1df31e 100644 --- a/packages/graphiql-plugin-code-exporter/package.json +++ b/packages/graphiql-plugin-code-exporter/package.json @@ -38,7 +38,7 @@ }, "devDependencies": { "@graphiql/react": "^0.18.0", - "@vitejs/plugin-react": "^4.0.0", + "@vitejs/plugin-react": "^4.0.1", "postcss-nesting": "^10.1.7", "typescript": "^4.6.3", "vite": "^4.3.9" diff --git a/packages/graphiql-plugin-explorer/package.json b/packages/graphiql-plugin-explorer/package.json index 7647925bdde..1800e449f36 100644 --- a/packages/graphiql-plugin-explorer/package.json +++ b/packages/graphiql-plugin-explorer/package.json @@ -38,7 +38,7 @@ }, "devDependencies": { "@graphiql/react": "^0.18.0", - "@vitejs/plugin-react": "^4.0.0", + "@vitejs/plugin-react": "^4.0.1", "typescript": "^4.6.3", "vite": "^4.3.9" } diff --git a/packages/graphiql-react/package.json b/packages/graphiql-react/package.json index 5c35d8964cf..509c9688db5 100644 --- a/packages/graphiql-react/package.json +++ b/packages/graphiql-react/package.json @@ -67,7 +67,7 @@ "@babel/helper-string-parser": "^7.19.4", "@testing-library/react": "14.0.0", "@types/set-value": "^4.0.1", - "@vitejs/plugin-react": "^4.0.0", + "@vitejs/plugin-react": "^4.0.1", "graphql": "^16.4.0", "postcss-nesting": "^10.1.7", "react": "^18.2.0", diff --git a/packages/graphiql-toolkit/docs/create-fetcher.md b/packages/graphiql-toolkit/docs/create-fetcher.md index 84096505433..2d101afd1bd 100644 --- a/packages/graphiql-toolkit/docs/create-fetcher.md +++ b/packages/graphiql-toolkit/docs/create-fetcher.md @@ -35,7 +35,7 @@ import { createRoot } from 'react-dom/client'; import { GraphiQL } from 'graphiql'; import { createGraphiQLFetcher } from '@graphiql/toolkit'; -const url = 'https://myschema.com/graphql'; +const url = 'https://my-schema.com/graphql'; const fetcher = createGraphiQLFetcher({ url }); @@ -63,9 +63,9 @@ import { createRoot } from 'react-dom/client'; import { GraphiQL } from 'graphiql'; import { createGraphiQLFetcher } from '@graphiql/toolkit'; -const url = 'https://myschema.com/graphql'; +const url = 'https://my-schema.com/graphql'; -const subscriptionUrl = 'wss://myschema.com/graphql'; +const subscriptionUrl = 'wss://my-schema.com/graphql'; const fetcher = createGraphiQLFetcher({ url, @@ -143,9 +143,9 @@ import { GraphiQL } from 'graphiql'; import { createClient } from 'graphql-ws'; import { createGraphiQLFetcher } from '@graphiql/toolkit'; -const url = 'https://myschema.com/graphql'; +const url = 'https://my-schema.com/graphql'; -const subscriptionUrl = 'wss://myschema.com/graphql'; +const subscriptionUrl = 'wss://my-schema.com/graphql'; const fetcher = createGraphiQLFetcher({ url, @@ -175,9 +175,9 @@ import { GraphiQL } from 'graphiql'; import { SubscriptionClient } from 'subscriptions-transport-ws'; import { createGraphiQLFetcher } from '@graphiql/toolkit'; -const url = 'https://myschema.com/graphql'; +const url = 'https://my-schema.com/graphql'; -const subscriptionUrl = 'wss://myschema.com/graphql'; +const subscriptionUrl = 'wss://my-schema.com/graphql'; const fetcher = createGraphiQLFetcher({ url, @@ -207,7 +207,7 @@ import { GraphiQL } from 'graphiql'; import { fetch } from 'isomorphic-fetch'; import { createGraphiQLFetcher } from '@graphiql/toolkit'; -const url = 'https://myschema.com/graphql'; +const url = 'https://my-schema.com/graphql'; const fetcher = createGraphiQLFetcher({ url, diff --git a/packages/monaco-graphql/README.md b/packages/monaco-graphql/README.md index 67d39e143df..8e317452352 100644 --- a/packages/monaco-graphql/README.md +++ b/packages/monaco-graphql/README.md @@ -64,8 +64,8 @@ const MonacoGraphQLAPI = initializeMode({ { schema: myGraphqlSchema as GraphQLSchema, // anything that monaco.URI.from() is compatible with - uri: 'https://myschema.com', - uri: '/myschema.graphql', + uri: 'https://my-schema.com', + uri: '/my-schema.graphql', // match the monaco file uris for this schema. // accepts specific uris and anything `picomatch` supports. // (everything except bracket regular expressions) @@ -108,8 +108,8 @@ monaco.languages.graphql.setSchemaConfig([ { schema: myGraphqlSchema as GraphQLSchema, // anything that monaco.URI.from() is compatible with - uri: 'https://myschema.com', - uri: '/myschema.graphql', + uri: 'https://my-schema.com', + uri: '/my-schema.graphql', // match the monaco file uris for this schema. // accepts specific uris and anything `picomatch` supports. // (everything except bracket regular expressions) @@ -169,7 +169,7 @@ const MonacoGraphQLAPI = initializeMode({ schemas: [ { // anything that monaco.URI.from() is compatible with - uri: 'https://myschema.com', + uri: 'https://my-schema.com', // match the monaco file uris for this schema. // accepts specific filenames and anything `picomatch` supports. fileMatch: ['**/*.graphql'], @@ -272,6 +272,7 @@ Otherwise, you can, like in the sync demo above: ```ts import { initializeMode } from 'monaco-graphql/esm/initializeMode'; + const api = initializeMode(config); ``` @@ -285,11 +286,12 @@ globs or specific files. `uri` can be an url or file path, anything parsable ```ts // you can load it lazily import 'monaco-graphql'; + monaco.languages.graphql.api.setSchemaConfig([ { schema: GraphQLSchema, fileMatch: ['**/*.graphql'], - uri: 'myschema.graphql', + uri: 'my-schema.graphql', }, ]); ``` @@ -303,7 +305,7 @@ const schemas = [ { schema: GraphQLSchema, fileMatch: ['operations/*.graphql'], - uri: 'myschema.graphql', + uri: 'my-schema.graphql', }, ]; const api = initializeMode({ schemas }); @@ -327,7 +329,7 @@ api.setSchemaConfig([ { introspectionJSON: myIntrospectionJSON, fileMatch: ['**/*.graphql'], - uri: 'myschema.graphql', + uri: 'my-schema.graphql', }, ]); ``` @@ -516,13 +518,53 @@ some gotchas: - "linting" => "diagnostics" in lsp terminology - the default keymap is different, more vscode like - command palette and right click context menu are important -- you can extend the standard completion/linting/etc provided. for example, +- you can extend the provided standard completion, linting, etc. for example, `editor.setModelMarkers()` - [Monaco Editor API Docs](https://microsoft.github.io/monaco-editor/api/index.html) - [Monaco Editor Samples](https://github.com/Microsoft/monaco-editor-samples) repository is great for tips on implementing with different bundlers, runtimes, etc. +## Avoid Bundle All `monaco-editor`'s Languages + +While importing `monaco-editor` in your project, you silently import 83 builtin +languages, such as `typescript`, `html`, `css`, `json` and others. You can found +a full list of +[basic-languages](https://github.com/microsoft/monaco-editor/tree/main/src/basic-languages) +and +[languages](https://github.com/microsoft/monaco-editor/tree/main/src/language). + +For `monaco-graphql`, you need only 2 languages - `graphql` and `json`. +In version `monaco-graphql@1.3.0` and later, you can replace all `monaco-editor`'s +imports with `monaco-graphql/esm/monaco-editor` to improve performance, load +only `graphql` and `json` languages, and skip loading unused languages. + +```diff +-import { ... } from 'monaco-editor' ++import { ... } from 'monaco-graphql/esm/monaco-editor' +``` + +### Catch Future Import Mistakes with ESLint + +To prevent mis-importing of `monaco-editor`, you can set up default +`no-restricted-imports` rule for JavaScript projects or +`@typescript-eslint/no-restricted-imports` for TypeScript projects. + +```json5 +{ + rules: { + // or @typescript-eslint/no-restricted-imports + 'no-restricted-imports': [ + 'error', + { + name: 'monaco-editor', + message: '`monaco-editor` imports all languages; use `monaco-graphql/esm/monaco-editor` instead to import only `json` and `graphql` languages', + }, + ], + }, +} +``` + ## Inspiration `microsoft/monaco-json` was our inspiration from the outset, when it was still a diff --git a/packages/monaco-graphql/jest.config.js b/packages/monaco-graphql/jest.config.js deleted file mode 100644 index 342851e977e..00000000000 --- a/packages/monaco-graphql/jest.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../../jest.config.base')(__dirname); diff --git a/packages/monaco-graphql/package.json b/packages/monaco-graphql/package.json index 10b448046a8..be7c4d017c1 100644 --- a/packages/monaco-graphql/package.json +++ b/packages/monaco-graphql/package.json @@ -25,6 +25,10 @@ "esm", "src" ], + "scripts": { + "test": "vitest run", + "postbuild": "node scripts/patch-monaco-editor-types.mjs" + }, "dependencies": { "graphql-language-service": "^5.1.7", "picomatch-browser": "^2.2.6" @@ -32,7 +36,8 @@ "devDependencies": { "graphql": "^16.4.0", "monaco-editor": "^0.39.0", - "vscode-languageserver-types": "^3.17.1" + "vscode-languageserver-types": "^3.17.1", + "execa": "^7.1.1" }, "peerDependencies": { "graphql": "^15.5.0 || ^16.0.0", diff --git a/packages/monaco-graphql/scripts/patch-monaco-editor-types.mjs b/packages/monaco-graphql/scripts/patch-monaco-editor-types.mjs new file mode 100644 index 00000000000..141dc714b40 --- /dev/null +++ b/packages/monaco-graphql/scripts/patch-monaco-editor-types.mjs @@ -0,0 +1,10 @@ +import { writeFile } from 'node:fs/promises'; + +/* + * Generated types for `esm/monaco-editor` are incorrect, patch them by putting + * reexport of `monaco-editor` + */ + +await writeFile('esm/monaco-editor.d.ts', "export * from 'monaco-editor'"); + +console.log('✅ `monaco-graphql` types patched!'); diff --git a/packages/monaco-graphql/src/GraphQLWorker.ts b/packages/monaco-graphql/src/GraphQLWorker.ts index 7b0205fd471..9ffcf7e44b4 100644 --- a/packages/monaco-graphql/src/GraphQLWorker.ts +++ b/packages/monaco-graphql/src/GraphQLWorker.ts @@ -6,7 +6,7 @@ */ import { FormattingOptions, ICreateData, SchemaConfig } from './typings'; -import type * as monaco from 'monaco-editor'; +import type * as monaco from './monaco-editor'; import { getRange } from 'graphql-language-service'; import { LanguageService } from './LanguageService'; import { diff --git a/packages/monaco-graphql/src/api.ts b/packages/monaco-graphql/src/api.ts index 2771426b584..9dcd2631c51 100644 --- a/packages/monaco-graphql/src/api.ts +++ b/packages/monaco-graphql/src/api.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import { Emitter } from 'monaco-editor'; -import type * as monaco from 'monaco-editor'; +import { Emitter } from './monaco-editor'; +import type * as monaco from './monaco-editor'; import type { FragmentDefinitionNode, GraphQLSchema } from 'graphql'; import type { CompletionSettings, diff --git a/packages/monaco-graphql/src/graphql.worker.ts b/packages/monaco-graphql/src/graphql.worker.ts index 76e47830b8c..7f4f8cc458d 100644 --- a/packages/monaco-graphql/src/graphql.worker.ts +++ b/packages/monaco-graphql/src/graphql.worker.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import type * as monaco from 'monaco-editor'; +import type * as monaco from './monaco-editor'; import { ICreateData } from './typings'; // @ts-expect-error diff --git a/packages/monaco-graphql/src/graphqlMode.ts b/packages/monaco-graphql/src/graphqlMode.ts index 8e354280ac4..5a6806ed9f2 100644 --- a/packages/monaco-graphql/src/graphqlMode.ts +++ b/packages/monaco-graphql/src/graphqlMode.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import { Uri, IDisposable, languages } from 'monaco-editor'; +import { Uri, IDisposable, languages } from './monaco-editor'; import { WorkerManager } from './workerManager'; import { GraphQLWorker } from './GraphQLWorker'; import { MonacoGraphQLAPI } from './api'; diff --git a/packages/monaco-graphql/src/initializeMode.ts b/packages/monaco-graphql/src/initializeMode.ts index 24f8d69303e..5d81636d0da 100644 --- a/packages/monaco-graphql/src/initializeMode.ts +++ b/packages/monaco-graphql/src/initializeMode.ts @@ -8,7 +8,7 @@ import type * as GraphQLMode from './graphqlMode'; import { create as createMonacoGraphQLAPI, MonacoGraphQLAPI } from './api'; import type { MonacoGraphQLInitializeConfig } from './typings'; -import { languages } from 'monaco-editor'; +import { languages } from './monaco-editor'; export const LANGUAGE_ID = 'graphql'; diff --git a/packages/monaco-graphql/src/languageFeatures.ts b/packages/monaco-graphql/src/languageFeatures.ts index 285cf70c6d8..5e54979f696 100644 --- a/packages/monaco-graphql/src/languageFeatures.ts +++ b/packages/monaco-graphql/src/languageFeatures.ts @@ -7,8 +7,8 @@ import { GraphQLWorker } from './GraphQLWorker'; import type { MonacoGraphQLAPI } from './api'; -import type * as monaco from 'monaco-editor'; -import { Uri, languages } from 'monaco-editor'; +import type * as monaco from './monaco-editor'; +import { Uri, languages } from './monaco-editor'; import { editor } from 'monaco-editor/esm/vs/editor/editor.api'; import { CompletionItemKind as lsCompletionItemKind } from 'graphql-language-service'; import { getModelLanguageId, GraphQLWorkerCompletionItem } from './utils'; diff --git a/packages/monaco-graphql/src/monaco-editor.ts b/packages/monaco-graphql/src/monaco-editor.ts new file mode 100644 index 00000000000..03665989a07 --- /dev/null +++ b/packages/monaco-graphql/src/monaco-editor.ts @@ -0,0 +1,22 @@ +/* + * Importing `monaco-editor` imports all languages, and can expand bundle size. + * When you import `monaco-editor`, under the hood you import + * `monaco-editor/esm/vs/editor/editor.main.js` (described in its `package.json#module` field) + * Inside this file there are the following: + * + * ```js + * import '../basic-languages/monaco.contribution'; // ⚠️ a lot of languages; we only need graphql + * import '../language/css/monaco.contribution'; // ❌ throw out + * import '../language/html/monaco.contribution'; // ❌ throw out + * import '../language/json/monaco.contribution'; // ✅ json language for variables/response editor + * import '../language/typescript/monaco.contribution'; // ❌ throw out + * export * from './edcore.main'; // ✅ editor, languages, Uri,... exports + * ``` + * + * Types for `monaco-editor/esm/vs/editor/edcore.main` are also left out; + * we enhance them in `monaco.d.ts` 😎 + */ +import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution.js'; +import 'monaco-editor/esm/vs/language/json/monaco.contribution.js'; + +export * from 'monaco-editor/esm/vs/editor/edcore.main.js'; diff --git a/packages/monaco-graphql/src/monaco.contribution.ts b/packages/monaco-graphql/src/monaco.contribution.ts index 3f7147a7f04..6825acd266c 100644 --- a/packages/monaco-graphql/src/monaco.contribution.ts +++ b/packages/monaco-graphql/src/monaco.contribution.ts @@ -13,7 +13,7 @@ export { MonacoGraphQLAPIOptions, diagnosticSettingDefault, } from './api'; -import { languages } from 'monaco-editor'; +import { languages } from './monaco-editor'; import { initializeMode, LANGUAGE_ID } from './initializeMode'; export * from './typings'; diff --git a/packages/monaco-graphql/src/typings/index.ts b/packages/monaco-graphql/src/typings/index.ts index fa10e709540..d9ed36cb557 100644 --- a/packages/monaco-graphql/src/typings/index.ts +++ b/packages/monaco-graphql/src/typings/index.ts @@ -1,4 +1,4 @@ -import type * as monaco from 'monaco-editor'; +import type * as monaco from '../monaco-editor'; import { IntrospectionQuery, DocumentNode, diff --git a/packages/monaco-graphql/src/typings/monaco-editor.d.ts b/packages/monaco-graphql/src/typings/monaco-editor.d.ts new file mode 100644 index 00000000000..fc026eb7b5d --- /dev/null +++ b/packages/monaco-graphql/src/typings/monaco-editor.d.ts @@ -0,0 +1,6 @@ +/* eslint-disable @typescript-eslint/no-restricted-imports -- + * in this file is allowed to import monaco-editor + */ +declare module 'monaco-editor/esm/vs/editor/edcore.main.js' { + export * from 'monaco-editor'; +} diff --git a/packages/monaco-graphql/src/utils.ts b/packages/monaco-graphql/src/utils.ts index 2823a9dcc1a..add6efd99fa 100644 --- a/packages/monaco-graphql/src/utils.ts +++ b/packages/monaco-graphql/src/utils.ts @@ -12,7 +12,7 @@ import type { Diagnostic, CompletionItem as GraphQLCompletionItem, } from 'graphql-language-service'; -import type * as monaco from 'monaco-editor'; +import type * as monaco from './monaco-editor'; import { buildASTSchema, printSchema } from 'graphql'; import { Position } from 'graphql-language-service'; diff --git a/packages/monaco-graphql/src/workerManager.ts b/packages/monaco-graphql/src/workerManager.ts index 3d3fa8ea1b4..0965a417f23 100644 --- a/packages/monaco-graphql/src/workerManager.ts +++ b/packages/monaco-graphql/src/workerManager.ts @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -import { editor, IDisposable, Uri } from 'monaco-editor'; +import { editor, IDisposable, Uri } from './monaco-editor'; import { MonacoGraphQLAPI } from './api'; import { GraphQLWorker } from './GraphQLWorker'; import { ICreateData } from './typings'; diff --git a/packages/monaco-graphql/test/monaco-editor.test.ts b/packages/monaco-graphql/test/monaco-editor.test.ts new file mode 100644 index 00000000000..d07f5a3e05b --- /dev/null +++ b/packages/monaco-graphql/test/monaco-editor.test.ts @@ -0,0 +1,28 @@ +import { $ } from 'execa'; + +// eslint-disable-next-line no-control-regex +const ANSI_COLOR_REGEX = /\u001b\[\d+m/g; + +describe('monaco-editor', () => { + it('should include in bundle only graphql/json languages', async () => { + const { stdout } = + await $`yarn workspace example-monaco-graphql-react-vite build`; + // When process.env.CI is set, stdout contain ANSI color codes, and vite doesn't have + // `--no-colors` flag + const lines = stdout.replaceAll(ANSI_COLOR_REGEX, '').split('\n'); + expect(lines[0]).toBe('$ vite build'); + expect(lines[1]).toMatch(' building for production...'); + expect(lines[2]).toBe('transforming...'); + expect(lines[3]).toMatch('✓ 1092 modules transformed.'); + expect(lines[4]).toBe('rendering chunks...'); + expect(lines[5]).toBe('computing gzip size...'); + expect(lines[6]).toMatch('dist/index.html'); + expect(lines[7]).toMatch('dist/assets/codicon-'); + expect(lines[8]).toMatch('dist/assets/index-'); + expect(lines[9]).toMatch('dist/assets/graphql-'); + expect(lines[10]).toMatch('dist/assets/jsonMode-'); + expect(lines[11]).toMatch('dist/assets/graphqlMode-'); + expect(lines[12]).toMatch('dist/assets/index-'); + expect(lines[13]).toMatch('✓ built in '); + }, 30_000); +}); diff --git a/packages/monaco-graphql/vite.config.ts b/packages/monaco-graphql/vite.config.ts new file mode 100644 index 00000000000..8348b7c84a1 --- /dev/null +++ b/packages/monaco-graphql/vite.config.ts @@ -0,0 +1,8 @@ +// eslint-disable-next-line import/no-unresolved -- todo: try to fix better rather ignoring here? +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + globals: true, + }, +}); diff --git a/packages/vscode-graphql-execution/esbuild.js b/packages/vscode-graphql-execution/esbuild.js index 811589660cb..0b1d1ab9214 100644 --- a/packages/vscode-graphql-execution/esbuild.js +++ b/packages/vscode-graphql-execution/esbuild.js @@ -49,7 +49,6 @@ build({ ], format: 'cjs', sourcemap: true, - watch: isWatchMode, }) .then(({ errors, warnings }) => { if (warnings.length) { diff --git a/packages/vscode-graphql-execution/package.json b/packages/vscode-graphql-execution/package.json index 059f1ae9968..6f0712895b9 100644 --- a/packages/vscode-graphql-execution/package.json +++ b/packages/vscode-graphql-execution/package.json @@ -97,7 +97,7 @@ "@types/node": "^16.18.4", "@types/vscode": "1.62.0", "@types/ws": "8.2.2", - "esbuild": "0.15.10", + "esbuild": "0.18.10", "ovsx": "0.5.1", "vsce": "^2.13.0" }, diff --git a/packages/vscode-graphql/esbuild.js b/packages/vscode-graphql/esbuild.js index 589b0562ee7..eb9f2bb39d8 100644 --- a/packages/vscode-graphql/esbuild.js +++ b/packages/vscode-graphql/esbuild.js @@ -13,7 +13,6 @@ build({ outdir: 'out/', format: 'cjs', sourcemap: true, - watch: isWatchMode, // Avoid bundling @vue/compiler-sfc's dynamic dependencies external: [ 'squirrelly', diff --git a/packages/vscode-graphql/package.json b/packages/vscode-graphql/package.json index 007defe50c4..a727f5909fe 100644 --- a/packages/vscode-graphql/package.json +++ b/packages/vscode-graphql/package.json @@ -160,7 +160,7 @@ "devDependencies": { "@types/capitalize": "2.0.0", "@types/vscode": "1.62.0", - "esbuild": "0.15.10", + "esbuild": "0.18.10", "ovsx": "0.5.1", "vsce": "^2.13.0" }, diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index d081e55aad2..a420a2731be 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -18,6 +18,6 @@ "packages/graphiql/cypress.config.ts", "packages/graphiql/__mocks__/codemirror.ts", "packages/graphiql/__mocks__/@graphiql/react.tsx", - "packages/graphiql-react/vite.config.d.ts" + "packages/monaco-graphql/test/*.test.ts" ] } diff --git a/yarn.lock b/yarn.lock index ff92bf711b2..d707fcc8f4a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -106,7 +106,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.5.tgz#b1f6c86a02d85d2dd3368a2b67c09add8cd0c255" integrity sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA== -"@babel/core@^7.1.0", "@babel/core@^7.21.3", "@babel/core@^7.21.4", "@babel/core@^7.22.5", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.1.0", "@babel/core@^7.21.3", "@babel/core@^7.22.5", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.5.tgz#d67d9747ecf26ee7ecd3ebae1ee22225fe902a89" integrity sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg== @@ -1260,14 +1260,14 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" -"@babel/plugin-transform-react-jsx-self@^7.21.0", "@babel/plugin-transform-react-jsx-self@^7.22.5": +"@babel/plugin-transform-react-jsx-self@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz#ca2fdc11bc20d4d46de01137318b13d04e481d8e" integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-react-jsx-source@^7.19.6", "@babel/plugin-transform-react-jsx-source@^7.22.5": +"@babel/plugin-transform-react-jsx-source@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz#49af1615bfdf6ed9d3e9e43e425e0b2b65d15b6c" integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w== @@ -2464,126 +2464,221 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== -"@esbuild/android-arm@0.15.10": - version "0.15.10" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.10.tgz#a5f9432eb221afc243c321058ef25fe899886892" - integrity sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg== +"@esbuild/android-arm64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.10.tgz#a416286e6271a8f050869df76ecfc4b822103bbe" + integrity sha512-ynm4naLbNbK0ajf9LUWtQB+6Vfg1Z/AplArqr4tGebC00Z6m9Y91OVIcjDa461wGcZwcaHYaZAab4yJxfhisTQ== "@esbuild/android-arm@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== +"@esbuild/android-arm@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.10.tgz#aff8cfebd2ed3a52f4d4a923360e7abd0817c34c" + integrity sha512-3KClmVNd+Fku82uZJz5C4Rx8m1PPmWUFz5Zkw8jkpZPOmsq+EG1TTOtw1OXkHuX3WczOFQigrtf60B1ijKwNsg== + "@esbuild/android-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== +"@esbuild/android-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.10.tgz#f3b1f52fd6bfdf79d5b9b5965798ff3a8afa584d" + integrity sha512-vFfXj8P9Yfjh54yqUDEHKzqzYuEfPyAOl3z7R9hjkwt+NCvbn9VMxX+IILnAfdImRBfYVItgSUsqGKhJFnBwZw== + "@esbuild/darwin-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== +"@esbuild/darwin-arm64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.10.tgz#70644fc5f41bfe90079df449506de2a568f4c08f" + integrity sha512-k2OJQ7ZxE6sVc91+MQeZH9gFeDAH2uIYALPAwTjTCvcPy9Dzrf7V7gFUQPYkn09zloWhQ+nvxWHia2x2ZLR0sQ== + "@esbuild/darwin-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== +"@esbuild/darwin-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.10.tgz#a8a8466559af303db881c7a760553bfc00593a62" + integrity sha512-tnz/mdZk1L1Z3WpGjin/L2bKTe8/AKZpI8fcCLtH+gq8WXWsCNJSxlesAObV4qbtTl6pG5vmqFXfWUQ5hV8PAQ== + "@esbuild/freebsd-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== +"@esbuild/freebsd-arm64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.10.tgz#eda518b8d9b38b6c17c2c58600f8b97ff7acd73b" + integrity sha512-QJluV0LwBrbHnYYwSKC+K8RGz0g/EyhpQH1IxdoFT0nM7PfgjE+aS8wxq/KFEsU0JkL7U/EEKd3O8xVBxXb2aA== + "@esbuild/freebsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== +"@esbuild/freebsd-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.10.tgz#e96ba0a380ec38055fd4654dd7a96c90e32e4bbb" + integrity sha512-Hi/ycUkS6KTw+U9G5PK5NoK7CZboicaKUSVs0FSiPNtuCTzK6HNM4DIgniH7hFaeuszDS9T4dhAHWiLSt/Y5Ng== + "@esbuild/linux-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== +"@esbuild/linux-arm64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.10.tgz#63255f396ab465081bf37e4751bfade9578a8ff0" + integrity sha512-Nz6XcfRBOO7jSrVpKAyEyFOPGhySPNlgumSDhWAspdQQ11ub/7/NZDMhWDFReE9QH/SsCOCLQbdj0atAk/HMOQ== + "@esbuild/linux-arm@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== +"@esbuild/linux-arm@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.10.tgz#9a589ffb96837b7536cfa6739dd2e666cc5e548e" + integrity sha512-HfFoxY172tVHPIvJy+FHxzB4l8xU7e5cxmNS11cQ2jt4JWAukn/7LXaPdZid41UyTweqa4P/1zs201gRGCTwHw== + "@esbuild/linux-ia32@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== -"@esbuild/linux-loong64@0.15.1": - version "0.15.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.1.tgz#f293d9442201fa7448248f05590139bb8e521856" - integrity sha512-1tORADNFK9QS4KYyUyh3Td9WGrdiI1rSoKvY6A43+9G0kPujBuT4lIGyoK0AweOSO1aRIR28xQUfiJCUa78bUw== - -"@esbuild/linux-loong64@0.15.10": - version "0.15.10" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz#78a42897c2cf8db9fd5f1811f7590393b77774c7" - integrity sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg== +"@esbuild/linux-ia32@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.10.tgz#291aba2de93e8cdf77d607f54e554ce4ffd2f5ef" + integrity sha512-otMdmSmkMe+pmiP/bZBjfphyAsTsngyT9RCYwoFzqrveAbux9nYitDTpdgToG0Z0U55+PnH654gCH2GQ1aB6Yw== "@esbuild/linux-loong64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== +"@esbuild/linux-loong64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.10.tgz#ff0fe68c137dc165277b559a747c5debe6a8baec" + integrity sha512-t8tjFuON1koxskzQ4VFoh0T5UDUMiLYjwf9Wktd0tx8AoK6xgU+5ubKOpWpcnhEQ2tESS5u0v6QuN8PX/ftwcQ== + "@esbuild/linux-mips64el@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== +"@esbuild/linux-mips64el@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.10.tgz#99801b17fe2bffcce5cf9375731adf3025e7aee9" + integrity sha512-+dUkcVzcfEJHz3HEnVpIJu8z8Wdn2n/nWMWdl6FVPFGJAVySO4g3+XPzNKFytVFwf8hPVDwYXzVcu8GMFqsqZw== + "@esbuild/linux-ppc64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== +"@esbuild/linux-ppc64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.10.tgz#b5d179a6271d123b20694402364162bfa583b35b" + integrity sha512-sO3PjjxEGy+PY2qkGe2gwJbXdZN9wAYpVBZWFD0AwAoKuXRkWK0/zaMQ5ekUFJDRDCRm8x5U0Axaub7ynH/wVg== + "@esbuild/linux-riscv64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== +"@esbuild/linux-riscv64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.10.tgz#c34b55bcc71d07685e4b836659f299cd4f6889ec" + integrity sha512-JDtdbJg3yjDeXLv4lZYE1kiTnxv73/8cbPHY9T/dUKi8rYOM/k5b3W4UJLMUksuQ6nTm5c89W1nADsql6FW75A== + "@esbuild/linux-s390x@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== +"@esbuild/linux-s390x@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.10.tgz#84318e86ee1e377c603c7b5359f5f67771eddd99" + integrity sha512-NLuSKcp8WckjD2a7z5kzLiCywFwBTMlIxDNuud1AUGVuwBBJSkuubp6cNjJ0p5c6CZaA3QqUGwjHJBiG1SoOFw== + "@esbuild/linux-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== +"@esbuild/linux-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.10.tgz#631650dc12f902535dea84b356709ba4ca893071" + integrity sha512-wj2KRsCsFusli+6yFgNO/zmmLslislAWryJnodteRmGej7ZzinIbMdsyp13rVGde88zxJd5vercNYK9kuvlZaQ== + "@esbuild/netbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== +"@esbuild/netbsd-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.10.tgz#436c8c8590eb7638e9d811ce5aae5e44b7dd2e45" + integrity sha512-pQ9QqxEPI3cVRZyUtCoZxhZK3If+7RzR8L2yz2+TDzdygofIPOJFaAPkEJ5rYIbUO101RaiYxfdOBahYexLk5A== + "@esbuild/openbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== +"@esbuild/openbsd-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.10.tgz#69945ceeecfb30c20b64068d14a2cf9853254035" + integrity sha512-k8GTIIW9I8pEEfoOUm32TpPMgSg06JhL5DO+ql66aLTkOQUs0TxCA67Wi7pv6z8iF8STCGcNbm3UWFHLuci+ag== + "@esbuild/sunos-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== +"@esbuild/sunos-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.10.tgz#2ad291b87225f82490d3ffd7c8b643e45fe0d616" + integrity sha512-vIGYJIdEI6d4JBucAx8py792G8J0GP40qSH+EvSt80A4zvGd6jph+5t1g+eEXcS2aRpgZw6CrssNCFZxTdEsxw== + "@esbuild/win32-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== +"@esbuild/win32-arm64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.10.tgz#f12fcff13b9dbd3e80481f4cb6282708ce7794bb" + integrity sha512-kRhNcMZFGMW+ZHCarAM1ypr8OZs0k688ViUCetVCef9p3enFxzWeBg9h/575Y0nsFu0ZItluCVF5gMR2pwOEpA== + "@esbuild/win32-ia32@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== +"@esbuild/win32-ia32@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.10.tgz#e369e9bedf6b548a62b284320c6de08982d045da" + integrity sha512-AR9PX1whYaYh9p0EOaKna0h48F/A101Mt/ag72+kMkkBZXPQ7cjbz2syXI/HI3OlBdUytSdHneljfjvUoqwqiQ== + "@esbuild/win32-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== +"@esbuild/win32-x64@0.18.10": + version "0.18.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.10.tgz#141d8e73b74252eef46a5433f69d15890d82b5e3" + integrity sha512-5sTkYhAGHNRr6bVf4RM0PsscqVr6/DBYdrlMh168oph3usid3lKHcHEEHmr34iZ9GHeeg2juFOxtpl6XyC3tpw== + "@eslint-community/eslint-utils@^4.2.0": version "4.3.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz#a556790523a351b4e47e9d385f47265eaaf9780a" @@ -4685,11 +4780,6 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.4.tgz#ad899dad022bab6b5a9f0a0fe67c2f7a4a8950ed" integrity sha512-fOwvpvQYStpb/zHMx0Cauwywu9yLDmzWiiQBC7gJyq5tYLUXFZvDG7VK1B7WBxxjBJNKFOZ0zLoOQn8vmATbhw== -"@types/prettier@^2.7.2": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -5177,16 +5267,6 @@ binary-case "^1.0.0" type-is "^1.6.16" -"@vitejs/plugin-react@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.0.0.tgz#46d1c37c507447d10467be1c111595174555ef28" - integrity sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ== - dependencies: - "@babel/core" "^7.21.4" - "@babel/plugin-transform-react-jsx-self" "^7.21.0" - "@babel/plugin-transform-react-jsx-source" "^7.19.6" - react-refresh "^0.14.0" - "@vitejs/plugin-react@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.0.1.tgz#793aa790633433558da7ac0a38c58ddf47dff518" @@ -8516,260 +8596,33 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -esbuild-android-64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.1.tgz#f609a37348a3784ae632e88517d2e5f579984806" - integrity sha512-q5kkJZsgLIkyh5e2ZJl4/kXKIueBKtjVMEihP9WCHadqhH6+F9qiycE7fBwUb/g2B15mYlmMBXjp8VmOT3J2gA== - -esbuild-android-64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz#8a59a84acbf2eca96996cadc35642cf055c494f0" - integrity sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA== - -esbuild-android-arm64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.1.tgz#94b064dfa87bacbfb623313ead8338d357175a10" - integrity sha512-IQuZOzqMaFceLlKJJA27CXAdh+Mzh2ZblHMmcNIu/wxb6iX1zgYXlPWle62iHnmNCtfAux1mzQvmNsP9aLhemA== - -esbuild-android-arm64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz#f453851dc1d8c5409a38cf7613a33852faf4915d" - integrity sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg== - -esbuild-darwin-64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.1.tgz#d15ed63dada464c18a8245199294df5b22c865ff" - integrity sha512-tyouWLyxwM/Y2fy/reuIvAvVB+KVQwuY9IVyV7LH5CGkJYxgtLb8xVEiwHFF8TG2uo9a2fqdgWffados4YA6Aw== - -esbuild-darwin-64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz#778bd29c8186ff47b176c8af58c08cf0fb8e6b86" - integrity sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA== - -esbuild-darwin-arm64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.1.tgz#c8c6a8949faa88cccbc508143662d53a111d7ee0" - integrity sha512-fb4V1eB1nir3zJwsS75itsbahkbM71XuqUDJVH8iyBLS8VIQD7MWWAAekea2l9keueGfsn0+wTyDluMT+kg8Cw== - -esbuild-darwin-arm64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz#b30bbefb46dc3c5d4708b0435e52f6456578d6df" - integrity sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ== - -esbuild-freebsd-64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.1.tgz#4ebbbd954e2e72cf35e78185f4da810a8c3fce2f" - integrity sha512-1KxEv/FUPlQtUSOjFCwR8FVNEskB5LmkbfW9FNJ7lhpG+4RsLiHWw4Sl2Y1/S+aKX7inyWxLA05zYV6XAzO8DA== - -esbuild-freebsd-64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz#ab301c5f6ded5110dbdd611140bef1a7c2e99236" - integrity sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w== - -esbuild-freebsd-arm64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.1.tgz#a377942ed5b2578f9d8e8aea1396db59df5e1742" - integrity sha512-ueUMGSNrcuHwAadioxBdfOCO4+bTVeI68a147BQ/AFFIrf4XJNow4UXxguvQlZO+ZYaVz6EztaL6mHslKie2Rw== - -esbuild-freebsd-arm64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz#a5b09b867a6ff49110f52343b6f12265db63d43f" - integrity sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg== - -esbuild-linux-32@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.1.tgz#7226edd9517ee0bdc0ea7a8be1b5047d31de9426" - integrity sha512-K5WWcN2OZkZ6arFN3+hi1leKc0at9ukKGrXK9Ia94kQOesBphTSmsNK/Gy/AoVoIa0bWrHtxDijS9j9+dz86oA== - -esbuild-linux-32@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz#5282fe9915641caf9c8070e4ba2c3e16d358f837" - integrity sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w== - -esbuild-linux-64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.1.tgz#fbf0f6320a99f940170b76cc650e623c728d9480" - integrity sha512-+haiVm83DfRi9x8M+GgR4f4LtSN8lnEIG8XMGK8/FYpkYNQiKb398GxeHp2yvoMpX8IPvmWCt215tAm5BBNfZQ== - -esbuild-linux-64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz#f3726e85a00149580cb19f8abfabcbb96f5d52bb" - integrity sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA== - -esbuild-linux-arm64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.1.tgz#4a33a9b9dc95d537264aaf05a3e3fdbf6fb8cce5" - integrity sha512-TP0BCVZEVu/aoVaZe2sn1vpvo63j0LPiH8rvd7AegqOfTwb+mcxLxpgyYwkibafUCMxnIrKdUTsSJeusoMhcLg== - -esbuild-linux-arm64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz#2f0056e9d5286edb0185b56655caa8c574d8dbe7" - integrity sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A== - -esbuild-linux-arm@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.1.tgz#31773327a2c8edfd77c7cf12ded141b2db0b25c6" - integrity sha512-qjAkEDcFhVNYwG2xgaDg/hA8JABoMvjzAzE6g1K8kR516oNkKbVf6rN68UrsQaV1zq1qR3dbVeMv/Ul2bheppA== - -esbuild-linux-arm@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz#40a9270da3c8ffa32cf72e24a79883e323dff08d" - integrity sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A== - -esbuild-linux-mips64le@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.1.tgz#714b8c49886349d2a599f05fae5cb7dc5e574658" - integrity sha512-8vzQzp+kwrn1Y+OjvfFaLS8uL8aR39WnAtxOHwjB72s9g18kHFlE8IQLS9dWDQgKpBSFq9kazsJE65dSVmz+VA== - -esbuild-linux-mips64le@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz#90ce1c4ee0202edb4ac69807dea77f7e5804abc4" - integrity sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q== - -esbuild-linux-ppc64le@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.1.tgz#5df1ec88d850745de2ce23d1a4117d04d36b8a32" - integrity sha512-QlWSOgC2Ad53Xvf7ZivXU7wM2y29YhQUrd50PjK0QJ3psh/eYSQx77PTe1iWm7Ovjiqv1wPKEAyC7CbyJUgriw== - -esbuild-linux-ppc64le@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz#782837ae7bd5b279178106c9dd801755a21fabdf" - integrity sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ== - -esbuild-linux-riscv64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.1.tgz#3ccf408ec4682630862310e28038d30639e2623c" - integrity sha512-/PRNgNsiwb7G2n3rB5WcHinCwKj0OqUmtu8cdakV4CLNWnFnfChEGEJX1x5n8RcGD3xPUlI5CgqFe0/oBcUh+A== - -esbuild-linux-riscv64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz#d7420d806ece5174f24f4634303146f915ab4207" - integrity sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q== - -esbuild-linux-s390x@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.1.tgz#1340260371f01703fe91376d9550f0bcf709d7a4" - integrity sha512-TScRbO4mi4AUUXzIQ8sb6ZXhGkCb/PlJ82qFfBE6xxsioae/d6XaSdaha/+OUTvmPeoro3lNf3vwdw27v3wEgw== - -esbuild-linux-s390x@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz#21fdf0cb3494a7fb520a71934e4dffce67fe47be" - integrity sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA== - -esbuild-netbsd-64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.1.tgz#b3c31b64a88379d0a16f44ffc66a0c879a4105ae" - integrity sha512-ES2pbK8QfsMZbdPkgjkLwWfnEGtPa0vYzVFLQn7GFgP+RiemY+ulH7WWQ8ezMt9rZl4XAR3y14yKLGX0gsBLaw== - -esbuild-netbsd-64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz#6c06b3107e3df53de381e6299184d4597db0440f" - integrity sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw== - -esbuild-openbsd-64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.1.tgz#2447e8734a8fccfa91f4cbfc2816b09ec38d468f" - integrity sha512-DxNWji11AxSEny4HzSKu21Skia8tEPQI1N+XO/RqVOJComOvsFLq+QeooKsK2caOsQIKl9mO14Hh+px+zFabMA== - -esbuild-openbsd-64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz#4daef5f5d8e74bbda53b65160029445d582570cf" - integrity sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ== - -esbuild-sunos-64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.1.tgz#bca632708b8fc124a15477433ad2ae22f3726e0d" - integrity sha512-lwZoWlv893qtQQx5H4QQCh2mcYzGbxEz09ESFdd4cHcUCfjb193bSAy6jPxW2efBx2fHEo2sw43TRtAkpCf+XQ== - -esbuild-sunos-64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz#5fe7bef267a02f322fd249a8214d0274937388a7" - integrity sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg== - -esbuild-windows-32@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.1.tgz#c5577ed48901075772db1332ed5098b0a3cf6e2f" - integrity sha512-jEFz8DxP+Hh67fk9XMoyLUqPjjoCT6m4bnl36aze0XpPZDuQm0SBDlG/ciOBCjzHDsu/MYUNwxVezvUT3sXh1A== - -esbuild-windows-32@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz#48e3dde25ab0135579a288b30ab6ddef6d1f0b28" - integrity sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg== - -esbuild-windows-64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.1.tgz#4fd2d9c62b37e98adff350a2763622c5c0e27c21" - integrity sha512-bUetnfw4xXKBTOQx4sTzoENJVEdgAN29ZTLRtnMseRzsMO8pjObQMsRPpPL3Cstt6FJhj3k3uScHc5VnfC9QkA== - -esbuild-windows-64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz#387a9515bef3fee502d277a5d0a2db49a4ecda05" - integrity sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA== - -esbuild-windows-arm64@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.1.tgz#6243dd249fccb7b6993096da51173d97a2714b37" - integrity sha512-oN0JMj7fQZOiqJ/f/wc8lkxjvWwj5Yz0ZhOeU90JFaPZAfafNnysi6GS95glY5uwLUUJz/RNc84cb0dK2qT89A== - -esbuild-windows-arm64@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz#5a6fcf2fa49e895949bf5495cf088ab1b43ae879" - integrity sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw== - -esbuild@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.1.tgz#8979137b6c125281d148553d0257ef47e2746793" - integrity sha512-zgxo2st9wSbdiR6rTo44l/L7ohttqdXFmhUi5tE6yWahgdBjCwZjBgIkm/gr/TcBTTIwyzd7em8WI37yZ+F2Mg== - optionalDependencies: - "@esbuild/linux-loong64" "0.15.1" - esbuild-android-64 "0.15.1" - esbuild-android-arm64 "0.15.1" - esbuild-darwin-64 "0.15.1" - esbuild-darwin-arm64 "0.15.1" - esbuild-freebsd-64 "0.15.1" - esbuild-freebsd-arm64 "0.15.1" - esbuild-linux-32 "0.15.1" - esbuild-linux-64 "0.15.1" - esbuild-linux-arm "0.15.1" - esbuild-linux-arm64 "0.15.1" - esbuild-linux-mips64le "0.15.1" - esbuild-linux-ppc64le "0.15.1" - esbuild-linux-riscv64 "0.15.1" - esbuild-linux-s390x "0.15.1" - esbuild-netbsd-64 "0.15.1" - esbuild-openbsd-64 "0.15.1" - esbuild-sunos-64 "0.15.1" - esbuild-windows-32 "0.15.1" - esbuild-windows-64 "0.15.1" - esbuild-windows-arm64 "0.15.1" - -esbuild@0.15.10: - version "0.15.10" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.10.tgz#85c2f8446e9b1fe04fae68daceacba033eedbd42" - integrity sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng== +esbuild@0.18.10: + version "0.18.10" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.10.tgz#f0e99e8a957990241be04f2454d7e2cb0d78b43f" + integrity sha512-33WKo67auOXzZHBY/9DTJRo7kIvfU12S+D4sp2wIz39N88MDIaCGyCwbW01RR70pK6Iya0I74lHEpyLfFqOHPA== optionalDependencies: - "@esbuild/android-arm" "0.15.10" - "@esbuild/linux-loong64" "0.15.10" - esbuild-android-64 "0.15.10" - esbuild-android-arm64 "0.15.10" - esbuild-darwin-64 "0.15.10" - esbuild-darwin-arm64 "0.15.10" - esbuild-freebsd-64 "0.15.10" - esbuild-freebsd-arm64 "0.15.10" - esbuild-linux-32 "0.15.10" - esbuild-linux-64 "0.15.10" - esbuild-linux-arm "0.15.10" - esbuild-linux-arm64 "0.15.10" - esbuild-linux-mips64le "0.15.10" - esbuild-linux-ppc64le "0.15.10" - esbuild-linux-riscv64 "0.15.10" - esbuild-linux-s390x "0.15.10" - esbuild-netbsd-64 "0.15.10" - esbuild-openbsd-64 "0.15.10" - esbuild-sunos-64 "0.15.10" - esbuild-windows-32 "0.15.10" - esbuild-windows-64 "0.15.10" - esbuild-windows-arm64 "0.15.10" + "@esbuild/android-arm" "0.18.10" + "@esbuild/android-arm64" "0.18.10" + "@esbuild/android-x64" "0.18.10" + "@esbuild/darwin-arm64" "0.18.10" + "@esbuild/darwin-x64" "0.18.10" + "@esbuild/freebsd-arm64" "0.18.10" + "@esbuild/freebsd-x64" "0.18.10" + "@esbuild/linux-arm" "0.18.10" + "@esbuild/linux-arm64" "0.18.10" + "@esbuild/linux-ia32" "0.18.10" + "@esbuild/linux-loong64" "0.18.10" + "@esbuild/linux-mips64el" "0.18.10" + "@esbuild/linux-ppc64" "0.18.10" + "@esbuild/linux-riscv64" "0.18.10" + "@esbuild/linux-s390x" "0.18.10" + "@esbuild/linux-x64" "0.18.10" + "@esbuild/netbsd-x64" "0.18.10" + "@esbuild/openbsd-x64" "0.18.10" + "@esbuild/sunos-x64" "0.18.10" + "@esbuild/win32-arm64" "0.18.10" + "@esbuild/win32-ia32" "0.18.10" + "@esbuild/win32-x64" "0.18.10" esbuild@^0.17.5: version "0.17.19" @@ -9439,6 +9292,21 @@ execa@^6.0.0: signal-exit "^3.0.5" strip-final-newline "^3.0.0" +execa@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.1.1.tgz#3eb3c83d239488e7b409d48e8813b76bb55c9c43" + integrity sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + executable@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" @@ -11051,6 +10919,11 @@ human-signals@^3.0.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + husky@^4.2.3: version "4.3.8" resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.8.tgz#31144060be963fd6850e5cc8f019a1dfe194296d" @@ -14250,6 +14123,13 @@ npm-run-path@^5.0.1: dependencies: path-key "^4.0.0" +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + npmlog@^4.0.1: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -15584,11 +15464,6 @@ prettier@^2.7.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -prettier@^2.8.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - pretty-bytes@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"