From a8184052aa401d18f173003ba8c15792ea7e98a6 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Thu, 26 Oct 2023 17:59:56 +0200 Subject: [PATCH 1/2] feat: adjust to new `debug -I` format in - Adapt the debug launch config generation to the new CLI `debug --info --programmer` output, - Split up the extension code into modules, - Fixed security warnings, - Added integration tests, - Update CI workflow, - Generate schema and types for `cortex-debug`, - Validate `debug_custom.json`. Signed-off-by: Akos Kitta --- .eslintrc.js | 41 + .eslintrc.json | 18 - .github/workflows/build.yml | 39 +- .github/workflows/deploy.yml | 32 +- .github/workflows/sync-labels.yml | 22 +- .gitignore | 5 +- .prettierignore | 4 + .prettierrc.json | 15 + .vscode/extensions.json | 7 + .vscode/launch.json | 42 +- .vscode/settings.json | 19 +- .vscode/tasks.json | 39 +- .vscodeignore | 3 + .yarnrc | 1 - .../vscode-arduino-tools-0.1.0-beta.1.vsix | Bin 0 -> 111792 bytes configs/webpack.config.js | 76 +- languages/ino.language-configuration.json | 35 +- package.json | 171 +- schemas/cortex-debug.json | 865 +++ schemas/debug-custom.json | 880 +++ scripts/cli.js | 98 + scripts/generate.js | 205 + scripts/utils.js | 43 + src/debug.ts | 541 ++ src/errno.ts | 3 + src/exec.ts | 13 + src/extension.ts | 317 +- src/ino.ts | 298 + src/protocol.ts | 8 - src/test/runTest.ts | 37 + src/test/suite/debug.slow-test.ts | 238 + src/test/suite/debug.test.ts | 630 ++ src/test/suite/index.ts | 105 + src/test/testEnv.ts | 150 + src/typings.ts | 25 + src/typings/cortexDebug.ts | 641 ++ syntaxes/ino.tmGrammar.json | 4740 ++++++------ tsconfig.json | 12 +- yarn.lock | 6673 ++++++++--------- 39 files changed, 10560 insertions(+), 6531 deletions(-) create mode 100644 .eslintrc.js delete mode 100644 .eslintrc.json create mode 100644 .prettierignore create mode 100644 .prettierrc.json create mode 100644 .vscode/extensions.json delete mode 100644 .yarnrc create mode 100644 build-artifacts/vscode-arduino-tools-0.1.0-beta.1.vsix create mode 100644 schemas/cortex-debug.json create mode 100644 schemas/debug-custom.json create mode 100644 scripts/cli.js create mode 100755 scripts/generate.js create mode 100644 scripts/utils.js create mode 100644 src/debug.ts create mode 100644 src/errno.ts create mode 100644 src/exec.ts create mode 100644 src/ino.ts delete mode 100644 src/protocol.ts create mode 100644 src/test/runTest.ts create mode 100644 src/test/suite/debug.slow-test.ts create mode 100644 src/test/suite/debug.test.ts create mode 100644 src/test/suite/index.ts create mode 100644 src/test/testEnv.ts create mode 100644 src/typings.ts create mode 100644 src/typings/cortexDebug.ts diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..850ab1b --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,41 @@ +module.exports = { + parser: '@typescript-eslint/parser', // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: 'module', // Allows for the use of imports + }, + ignorePatterns: ['node_modules/*', '.github/*', '**/lib/*', '**/dist/*'], + extends: [ + 'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin + 'plugin:prettier/recommended', + 'prettier', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier + ], + plugins: ['prettier', 'unused-imports'], + rules: { + '@typescript-eslint/no-unused-expressions': 'off', + '@typescript-eslint/no-namespace': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-empty-function': 'warn', + '@typescript-eslint/no-empty-interface': 'warn', + 'no-unused-vars': 'off', + 'unused-imports/no-unused-imports': 'error', + 'unused-imports/no-unused-vars': [ + 'warn', + { + vars: 'all', + varsIgnorePattern: '^_', + args: 'after-used', + argsIgnorePattern: '^_', + }, + ], + eqeqeq: ['error', 'smart'], + 'guard-for-in': 'off', + 'id-blacklist': 'off', + 'id-match': 'off', + 'no-underscore-dangle': 'off', + 'no-unused-expressions': 'off', + 'no-var': 'error', + radix: 'error', + 'prettier/prettier': 'warn', + }, +}; diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 41d1157..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 6, - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint" - ], - "rules": { - "@typescript-eslint/semi": "warn", - "curly": "warn", - "eqeqeq": "warn", - "no-throw-literal": "warn", - "semi": "error" - } -} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ef2e4a2..159ec8e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,19 +5,40 @@ on: branches: - main +env: + # See: https://github.com/actions/setup-node/#readme + NODE_VERSION: '18.17' + jobs: build: - runs-on: ubuntu-latest + name: Build (${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [windows-latest, ubuntu-latest, macos-latest] + runs-on: ${{ matrix.os }} steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - - name: Install Node.js 12.x - uses: actions/setup-node@v1 + - name: Install Node.js + uses: actions/setup-node@v4 with: - node-version: "12.x" - registry-url: "https://registry.npmjs.org" + node-version: ${{ env.NODE_VERSION }} + registry-url: 'https://registry.npmjs.org' + cache: 'yarn' - - name: Build VS Code Extension - run: | - yarn + - name: Install dependencies + run: yarn + # Fails if the generated schema is not under version control + - name: Check schema + run: yarn generate && git status -s && git diff --exit-code + # Linux tests need a DISPLAY + - name: Test + if: runner.os == 'Linux' + run: xvfb-run yarn test-all + - name: Test + if: runner.os != 'Linux' + run: yarn test-all + - name: Package + run: yarn package diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b085648..139404f 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -3,27 +3,35 @@ name: Deploy on: push: tags: - - "*" + - '*' workflow_dispatch: branches: - main +env: + # See: https://github.com/actions/setup-node/#readme + NODE_VERSION: '18.17' + jobs: build: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - - name: Install Node.js 12.x - uses: actions/setup-node@v1 + - name: Install Node.js + uses: actions/setup-node@v4 with: - node-version: "12.x" - registry-url: "https://registry.npmjs.org" + node-version: ${{ env.NODE_VERSION }} + registry-url: 'https://registry.npmjs.org' + cache: 'yarn' - - name: Build VS Code Extension - run: | - yarn + - name: Install dependencies + run: yarn + - name: Test + run: yarn test + - name: Package + run: yarn package - name: Upload VS Code Extension [GitHub Actions] uses: actions/upload-artifact@v2 @@ -34,9 +42,9 @@ jobs: - name: Upload VS Code Extension [S3] uses: docker://plugins/s3 env: - PLUGIN_SOURCE: "build-artifacts/*" - PLUGIN_STRIP_PREFIX: "build-artifacts/" - PLUGIN_TARGET: "/vscode-arduino-tools" + PLUGIN_SOURCE: 'build-artifacts/*' + PLUGIN_STRIP_PREFIX: 'build-artifacts/' + PLUGIN_TARGET: '/vscode-arduino-tools' PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 0273232..f6e0bd4 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -5,15 +5,15 @@ name: Sync Labels on: push: paths: - - ".github/workflows/sync-labels.ya?ml" - - ".github/label-configuration-files/*.ya?ml" + - '.github/workflows/sync-labels.ya?ml' + - '.github/label-configuration-files/*.ya?ml' pull_request: paths: - - ".github/workflows/sync-labels.ya?ml" - - ".github/label-configuration-files/*.ya?ml" + - '.github/workflows/sync-labels.ya?ml' + - '.github/label-configuration-files/*.ya?ml' schedule: # Run daily at 8 AM UTC to sync with changes to shared label configurations. - - cron: "0 8 * * *" + - cron: '0 8 * * *' workflow_dispatch: repository_dispatch: @@ -27,11 +27,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Download JSON schema for labels configuration file id: download-schema - uses: carlosperate/download-file-action@v1 + uses: carlosperate/download-file-action@v2 with: file-url: https://raw.githubusercontent.com/arduino/tooling-project-assets/main/workflow-templates/assets/sync-labels/arduino-tooling-gh-label-configuration-schema.json location: ${{ runner.temp }}/label-configuration-schema @@ -66,7 +66,7 @@ jobs: steps: - name: Download - uses: carlosperate/download-file-action@v1 + uses: carlosperate/download-file-action@v2 with: file-url: https://raw.githubusercontent.com/arduino/tooling-project-assets/main/workflow-templates/assets/sync-labels/${{ matrix.filename }} @@ -106,16 +106,16 @@ jobs: echo "::set-output name=flag::--dry-run" - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Download configuration files artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: ${{ env.CONFIGURATIONS_ARTIFACT }} path: ${{ env.CONFIGURATIONS_FOLDER }} - name: Remove unneeded artifact - uses: geekyeggo/delete-artifact@v1 + uses: geekyeggo/delete-artifact@v2 with: name: ${{ env.CONFIGURATIONS_ARTIFACT }} diff --git a/.gitignore b/.gitignore index 351e518..032bf30 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ +.DS_Store node_modules/ lib/ bin/ dist/ -build-artifacts/ +# build-artifacts/ +.tests/ +.vscode-test diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..4d81617 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +lib +dist +.vscode-test +.tests diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..1864240 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,15 @@ +{ + "singleQuote": true, + "tabWidth": 2, + "useTabs": false, + "printWidth": 80, + "endOfLine": "auto", + "overrides": [ + { + "files": "*.json", + "options": { + "tabWidth": 2 + } + } + ] +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..ee94df7 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "dbaeumer.vscode-eslint", + "amodio.tsl-problem-matcher", + "streetsidesoftware.code-spell-checker" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json index 7de34b6..c432cdf 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -3,19 +3,47 @@ "version": "0.2.0", "configurations": [ { - "name": "Launch Arduino Tools – VS Code Extension", + "name": "Run", + "type": "extensionHost", + "request": "launch", + "args": ["--extensionDevelopmentPath=${workspaceFolder}"], + "outFiles": ["${workspaceFolder}/dist/**/*.js"], + "preLaunchTask": "${defaultBuildTask}" + }, + { + "name": "Tests", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}", + "--extensionTestsPath=${workspaceFolder}/lib/test/suite/index" + ], + "env": { + "NO_TEST_TIMEOUT": "true" + }, + "outFiles": [ + "${workspaceFolder}/lib/**/*.js", + "${workspaceFolder}/dist/**/*.js" + ], + "preLaunchTask": "tasks: watch-tests" + }, + { + "name": "Slow Tests", "type": "extensionHost", "request": "launch", - "runtimeExecutable": "${execPath}", "args": [ - "--extensionDevelopmentPath=${workspaceRoot}" + "--extensionDevelopmentPath=${workspaceFolder}", + "--extensionTestsPath=${workspaceFolder}/lib/test/suite/index" ], - "stopOnEntry": false, - "sourceMaps": true, + "env": { + "NO_TEST_TIMEOUT": "true", + "TEST_CONTEXT": "slow" + }, "outFiles": [ - "${workspaceRoot}/lib/**/*.js" + "${workspaceFolder}/lib/**/*.js", + "${workspaceFolder}/dist/**/*.js" ], - "preLaunchTask": "npm" + "preLaunchTask": "tasks: watch-tests" } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index f142df0..35506be 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,19 +1,10 @@ { - "tslint.configFile": "./tslint.json", "files.exclude": { "**/lib": false }, - "editor.insertSpaces": true, - "editor.detectIndentation": false, - "[typescript]": { - "editor.tabSize": 4 - }, - "[json]": { - "editor.tabSize": 2 - }, - "[jsonc]": { - "editor.tabSize": 2 - }, - "files.insertFinalNewline": true, - "typescript.tsdk": "node_modules/typescript/lib" + "typescript.tsc.autoDetect": "off", + "typescript.tsdk": "node_modules/typescript/lib", + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 7b82de0..5b50578 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,10 +1,35 @@ { "version": "2.0.0", - "command": "npm", - "args": [ - "run", - "compile" - ], - "isBackground": true, - "problemMatcher": "$tsc-watch" + "tasks": [ + { + "type": "npm", + "script": "watch", + "problemMatcher": "$ts-webpack-watch", + "isBackground": true, + "presentation": { + "reveal": "never", + "group": "watchers" + }, + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "type": "npm", + "script": "watch-tests", + "problemMatcher": "$tsc-watch", + "isBackground": true, + "presentation": { + "reveal": "never", + "group": "watchers" + }, + "group": "build" + }, + { + "label": "tasks: watch-tests", + "dependsOn": ["npm: watch", "npm: watch-tests"], + "problemMatcher": [] + } + ] } diff --git a/.vscodeignore b/.vscodeignore index 0a33341..6655bc4 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -8,3 +8,6 @@ yarn.lock .github/ .vscode/ yarn.lock +scripts/ +.vscode-test/ +.tests/ diff --git a/.yarnrc b/.yarnrc deleted file mode 100644 index f757a6a..0000000 --- a/.yarnrc +++ /dev/null @@ -1 +0,0 @@ ---ignore-engines true \ No newline at end of file diff --git a/build-artifacts/vscode-arduino-tools-0.1.0-beta.1.vsix b/build-artifacts/vscode-arduino-tools-0.1.0-beta.1.vsix new file mode 100644 index 0000000000000000000000000000000000000000..310bf6e8047c6cde6772de3a0dab7f0fdaabafda GIT binary patch literal 111792 zcma&N1B@>)*FN|g+qP}vj&0kvZQHhO-?44;j&aAfXYadT^6mf4CYx>2v}w|u(>Bl3 zCq1VM(jcIy001N;fYm)j-Kxt39S;NmaD)Z`&;bB|sfUZHowKFA9le{grH8Gdou!$n zv&)E@t^FTH#P6-ID9SHrCY34`)xapAtN8+9n2Rx0a=xH&WAWA@gFe4>b-hkIy4+<1 zqR|fT>kf?FjlPZHLCs)xor$>3XRSIAW|f$!io-Iug>EPNPJ-D_DmZo4AgELypiypw z)XC7b$rMDfthlZg_73vl5b21@J0pB6)8#?0!YHUcyY_iihZR&P-sv6jKNzm<`CCpBQz$I~oa`kb}X4qwl58_bx z426f`qSEOf>*RUF4Ki%lQ?~YP5C8-_x{277CgoL%7@}LaQva-lNhgV=AS8YPIIC1s z?5ASu-4Nvl=C;3OjKkp_QXqk64|KJAl1jCgbu*Rv)VVGU8CLq1i(HXBorsh(<94N5 zVwqzMn(9eED>$QkG34Q8GVg}YOB^(imp2V_3(s+(JUlx~qYi3gBeqScmc7lxk=*%# z=N@?}aRb%iM!}p; z6ZUEOVs-bToB(ch0`xbGM($YoryD=RAY8+;C*&xOa|g3tffC;JVv;LJ@D<^KTjuNo zz5+VS+tS37!nLa%US=PNHSG%e`iJ7)vog0o$Ae%Nsnn+O6^flqR_X{2WlW%zCv~7R zT*^p2?R8eaxU4Drd&5@fB3t-_+68mBPB)rM*n^e&W{~)lva>2G6#LNc#eQ;?`i%FE z=**R~N~BYo9Na}O5xwGtm+Y_?)*PrT(vGTVQ|tz!fk^ zdyr-NJ9@>BOjHh1hU~h!C1co=_CjaJl=yTFucTNYu}E`{WaDD}@SXva(~(QAXo^gl z=EvnNJ^Fn21qxS#Mn3qP*zH|~{{qxI;U(q#KOijw0RSlfT5Vx_yMK^!(O2)FtVgl!A8o<30)(+wH9HGo{>B?N0zCX;NP-7B{_LfqI5Sr*H<+S@X!JwZ}6m z2sY1wsc=<&UeMwm69?nBlVJN5%)3Q_o}RMCVCPA8Q^MJoBdK2-K{ZE|wsna{OLw-p!g8=5F<^53D?m z;&+$-|7-x{KSp_owN?MO=Kn4Kc;^3M6b5>8OBYLXJ9{V7C12k1wIh|LqIbfBWL#Wa{E#Y3lSp4oywS9Q?=R z{vr*H+^oFh3Y{dFqksw1{}^bdI;6(_Hy!W43^4tp&wm5|TL}L3{+B)(Oe~#U7+Bdk z>Hl|#-paXF)7E}-9O-*UU$7BqAa=FIXAK<;ON$X1!y(ZbzVRkX=vWfABPm0Hw6V+O zDEW2w*N2!A@>R*zUtyuEsp-pUmbqEE%Pgd5$1Jif`0-Y1Ds#QGF#osBUB{Q?P!`OH zKZ&xLt6YZr*ASS`x~t|`nv&#%OuFQRg1uRNMGx!yMbS7W*qjZXDG5>gy99d5sE2%X zfqUnTVdr>WWCZ#~AnPp+PV!`g?Ft?<-2uTXXg_AUYY8lb&`LEa*{Y;)J)ciT79c3me(8(r(l9+kf++4vx^q4q~&tql%)?UJ&nVLhWL!5F?WW zf(@^=d|E|vZiASZ3~z%K0L4it(STEo9~xP!I$apvS&3(bhyLyTgB8MN5eQr>)rHPB z`f<`6ZuQb@SM-2g|5UH@JvsESJ6-Y%FH_#7x5^PMughqUx_;FWgrIGP=TDzd105KV z^UeNr)aXfj+N;v3>(%b1<9TCK8B~GuMn3bZM7{$itV3#r6?29vdQ zA{~Y3BrTvRioF&EzK$62*O{!EdPpava2;T))qUe8!TajuugUt-vk-%ZMm9FjbEHP2 z>Tm16oxfPCV}pg4qdfL7)U<_VkNj85ak401rCViL4Q zaW3$iBxC^ea23TElfJ!>V4|L)pR4Gs-zLwxmkBK8@@T~aO|ZxyyK_Ms!sB*AC~-9d z0AkWqIGl00tW?^NBge)Mt?zxzCZ0`oFi-Wot%zEvmlBEkOLH797$;LqMW1YbMCb0; z<)y-YW+Oge^l&GBsv%zK)|r6PYnw<5{x&pjZ`Be%fIOp}ieSPQsvB;2w|V9AhS)@A z`Iw{r1l_^Ry^+23j?U;Jj3e&6^SP_p?w%C z8Hm<5Okyl_mB41A?Y8c?_xC40VnBXO`)YA8@}{OTjt~FQ->789ED>vLJf?2t;p1j> zgWKvv5qqmz6l8%0|KuT|Tz1>tWCR#f~7c>NSdREA~BG>-vtve^X5aCLu)ul{rP*p~ckc9!sl z4Y}6+c@x^mqsz-v)T{fiJPt`YqxOf7lG5-vH@ujv>KNp^LKLV;a7v8t1m*!;Cver@ zW&| zmg=y};D1~z=tNX}7rVcO@-*^Q%}Ezc!dY$E>P_Qt>jpul%+56rP4|{DrMgeCTEF=v zTvpSt7Z?S9_BjRuM~{Dl5C2;1N;GH|<(`*dOZ54Qz=9vi4x19~XBd)na9iyTbc;o~t#8$PySeUg907^$ALpC&Y&x0Inh(w&WM}_Gi;Xv|a=|IhZsE^7Q4B zh$TNy7VwOX3e}macl7~=Ur?(Lz6C6UdBR1=5?o%jMT2Y19GC9iP^_^%R$akznD0(t z$4gGp^f!5P&?I1)&}LHJSrSLvyk)6fZ>>$Y}YetdxROzILZ-SGwwA3Zxw^akuN<__!SGz+m#YaB|*8HflrCX+>|t< zN{EOA!*04h6q;EV;UH`z*mlT9kOModFutvX7{|gSBd7~eHp=9(WmN(|yv^2w*R3}v zDlUbA7-28aN^2#352Vd@1E>IuPAL(S`IiXr9`Lu7eKam5i@$LT*qg@|+vzxMJg~;q zaXLR>d?0nOLDTQqIHdA0WwHrcR(D~KQB*o^w86;++$p3|2@eLx0AJ-b!6fpqCKj~8 zTjla)qp_knn#7RNfK(T<1BH_ZE)zCy;@SjQnZ)ld|@A4h`WmE=>O3=vld^O;IVjCyV~8iLSnOoFptaUIVoQac z-}dzg+^iHbMZcDsNC_ntpkWvc?M8_O+sFNt?61n8zFqvj&845X3w!GV_Wa&n^*$j& zDZF!GA3gI$eHFeS{v+z{qNDgJpa6gw%>Pr={r}Kh9Blusxq5g%)HlVN`*!;V)!J38 z*aykyCRKeQiQsIJEdt7F9fKRti$~LRB##xfe?D?EeJ2ql-hEH zZXcoPj#J85?NyPFc2AytpdO|^`N1ixJa)Kmx@oQ}eS(s2x*3Q8n!^apMafYgm;hZy zKRWJ0-fl^-qQ8@%g2dvREI^cR?tvEJ@9rDVUA;%1&enAg|GKxo%(jT1qS)USM1VG< zZiXqZivFXA* zTn35q;zZG}4dP%>^v1yDiO@}2UZyY+BlN+O!;;Gg{;*$CY4Z^9eUeflj+Gjvu+AKT z*W9;iPpjiT!@#hIhzOhk4^n+m+P*I}B@AY9Ad57gtxStqB+9q!(a1y#DVkp-D}7ARB~R+)vwffaUxL zoNHSfGFtdHC4(|~rLjjj`L_3O&!k1s8~M+d{Yrk!vH5o6(@x5!fY4*PJn=R^rFs2= zq2sdbFftn9oK^}7W;pYtH{d}(q!hyqx-X*?*!Io)AiaD^OZdeGdfaB{RG(p6{68QR=T+a>18`)^hZYB&1*^#Vk)Ti&Czh3$XZ9ZsiSR{Av+EB(lS#|2 z*zmxjxz9PZ>xQ#xfj_XgZpSv$O_N*~+5%M1M`vh!G~_;v`M>%t`%Q3DvPMA}U2=3W z`tCn@sFUyFkT)7Olz`#JbBaKVIcwBswe9Af2I;=t6AjTJO1Y7`CV{n3qQ|@ zc^CV7o%GGSZ1y^kL^fha(KP` zeLM&{;iLRxv)3vJ;wpx_-lBZm){KhDlI>vFA_#W^FobUqW#W|tNR#@0FD)H3cW)i)Cd*mAq@lCqum*Dq!=Xw8){EdTLqI)%XkV)229;mX(6fwofH zhO0BiNTsuCEqj9EfuO^&wS)dzW|i`Az@p%yocPm2Kq2bFcfb_&-7j3SveWfD&$fjy z&3MoW*X&3XYr%}A>E4pT(Hy|8fmtsf=6_QLJ4qiiDGsHfmM6`owZW@jz=yXz3!a_r zssU}wXKcW-%+1Bnw1DPbYzH^n@2COGgP~sSDgF%X@p9}u?AII$YU}^9>}FSA)SZY! zO{JfJ3wT1U(eeDXzX7IYXlY}XI+hiEl~sl3L3CKMr{|ezz6ST$8n+*M+m8E)F3L~^7GL}KrLLMHrHDabe&)oWKxdOV2<{9RY2Y?^u#V@QUw;Gj9Z-G1 z?ft8(%Uj%{CozX9f6maX6k(NN3M?a3TqrJQ?7jhNRo^Gxm*#Bd<`($)VW09>yx8~M z&cfaI2LZqDmjBQB-XT&u-4(^=E>X>1TnlgUMnB4I8lG#zTfZ+dTZf4t6H9dNJdt(| zz~XJhQc8Hs#vRm9KsQl+xfSz3&qGB4_!`6OS?J2+^w~8cGsQ`JK;;0YUAqA4+Y;EY zK>jq`p@v`1s@TcFM=w~_J&?z>!NEp_X3tPC-+@WiC`|4e@teGG6_u>_bg?gx_zxnt zyb(#{!H#JB+`FB`F5JZ~97Zn=xsa)%Lo>qhwq=_Zy!U?KAoHA-tyh_*-;&pg)gjHT z7`q^ci9i={z2L@Qhupp2I5QB8Kj=H^tllZsdsV3>G8#@0Sj}L}_Y5Q@dn9d`u$*JA76{Ck4^{S2;1r z{n`+h^$7H^eO!Q4P>xQvh+-P@<@2N6^6!Z9q5Gy}ejmy`pyrjS4}+H-vo)UGSb>{_ zc4Q#LnbkuI zckJB_qSwnY!l|Ww(*$)3|9s(+rpatX=f6ap--y%!aWmVRVtzlrVw`}y4oyD573R9C3p@lVRk>2MV4X$^mBUJnAid6J`F1i z3Mo3`bYVFBG~q_HV1*Er>dIgzBO4zTDT~t4!4cc9k!#3@SE97{zBIV6a10Cn+<5G2!||^iVhVTrY&ZvsN=p9eliPX zT;Z0bkFGxh*ak6=qc*T&sdy`3&J|8LEN6PBZ`pCp)E7}k0x2?3 z3tIl-*LL4Ew#)lF6Dtg2qE6OZhMbWiaD^%kJW2g=Nm_FiVM?#sKIao+Mhrv8XH2;h zM2Ol&bL9%XJJSS39SYQ87EO-x%uH}KG=g}*M_w%#3`zkyP^T;f$m?PbLU!$Ebu&ma z*x6=AOZJhTVGwHze*gCuGTPz5!re`{_pO)C7J9XQ(l2`42h!=T0z#12_$16zkfKE3 zinZgBd9JShPsw>iqGciO8lh-0Dcw0x9$^O-F-`7#3KK6d$5y$v)&LGCmGbk6v$VA< zE;;_wx88hrZ?^cp_zftJYv^JHV{2w8Mtj+A)b4BG<8ruhC+7yj+t9w3O}(*Q->R@;H_jx2Aozq$15Gg7lK;|VZN7#sae;F60Jkss*u~`WU5+Df@>X{I8+=Ude zvbqNcAGM#s(c+E%x8%LX1nfbO8BvaR_S=^QZ zv;Q1#(+5hIlAa0#pZmWqImCDrhR*MyE-C^JfFS>RkJ=$P zL`zQ3j2Dl5Asc~CjmiK6`6UVl|XLEm+ZJPN4;IDbZY7pKK3}@qtE+oPc|`xn&)HU%9Y8=}N-W{%U>PdYGc^EPKim?9 zkhSNedS^5tR-0hT?-5r@aJ#-jq9RcDqA!S9(1El*E}|x3mz$p^=H;=0BdwRXxNLHs zz##{<2O`a8HcEL-l(lxUqI49$Xm(mV!cc-hy3zIoDvwAcC%dKN+kiN{2kOTpM7Y@!^`>F(<%W1n)%Ik@Gf zr1wu&BKWX|NlZOqn-{21xT%a=aox^ZHO`VEG&PQ`LiO&uvxDHb8;}|Zs!19!MB*f%CtLKS1^N1H z1H^%Cn^MvzGK8ZgSzmGC=!Fb z`S1t{@IvZIH54e~L(G!WB;mjc)eViwuPd&jAaVi*vXh0y;dXl6PmS+yu0|QJa#0MJaXmF6oc38UtWhc#k-yb6tzfyJNj{LaDecxg1`v~^clr0 zEqR+gJlEnMP3Q(+miKoUl#ed#A#31{g2Y=;qaNulaeg-#OWZxyA?e*coH;-$b3s`7 z=LNKB?!bM_P9cB`&t0E;o#1X=a2uurw)tOQa&s{pYwOb~#5?Ox+@GGDv{)$zmLtl$ z70uuvtpPJbDPypt?7qYHNkyPf3lRsL5dJklvJ?x5`Qt7tUX;%}c=Z8Bc;!;NEs8p3 zONudN!SUsLpM{+nX;Q(YhZ7OS>8j!YkL5kfjo?1Mt)<|;b{MdFaZM2x(kKpM2Wk4T zf>iJ+6rG}tIra}f_Zw9GLm~eyg?bDPbwM0{_Zj(luAz4Aq~%y`HW=c5io9pV*7c#aaed zCCPjcL=cu|1UZy7KFn;>`gZ^9#4PtZ!!rb)gmIPmvN;kK2>gw&MvYP+xdo6fc^^Ig z4e!a#SC9R$-y+-C(2a5M@o_K;+x$*n8XnJxY0RTOjq^V7y5ARPc|7dW{E2YE-E;0A zu#Rv15#Jaoc5dl&R1tI6eA;zGsO8!@YsRDA0L~Q;-rBgiDCU>xbN8}pZ-9B7z&@F{ zt)utnt)n`>`as*!jq+-I8A5=lm)(8&#i_saGWPY-WiNBWa7|twM0n(4m zM)P=hJXBElU4XvASyq&Mz=JmcmeK+h< z)@JM*Z*KgB0<{vLehJ=;NPRG7+D@Y5eCS)HxcxxgiZR)cM{_%cT~V1OT}P{f&b|r0 zI$WbL7jmNk+Khj5NUh;O8mj=#ImJ9`EEZ71Y0Vg`*c9R=< zMysA{TGc%4qPCafmGjl+bB}U%&}kG7xFT+^fmLT*Z!T|dAV+qTp6K)S z3W)U1{Z`ZT>e(Sfj%6D*LpMSRT^Ax^XO6&AF|5Lb!jf|(pBVYEtw$^19eMhdi^fX! zK=`YaF!~qGB<3SR3<$>F48VU+EHOn<0mcE6xqrNU#0X=}AGwVBf&{!l6a~MUtptb! z#SeftN=xNd?9wj|*huk}W9-3+!BmYO8IVzZoRc!V4uTpIT8LJluQ>!|%$LA2qqabN zML^D+#|h6Ov@6pxtx`R%tUlCReW4?5k~WCR3`=GK6QDYlah6%>Mg!JcsW8|d%p#M- zy~(rWC_~Z>IJcQE%Vr`Zq~h$y$1oRMaIGV8IyzORXlQ@G1cs$>DY)-j$@I*2pS%4P zD7!*jk4!b;+O(0OtEN$eq-uW2?&4KcCQTatk@1?A)7c$GELHCmpBvt$vBF&A;7ai_W>8j4 z6pjVAA-n#|Twu7D+R7`_lmx%jie=E!3fkSiYc(#%y(n41ee6-y;}Fc#f_a@oLr+yF z2(&7GwoyUX4l!b{lOAawKp?pl0_7(&4#VPWxzB`qsEjF#;xV{s zHU@?X!Y46~vsa-xgO&$PI_C3~y$CoWaXv9uIY25c*3)70DKyRY1@jzTM^*T) zG9>i4x-a|}ugmQkTSleSR_mSO!2tC^|3-b8hEJcr6b32!VMVMs)y9H#5-fbg)u9bR z>=2LNXi>h^dDOROsR(H2nvVIeDYunWrT1<|YY_PCy<%I-j-NUQ%wsdit!V zPYW|cPcv#1k)bMo3;qb2k!Cu0LKT#mKJi z0wz1Uodbk`fRd`J^$UWk9rz%sm(ioRWWZd$cZhSMc0~QaI#`92v%p_$I>r^LNYv6w zbi9m?I&1ppQF8o{Lgb5rDn6gD7V-YKtuHnz)iYyvInrv46ysSiZHsEYhzI>ku6ht}h(n>_t^=9d z$|~HT&x&OcAX2>mA55O1e;cg+io26;M+_`OcBnZpBV=cd@I-ubf)mtA#gvMGew>HR z;w({G*vX04_3itd92->m*xtCiYFJ-!owAHPGH80!s7jo8XJ|gnhMtSHZ)GR=K&_@Y zg#;*Gip@M#yo#e`mq1Tx9GV`AH*Oh(j2QiF-YBXZggQy(A;Yq%9s8C2qsHC1y*1ug zkjm-_V_Qa?C|^g`Fvw^UZ<4Zdp9ho!%G^#sM`_uOtHPXI*f|Zi-6|}}_#(p}wY4Ye zxMuPRHrY*g`!}@ctB;+8In08QbP_dKHjjW{tESb3r(iYnvZjKl=NMll&~h7@Xfv6r zlG4OG^WN(g%Ln~AU?LDB^c3bey&C&$g;x!2J-{FpE}=@$P?r*zj3w-&N(u)n)A0RB zTT65uFC9OcAq5I~u7x#q#Q@NIMjFdh3_CZU@BUR`8>c#2TEuy1 zPMvOD!~o1qWXfL*Yn*u!<-bvgq5U)XG)De*Wh23f0zvp2SFbKTTMvZVy$ca}7y$KYT#0mMrVlS2`n>zN`}st!0PSsOc7t<Qc;Ve_}2#(u$RafyGXxK9pU**->)$nLJ9@Y zmbqWcEauJ4Tz;coX2aHmqH;lk=*e>Z%|d+{H=(=&>2DP$=FoCNI-Vl&Zpv(vJIdGH2Dg!>V(o)*SCx2fXVL#16$O6!`%nLon2N7~C1k z&rS$U16qoY2y{*Z`w`@4_YY)8i#XBKq1e4*fhn(H#16&XnYnev`S!N*e@QROU zm=VIak=%`PLu?IKWhNRZ*bA53k>`1kQR~L&F-GNP*53x#Guc{y z2hhb$fQTzHsMy=p^_vd#TAlt;K%+r?W?QCmjXx8L?>KYhy={lc6)lVsCqS==ExH*R zZdMNzymfJO{L;*>|K?-*y*|cQ1pFv;Sx?4mb2VBnEK3F26Q1Ey*|Wl zWUx3ahX5Z5Br8)nZ-DljgWb$&4Pk7gB1%^w{#*nGTp_6u{Paahr)Oq^?00`T#hzv_ zqO}sCioP-J zk>mkH6J2NM9Vj)ZeyWxC%OD0yRxG#7t6{`B3p8>14&WXWvp_nIb9xwiLe8u6CKQ=+ zfB7+_t!~!#R=I59VZ-I&-v#upFYH&bGpWDZ20-8KWBsUL0D4Rwwkbh5mo4@zEM zU7OS?mPwP%SE7*}r3Om>HOaB`ycn#E;nvq5Pb-j?j64 z!|%M)#7A<|pTg8Gd-=WfjsAxoMZZ*if$Rp2)(8asB{h?ItYjr?23<;CwJ@iWj;+*s zyv@U`E!{vM+twV#0tB=6!at=jG_+un2CnX&7bG29@ykNN5B(UnOf zp2gLv|4%aE_d(3i9)8PmmKa0CGvV-MFurHCGrnf~xkf2H{!stEGFuL(D-lMyUc(|- z;sdZJ4MM;Jchy~#Ft3BOzn$$_{kr$nQ+9XH?DV0bhtY4D)SwwD_cCc7S1JoF#a>-M zLbriMZtAex12`%!?wo{{?X0l%XAwf$%O}I`k;x7_dD`J8kQyV;k)c|C@A9?p;_snY zx@WE8cac}i<44P9yR+OP^4#a9iv2gA@2G6$AYkr1&D_yekgd1a2e^+gIit~sG$x-` z@ej}dHhep{4SrV~DtWG?^G>3q4wtH6p6Lq|my#s|fty9&5OI>IL*;`5V*eu`9DO!}up;nC-ww-w4tZTe8Ti89* zQFPkhu5K-}F41k)g3UW8lQ?WtaHhBD+1lc!E^72kIVC!D%bXf5SFHcyYVs*QF;Bc1 zh#7m}?g<(ZU40GNzjvGCSI>pH^Ow$xOX}N|m#>X%OVEM4ThC@AkU%$87|rTe>Srq& zxe2E(n)8{=%lG;j#{+`yEF(9wiAK#-2*V^5Hc(Z=%yLMlJ9Tv!x~~6vWa%1ldNf{V ziSCOpkAmf$Yl(SMyc>iz1v^<8ZA@vdVvHm@fkdB_?$3Sd8&BsL4*3NKYSX&r+w)s{7v#^C zBg(+>sx)?Xj7JOh+i0Q z@m|XU4FM2y@YayN_-DTrGQ;cg>|;$(+bo3ZH|P-#~v;mGofl|)srMK3 zfmW3xrOSGV_5*{IW2_J%6rvj(BI$8si2Q5!WQEMvm_<8wC9(#>4ie2U!}hq$w}M)0 zfU>bQoI#Rux#RnlMWq>LC4|uw!E~Ap)xC#|3KTeKYK4<;Ur1Ggv0M%Fe@9bnhvLqu z4Ext857sEBJ7CCHy4^+Sr%R4#@bWM$1>}W;=eN@VOqFb}11r~$508el6TCkoVcWT9 zZ($sugOYkP!!o(t^+X3r$hLApVHaBtV?#uj$3VEB?Q?7jQ9`8yBsopp{O4!e(CJ($ zym%r26`^Aa6!98=FhER>C43`T7+U(yle9sYQAc{rW+vdM$#C~Ry;ts!G26QLq_okWNvnIH~cDDUk(3#o<&Q*DT@5>f}rw`4}xm_bWg!xqk&y5+u!{y z-Z&<z^ID#W<;U;n!O!ymXDbg()Le(LkHJ47K3CfL9m-m zA{q!!Pm+Hrh_o;Ufz^;xk_$@$o|WjKaJFE?DonW}RMV~0MBLZfL)!JnH6vj=NOb4dj(^+B z`Q8!cRg({`+jO1C${_A_B6^+w_tCCIbZAU{3W}x0q=TtjPULnD6?guzibg6udf9qY zY0Dc5!j1$37bt}s+TKlTW*jsS7p#4<-z!bI{-vT9P>s(hG5{g@t&Ca+&plSR;?l>Lv)63m01-GS zh~w7b7*1UrbA30H^cd@{)58MEjvwtrsyeJQwyriv0xe)1(!mZwx)g?~1~{iQ)%pil z%F-6@0xIW8_|uis`=C<7BAWoDO<vYa<&$7XT@=65sXhYI%WWrKCvadCz(0IU`4( z`c~G}R#)A8+txm`Q2tu7p}m)KY5HuZoLl6kxu3P6R+6X+IgO}iGZ8j=X{-A9+$g4C z*yTH0)xVhCz5ez$#3b9*%_}z*A9i)>Xm0M|<;*)Vwjl{AX^)`~=3-Y#-)M&q(_oc9 zU#ij4AM@`b;49HztU>>~lB&%#TRf$-{J?y3bRZ4+W|-McAKhGotcV)c>4J{2Q2KtZ zQW!yhaev^1d%TT13ctHxl(TxMJWaKiKO&SaceVIrsp+Gs=@Vng8R|vZnM{mPOpChx z;KGfuKv;wF_N&g2u9|yhtcdeErPvF=a+9@H+K4$nDiKphuKiVj z7JW!vyf4ymJG6urqoI>UaTUW5528#8@!#set$RdK*XA|osyg3qi7LC|%QljmXr*2= zh2~By>F}eA-z1&%Op@j7Iq41XxJ8pfP1}1`E<_b|?#8})cwZ%wnYXU&Mej0{Zf+hw z61dCb{p|fQ_{ts|e{XIE#YfV*5jdMEc=jP&4UfHAo7>Z1pVxA;StFvdP7q3-M`K+> z)=2W@%dI7W`rS#~xnqcV=j8Ha*VIEm*1tunikj1BDgVaEJ<+CsNUqZ{t#EfsJ5H|B zj!Lcp7Vsa2GE7KI_DsW2K+ZY??oM$<3@3i0M{x8u#?O2&4m`0h1l8PF6D2Q8h6l*7 zrg+;CkUB@y*{Yx)J?km|U7sGpCY$*HU8P8wK_q3^qm)s$xOqgPQ+?v3(Jz0ZIz9(U z#S0(g!!7#~&tT3)ekaO^^57BXPQwGJane2q*mX7>D)sB}wuy~a$IzgQhFdMj48=EF zsi~YTsJO%f?S^dIVU!UXzL7$WIvfqJ$y)J7%q8vJ6xA8Bai<7bpjLr`qcgz%X}>d5 zuupGp;-vcbYOe@C`C1VW33o3_9M%wHZ8}U7+#ZTf3#(_M8VbU+5)?7!>zN}vLKwYt zUxJMqeFOqa#RsTyrrZ}dTD9ZO4TCr#B6@DXAaEa1XNrTI5NqUN3pqQl$%`82=4adM zXr}Z7r6V{9Ja&s8q%PWz(;oVIt;i6L?5_CL+yY8GAYQZSnLD^wEqF5fmw%_%YvXTo z2HqhvJ)afj$@6X~*L)OHkvu@K=jg;A_8AV*XX0M+4(xlmyxx&bR5dhx$w=mwi}A0@ zv2*6iS19#p3s0~YQaF*)KsK(GMrl*F>a(B+3Ev#hMpWc)51P1`E>>bv;6wW9L{S_& z$j|`e9b&fu-I|rkqZ}Tnj`}8=!Q5?M$(hM(q#7ZOQSA(HQkgi+G~kN(3?Qn=>dp)z zuL^L80S|b6a{`Z_>OF^nT+i{17g3-bs1ih-S!Dra&8h`cj+ z*yQ+&NJ_G;8R?z=S(1+>kkAge(2nL#eay?F#1Eeo1S!tCJ3-vBH$x@2>J8TFAp^vU zcRHcuc)pzuT8u`n!HL`{uRBM9iD0v)v-gEsc66u++D|b%!_s|d#N#8Xy=aG;WIq~a zoyYTJfQXz1Z^7S>e;Iu>hKUf0K2-OPOo32vL7u+d1hm8$FCb!>KoR_&Z|4(J?nuN2 z_`?H*vBxtdJDegZOuc|+7IqszO;p^?AI?#k+%~{sAVi3Gz`9kl(RZoi z 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 literal 0 HcmV?d00001 diff --git a/configs/webpack.config.js b/configs/webpack.config.js index cb3a658..f605f56 100644 --- a/configs/webpack.config.js +++ b/configs/webpack.config.js @@ -8,43 +8,43 @@ const PermissionsOutputPlugin = require('webpack-permissions-plugin'); * @type {import('webpack').Configuration} */ const config = { - target: 'node', - node: { - __dirname: false, - __filename: false - }, - entry: './lib/extension.js', - output: { - path: path.resolve(__dirname, '..', 'dist'), - filename: 'bundle.js', - libraryTarget: 'commonjs2', - devtoolModuleFilenameTemplate: '../[resource-path]', - }, - mode: 'development', - devtool: 'source-map', - externals: { - vscode: 'commonjs vscode' - }, - resolve: { - extensions: ['.js'] - }, - plugins: [ - new CopyPlugin({ - patterns: [ - { - from: 'node_modules/vscode-languageclient/lib/utils/terminateProcess.sh', - to: 'terminateProcess.sh' - } - ] - }), - new PermissionsOutputPlugin({ - buildFiles: [ - { - path: path.resolve(__dirname, '..', 'dist', 'terminateProcess.sh'), - fileMode: '755' - } - ] - }) - ] + target: 'node', + node: { + __dirname: false, + __filename: false, + }, + entry: './lib/extension.js', + output: { + path: path.resolve(__dirname, '..', 'dist'), + filename: 'extension.js', + libraryTarget: 'commonjs2', + devtoolModuleFilenameTemplate: '../[resource-path]', + }, + mode: 'development', + devtool: 'source-map', + externals: { + vscode: 'commonjs vscode', + }, + resolve: { + extensions: ['.js'], + }, + plugins: [ + new CopyPlugin({ + patterns: [ + { + from: 'node_modules/vscode-languageclient/lib/utils/terminateProcess.sh', + to: 'terminateProcess.sh', + }, + ], + }), + new PermissionsOutputPlugin({ + buildFiles: [ + { + path: path.resolve(__dirname, '..', 'dist', 'terminateProcess.sh'), + fileMode: '755', + }, + ], + }), + ], }; module.exports = config; diff --git a/languages/ino.language-configuration.json b/languages/ino.language-configuration.json index 9c52dcc..ba10b1c 100644 --- a/languages/ino.language-configuration.json +++ b/languages/ino.language-configuration.json @@ -1,24 +1,12 @@ { "comments": { "lineComment": "//", - "blockComment": [ - "/*", - "*/" - ], + "blockComment": ["/*", "*/"] }, "brackets": [ - [ - "{", - "}" - ], - [ - "[", - "]" - ], - [ - "(", - ")" - ] + ["{", "}"], + ["[", "]"], + ["(", ")"] ], "autoClosingPairs": [ { @@ -36,24 +24,17 @@ { "open": "\"", "close": "\"", - "notIn": [ - "string", - "comment" - ] + "notIn": ["string", "comment"] }, { "open": "\"", "close": "\"", - "notIn": [ - "string" - ] + "notIn": ["string"] }, { "open": "/*", "close": " */", - "notIn": [ - "string" - ] + "notIn": ["string"] } ], "surroundingPairs": [ @@ -76,7 +57,7 @@ { "open": "\"", "close": "\"" - }, + } ], "folding": { "markers": { diff --git a/package.json b/package.json index e41453f..e8bb201 100644 --- a/package.json +++ b/package.json @@ -1,83 +1,123 @@ { - "name": "vscode-arduino-tools", "private": true, - "version": "0.0.2-beta.8", - "publisher": "arduino", + "name": "vscode-arduino-tools", + "version": "0.1.0", + "description": "Arduino Tools extension for VS Code", "license": "Apache-2.0", "author": "Arduino SA", - "description": "Arduino Tools extension for VS Code", - "main": "./dist/bundle", - "engines": { - "vscode": "^1.46.0" + "repository": { + "type": "git", + "url": "https://github.com/arduino/vscode-arduino-tools" + }, + "bugs": { + "url": "https://github.com/arduino/vscode-arduino-tools/issues" }, + "main": "./dist/extension.js", + "files": [ + "languages", + "lib", + "src", + "syntaxes" + ], "scripts": { - "prepare": "yarn clean && yarn compile && yarn lint && yarn webpack && yarn package", "clean": "rimraf ./lib ./dist ./build-artifacts", "compile": "tsc -p ./", + "compile-tests": "tsc -p . --outDir lib", + "format": "prettier --write . && prettier-package-json --write ./package.json", + "generate": "node ./scripts/generate.js 1.5.1", + "postinstall": "node ./scripts/cli 0.35.0-rc.7", "lint": "eslint src --ext ts", - "watch": "tsc -w -p ./", - "webpack": "webpack --config ./configs/webpack.config.js", - "package": "mkdirp build-artifacts && vsce package --out ./build-artifacts" + "prepackage": "yarn clean && yarn compile && yarn lint && yarn webpack", + "package": "mkdirp build-artifacts && vsce package --out ./build-artifacts", + "pretest": "yarn compile-tests && yarn compile && yarn lint", + "test": "node ./lib/test/runTest.js", + "pretest-all": "yarn pretest", + "test-all": "node ./lib/test/runTest.js --all", + "pretest-slow": "yarn pretest", + "test-slow": "node ./lib/test/runTest.js --slow", + "watch": "webpack --watch", + "watch-tests": "tsc -p . -w --outDir lib", + "webpack": "webpack --config ./configs/webpack.config.js --mode production" }, - "repository": { - "type": "git", - "url": "https://github.com/arduino/vscode-arduino-language-server" + "resolutions": { + "unset-value/isobject": "^3.0.1" }, - "bugs": { - "url": "https://github.com/arduino/vscode-arduino-language-server/issues" + "dependencies": { + "async-mutex": "^0.4.0", + "camelcase-keys": "^9.1.2", + "deep-equal": "^2.2.2", + "deepmerge": "^4.3.1", + "execa": "^8.0.1", + "fqbn": "^1.0.3", + "get-value": "^3.0.1", + "set-value": "^4.0.2", + "unset-value": "^2.0.1", + "vscode-languageclient": "^6.1.3" }, "devDependencies": { - "@types/node": "^10.14.9", - "@types/vscode": "^1.41.0", - "@typescript-eslint/eslint-plugin": "^4.8.0", - "@typescript-eslint/parser": "^4.8.0", - "copy-webpack-plugin": "^6.1.0", - "eslint": "^7.9.0", - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2", - "typescript": "^3.8.3", - "vsce": "^1.66.0", - "vscode": "^1.1.33", - "webpack": "^4.39.1", - "webpack-cli": "^3.3.6", - "webpack-permissions-plugin": "^1.0.7" - }, - "dependencies": { + "@types/decompress": "^4.2.6", "@types/deep-equal": "^1.0.1", - "async-mutex": "^0.3.0", - "deep-equal": "^2.0.3", - "deepmerge": "^4.2.2", - "path": "^0.12.7", - "vscode-languageclient": "^6.1.3", - "web-request": "^1.0.7" + "@types/get-value": "^3.0.5", + "@types/mocha": "^10.0.0", + "@types/node": "^18.17.0", + "@types/set-value": "^4.0.2", + "@types/temp": "^0.9.3", + "@types/vscode": "^1.80.0", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "@vscode/test-electron": "^2.3.6", + "@vscode/vsce": "^2.22.0", + "ardunno-cli": "^0.1.7", + "copy-webpack-plugin": "^11.0.0", + "decompress": "^4.2.1", + "decompress-targz": "^4.1.1", + "decompress-unzip": "^4.0.1", + "eslint": "^8.39.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-unused-imports": "^2.0.0", + "glob": "^10.3.10", + "json-schema": "^0.4.0", + "json-schema-to-typescript": "^13.1.1", + "mkdirp": "^3.0.1", + "mocha": "^10.2.0", + "prettier": "^2.3.1", + "prettier-package-json": "^2.8.0", + "rimraf": "^5.0.5", + "temp": "^0.9.4", + "ts-node": "^10.9.1", + "typescript": "^4.9.3", + "webpack": "^5.88.2", + "webpack-cli": "^4.7.0", + "webpack-permissions-plugin": "^1.0.9" }, "keywords": [ + "IntelliSense", "arduino", - "iot", "ino", - "IntelliSense" - ], - "files": [ - "src", - "lib", - "syntaxes", - "languages" - ], - "categories": [ - "Programming Languages", - "Formatters", - "Debuggers" + "iot" ], - "galleryBanner": { - "color": "#005c5f", - "theme": "light" + "engines": { + "node": ">=18.17.0 <21", + "vscode": "^1.80.0" + }, + "//": { + "resolutions": [ + "See https://github.com/jonschlinkert/unset-value/issues/13 why unset-value/isobject has a resolution" + ] }, "activationEvents": [ "onLanguage:ino", "onCommand:arduino.debug.start", + "onCommand:arduino.debug.createLaunchConfig", "onCommand:arduino.languageserver.start", "onCommand:arduino.languageserver.stop", - "onCommand:arduino.languageserver.restart" + "onCommand:arduino.languageserver.restart", + "onCommand:arduino.languageserver.notifyBuildDidComplete" + ], + "categories": [ + "Programming Languages", + "Debuggers" ], "contributes": { "languages": [ @@ -92,6 +132,8 @@ ".ino", ".c", ".cpp", + "cc", + "cxx", ".h", ".hpp", ".pde" @@ -99,6 +141,12 @@ "configuration": "./languages/ino.language-configuration.json" } ], + "jsonValidation": [ + { + "fileMatch": "debug_custom.json", + "url": "./schemas/debug-custom.json" + } + ], "grammars": [ { "language": "ino", @@ -131,7 +179,18 @@ "command": "arduino.debug.start", "title": "Start Debug", "category": "Arduino" + }, + { + "command": "arduino.debug.createLaunchConfig", + "title": "Create Launch Configuration", + "category": "Arduino" } ] - } + }, + "displayName": "VS Code Arduino Tools", + "galleryBanner": { + "color": "#005c5f", + "theme": "light" + }, + "publisher": "arduino" } diff --git a/schemas/cortex-debug.json b/schemas/cortex-debug.json new file mode 100644 index 0000000..7ea7fe6 --- /dev/null +++ b/schemas/cortex-debug.json @@ -0,0 +1,865 @@ +{ + "title": "cortex-debug Launch Attributes", + "$schema": "http://json-schema.org/draft-06/schema#", + "properties": { + "servertype": { + "type": "string", + "description": "GDB Server type - supported types are jlink, openocd, pyocd, pe, stlink, stutil, qemu, bmp and external", + "enum": [ + "jlink", + "openocd", + "pyocd", + "stutil", + "stlink", + "bmp", + "pe", + "qemu", + "external" + ] + }, + "cwd": { + "description": "Directory to run commands from", + "type": "string" + }, + "debuggerArgs": { + "default": [], + "description": "Additional arguments to pass to GDB command line", + "type": "array" + }, + "preLaunchCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed at the start of the main launch sequence (immediately after attaching to target)." + }, + "postLaunchCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed after the main launch sequence has finished." + }, + "preRestartCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed at the beginning of the restart sequence (after interrupting execution)." + }, + "postRestartCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed at the end of the restart sequence." + }, + "overrideLaunchCommands": { + "default": null, + "type": "array", + "items": { "type": "string" }, + "description": "You can use this to property to override the commands that are normally executed as part of flashing and launching the target. In most cases it is preferable to use preLaunchCommands and postLaunchCommands to customize the GDB launch sequence." + }, + "overrideRestartCommands": { + "default": null, + "type": "array", + "items": { "type": "string" }, + "description": "You can use this to property to override the commands that are normally executed as part of restarting the target. In most cases it is preferable to use preRestartCommands and postRestartCommands to customize the GDB restart sequence." + }, + "postStartSessionCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed at the end of the start sequence, after a debug session has already started and runToEntryPoint is not specified." + }, + "postRestartSessionCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed at the end of the re-start sequence, after a debug session has already started." + }, + "overrideGDBServerStartedRegex": { + "description": "You can supply a regular expression (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) in the configuration property to override the output from the GDB Server that is looked for to determine if the GDB Server has started. Under most circumstances this will not be necessary - but could be needed as a result of a change in the output of a GDB Server making it incompatible with cortex-debug. This property has no effect for bmp or external GDB Server types.", + "type": "string", + "default": null + }, + "cpu": { + "default": "cortex-m3", + "type": "string", + "description": "CPU Type Selection - used for QEMU server type", + "enum": ["cortex-m3", "cortex-m4"] + }, + "machine": { + "default": "lm3s811evb", + "type": "string", + "description": "Machine Type Selection - used for QEMU server type", + "enum": ["lm3s811evb", "lm3s6965evb"] + }, + "device": { + "default": "", + "description": "Target Device Identifier", + "type": "string" + }, + "rtos": { + "default": null, + "description": "RTOS being used. For JLink this can be Azure, ChibiOS, embOS, FreeRTOS, NuttX, Zephyr or the path to a custom JLink RTOS Plugin library. For OpenOCD this can be ChibiOS, eCos, embKernel, FreeRTOS, mqx, nuttx, ThreadX, uCOS-III, or auto.", + "type": "string" + }, + "armToolchainPath": { + "default": null, + "description": "This setting can be used to override the armToolchainPath user setting for a particular launch configuration. This should be the path where arm-none-eabi-gdb, arm-none-eabi-objdump and arm-none-eabi-nm are located.", + "type": "string" + }, + "toolchainPrefix": { + "default": null, + "description": "This setting can be used to override the toolchainPrefix user setting for a particular launch configuration.", + "type": "string" + }, + "serverpath": { + "default": null, + "description": "This setting can be used to override the GDB Server path user/workspace setting for a particular launch configuration. It is the full pathname to the executable or name of executable if it is in your PATH", + "type": "string" + }, + "gdbPath": { + "default": null, + "description": "This setting can be used to override the GDB path user/workspace setting for a particular launch configuration. This should be the full pathname to the executable (or name of the executable if it is in your PATH). Note that other toolchain executables with the configured prefix must still be available.", + "type": "string" + }, + "objdumpPath": { + "default": null, + "description": "This setting can be used to override the objdump (used to find globals/statics) path user/workspace setting for a particular launch configuration. This should be the full pathname to the executable (or name of the executable if it is in your PATH). Note that other toolchain executables with the configured prefix must still be available. The program 'nm' is also expected alongside", + "type": "string" + }, + "serverArgs": { + "default": [], + "description": "Additional arguments to pass to GDB Server command line", + "type": "array", + "items": { "type": "string" } + }, + "executable": { + "description": "Path of executable for symbols and program information. See also `loadFiles`, `symbolFiles`", + "type": "string" + }, + "loadFiles": { + "description": "List of files (hex/bin/elf files) to load/program instead of the executable file. Symbols are not loaded (see `symbolFiles`). Can be an empty list to specify none. If this property does not exist, then the executable is used to program the device", + "type": "array", + "items": { "type": "string" }, + "default": null + }, + "symbolFiles": { + "description": "List of ELF files to load symbols from instead of the executable file. Program information is ignored (see `loadFiles`). Can be an empty list to specify none. If this property does not exist, then the executable is used for symbols", + "type": "array", + "items": { + "type": "object", + "properties": { + "file": { + "type": "string", + "description": "Pathname of an ELF file for symbols" + }, + "offset": { + "type": ["number", "string"], + "description": "Optional offset to apply to all sections of the ELF file. Use a string strarting with '0x' for a hexadecimal number" + }, + "textaddress": { + "type": ["number", "string"], + "description": "Optional: Load the TEXT section at the specified 'textaddress'. Use a string strarting with '0x' for a hexadecimal number" + }, + "sections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { "type": "string", "description": "Section name" }, + "address": { + "type": ["number", "string"], + "description": "Base address for section. Use a string strarting with '0x' for a hexadecimal number" + } + }, + "required": ["name", "address"] + } + } + }, + "required": ["file"] + }, + "default": null + }, + "gdbTarget": { + "default": null, + "description": "For externally controlled GDB Servers you must specify the GDB target to connect to. This can either be a \"hostname:port\" combination or path to a serial port", + "type": "string" + }, + "runToMain": { + "description": "Deprecated: please use 'runToEntryPoint' instead.", + "type": "boolean", + "default": false + }, + "breakAfterReset": { + "default": false, + "type": "boolean", + "description": "Applies to Restart/Reset/Launch, halt debugger after a reset. Ignored if `runToEntryPoint` is used." + }, + "runToEntryPoint": { + "description": "Applies to Launch/Restart/Reset, ignored for Attach. If enabled the debugger will run until the start of the given function.", + "type": "string", + "default": "main" + }, + "numberOfProcessors": { + "description": "Number of processors/cores in the target device.", + "type": "number", + "multipleOf": 1, + "minimum": 1, + "maximum": 10, + "default": 1 + }, + "targetProcessor": { + "description": "The processor you want to debug. Zero based integer index. Must be less than 'numberOfProcessors'", + "type": "number", + "multipleOf": 1, + "minimum": 0, + "maximum": 9, + "default": 0 + }, + "chainedConfigurations": { + "properties": { + "enabled": { + "default": true, + "description": "Enable/Disable entire set of chained configurations", + "type": "boolean" + }, + "detached": { + "default": false, + "description": "Related or independent server sessions. Set to true for servers like 'JLink'. Inherited by children", + "type": "boolean" + }, + "lifecycleManagedByParent": { + "default": true, + "description": "Are Restart/Reset/Stop/Disconnect shared? All life-cycle management done as a group by parent/root. Inherited by children", + "type": "boolean" + }, + "waitOnEvent": { + "enum": ["postStart", "postInit"], + "default": "postInit", + "description": "Event to wait for. 'postStart' means wait for gdb-server connecting, 'postInit' is after init commands are completed by gdb. Inherited by children", + "type": "string" + }, + "delayMs": { + "type": "number", + "description": "Default delay in milliseconds for a certain amount of milliseconds to begin launch. Inherited by children", + "multipleOf": 1, + "minimum": 0, + "default": 5 + }, + "overrides": { + "default": {}, + "description": "Values to override/set in this child configuration. A set of name/value pairs. Set value to 'null' (no quotes) to delete. Sorry, no IntelliSense", + "type": "object" + }, + "inherits": { + "default": [], + "description": "List of properties to inherit from parent. Sorry, no IntelliSense", + "type": "array", + "items": { "type": "string" } + }, + "launches": { + "type": "array", + "items": { + "properties": { + "name": { + "default": "", + "description": "Name of launch configuration. Sorry, no IntelliSense", + "type": "string" + }, + "folder": { + "default": "", + "description": "Folder to use for this configuration. Where .vscode/launch.json exists. Default is same folder as parent. Use either the full path name or the base-name of the folder", + "type": "string" + }, + "enabled": { + "default": true, + "description": "Enable/Disable this configuration", + "type": "boolean" + }, + "detached": { + "default": false, + "description": "Related or independent server sessions. Set to true for servers like 'JLink'", + "type": "boolean" + }, + "waitOnEvent": { + "enum": ["postStart", "postInit"], + "default": "postInit", + "description": "Wait for an event. 'postStart' means wait for gdb-server connecting, 'postInit' is after init commands are completed by gdb", + "type": "string" + }, + "delayMs": { + "type": "number", + "description": "Delay in milliseconds for a certain amount of milliseconds to begin launch", + "multipleOf": 1, + "minimum": 0, + "default": 5 + }, + "lifecycleManagedByParent": { + "default": true, + "description": "Are Restart/Reset/Stop/Disconnect shared? All life-cycle management done as a group by parent/root", + "type": "boolean" + }, + "overrides": { + "default": {}, + "description": "Values to override/set in this child configuration. A set of name/value pairs. Set value to 'null' (no quotes) to delete. Sorry, no IntelliSense", + "type": "object" + }, + "inherits": { + "default": [], + "description": "List of properties to inherit from parent. Sorry, no IntelliSense", + "type": "array", + "items": { "type": "string" } + } + } + } + } + }, + "default": { + "enabled": true, + "waitOnEvent": "postInit", + "lifeCycleShared": true, + "launches": [ + { + "name": "use EXACT name of chained configuration to launch", + "folder": "use full path or folder basename or leave empty" + } + ] + } + }, + "graphConfig": { + "items": { + "oneOf": [ + { + "properties": { + "annotate": { + "default": true, + "description": "Create annotations on the graph for when the target processor starts and stops execution. (green line for starting execution, red line for stopping execution).", + "type": "boolean" + }, + "label": { "description": "Label for Graph", "type": "string" }, + "maximum": { + "default": 65535, + "description": "Maximum value for the X-Axis", + "type": "number" + }, + "minimum": { + "default": 0, + "description": "Minimum value for the Y-Axis", + "type": "number" + }, + "plots": { + "description": "Plot configurations. Data sources must be configured for \"graph\" (or \"advanced\" with a decoder that sends graph data) in the \"swoConfig\" section", + "items": { + "properties": { + "color": { + "pattern": "^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$", + "type": "string" + }, + "graphId": { + "description": "Graph Data Source Id for the plot.", + "type": "string" + }, + "label": { + "description": "A label for this data set", + "type": "string" + } + }, + "required": ["graphId"], + "type": "object" + }, + "type": "array" + }, + "timespan": { + "default": 30, + "description": "Length of time (seconds) to be plotted on screen.", + "type": "number" + }, + "type": { "enum": ["realtime"], "type": "string" } + }, + "required": ["label", "plots", "minimum", "maximum"], + "type": "object" + }, + { + "properties": { + "label": { "description": "Label for graph", "type": "string" }, + "timespan": { + "default": 10, + "description": "The amount of time (seconds) that the XY Plot will show the trace for.", + "type": "number" + }, + "type": { "enum": ["x-y-plot"], "type": "string" }, + "xGraphId": { + "description": "Graph Data Source Id for the X axis", + "type": "string" + }, + "xMaximum": { + "default": 65535, + "description": "Maximum value on the X-Axis", + "type": "number" + }, + "xMinimum": { + "default": 0, + "description": "Minimum value on the X-Axis", + "type": "number" + }, + "yGraphId": { + "description": "Graph Data Source Id Port for the Y axis", + "type": "string" + }, + "yMaximum": { + "default": 65535, + "description": "Maximum value on the Y-Axis", + "type": "number" + }, + "yMinimum": { + "default": 0, + "description": "Minimum value on the Y-Axis", + "type": "number" + } + }, + "required": ["xGraphId", "yGraphId", "label"], + "type": "object" + } + ] + }, + "type": "array" + }, + "showDevDebugOutput": { + "enum": ["none", "parsed", "raw", "both", "vscode"], + "default": "none", + "description": "Used to debug this extension. Prints all GDB responses to the console. 'raw' prints gdb responses, 'parsed' prints results after parsing, 'both' prints both. 'vscode' shows raw and VSCode interactions", + "type": "string" + }, + "showDevDebugTimestamps": { + "default": false, + "description": "Show timestamps when 'showDevDebugOutput' is enabled", + "type": "boolean" + }, + "svdFile": { + "default": null, + "description": "Path to a CMSIS SVD file describing the peripherals of the microcontroller; if not supplied then one may be selected based upon the 'device' entered.", + "type": "string" + }, + "svdAddrGapThreshold": { + "default": 16, + "type": "number", + "multipleOf": 1, + "minimum": -1, + "maximum": 32, + "description": "If the gap between registers is less than this threshold (multiple of 8), combine into a single read from device. -1 means never combine registers and is very slow" + }, + "rttConfig": { + "type": "object", + "description": "SEGGER's Real Time Trace (RTT) and supported by JLink, OpenOCD and perhaps others in the future", + "default": { + "enabled": true, + "address": "auto", + "decoders": [{ "label": "", "port": 0, "type": "console" }] + }, + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable/Disable RTT", + "default": false + }, + "address": { + "type": "string", + "description": "Address to start searching for the RTT control block. Use \"auto\" for Cortex-Debug to use the address from elf file", + "default": "auto" + }, + "searchSize": { + "type": "number", + "description": "Number of bytes to search for the RTT control block. If 'address' is 'auto', use ONLY if you have a custom RTT implementation", + "multipleOf": 1, + "minimum": 16, + "default": 16 + }, + "searchId": { + "type": "string", + "description": "A string to search for to find the RTT control block. If 'address' is 'auto', use ONLY if you have a custom RTT implementation", + "default": "SEGGER RTT" + }, + "polling_interval": { + "type": "number", + "description": "number of milliseconds (> 0) to wait for check for data on out channels", + "default": 0, + "minimum": 1 + }, + "clearSearch": { + "type": "boolean", + "description": "When true, clears the search-string. Only applicable when address is \"auto\"", + "default": true + }, + "decoders": { + "description": "SWO Decoder Configuration", + "items": { + "anyOf": [ + { + "properties": { + "label": { + "description": "A label for RTT Console", + "type": "string" + }, + "port": { + "description": "RTT Channel Number (0 to 15)", + "default": 0, + "maximum": 15, + "minimum": 0, + "multipleOf": 1, + "type": "number" + }, + "type": { + "enum": ["console", "binary"], + "default": "console", + "description": "'console' with text input/output, 'binary' is for converting byte stream to other data types", + "type": "string" + }, + "prompt": { + "description": "Prompt to use for RTT Console", + "type": "string", + "default": "" + }, + "noprompt": { + "description": "Don't use a prompt for RTT Console", + "type": "boolean", + "default": false + }, + "noclear": { + "description": "append to screen/logfile when another connection is made", + "type": "boolean", + "default": false + }, + "logfile": { + "description": "log all raw data (input and output) to specified file", + "type": "string", + "default": "" + }, + "timestamp": { + "description": "Add timestamps while printing for 'console' type. 'binary' type always prints timestamps", + "type": "boolean", + "default": false + }, + "encoding": { + "type": "string", + "description": "How binary data bytes are converted into a number. All little-endian", + "default": "unsigned", + "enum": ["unsigned", "signed", "Q16.16", "float"] + }, + "iencoding": { + "type": "string", + "description": "How keyoard input is encoded Cooked mode only", + "default": "utf8", + "enum": ["ascii", "utf8", "ucs2", "utf16le"] + }, + "scale": { + "default": 1, + "description": "Binary only: This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "inputmode": { + "type": "string", + "description": "Experimental: 'disabled' means no stdin. 'raw' and 'rawecho' sends chars as they are typed.\n'rawecho' will echo chars and process RETURN keys. Even CTRL-C CTRL-D are passed on", + "default": "cooked", + "enum": ["cooked", "raw", "rawecho", "disabled"] + } + }, + "required": ["port"], + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": ["unsigned", "signed", "Q16.16", "float"], + "type": "string" + }, + "graphId": { + "description": "The identifier to use for this data in graph configurations.", + "type": "string" + }, + "port": { + "description": "RTT Channel Number", + "maximum": 15, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { "enum": ["graph"], "type": "string" } + }, + "required": ["port", "graphId"], + "type": "object" + }, + { + "properties": { + "config": { "additionalProperties": true, "type": "object" }, + "decoder": { + "description": "Path to a javascript module to implement the decoding functionality.", + "type": "string" + }, + "ports": { + "description": "RTT Channel Numbers", + "type": "array", + "items": { "type": "number", "maximum": 15, "minimum": 0 } + }, + "type": { "enum": ["advanced"], "type": "string" } + }, + "required": ["ports", "decoder"], + "type": "object" + } + ] + }, + "type": "array" + } + } + }, + "swoConfig": { + "properties": { + "cpuFrequency": { + "default": 0, + "description": "Target CPU frequency in Hz.", + "type": "number" + }, + "enabled": { + "default": false, + "description": "Enable SWO decoding.", + "type": "boolean" + }, + "source": { + "type": "string", + "enum": ["probe", "socket", "serial", "file"], + "default": "probe", + "description": "Source for SWO data. Can either be \"probe\" to get directly from debug probe, or a serial port device to use a serial port external to the debug probe." + }, + "swoPath": { + "type": "string", + "default": "", + "description": "Path name when source is \"file\" or \"serial\". Typically a /path-name or a serial-port-name" + }, + "swoPort": { + "type": "string", + "default": "", + "description": "When server is \"external\" && source is \"socket\", port to connect to. Format [host:]port" + }, + "decoders": { + "description": "SWO Decoder Configuration", + "items": { + "anyOf": [ + { + "properties": { + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "port": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "showOnStartup": { + "description": "If true, switches to this output when starting a debug session.", + "type": "boolean" + }, + "timestamp": { + "description": "Add timestamps while printing", + "type": "boolean", + "default": false + }, + "type": { "enum": ["console"], "type": "string" }, + "encoding": { + "type": "string", + "default": "utf8", + "enum": ["ascii", "utf8", "ucs2", "utf16le"] + }, + "logfile": { + "description": "log all raw data to specified file", + "type": "string", + "default": "" + } + }, + "required": ["port"], + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": ["unsigned", "signed", "Q16.16", "float"], + "type": "string" + }, + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "port": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { "enum": ["binary"], "type": "string" }, + "logfile": { + "description": "log all raw data to specified file", + "type": "string", + "default": "" + } + }, + "required": ["port"], + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": ["unsigned", "signed", "Q16.16", "float"], + "type": "string" + }, + "graphId": { + "description": "The identifier to use for this data in graph configurations.", + "type": "string" + }, + "port": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { "enum": ["graph"], "type": "string" }, + "logfile": { + "description": "log all raw data to specified file", + "type": "string", + "default": "" + } + }, + "required": ["port", "graphId"], + "type": "object" + }, + { + "properties": { + "config": { "additionalProperties": true, "type": "object" }, + "decoder": { + "description": "Path to a javascript module to implement the decoding functionality.", + "type": "string" + }, + "ports": { + "description": "ITM Port Numbers", + "type": "array", + "items": { "type": "number", "maximum": 31, "minimum": 0 } + }, + "type": { "enum": ["advanced"], "type": "string" } + }, + "required": ["ports", "decoder"], + "type": "object" + } + ] + }, + "type": "array" + }, + "swoFrequency": { + "default": 0, + "description": "SWO frequency in Hz.", + "type": "number" + } + }, + "required": [], + "type": "object" + }, + "ipAddress": { + "default": null, + "description": "IP Address for networked J-Link Adapter", + "pattern": "^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$", + "type": "string" + }, + "serialNumber": { + "default": null, + "description": "J-Link or ST-LINK Serial Number - only needed if multiple J-Links/ST-LINKs are connected to the computer", + "type": "string" + }, + "interface": { + "default": "swd", + "description": "Debug Interface type to use for connections (defaults to SWD) - Used for J-Link, ST-LINK and BMP probes.", + "type": "string", + "enum": ["swd", "jtag", "cjtag"] + }, + "jlinkscript": { + "default": null, + "description": "J-Link script file - optional input file for customizing J-Link actions.", + "type": "string" + }, + "openOCDLaunchCommands": { + "default": [], + "description": "OpenOCD command(s) after configuration files are loaded (-c options)", + "items": { "type": "string" }, + "type": "array" + }, + "openOCDPreConfigLaunchCommands": { + "default": [], + "description": "OpenOCD command(s) before configuration files are loaded (-c options)", + "items": { "type": "string" }, + "type": "array" + }, + "configFiles": { + "description": "OpenOCD/PE GDB Server configuration file(s) to use when debugging (OpenOCD -f option)", + "items": { "type": "string" }, + "type": "array" + }, + "searchDir": { + "default": [], + "description": "OpenOCD directories to search for config files and scripts (-s option). If no search directories are specified, it defaults to the configured cwd.", + "items": { "type": "string" }, + "type": "array" + }, + "v1": { + "default": false, + "description": "For st-util only. Set this to true if your debug probe is a ST-Link V1 (for example, the ST-Link on the STM32 VL Discovery is a V1 device). When set to false a ST-Link V2 device is used.", + "type": "boolean" + }, + "stlinkPath": { + "default": null, + "description": "Path to the ST-LINK_gdbserver executable. If not set then ST-LINK_gdbserver (ST-LINK_gdbserver.exe on Windows) must be on the system path.", + "type": "string" + }, + "stm32cubeprogrammer": { + "default": null, + "description": "This path is normally resolved to the installed STM32CubeIDE or STM32CubeProgrammer but can be overridden here.", + "type": "string" + }, + "targetId": { + "description": "On BMP this is the ID number that should be passed to the attach command (defaults to 1); for PyOCD this is the target identifier (only needed for custom hardware)", + "anyOf": [{ "type": "string" }, { "type": "number", "minimum": 1 }] + }, + "boardId": { + "description": "PyOCD Board Identifier. Needed if multiple compatible boards are connected.", + "type": "string" + }, + "cmsisPack": { + "description": "Path to a CMSIS-Pack file. Use to add extra device support.", + "type": "string" + }, + "BMPGDBSerialPort": { + "type": "string", + "description": "The serial port for the Black Magic Probe GDB Server. On Windows this will be \"COM\", on Linux this will be something similar to /dev/ttyACM0, on OS X something like /dev/cu.usbmodemE2C0C4C6 (do not use tty versions on OS X)" + }, + "powerOverBMP": { + "type": "string", + "description": "Power up the board over Black Magic Probe. \"powerOverBMP\" : \"enable\" or \"powerOverBMP\" : \"disable\". If not set it will use the last power state." + } + }, + "required": ["executable"] +} diff --git a/schemas/debug-custom.json b/schemas/debug-custom.json new file mode 100644 index 0000000..2e97cb6 --- /dev/null +++ b/schemas/debug-custom.json @@ -0,0 +1,880 @@ +{ + "title": "debug_custom.json configuration", + "$schema": "http://json-schema.org/draft-06/schema#", + "type": "array", + "items": { + "type": "object", + "properties": { + "servertype": { + "type": "string", + "description": "GDB Server type - supported types are jlink, openocd, pyocd, pe, stlink, stutil, qemu, bmp and external", + "enum": [ + "jlink", + "openocd", + "pyocd", + "stutil", + "stlink", + "bmp", + "pe", + "qemu", + "external" + ] + }, + "cwd": { + "description": "Directory to run commands from", + "type": "string" + }, + "debuggerArgs": { + "default": [], + "description": "Additional arguments to pass to GDB command line", + "type": "array" + }, + "preLaunchCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed at the start of the main launch sequence (immediately after attaching to target)." + }, + "postLaunchCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed after the main launch sequence has finished." + }, + "preRestartCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed at the beginning of the restart sequence (after interrupting execution)." + }, + "postRestartCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed at the end of the restart sequence." + }, + "overrideLaunchCommands": { + "default": null, + "type": "array", + "items": { "type": "string" }, + "description": "You can use this to property to override the commands that are normally executed as part of flashing and launching the target. In most cases it is preferable to use preLaunchCommands and postLaunchCommands to customize the GDB launch sequence." + }, + "overrideRestartCommands": { + "default": null, + "type": "array", + "items": { "type": "string" }, + "description": "You can use this to property to override the commands that are normally executed as part of restarting the target. In most cases it is preferable to use preRestartCommands and postRestartCommands to customize the GDB restart sequence." + }, + "postStartSessionCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed at the end of the start sequence, after a debug session has already started and runToEntryPoint is not specified." + }, + "postRestartSessionCommands": { + "default": [], + "type": "array", + "items": { "type": "string" }, + "description": "Additional GDB Commands to be executed at the end of the re-start sequence, after a debug session has already started." + }, + "overrideGDBServerStartedRegex": { + "description": "You can supply a regular expression (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) in the configuration property to override the output from the GDB Server that is looked for to determine if the GDB Server has started. Under most circumstances this will not be necessary - but could be needed as a result of a change in the output of a GDB Server making it incompatible with cortex-debug. This property has no effect for bmp or external GDB Server types.", + "type": "string", + "default": null + }, + "cpu": { + "default": "cortex-m3", + "type": "string", + "description": "CPU Type Selection - used for QEMU server type", + "enum": ["cortex-m3", "cortex-m4"] + }, + "machine": { + "default": "lm3s811evb", + "type": "string", + "description": "Machine Type Selection - used for QEMU server type", + "enum": ["lm3s811evb", "lm3s6965evb"] + }, + "device": { + "default": "", + "description": "Target Device Identifier", + "type": "string" + }, + "rtos": { + "default": null, + "description": "RTOS being used. For JLink this can be Azure, ChibiOS, embOS, FreeRTOS, NuttX, Zephyr or the path to a custom JLink RTOS Plugin library. For OpenOCD this can be ChibiOS, eCos, embKernel, FreeRTOS, mqx, nuttx, ThreadX, uCOS-III, or auto.", + "type": "string" + }, + "armToolchainPath": { + "default": null, + "description": "This setting can be used to override the armToolchainPath user setting for a particular launch configuration. This should be the path where arm-none-eabi-gdb, arm-none-eabi-objdump and arm-none-eabi-nm are located.", + "type": "string" + }, + "toolchainPrefix": { + "default": null, + "description": "This setting can be used to override the toolchainPrefix user setting for a particular launch configuration.", + "type": "string" + }, + "serverpath": { + "default": null, + "description": "This setting can be used to override the GDB Server path user/workspace setting for a particular launch configuration. It is the full pathname to the executable or name of executable if it is in your PATH", + "type": "string" + }, + "gdbPath": { + "default": null, + "description": "This setting can be used to override the GDB path user/workspace setting for a particular launch configuration. This should be the full pathname to the executable (or name of the executable if it is in your PATH). Note that other toolchain executables with the configured prefix must still be available.", + "type": "string" + }, + "objdumpPath": { + "default": null, + "description": "This setting can be used to override the objdump (used to find globals/statics) path user/workspace setting for a particular launch configuration. This should be the full pathname to the executable (or name of the executable if it is in your PATH). Note that other toolchain executables with the configured prefix must still be available. The program 'nm' is also expected alongside", + "type": "string" + }, + "serverArgs": { + "default": [], + "description": "Additional arguments to pass to GDB Server command line", + "type": "array", + "items": { "type": "string" } + }, + "executable": { + "description": "Path of executable for symbols and program information. See also `loadFiles`, `symbolFiles`", + "type": "string" + }, + "loadFiles": { + "description": "List of files (hex/bin/elf files) to load/program instead of the executable file. Symbols are not loaded (see `symbolFiles`). Can be an empty list to specify none. If this property does not exist, then the executable is used to program the device", + "type": "array", + "items": { "type": "string" }, + "default": null + }, + "symbolFiles": { + "description": "List of ELF files to load symbols from instead of the executable file. Program information is ignored (see `loadFiles`). Can be an empty list to specify none. If this property does not exist, then the executable is used for symbols", + "type": "array", + "items": { + "type": "object", + "properties": { + "file": { + "type": "string", + "description": "Pathname of an ELF file for symbols" + }, + "offset": { + "type": ["number", "string"], + "description": "Optional offset to apply to all sections of the ELF file. Use a string strarting with '0x' for a hexadecimal number" + }, + "textaddress": { + "type": ["number", "string"], + "description": "Optional: Load the TEXT section at the specified 'textaddress'. Use a string strarting with '0x' for a hexadecimal number" + }, + "sections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { "type": "string", "description": "Section name" }, + "address": { + "type": ["number", "string"], + "description": "Base address for section. Use a string strarting with '0x' for a hexadecimal number" + } + }, + "required": ["name", "address"] + } + } + }, + "required": ["file"] + }, + "default": null + }, + "gdbTarget": { + "default": null, + "description": "For externally controlled GDB Servers you must specify the GDB target to connect to. This can either be a \"hostname:port\" combination or path to a serial port", + "type": "string" + }, + "runToMain": { + "description": "Deprecated: please use 'runToEntryPoint' instead.", + "type": "boolean", + "default": false + }, + "breakAfterReset": { + "default": false, + "type": "boolean", + "description": "Applies to Restart/Reset/Launch, halt debugger after a reset. Ignored if `runToEntryPoint` is used." + }, + "runToEntryPoint": { + "description": "Applies to Launch/Restart/Reset, ignored for Attach. If enabled the debugger will run until the start of the given function.", + "type": "string", + "default": "main" + }, + "numberOfProcessors": { + "description": "Number of processors/cores in the target device.", + "type": "number", + "multipleOf": 1, + "minimum": 1, + "maximum": 10, + "default": 1 + }, + "targetProcessor": { + "description": "The processor you want to debug. Zero based integer index. Must be less than 'numberOfProcessors'", + "type": "number", + "multipleOf": 1, + "minimum": 0, + "maximum": 9, + "default": 0 + }, + "chainedConfigurations": { + "properties": { + "enabled": { + "default": true, + "description": "Enable/Disable entire set of chained configurations", + "type": "boolean" + }, + "detached": { + "default": false, + "description": "Related or independent server sessions. Set to true for servers like 'JLink'. Inherited by children", + "type": "boolean" + }, + "lifecycleManagedByParent": { + "default": true, + "description": "Are Restart/Reset/Stop/Disconnect shared? All life-cycle management done as a group by parent/root. Inherited by children", + "type": "boolean" + }, + "waitOnEvent": { + "enum": ["postStart", "postInit"], + "default": "postInit", + "description": "Event to wait for. 'postStart' means wait for gdb-server connecting, 'postInit' is after init commands are completed by gdb. Inherited by children", + "type": "string" + }, + "delayMs": { + "type": "number", + "description": "Default delay in milliseconds for a certain amount of milliseconds to begin launch. Inherited by children", + "multipleOf": 1, + "minimum": 0, + "default": 5 + }, + "overrides": { + "default": {}, + "description": "Values to override/set in this child configuration. A set of name/value pairs. Set value to 'null' (no quotes) to delete. Sorry, no IntelliSense", + "type": "object" + }, + "inherits": { + "default": [], + "description": "List of properties to inherit from parent. Sorry, no IntelliSense", + "type": "array", + "items": { "type": "string" } + }, + "launches": { + "type": "array", + "items": { + "properties": { + "name": { + "default": "", + "description": "Name of launch configuration. Sorry, no IntelliSense", + "type": "string" + }, + "folder": { + "default": "", + "description": "Folder to use for this configuration. Where .vscode/launch.json exists. Default is same folder as parent. Use either the full path name or the base-name of the folder", + "type": "string" + }, + "enabled": { + "default": true, + "description": "Enable/Disable this configuration", + "type": "boolean" + }, + "detached": { + "default": false, + "description": "Related or independent server sessions. Set to true for servers like 'JLink'", + "type": "boolean" + }, + "waitOnEvent": { + "enum": ["postStart", "postInit"], + "default": "postInit", + "description": "Wait for an event. 'postStart' means wait for gdb-server connecting, 'postInit' is after init commands are completed by gdb", + "type": "string" + }, + "delayMs": { + "type": "number", + "description": "Delay in milliseconds for a certain amount of milliseconds to begin launch", + "multipleOf": 1, + "minimum": 0, + "default": 5 + }, + "lifecycleManagedByParent": { + "default": true, + "description": "Are Restart/Reset/Stop/Disconnect shared? All life-cycle management done as a group by parent/root", + "type": "boolean" + }, + "overrides": { + "default": {}, + "description": "Values to override/set in this child configuration. A set of name/value pairs. Set value to 'null' (no quotes) to delete. Sorry, no IntelliSense", + "type": "object" + }, + "inherits": { + "default": [], + "description": "List of properties to inherit from parent. Sorry, no IntelliSense", + "type": "array", + "items": { "type": "string" } + } + } + } + } + }, + "default": { + "enabled": true, + "waitOnEvent": "postInit", + "lifeCycleShared": true, + "launches": [ + { + "name": "use EXACT name of chained configuration to launch", + "folder": "use full path or folder basename or leave empty" + } + ] + } + }, + "graphConfig": { + "items": { + "oneOf": [ + { + "properties": { + "annotate": { + "default": true, + "description": "Create annotations on the graph for when the target processor starts and stops execution. (green line for starting execution, red line for stopping execution).", + "type": "boolean" + }, + "label": { "description": "Label for Graph", "type": "string" }, + "maximum": { + "default": 65535, + "description": "Maximum value for the X-Axis", + "type": "number" + }, + "minimum": { + "default": 0, + "description": "Minimum value for the Y-Axis", + "type": "number" + }, + "plots": { + "description": "Plot configurations. Data sources must be configured for \"graph\" (or \"advanced\" with a decoder that sends graph data) in the \"swoConfig\" section", + "items": { + "properties": { + "color": { + "pattern": "^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$", + "type": "string" + }, + "graphId": { + "description": "Graph Data Source Id for the plot.", + "type": "string" + }, + "label": { + "description": "A label for this data set", + "type": "string" + } + }, + "required": ["graphId"], + "type": "object" + }, + "type": "array" + }, + "timespan": { + "default": 30, + "description": "Length of time (seconds) to be plotted on screen.", + "type": "number" + }, + "type": { "enum": ["realtime"], "type": "string" } + }, + "required": ["label", "plots", "minimum", "maximum"], + "type": "object" + }, + { + "properties": { + "label": { "description": "Label for graph", "type": "string" }, + "timespan": { + "default": 10, + "description": "The amount of time (seconds) that the XY Plot will show the trace for.", + "type": "number" + }, + "type": { "enum": ["x-y-plot"], "type": "string" }, + "xGraphId": { + "description": "Graph Data Source Id for the X axis", + "type": "string" + }, + "xMaximum": { + "default": 65535, + "description": "Maximum value on the X-Axis", + "type": "number" + }, + "xMinimum": { + "default": 0, + "description": "Minimum value on the X-Axis", + "type": "number" + }, + "yGraphId": { + "description": "Graph Data Source Id Port for the Y axis", + "type": "string" + }, + "yMaximum": { + "default": 65535, + "description": "Maximum value on the Y-Axis", + "type": "number" + }, + "yMinimum": { + "default": 0, + "description": "Minimum value on the Y-Axis", + "type": "number" + } + }, + "required": ["xGraphId", "yGraphId", "label"], + "type": "object" + } + ] + }, + "type": "array" + }, + "showDevDebugOutput": { + "enum": ["none", "parsed", "raw", "both", "vscode"], + "default": "none", + "description": "Used to debug this extension. Prints all GDB responses to the console. 'raw' prints gdb responses, 'parsed' prints results after parsing, 'both' prints both. 'vscode' shows raw and VSCode interactions", + "type": "string" + }, + "showDevDebugTimestamps": { + "default": false, + "description": "Show timestamps when 'showDevDebugOutput' is enabled", + "type": "boolean" + }, + "svdFile": { + "default": null, + "description": "Path to a CMSIS SVD file describing the peripherals of the microcontroller; if not supplied then one may be selected based upon the 'device' entered.", + "type": "string" + }, + "svdAddrGapThreshold": { + "default": 16, + "type": "number", + "multipleOf": 1, + "minimum": -1, + "maximum": 32, + "description": "If the gap between registers is less than this threshold (multiple of 8), combine into a single read from device. -1 means never combine registers and is very slow" + }, + "rttConfig": { + "type": "object", + "description": "SEGGER's Real Time Trace (RTT) and supported by JLink, OpenOCD and perhaps others in the future", + "default": { + "enabled": true, + "address": "auto", + "decoders": [{ "label": "", "port": 0, "type": "console" }] + }, + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable/Disable RTT", + "default": false + }, + "address": { + "type": "string", + "description": "Address to start searching for the RTT control block. Use \"auto\" for Cortex-Debug to use the address from elf file", + "default": "auto" + }, + "searchSize": { + "type": "number", + "description": "Number of bytes to search for the RTT control block. If 'address' is 'auto', use ONLY if you have a custom RTT implementation", + "multipleOf": 1, + "minimum": 16, + "default": 16 + }, + "searchId": { + "type": "string", + "description": "A string to search for to find the RTT control block. If 'address' is 'auto', use ONLY if you have a custom RTT implementation", + "default": "SEGGER RTT" + }, + "polling_interval": { + "type": "number", + "description": "number of milliseconds (> 0) to wait for check for data on out channels", + "default": 0, + "minimum": 1 + }, + "clearSearch": { + "type": "boolean", + "description": "When true, clears the search-string. Only applicable when address is \"auto\"", + "default": true + }, + "decoders": { + "description": "SWO Decoder Configuration", + "items": { + "anyOf": [ + { + "properties": { + "label": { + "description": "A label for RTT Console", + "type": "string" + }, + "port": { + "description": "RTT Channel Number (0 to 15)", + "default": 0, + "maximum": 15, + "minimum": 0, + "multipleOf": 1, + "type": "number" + }, + "type": { + "enum": ["console", "binary"], + "default": "console", + "description": "'console' with text input/output, 'binary' is for converting byte stream to other data types", + "type": "string" + }, + "prompt": { + "description": "Prompt to use for RTT Console", + "type": "string", + "default": "" + }, + "noprompt": { + "description": "Don't use a prompt for RTT Console", + "type": "boolean", + "default": false + }, + "noclear": { + "description": "append to screen/logfile when another connection is made", + "type": "boolean", + "default": false + }, + "logfile": { + "description": "log all raw data (input and output) to specified file", + "type": "string", + "default": "" + }, + "timestamp": { + "description": "Add timestamps while printing for 'console' type. 'binary' type always prints timestamps", + "type": "boolean", + "default": false + }, + "encoding": { + "type": "string", + "description": "How binary data bytes are converted into a number. All little-endian", + "default": "unsigned", + "enum": ["unsigned", "signed", "Q16.16", "float"] + }, + "iencoding": { + "type": "string", + "description": "How keyoard input is encoded Cooked mode only", + "default": "utf8", + "enum": ["ascii", "utf8", "ucs2", "utf16le"] + }, + "scale": { + "default": 1, + "description": "Binary only: This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "inputmode": { + "type": "string", + "description": "Experimental: 'disabled' means no stdin. 'raw' and 'rawecho' sends chars as they are typed.\n'rawecho' will echo chars and process RETURN keys. Even CTRL-C CTRL-D are passed on", + "default": "cooked", + "enum": ["cooked", "raw", "rawecho", "disabled"] + } + }, + "required": ["port"], + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": ["unsigned", "signed", "Q16.16", "float"], + "type": "string" + }, + "graphId": { + "description": "The identifier to use for this data in graph configurations.", + "type": "string" + }, + "port": { + "description": "RTT Channel Number", + "maximum": 15, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { "enum": ["graph"], "type": "string" } + }, + "required": ["port", "graphId"], + "type": "object" + }, + { + "properties": { + "config": { + "additionalProperties": true, + "type": "object" + }, + "decoder": { + "description": "Path to a javascript module to implement the decoding functionality.", + "type": "string" + }, + "ports": { + "description": "RTT Channel Numbers", + "type": "array", + "items": { "type": "number", "maximum": 15, "minimum": 0 } + }, + "type": { "enum": ["advanced"], "type": "string" } + }, + "required": ["ports", "decoder"], + "type": "object" + } + ] + }, + "type": "array" + } + } + }, + "swoConfig": { + "properties": { + "cpuFrequency": { + "default": 0, + "description": "Target CPU frequency in Hz.", + "type": "number" + }, + "enabled": { + "default": false, + "description": "Enable SWO decoding.", + "type": "boolean" + }, + "source": { + "type": "string", + "enum": ["probe", "socket", "serial", "file"], + "default": "probe", + "description": "Source for SWO data. Can either be \"probe\" to get directly from debug probe, or a serial port device to use a serial port external to the debug probe." + }, + "swoPath": { + "type": "string", + "default": "", + "description": "Path name when source is \"file\" or \"serial\". Typically a /path-name or a serial-port-name" + }, + "swoPort": { + "type": "string", + "default": "", + "description": "When server is \"external\" && source is \"socket\", port to connect to. Format [host:]port" + }, + "decoders": { + "description": "SWO Decoder Configuration", + "items": { + "anyOf": [ + { + "properties": { + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "port": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "showOnStartup": { + "description": "If true, switches to this output when starting a debug session.", + "type": "boolean" + }, + "timestamp": { + "description": "Add timestamps while printing", + "type": "boolean", + "default": false + }, + "type": { "enum": ["console"], "type": "string" }, + "encoding": { + "type": "string", + "default": "utf8", + "enum": ["ascii", "utf8", "ucs2", "utf16le"] + }, + "logfile": { + "description": "log all raw data to specified file", + "type": "string", + "default": "" + } + }, + "required": ["port"], + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": ["unsigned", "signed", "Q16.16", "float"], + "type": "string" + }, + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "port": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { "enum": ["binary"], "type": "string" }, + "logfile": { + "description": "log all raw data to specified file", + "type": "string", + "default": "" + } + }, + "required": ["port"], + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": ["unsigned", "signed", "Q16.16", "float"], + "type": "string" + }, + "graphId": { + "description": "The identifier to use for this data in graph configurations.", + "type": "string" + }, + "port": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { "enum": ["graph"], "type": "string" }, + "logfile": { + "description": "log all raw data to specified file", + "type": "string", + "default": "" + } + }, + "required": ["port", "graphId"], + "type": "object" + }, + { + "properties": { + "config": { + "additionalProperties": true, + "type": "object" + }, + "decoder": { + "description": "Path to a javascript module to implement the decoding functionality.", + "type": "string" + }, + "ports": { + "description": "ITM Port Numbers", + "type": "array", + "items": { "type": "number", "maximum": 31, "minimum": 0 } + }, + "type": { "enum": ["advanced"], "type": "string" } + }, + "required": ["ports", "decoder"], + "type": "object" + } + ] + }, + "type": "array" + }, + "swoFrequency": { + "default": 0, + "description": "SWO frequency in Hz.", + "type": "number" + } + }, + "required": [], + "type": "object" + }, + "ipAddress": { + "default": null, + "description": "IP Address for networked J-Link Adapter", + "pattern": "^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$", + "type": "string" + }, + "serialNumber": { + "default": null, + "description": "J-Link or ST-LINK Serial Number - only needed if multiple J-Links/ST-LINKs are connected to the computer", + "type": "string" + }, + "interface": { + "default": "swd", + "description": "Debug Interface type to use for connections (defaults to SWD) - Used for J-Link, ST-LINK and BMP probes.", + "type": "string", + "enum": ["swd", "jtag", "cjtag"] + }, + "jlinkscript": { + "default": null, + "description": "J-Link script file - optional input file for customizing J-Link actions.", + "type": "string" + }, + "openOCDLaunchCommands": { + "default": [], + "description": "OpenOCD command(s) after configuration files are loaded (-c options)", + "items": { "type": "string" }, + "type": "array" + }, + "openOCDPreConfigLaunchCommands": { + "default": [], + "description": "OpenOCD command(s) before configuration files are loaded (-c options)", + "items": { "type": "string" }, + "type": "array" + }, + "configFiles": { + "description": "OpenOCD/PE GDB Server configuration file(s) to use when debugging (OpenOCD -f option)", + "items": { "type": "string" }, + "type": "array" + }, + "searchDir": { + "default": [], + "description": "OpenOCD directories to search for config files and scripts (-s option). If no search directories are specified, it defaults to the configured cwd.", + "items": { "type": "string" }, + "type": "array" + }, + "v1": { + "default": false, + "description": "For st-util only. Set this to true if your debug probe is a ST-Link V1 (for example, the ST-Link on the STM32 VL Discovery is a V1 device). When set to false a ST-Link V2 device is used.", + "type": "boolean" + }, + "stlinkPath": { + "default": null, + "description": "Path to the ST-LINK_gdbserver executable. If not set then ST-LINK_gdbserver (ST-LINK_gdbserver.exe on Windows) must be on the system path.", + "type": "string" + }, + "stm32cubeprogrammer": { + "default": null, + "description": "This path is normally resolved to the installed STM32CubeIDE or STM32CubeProgrammer but can be overridden here.", + "type": "string" + }, + "targetId": { + "description": "On BMP this is the ID number that should be passed to the attach command (defaults to 1); for PyOCD this is the target identifier (only needed for custom hardware)", + "anyOf": [{ "type": "string" }, { "type": "number", "minimum": 1 }] + }, + "boardId": { + "description": "PyOCD Board Identifier. Needed if multiple compatible boards are connected.", + "type": "string" + }, + "cmsisPack": { + "description": "Path to a CMSIS-Pack file. Use to add extra device support.", + "type": "string" + }, + "BMPGDBSerialPort": { + "type": "string", + "description": "The serial port for the Black Magic Probe GDB Server. On Windows this will be \"COM\", on Linux this will be something similar to /dev/ttyACM0, on OS X something like /dev/cu.usbmodemE2C0C4C6 (do not use tty versions on OS X)" + }, + "powerOverBMP": { + "type": "string", + "description": "Power up the board over Black Magic Probe. \"powerOverBMP\" : \"enable\" or \"powerOverBMP\" : \"disable\". If not set it will use the last power state." + }, + "configId": { + "type": "string", + "description": "Arduino debug configuration identifier consisting of the Fully Qualified Board Name (FQBN) and the programmer identifier (for example, `esptool`)", + "examples": ["vendor:arch:boardId:programmer=programmerId"] + } + }, + "required": ["configId"] + } +} diff --git a/scripts/cli.js b/scripts/cli.js new file mode 100644 index 0000000..678d4d4 --- /dev/null +++ b/scripts/cli.js @@ -0,0 +1,98 @@ +// @ts-check + +// Downloads the Arduino CLI from arduino.cc to `.downloads/` and makes it available for the tests. +// It's a NOOP if the the CLI is already downloaded. +// Usage: `node ./scripts/cli.js 0.35.0-rc.1` + +const fs = require('node:fs/promises'); +const path = require('node:path'); +const os = require('node:os'); +const temp = require('temp'); +const { download, decompress } = require('./utils'); + +const [version] = process.argv.slice(2); +if (!version) { + console.error('The Arduino CLI version argument must be specified.'); + process.exit(1); +} + +const cliFilename = `arduino-cli${os.platform() === 'win32' ? '.exe' : ''}`; +const cliPath = path.join(__dirname, '..', '.tests', cliFilename); + +/** + * @param {string} file absolute filesystem path to the Arduino CLI + */ +async function checkCliAccessible(file) { + try { + const stdout = await exec(file, ['version', '--format', 'json']); + return typeof JSON.parse(stdout) === 'object'; + } catch { + return false; + } +} + +/** + * @param {string} file + * @param {readonly string[] | undefined} [args=undefined] + */ +async function exec(file, args) { + const { execa } = await import('execa'); + const { stdout } = await execa(file, args); + return stdout; +} + +const platforms = { + linux: 'Linux', + darwin: 'macOS', + win32: 'Windows', +}; +const arches = { + x64: '64bit', + arm64: 'ARM64', +}; +const extensions = { + linux: 'tar.gz', + darwin: 'tar.gz', + win32: 'zip', +}; + +/** + * @param {string} version + */ +function downloadUrl(version) { + const platform = os.platform(); + const arch = os.arch(); + const cliPlatform = platforms[platform]; + const cliArch = arches[arch]; + const cliExtension = extensions[platform]; + if (!cliPlatform || !cliArch || !cliExtension) { + throw new Error( + `Arduino CLI is unavailable on '${platform}' [arch: ${arch}].` + ); + } + const suffix = `${cliPlatform}_${cliArch}.${cliExtension}`; + return `https://downloads.arduino.cc/arduino-cli/arduino-cli_${version}_${suffix}`; +} + +/** + * @param {string} version + */ +async function run(version) { + if (await checkCliAccessible(cliPath)) { + return; + } + + const url = downloadUrl(version); + const data = await download(url); + + const tracked = temp.track(); + try { + const tempDir = await tracked.mkdir(); + await decompress(data, tempDir); + await fs.cp(path.join(tempDir, cliFilename), cliPath, { force: false }); + } finally { + tracked.cleanupSync(); + } +} + +run(version); diff --git a/scripts/generate.js b/scripts/generate.js new file mode 100755 index 0000000..9708f71 --- /dev/null +++ b/scripts/generate.js @@ -0,0 +1,205 @@ +// @ts-check + +// Generates schemas and types for cortex-debug and debug_custom.json. +// Usage: `node ./scripts/generate.js 1.5.1` + +const fs = require('node:fs/promises'); +const path = require('node:path'); +const { compile } = require('json-schema-to-typescript'); +const temp = require('temp'); +const { download, decompress } = require('./utils'); + +const [version] = process.argv.slice(2); +if (!version) { + console.error("The 'cortex-debug' VSIX version argument must be specified."); + process.exit(1); +} + +/** + * @typedef {import('json-schema').JSONSchema4} JSONSchema4 + * @typedef {{ items: JSONSchema4 | JSONSchema4[] | undefined | string }} RelaxedItems + * @typedef {{ properties: RelaxedJSONSchema4 | RelaxedJSONSchema4[] | undefined }} RelaxedProperties + * @typedef {Omit & RelaxedItems & RelaxedProperties} RelaxedJSONSchema4 + */ + +const cortexDebugTitle = 'cortex-debug Launch Attributes'; +const customDebugTitle = 'debug_custom.json configuration'; + +/** + * @param {string} version the semver of the cortex-debug extension to download and generate from. + * @param {string} tempDir absolute filesystem path for the working directory. + */ +async function generate(version, tempDir) { + await downloadVSIX(version, tempDir); + const properties = getLaunchAttributes(tempDir); + const cortexDebugSchema = await generateCortexDebugSchema(properties); + await generateTS(version, cortexDebugSchema); + await generateCustomDebugSchema(cortexDebugSchema); +} + +/** + * Generates the JSON schema for debug_custom.json so IDE2 can validate via [jsonValidation](https://code.visualstudio.com/api/references/contribution-points#contributes.jsonValidation). + * + * @param {JSONSchema4} superSchema + * @returns {Promise} + */ +async function generateCustomDebugSchema(superSchema) { + const schemaPath = path.join(__dirname, '..', 'schemas', 'debug-custom.json'); + console.log(`Generating JSON-schema for 'custom-debug' to ${schemaPath}`); + /** @type {JSONSchema4} */ + const schema = { + title: customDebugTitle, + $schema: 'http://json-schema.org/draft-06/schema#', + type: 'array', + items: { + type: 'object', + properties: { + ...superSchema.properties, + configId: { + type: 'string', + description: + 'Arduino debug configuration identifier consisting of the Fully Qualified Board Name (FQBN) and the programmer identifier (for example, `esptool`)', + examples: ['vendor:arch:boardId:programmer=programmerId'], + }, + }, + required: ['configId'], + }, + }; + await writeSchema(schema, schemaPath); +} + +/** + * @param {RelaxedJSONSchema4} properties + * @returns {Promise} + */ +async function generateCortexDebugSchema(properties) { + const schemaPath = path.join(__dirname, '..', 'schemas', 'cortex-debug.json'); + console.log(`Generating JSON-schema for 'cortex-debug' to ${schemaPath}`); + const schema = fixSchema({ + title: cortexDebugTitle, + $schema: 'http://json-schema.org/draft-06/schema#', + ...properties, + }); + await writeSchema(schema, schemaPath); + return schema; +} + +/** + * @param {string} file path to file to format + */ +async function format(file) { + const { execa } = await import('execa'); + await execa('npx', ['prettier', '--write', file], { + cwd: path.join(__dirname, '..'), + }); +} + +/** + * @param {JSONSchema4} schema the schema to serialize + * @param {string} schemaPath path to the JSON schema file to write + */ +async function writeSchema(schema, schemaPath) { + await fs.mkdir(path.dirname(schemaPath), { recursive: true }); + await fs.writeFile(schemaPath, JSON.stringify(schema)); + await format(schemaPath); +} + +/** + * @param {string} version + * @param {JSONSchema4} schema + */ +async function generateTS(version, schema) { + const typingsPath = path.join(__dirname, '..', 'src', 'typings'); + const tsOutPath = path.join(typingsPath, 'cortexDebug.ts'); + console.log(`Generating typings to ${tsOutPath}`); + await fs.mkdir(typingsPath, { recursive: true }); + const prettierConfig = require(path.join( + __dirname, + '..', + '.prettierrc.json' + )); + const ts = await compile(schema, cortexDebugTitle, { + format: true, + style: prettierConfig, + bannerComment: `/* eslint-disable */ + /** + * Launch Configuration Attributes for \`cortex-debug@${version}\`. See the list of all available attributes [here](https://github.com/Marus/cortex-debug/blob/v${version}/debug_attributes.md). + * + * This file was automatically generated. **DO NOT MODIFY IT BY HAND**. + */ + `, + }); + await fs.mkdir(path.dirname(tsOutPath), { recursive: true }); + await fs.writeFile(tsOutPath, ts); +} + +/** + * @param {string} sourcePath the location where the VSIX has been decompressed + * @param {string} [type='cortex-debug'] the [type](https://code.visualstudio.com/api/references/contribution-points#contributes.debuggers) of the debugger. Defaults to `'cortex-debug'`. + */ +function getLaunchAttributes(sourcePath, type = 'cortex-debug') { + console.log('Extracting the launch configuration attributes'); + const packageJsonPath = path.join(sourcePath, 'extension', 'package.json'); + const packageJson = require(packageJsonPath); + const cortexDebug = packageJson.contributes.debuggers.find( + (/** @type {{ type: string; }} */ contribution) => + contribution.type === type + ); + const properties = cortexDebug.configurationAttributes.launch; + return properties; +} + +/** + * @param {string} version + * @param {string} targetDir + * @returns {Promise} + */ +async function downloadVSIX(version, targetDir) { + const url = `https://downloads.arduino.cc/marus25.cortex-debug/marus25.cortex-debug-${version}.vsix`; + const data = await download(url); + await decompress(data, targetDir); +} + +/** + * Maps `"items": "TYPE"` to `"items": { "type": "TYPE" }`. + * JSON-schema spec [mandates object type](https://json-schema.org/understanding-json-schema/reference/array#items) for array `items`, + * while VS Code is more relaxed and allows string type. + * @param {RelaxedJSONSchema4} schema + * @returns {JSONSchema4} + */ +function fixSchema(schema) { + /** @type {JSONSchema4} */ + const copy = JSON.parse(JSON.stringify(schema)); + /** + * + * @param {JSONSchema4|RelaxedJSONSchema4|undefined} s + */ + const fixArrayItems = (s) => { + if (s && s.properties) { + Object.entries(s.properties).forEach(([, value]) => { + if (value.items === 'string' && value.type === 'array') { + value.items = { type: value.items }; + } + fixArrayItems(value.properties); + }); + } + }; + fixArrayItems(copy); + return copy; +} + +/** + * @param {string} version the semver of the cortex-debug extension to generate from. + */ +async function run(version) { + // Set up working directory + const tracked = temp.track(); + const tempDir = await tracked.mkdir(); + try { + await generate(version, tempDir); + } finally { + tracked.cleanupSync(); + } +} + +run(version); diff --git a/scripts/utils.js b/scripts/utils.js new file mode 100644 index 0000000..83be3b8 --- /dev/null +++ b/scripts/utils.js @@ -0,0 +1,43 @@ +// @ts-check + +const fs = require('node:fs/promises'); +const path = require('node:path'); + +/** + * @param {ArrayBuffer} data + * @param {string} targetPath + * @returns {Promise} + */ +async function decompress(data, targetPath) { + console.log(`Decompressing to ${targetPath}`); + await fs.mkdir(path.dirname(targetPath), { recursive: true }); + const [decompress, targz, unzip] = await Promise.all([ + import('decompress').then((module) => module.default), + import('decompress-targz').then((module) => module.default), + import('decompress-unzip').then((module) => module.default), + ]); + await decompress(Buffer.from(data), targetPath, { + plugins: [targz(), unzip()], + }); +} + +/** + * @param {string} url + * @returns {Promise} + */ +async function download(url) { + console.log(`Downloading from ${url}`); + const resp = await fetch(url); + if (!resp.ok) { + throw new Error( + `Unexpected error occurred when downloading from ${url}: ${resp.statusText}` + ); + } + const data = await resp.arrayBuffer(); + return data; +} + +module.exports = { + download, + decompress, +}; diff --git a/src/debug.ts b/src/debug.ts new file mode 100644 index 0000000..bb68478 --- /dev/null +++ b/src/debug.ts @@ -0,0 +1,541 @@ +import { + type DebugGCCToolchainConfiguration, + type DebugOpenOCDServerConfiguration, + type GetDebugConfigResponse as GrpcGetDebugConfigResponse, +} from 'ardunno-cli'; +import { FQBN } from 'fqbn'; +import getValue from 'get-value'; +import fs from 'node:fs/promises'; +import { homedir } from 'node:os'; +import path from 'node:path'; +import setValue from 'set-value'; +import unsetValue from 'unset-value'; +import vscode from 'vscode'; +import { isENOENT } from './errno'; +import { ExecOptions, exec } from './exec'; +import type { BoardIdentifier } from './typings'; +import type { CortexDebugLaunchAttributes } from './typings/cortexDebug'; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export function activateDebug(_: vscode.ExtensionContext): vscode.Disposable { + const toDispose = [ + vscode.commands.registerCommand( + 'arduino.debug.start', + async (params: StartDebugParams) => { + try { + const launchConfig = await createLaunchConfig(params); + return startDebug(params.launchConfigsDirPath, launchConfig); + } catch (err) { + if (err instanceof vscode.CancellationError) { + return; + } + throw err; + } + } + ), + vscode.commands.registerCommand( + 'arduino.debug.createLaunchConfig', + (params: StartDebugParams) => createLaunchConfig(params) + ), + ]; + return vscode.Disposable.from(...toDispose); +} + +export interface StartDebugParams { + /** + * Absolute filesystem path to the Arduino CLI executable. + */ + readonly cliPath: string; + /** + * The the board to debug. + */ + readonly board: BoardIdentifier; + /** + * Absolute filesystem path of the sketch to debug. + */ + readonly sketchPath: string; + /** + * Absolute filesystem path of the directory where the `launch.json` will be updated before starting every debug session. + * If the launch config file is absent, it will be created. + * If not defined, it falls back to `sketchPath/.vscode/launch.json` and uses VS Code APIs to alter the config. + */ + readonly launchConfigsDirPath?: string; + /** + * Absolute path to the `arduino-cli.yaml` file. If not specified, it falls back to `~/.arduinoIDE/arduino-cli.yaml`. + */ + readonly cliConfigPath?: string; + /** + * Programmer for the debugging. + */ + readonly programmer?: string; + /** + * Custom progress title to use when getting the debug information from the CLI. + */ + readonly title?: string; +} +export type StartDebugResult = boolean; + +type CliGetDebugConfigResponse = Omit< + GrpcGetDebugConfigResponse, + 'customConfigs' +> & { + customConfigs: { + [key: string]: CustomConfigValue; + }; +}; + +type DebugServerConfiguration = + | DebugOpenOCDServerConfiguration + | Record; +type DebugToolchainConfiguration = + | DebugGCCToolchainConfiguration + | Record; + +/** + * (non-API) + */ +export type DebugInfo = Partial< + Omit< + CliGetDebugConfigResponse, + 'toolchainConfiguration' | 'serverConfiguration' + > & { + serverConfiguration: DebugServerConfiguration | undefined; + toolchainConfiguration: DebugToolchainConfiguration | undefined; + } +>; +type ConfigIdentifier = { configId: string }; +type Executable = Pick; +// List of supported attributes: https://github.com/Marus/cortex-debug/blob/v1.5.1/debug_attributes.md +export type CustomDebugConfig = Omit< + RemoveIndex, + keyof Executable +> & + Partial & + ConfigIdentifier; +export type CustomDebugConfigs = CustomDebugConfig[]; +export type ArduinoDebugLaunchConfig = CortexDebugLaunchAttributes & + RemoveIndex & + ConfigIdentifier; + +function isCustomDebugConfig(arg: unknown): arg is CustomDebugConfig { + return ( + typeof arg === 'object' && + arg !== null && + (arg).configId !== undefined && + typeof (arg).configId === 'string' + ); +} + +const cortexDebug = 'cortex-debug'; + +async function startDebug( + launchConfigsDirPath: string | undefined, + launchConfig: ArduinoDebugLaunchConfig +): Promise { + await updateLaunchConfigs(launchConfigsDirPath, launchConfig); + return vscode.debug.startDebugging(undefined, launchConfig); +} + +const getDebugInfoMessage = 'Getting debug info...'; + +async function createLaunchConfig( + params: StartDebugParams +): Promise { + const { programmer, board } = params; + if (!programmer) { + throw new Error('Missing programmer'); + } + const { file, args } = buildDebugInfoArgs(params); + const [stdout, customConfigs] = await Promise.all([ + withProgress( + () => cliExec(file, args), + params.title ?? getDebugInfoMessage + ), + loadDebugCustomJson(params), + ]); + const debugInfo = await parseRawDebugInfo(stdout); + if (!debugInfo) { + throw new Error( + `Could not parse config. Params: ${JSON.stringify(params)}` + ); + } + const launchConfig = await mergeLaunchConfig( + board, + programmer, + debugInfo, + customConfigs + ); + return launchConfig; +} + +async function withProgress( + task: () => Promise | T, + title: string +): Promise { + return vscode.window.withProgress( + { location: vscode.ProgressLocation.Window, title }, + async (_, token) => { + if (token.isCancellationRequested) { + throw new vscode.CancellationError(); + } + const result = await task(); + return result as T; + } + ); +} + +async function parseRawDebugInfo( + raw: string | object +): Promise<(DebugInfo & Executable) | undefined> { + const cliDebugConfig = typeof raw === 'object' ? raw : parseJson(raw); + if (!cliDebugConfig) { + return undefined; + } + const module = await import('camelcase-keys'); + const config = module.default(cliDebugConfig, { + deep: true, + stopPaths: ['custom_configs'], + }); + if (!hasExecutable(config)) { + throw new Error( + `'executable' is missing from the debugger configuration. Configuration: ${JSON.stringify( + config + )}` + ); + } + return config; +} + +function createConfigId(board: BoardIdentifier, programmer: string): string { + const fqbn = new FQBN(board.fqbn); + if (hasConfigOptions(fqbn)) { + // if already has config options, append the programmer as an ordinary custom board config option + return `${fqbn.toString()},programmer=${programmer}`; + } else { + // create the new config options entry with the programmer as a single entry + return `${fqbn.toString()}:programmer=${programmer}`; + } +} + +function hasConfigOptions(fqbn: FQBN): fqbn is Required { + return !!fqbn.options && !!Object.keys(fqbn.boardId).length; +} + +async function loadDebugCustomJson( + params: Pick +): Promise { + try { + const raw = await fs.readFile( + path.join(params.sketchPath, 'debug_custom.json'), + { encoding: 'utf8' } + ); + return parseCustomDebugConfigs(raw); + } catch (err) { + if (isENOENT(err)) { + return []; + } + throw err; + } +} + +function parseCustomDebugConfigs(raw: string): CustomDebugConfigs { + const configurations: CustomDebugConfig[] = []; + const object = parseJson(raw); + if (Array.isArray(object)) { + configurations.push(...object.filter(isCustomDebugConfig)); + } + return configurations; +} + +function hasExecutable(config: DebugInfo): config is DebugInfo & Executable { + return Boolean(config.executable); +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function parseJson(raw: string): any | undefined { + try { + return JSON.parse(raw); + } catch { + return undefined; + } +} + +function buildDebugInfoArgs( + params: Omit +): Readonly<{ + file: string; + args: readonly string[]; +}> { + const { cliPath, board, programmer, sketchPath, cliConfigPath } = params; + return { + file: cliPath, + args: [ + 'debug', + '--info', + '--fqbn', + board.fqbn, + ...(programmer ? ['--programmer', programmer] : []), + sketchPath, + ...(cliConfigPath ? ['--config-file', cliConfigPath] : []), + '--format', + 'json', + ], + }; +} + +function resolveCliConfigPath( + config: Pick +): string { + return ( + config.cliConfigPath ?? + path.join(homedir(), '.arduinoIDE', 'arduino-cli.yaml') // IDE2 location + ); +} + +async function mergeLaunchConfig( + board: BoardIdentifier, + programmer: string, + debugInfo: DebugInfo & Executable, + customConfigs: CustomDebugConfigs +): Promise { + const configId = createConfigId(board, programmer); + const customConfig = customConfigs.find( + (config) => config.configId === configId + ); + const name = createName(board, programmer); + const launchConfig = { + configId, + cwd: '${workspaceRoot}', + request: 'launch', + type: cortexDebug, + ...debugInfo, + ...(debugInfo.customConfigs + ? debugInfo.customConfigs[cortexDebug] ?? {} + : {}), + ...(customConfig ? customConfig : {}), + name, + }; + replaceValue('serverPath', 'serverpath', launchConfig); + replaceValue('server', 'servertype', launchConfig); + replaceValue('toolchainPath', 'armToolchainPath', launchConfig); + replaceValue('serverConfiguration.scripts', 'configFiles', launchConfig); + unsetValue(launchConfig, 'customConfigs'); + unsetValue(launchConfig, 'serverConfiguration'); + unsetValue(launchConfig, 'programmer'); // The programmer is not used by the debugger https://github.com/arduino/arduino-cli/pull/2391 + unsetValue(launchConfig, 'toolchain'); // The toolchain is also unused by IDE2 or the cortex-debug VSIX + return launchConfig; +} + +function createName(board: BoardIdentifier, programmer: string): string { + if (!board.name) { + const configId = createConfigId(board, programmer); + return `Arduino (${configId})`; + } + const fqbn = new FQBN(board.fqbn); + if (hasConfigOptions(fqbn)) { + const options = Object.entries(fqbn.options) + .map(([key, value]) => `${key}=${value}`) + .join(','); + return `${board.name} (${options},${programmer})`; + } + return `${board.name} (${programmer})`; +} + +function replaceValue( + from: string, + to: string, + target: ArduinoDebugLaunchConfig +): ArduinoDebugLaunchConfig { + const object: Record = target; + const value = getValue(object, from); + if (value) { + setValue(object, to, value); + unsetValue(object, from); + } + return target; +} + +// Iteration plan: +// 1. (done) update json configs object with a single config entry and write the file with fs (IDE 2.2.1 behavior) +// 2. (done) update json configs object by merging in the current config entry, and write file with fs +// 3. same as (2) but use jsonc to nicely update the JSON file +// 4. use the getConfiguration('launch') API to update the config. It must be verified whether it works in Theia +async function updateLaunchConfigs( + launchConfigsDirPath: string | undefined, + launchConfig: ArduinoDebugLaunchConfig +): Promise { + const launchConfigs = await (launchConfigsDirPath + ? loadLaunchConfigsFile(launchConfigsDirPath) + : vscode.workspace.getConfiguration().get('launch') ?? + createEmptyLaunchConfigs()); + + const index = launchConfigs.configurations.findIndex( + (c) => c['configId'] === launchConfig.configId + ); + if (index < 0) { + launchConfigs.configurations.push(launchConfig); + } else { + launchConfigs.configurations.splice(index, 1, launchConfig); + } + + if (launchConfigsDirPath) { + await fs.mkdir(launchConfigsDirPath, { recursive: true }); + await fs.writeFile( + path.join(launchConfigsDirPath, 'launch.json'), + JSON.stringify(launchConfigs, null, 2) + ); + } else { + const configuration = vscode.workspace.getConfiguration(); + await configuration.update('launch', launchConfigs, false); + } +} +type LaunchConfigs = { + version: '0.2.0'; + configurations: vscode.DebugConfiguration[]; +}; +function createEmptyLaunchConfigs(): LaunchConfigs { + return { + version: '0.2.0', + configurations: [], + }; +} +function isLaunchConfigs(arg: unknown): arg is LaunchConfigs { + return ( + typeof arg === 'object' && + arg !== null && + (arg).version === '0.2.0' && + Array.isArray((arg).configurations) + ); +} + +async function loadLaunchConfigsFile( + launchConfigsDirPath: string +): Promise { + try { + const raw = await fs.readFile( + path.join(launchConfigsDirPath, 'launch.json'), + { encoding: 'utf8' } + ); + const maybeConfigs = parseJson(raw); + if (isLaunchConfigs(maybeConfigs)) { + return maybeConfigs; + } + return createEmptyLaunchConfigs(); + } catch (err) { + if (isENOENT(err)) { + return createEmptyLaunchConfigs(); + } + throw err; + } +} + +async function cliExec>( + cliPath: string, + args: readonly string[], + cliConfigPath?: string, + options?: ExecOptions +): Promise { + try { + const stdout = await exec( + cliPath, + [ + ...args, + ...(cliConfigPath ? ['--config-file', cliConfigPath] : []), + '--format', + 'json', + ], + options + ); + // `arduino-cli sketch new` does not provide valid JSON on the stdout + // TODO: open a GH issue if it's a bug + return stdout ? JSON.parse(stdout) : {}; + } catch (err) { + let cliError: Error | undefined = undefined; + if (isExecaError(err)) { + try { + const object = JSON.parse(err.stderr); + if (isCommandError(object)) { + cliError = new CliError(object.error, err.exitCode); + } + } catch {} + } + throw cliError ?? err; + } +} + +function isExecaError( + arg: unknown +): arg is Error & { stderr: string; exitCode: number | undefined } { + return ( + arg instanceof Error && + 'stderr' in arg && + typeof arg.stderr === 'string' && + 'exitCode' in arg && + (typeof arg.exitCode === 'number' || typeof arg.exitCode === 'undefined') + ); +} + +interface CommandError { + readonly error: string; +} +function isCommandError(arg: unknown): arg is CommandError { + return ( + typeof arg === 'object' && + arg !== null && + (arg).error !== undefined && + typeof (arg).error == 'string' + ); +} + +export class CliError extends Error { + constructor(message: string, readonly exitCode: number | undefined) { + super(message); + this.name = CliError.name; + } +} + +// https://github.com/arduino/arduino-cli/blob/b41f4044cac6ab7f7d853e368bc31e5d626d63d4/internal/cli/feedback/errorcodes.go#L57-L58 +const missingProgrammerCode = 11 as const; +function isMissingProgrammerError( + arg: unknown +): arg is CliError & { exitCode: typeof missingProgrammerCode } { + return arg instanceof CliError && arg.exitCode === missingProgrammerCode; +} + +// Remove index signature +// https://stackoverflow.com/a/51956054/5529090 +type RemoveIndex = { + [K in keyof T as string extends K + ? never + : number extends K + ? never + : symbol extends K + ? never + : K]: T[K]; +}; + +// Recursive type for custom debug configuration +type CustomConfigValue = { + [name: string]: string | number | boolean | CustomConfigValue; +}; + +/** + * (non-API) + */ +export const __tests__ = { + CliError, + createName, + createConfigId, + buildDebugInfoArgs, + parseRawDebugInfo, + resolveCliConfigPath, + loadDebugCustomJson, + parseCustomDebugConfigs, + isCustomDebugConfig, + createLaunchConfig, + mergeLaunchConfig, + updateLaunchConfigs, + isCommandError, + isMissingProgrammerError, + cliExec, +} as const; diff --git a/src/errno.ts b/src/errno.ts new file mode 100644 index 0000000..233582b --- /dev/null +++ b/src/errno.ts @@ -0,0 +1,3 @@ +export function isENOENT(arg: unknown): arg is Error & { code: 'ENOENT' } { + return arg instanceof Error && 'code' in arg && arg.code === 'ENOENT'; +} diff --git a/src/exec.ts b/src/exec.ts new file mode 100644 index 0000000..60c43b4 --- /dev/null +++ b/src/exec.ts @@ -0,0 +1,13 @@ +// @ts-expect-error type import from ES module +import type { Options } from 'execa'; +export type ExecOptions = Options; + +export async function exec( + file: string, + args: readonly string[], + options?: Options +): Promise { + const { execa } = await import('execa'); + const { stdout } = await execa(file, args, options); + return stdout; +} diff --git a/src/extension.ts b/src/extension.ts index 3d1a46b..52afbce 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,314 +1,7 @@ -import * as path from 'path'; -import { promises as fs } from 'fs'; -import { homedir } from 'os'; -import { spawn } from 'child_process'; -import deepEqual from 'deep-equal'; -import WebRequest from 'web-request'; -import deepmerge from 'deepmerge'; -import { Mutex } from 'async-mutex'; -import vscode, { ExtensionContext, OutputChannel } from 'vscode'; -import { LanguageClient, CloseAction, ErrorAction, InitializeError, Message, RevealOutputChannelOn, LanguageClientOptions } from 'vscode-languageclient'; -import { DidCompleteBuildNotification, DidCompleteBuildParams } from './protocol'; +import vscode from 'vscode'; +import { activateDebug } from './debug'; +import { activateIno } from './ino'; -interface LanguageServerConfig { - readonly lsPath: string; - readonly cliDaemonAddr: string; - readonly cliDaemonInstance: string; - readonly clangdPath: string; - readonly board: { - readonly fqbn: string; - readonly name?: string; - } - /** - * `true` if the LS should generate log files into the default location. The default location is `cwd` of the process. It's very often the same - * as the workspace root of the IDE, aka the sketch folder. - * When it is a string, it is the folder where the log files should be generated. If the path is invalid (does not exist, not a folder), - * the log files will be generated into the default location. - */ - readonly log?: boolean | string; - readonly env?: any; - readonly flags?: string[]; - readonly realTimeDiagnostics?: boolean; - readonly silentOutput?: boolean; -} - -interface DebugConfig { - readonly cliPath?: string; - readonly cliDaemonAddr?: string; - readonly board: { - readonly fqbn: string; - readonly name?: string; - } - readonly sketchPath: string; - /** - * Location where the `launch.config` will be created on the fly before starting every debug session. - * If not defined, it falls back to `sketchPath/.vscode/launch.json`. - */ - readonly configPath?: string; - /** - * Absolute path to the `arduino-cli.yaml` file. If not specified, it falls back to `~/.arduinoIDE/arduino-cli.yaml`. - */ - readonly cliConfigPath?: string; -} - -interface DebugInfo { - readonly executable: string; - readonly toolchain: string; - readonly toolchain_path: string; - readonly toolchain_prefix: string; - readonly server: string; - readonly server_path: string; - readonly server_configuration: { - readonly path: string; - readonly script: string; - readonly scripts_dir: string; - } -} - -let languageClient: LanguageClient | undefined; -let languageServerDisposable: vscode.Disposable | undefined; -let latestConfig: LanguageServerConfig | undefined; -let crashCount = 0; -const languageServerStartMutex = new Mutex(); -export let languageServerIsRunning = false; // TODO: use later for `start`, `stop`, and `restart` language server. - -export function activate(context: ExtensionContext) { - context.subscriptions.push( - vscode.commands.registerCommand('arduino.languageserver.start', async (config: LanguageServerConfig) => { - const unlock = await languageServerStartMutex.acquire(); - try { - const started = await startLanguageServer(context, config); - languageServerIsRunning = started; - return languageServerIsRunning ? config.board.fqbn : undefined; - } catch (err) { - console.error('Failed to start the language server.', err); - languageServerIsRunning = false; - throw err; - } finally { - unlock(); - } - }), - vscode.commands.registerCommand('arduino.languageserver.stop', async () => { - const unlock = await languageServerStartMutex.acquire(); - try { - await stopLanguageServer(context); - languageServerIsRunning = false; - } finally { - unlock(); - } - }), - vscode.commands.registerCommand('arduino.languageserver.restart', async () => { - if (latestConfig) { - return vscode.commands.executeCommand('arduino.languageserver.start', latestConfig); - } - }), - vscode.commands.registerCommand('arduino.debug.start', (config: DebugConfig) => startDebug(context, config)), - vscode.commands.registerCommand('arduino.languageserver.notifyBuildDidComplete', (params: DidCompleteBuildParams) => { - if (languageClient) { - languageClient.sendNotification(DidCompleteBuildNotification.TYPE, params); - } else { - vscode.window.showWarningMessage('Language server is not running.'); - } - }) - ); -} - -async function exec(command: string, args: string[]): Promise<{ stdout: string, stderr: string }> { - return new Promise<{ stdout: string, stderr: string }>((resolve, reject) => { - let out = ''; - let err = ''; - const cp = spawn(command, args); - cp.stdout.on('data', data => out += data.toString()); - cp.stderr.on('data', data => err += data.toString()); - cp.on('error', reject); - cp.on('close', (code, signal) => { - const stdout = out.trim(); - const stderr = err.trim(); - if (code) { - reject(new Error(stderr ?? `Exit code: ${code}`)); - } - if (signal) { - reject(new Error(stderr ?? `Exit signal: ${signal}`)); - } - if (err.trim()) { - reject(new Error(stderr)); - } - resolve({ stdout, stderr }); - }); - }); -} - -function resolveCliConfigPath(config: DebugConfig): string { - return config.cliConfigPath ?? path.join(homedir(), '.arduinoIDE', 'arduino-cli.yaml'); -} - -async function startDebug(_: ExtensionContext, config: DebugConfig): Promise { - const cliConfigPath = resolveCliConfigPath(config); - let info: DebugInfo | undefined = undefined; - try { - const args = ['debug', '-I', '-b', config.board.fqbn, config.sketchPath, '--format', 'json', '--config-file', cliConfigPath]; - const { stdout, stderr } = await exec(config?.cliPath || '.', args); - if (!stdout && stderr) { - throw new Error(stderr); - } - info = JSON.parse(stdout); - if (!info) { - return false; - } - } catch (err) { - throw err; - } - const defaultDebugConfig = { - cwd: '${workspaceRoot}', - name: 'Arduino', - request: 'launch', - type: 'cortex-debug', - executable: info.executable, - servertype: info.server, - serverpath: info.server_path, - armToolchainPath: info.toolchain_path, - configFiles: [ - info.server_configuration.script - ] - }; - - let customDebugConfig = {}; - try { - const raw = await fs.readFile(path.join(config.sketchPath, 'debug_custom.json'), { encoding: 'utf8' }); - customDebugConfig = JSON.parse(raw); - } catch { } - const mergedDebugConfig = deepmerge(defaultDebugConfig, customDebugConfig); - const launchConfig = { - version: '0.2.0', - 'configurations': [ - { - ...mergedDebugConfig - } - ] - }; - await updateLaunchConfig(config, launchConfig); - return vscode.debug.startDebugging(undefined, mergedDebugConfig); -} - -async function stopLanguageServer(context: ExtensionContext): Promise { - if (languageClient) { - if (languageClient.diagnostics) { - languageClient.diagnostics.clear(); - } - await languageClient.stop(); - if (languageServerDisposable) { - languageServerDisposable.dispose(); - } - } -} - -async function startLanguageServer(context: ExtensionContext, config: LanguageServerConfig): Promise { - await stopLanguageServer(context); - if (!languageClient || !deepEqual(latestConfig, config)) { - latestConfig = config; - languageClient = await buildLanguageClient(config); - crashCount = 0; - } - - languageServerDisposable = languageClient.start(); - context.subscriptions.push(languageServerDisposable); - await languageClient.onReady(); - return true; -} - -async function buildLanguageClient(config: LanguageServerConfig): Promise { - const { lsPath: command, clangdPath, cliDaemonAddr, cliDaemonInstance, board, flags, env, log } = config; - const args = ['-clangd', clangdPath, '-cli-daemon-addr', cliDaemonAddr, '-cli-daemon-instance', cliDaemonInstance, '-fqbn', board.fqbn, '-skip-libraries-discovery-on-rebuild']; - if (board.name) { - args.push('-board-name', board.name); - } - if (typeof config.realTimeDiagnostics === 'boolean' && !config.realTimeDiagnostics) { - args.push('-no-real-time-diagnostics'); - } - if (flags && flags.length) { - args.push(...flags); - } - if (!!log) { - args.push('-log'); - let logPath: string | undefined = undefined; - if (typeof log === 'string') { - try { - const stats = await fs.stat(log); - if (stats.isDirectory()) { - logPath = log; - } - } catch { } - } - if (logPath) { - args.push('-logpath', logPath); - } - } - const clientOptions = { - initializationOptions: {}, - documentSelector: ['ino', 'c', 'cpp', 'h', 'hpp', 'pde'], - uriConverters: { - code2Protocol: (uri: vscode.Uri): string => (uri.scheme ? uri : uri.with({ scheme: 'file' })).toString(), - protocol2Code: (uri: string) => vscode.Uri.parse(uri) - }, - revealOutputChannelOn: RevealOutputChannelOn.Never, - initializationFailedHandler: (error: WebRequest.ResponseError): boolean => { - vscode.window.showErrorMessage(`The language server is not able to serve any features. Initialization failed: ${error}.`); - return false; - }, - errorHandler: { - error: (error: Error, message: Message, count: number): ErrorAction => { - vscode.window.showErrorMessage(`Error communicating with the language server: ${error}: ${message}.`); - if (count < 5) { - return ErrorAction.Continue; - } - return ErrorAction.Shutdown; - }, - closed: (): CloseAction => { - crashCount++; - if (crashCount < 5) { - return CloseAction.Restart; - } - return CloseAction.DoNotRestart; - } - } - } as LanguageClientOptions; - if (!!config.silentOutput) { - clientOptions.outputChannel = noopOutputChannel('Arduino Language Server'); - } - const serverOptions = { - command, - args, - options: { env }, - }; - return new LanguageClient( - 'ino', - 'Arduino Language Server', - serverOptions, - clientOptions - ); -} - -/** - * Instead of writing the `launch.json` to the workspace, the file is written to the temporary binary output location. - */ -async function updateLaunchConfig(debugConfig: DebugConfig, launchConfig: object): Promise { - if (debugConfig.configPath) { - await fs.mkdir(debugConfig.configPath, { recursive: true }); - await fs.writeFile(path.join(debugConfig.configPath, 'launch.json'), JSON.stringify(launchConfig, null, 2)); - } else { - const configuration = vscode.workspace.getConfiguration(); - await configuration.update('launch', launchConfig, false); - } -} - -function noopOutputChannel(name: string): OutputChannel { - return { - append: () => {}, - appendLine: () => {}, - clear: () => {}, - dispose: () => {}, - hide: () => {}, - show: () => {}, - name - }; +export function activate(context: vscode.ExtensionContext): void { + context.subscriptions.push(activateIno(context), activateDebug(context)); } diff --git a/src/ino.ts b/src/ino.ts new file mode 100644 index 0000000..099d7f2 --- /dev/null +++ b/src/ino.ts @@ -0,0 +1,298 @@ +import { Mutex } from 'async-mutex'; +import deepEqual from 'deep-equal'; +import { promises as fs } from 'node:fs'; +import vscode from 'vscode'; +import { + CloseAction, + DocumentUri, + ErrorAction, + LanguageClient, + LanguageClientOptions, + Message, + NotificationType, + RevealOutputChannelOn, +} from 'vscode-languageclient'; +import type { BoardIdentifier, DaemonAddress } from './typings'; + +export interface StartLanguageServerParams { + /** + * Absolute filesystem path to the Arduino Language Server executable. + */ + readonly lsPath: string; + /** + * The hostname and the port for the gRPC channel connecting to the Arduino CLI daemon. + * The `instance` number is for the initialized core Arduino client. + */ + readonly daemonAddress: DaemonAddress; + /** + * Absolute filesystem path to [`clangd`](https://clangd.llvm.org/). + */ + readonly clangdPath: string; + /** + * The board is relevant to start a specific "flavor" of the language. + */ + readonly board: BoardIdentifier; + /** + * `true` if the LS should generate the log files into the default location. The default location is the `cwd` of the process. + * It's very often the same as the workspace root of the IDE, aka the sketch folder. + * When it is a string, it is the absolute filesystem path to the folder to generate the log files. + * If `string`, but the path is inaccessible, the log files will be generated into the default location. + */ + readonly log?: boolean | string; + /** + * Optional `env` for the language server process. + */ + readonly env?: NodeJS.ProcessEnv; + /** + * Additional flags for the Arduino Language server process. + */ + readonly flags?: readonly string[]; + /** + * Set to `true`, to enable `Diagnostics`. + */ + readonly realTimeDiagnostics?: boolean; + /** + * If `true`, the logging is not forwarded to the _Output_ view via the language client. + */ + readonly silentOutput?: boolean; +} + +/** + * The FQBN the language server runs with or `undefined` if it could not start. + */ +export type StartLanguageServerResult = string | undefined; + +export interface DidCompleteBuildParams { + readonly buildOutputUri: DocumentUri; +} +export namespace DidCompleteBuildNotification { + export const TYPE = new NotificationType( + 'ino/didCompleteBuild' + ); +} + +let languageClient: LanguageClient | undefined; +let languageServerDisposable: vscode.Disposable | undefined; +let latestParams: StartLanguageServerParams | undefined; +let crashCount = 0; +const languageServerStartMutex = new Mutex(); +// TODO: use later for `start`, `stop`, and `restart` language server. (https://code.visualstudio.com/api/references/when-clause-contexts) +let languageServerIsRunning = false; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export function activateIno(_: vscode.ExtensionContext): vscode.Disposable { + const toDispose = [ + vscode.commands.registerCommand( + 'arduino.languageserver.start', + async (config: StartLanguageServerParams) => { + const unlock = await languageServerStartMutex.acquire(); + try { + const started = await startLanguageServer(config); + languageServerIsRunning = started; + return languageServerIsRunning ? config.board.fqbn : undefined; + } catch (err) { + console.error('Failed to start the language server.', err); + languageServerIsRunning = false; + throw err; + } finally { + unlock(); + } + } + ), + vscode.commands.registerCommand('arduino.languageserver.stop', async () => { + const unlock = await languageServerStartMutex.acquire(); + try { + await stopLanguageServer(); + languageServerIsRunning = false; + } finally { + unlock(); + } + }), + vscode.commands.registerCommand( + 'arduino.languageserver.restart', + async () => { + if (!latestParams) { + return undefined; + } + return vscode.commands.executeCommand( + 'arduino.languageserver.start', + latestParams + ); + } + ), + vscode.commands.registerCommand( + 'arduino.languageserver.notifyBuildDidComplete', + (params: DidCompleteBuildParams) => { + if (languageClient) { + languageClient.sendNotification( + DidCompleteBuildNotification.TYPE, + params + ); + } else { + vscode.window.showWarningMessage('Language server is not running.'); + } + } + ), + new vscode.Disposable(() => languageServerDisposable?.dispose()), + ]; + return vscode.Disposable.from(...toDispose); +} + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +async function stopLanguageServer(): Promise { + if (languageClient) { + if (languageClient.diagnostics) { + languageClient.diagnostics.clear(); + } + await languageClient.stop(); + if (languageServerDisposable) { + languageServerDisposable.dispose(); + } + } +} + +async function startLanguageServer( + config: StartLanguageServerParams +): Promise { + await stopLanguageServer(); + if (!languageClient || !deepEqual(latestParams, config)) { + latestParams = config; + languageClient = await buildLanguageClient(config); + crashCount = 0; + } + + languageServerDisposable = languageClient.start(); + await languageClient.onReady(); + return true; +} + +async function buildLanguageClient( + config: StartLanguageServerParams +): Promise { + const { + lsPath: command, + clangdPath, + daemonAddress, + board, + flags, + env, + log, + } = config; + const args = [ + '-clangd', + clangdPath, + '-cli-daemon-addr', + `${daemonAddress.hostname}:${daemonAddress.port}`, + '-cli-daemon-instance', + String(daemonAddress.instance), + '-fqbn', + board.fqbn, + '-skip-libraries-discovery-on-rebuild', // The default Arduino IDE behavior + ]; + if (board.name) { + args.push('-board-name', board.name); + } + if ( + typeof config.realTimeDiagnostics === 'boolean' && + !config.realTimeDiagnostics + ) { + args.push('-no-real-time-diagnostics'); + } + if (flags && flags.length) { + args.push(...flags); + } + if (log) { + args.push('-log'); + let logPath: string | undefined = undefined; + if (typeof log === 'string') { + try { + const stats = await fs.stat(log); + if (stats.isDirectory()) { + logPath = log; + } + } catch {} + } + if (logPath) { + args.push('-logpath', logPath); + } + } + const clientOptions: LanguageClientOptions = { + initializationOptions: {}, + documentSelector: ['ino', 'c', 'cpp', 'cc', 'cxx', 'h', 'hpp', 'pde'], + uriConverters: { + code2Protocol: (uri: vscode.Uri): string => + (uri.scheme ? uri : uri.with({ scheme: 'file' })).toString(), + protocol2Code: (uri: string) => vscode.Uri.parse(uri), + }, + revealOutputChannelOn: RevealOutputChannelOn.Never, + initializationFailedHandler: (error): boolean => { + vscode.window.showErrorMessage( + `The language server is not able to serve any features. Initialization failed: ${error}.` + ); + return false; + }, + errorHandler: { + error: (error: Error, message: Message, count: number): ErrorAction => { + vscode.window.showErrorMessage( + `Error communicating with the language server: ${error}: ${message}.` + ); + if (count < 5) { + return ErrorAction.Continue; + } + return ErrorAction.Shutdown; + }, + closed: (): CloseAction => { + crashCount++; + if (crashCount < 5) { + return CloseAction.Restart; + } + return CloseAction.DoNotRestart; + }, + }, + }; + if (!!config.silentOutput) { + clientOptions.outputChannel = noopOutputChannel('Arduino Language Server'); + } + const serverOptions = { + command, + args, + options: { env }, + }; + return new LanguageClient( + 'ino', + 'Arduino Language Server', + serverOptions, + clientOptions + ); +} + +const noopChannel: Omit = { + append: () => { + // NOOP + }, + appendLine: () => { + // NOOP + }, + clear: () => { + // NOOP + }, + dispose: () => { + // NOOP + }, + hide: () => { + // NOOP + }, + show: () => { + // NOOP + }, + replace: () => { + // NOOP + }, +}; + +function noopOutputChannel(name: string): vscode.OutputChannel { + return { + ...noopChannel, + name, + }; +} diff --git a/src/protocol.ts b/src/protocol.ts deleted file mode 100644 index ecba28a..0000000 --- a/src/protocol.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { NotificationType, DocumentUri } from 'vscode-languageclient'; - -export interface DidCompleteBuildParams { - readonly buildOutputUri: DocumentUri; -} -export namespace DidCompleteBuildNotification { - export const TYPE = new NotificationType('ino/didCompleteBuild'); -} diff --git a/src/test/runTest.ts b/src/test/runTest.ts new file mode 100644 index 0000000..4a5d642 --- /dev/null +++ b/src/test/runTest.ts @@ -0,0 +1,37 @@ +import { runTests } from '@vscode/test-electron'; +import path from 'node:path'; + +async function main() { + try { + // The folder containing the Extension Manifest package.json + // Passed to `--extensionDevelopmentPath` + const extensionDevelopmentPath = path.resolve(__dirname, '../../'); + // The path to test runner + // Passed to --extensionTestsPath + const extensionTestsPath = path.resolve(__dirname, './suite/index'); + const extensionTestsEnv = <{ [key: string]: string | undefined }>( + JSON.parse(JSON.stringify(process.env)) + ); + const args = process.argv.splice(2); + const all = args.includes('--all'); + if (all) { + extensionTestsEnv.TEST_CONTEXT = 'ALL'; + } else { + const slow = args.includes('--slow'); + if (slow) { + extensionTestsEnv.TEST_CONTEXT = 'SLOW'; + } + } + // Download VS Code, unzip it and run the integration test + await runTests({ + extensionDevelopmentPath, + extensionTestsPath, + extensionTestsEnv, + }); + } catch (err) { + console.error('Failed to run tests', err); + process.exit(1); + } +} + +main(); diff --git a/src/test/suite/debug.slow-test.ts b/src/test/suite/debug.slow-test.ts new file mode 100644 index 0000000..e13aa51 --- /dev/null +++ b/src/test/suite/debug.slow-test.ts @@ -0,0 +1,238 @@ +import assert from 'node:assert/strict'; +import os from 'node:os'; +import path from 'node:path'; +import type temp from 'temp'; +import { __tests__ } from '../../debug'; +import { exec } from '../../exec'; +import { TestEnv } from '../testEnv'; + +const { + CliError, + buildDebugInfoArgs, + createLaunchConfig, + isMissingProgrammerError, +} = __tests__; + +describe('debug (slow)', function () { + this.slow(2_000); + + let testEnv: TestEnv; + let tracked: typeof temp; + let sketchPath: string; + let buildPath: string; + + before(async function () { + if (os.platform() === 'win32') { + this.skip(); + } + this.timeout(60_000); + testEnv = this.currentTest?.ctx?.['testEnv']; + assert.ok(testEnv); + tracked = this.currentTest?.ctx?.['tracked']; + sketchPath = await newSketch(tracked); + await compile(sketchPath, 'arduino-git:samd:nano_33_iot'); // Make sure the manually installed core works correctly + const compileResult = await compile(sketchPath, 'arduino:esp32:nano_nora'); + buildPath = compileResult.builder_result.build_path; + }); + + describe('createLaunchConfig', () => { + it('should create with the required custom board options (USBMode=hwcdc)', async () => { + const configOptions = 'USBMode=hwcdc'; + const fqbn = `esp32:esp32:nano_nora:${configOptions}`; + const name = 'the board name'; + const programmer = 'esptool'; + const actual = await createLaunchConfig({ + board: { fqbn, name }, + cliPath: testEnv.cliPath, + cliConfigPath: testEnv.cliConfigPath, + sketchPath, + programmer, + }); + const expected = { + name: `${name} (${configOptions},${programmer})`, + configId: 'esp32:esp32:nano_nora:USBMode=hwcdc,programmer=esptool', + cwd: '${workspaceRoot}', + request: 'attach', + type: 'cortex-debug', + executable: fromBuildPath('my_sketch.ino.elf'), + toolchainPrefix: 'xtensa-esp32s3-elf', + svdFile: fromDataDir( + 'packages/esp32/hardware/esp32/3.0.0-arduino3/tools/ide-debug/svd/esp32s3.svd' + ), + objdumpPath: fromDataDir( + '/packages/esp32/tools/xtensa-esp32s3-elf-gcc/esp-12.2.0_20230208/bin/xtensa-esp32s3-elf-objdump' + ), + overrideAttachCommands: [ + 'set remote hardware-watchpoint-limit 2', + 'monitor reset halt', + 'monitor gdb_sync', + 'interrupt', + ], + overrideRestartCommands: [ + 'monitor reset halt', + 'monitor gdb_sync', + 'interrupt', + ], + serverpath: fromDataDir( + 'packages/esp32/tools/openocd-esp32/v0.12.0-esp32-20230921/bin/openocd' + ), + servertype: 'openocd', + armToolchainPath: fromDataDir( + 'packages/esp32/tools/xtensa-esp-elf-gdb/12.1_20221002/bin/' + ), + configFiles: ['board/esp32s3-builtin.cfg'], + }; + assert.deepStrictEqual(actual, expected); + }); + + it('should fail when the required custom board options are missing', async () => { + const fqbn = 'esp32:esp32:nano_nora'; + const programmer = 'esptool'; + await assert.rejects( + createLaunchConfig({ + board: { fqbn }, + cliPath: testEnv.cliPath, + cliConfigPath: testEnv.cliConfigPath, + sketchPath, + programmer, + }), + (reason) => + // Bad argument + // https://github.com/arduino/arduino-cli/blob/76ea8c1370bba856afc87232ae2755b218b23d22/internal/cli/feedback/errorcodes.go#L44 + reason instanceof CliError && reason.exitCode === 7 + ); + }); + + it('should remove the programmer', async () => { + const fqbn = 'arduino-git:samd:nano_33_iot'; // the core is available from directories.user/hardware + const programmer = 'atmel_ice'; + const actual = await createLaunchConfig({ + board: { fqbn }, + cliPath: testEnv.cliPath, + cliConfigPath: testEnv.cliConfigPath, + sketchPath, + programmer, + }); + const expected = { + name: `Arduino (${fqbn}:programmer=${programmer})`, + configId: `${fqbn}:programmer=${programmer}`, + cwd: '${workspaceRoot}', + request: 'launch', + type: 'cortex-debug', + executable: fromBuildPath('my_sketch.ino.elf'), + toolchainPrefix: 'arm-none-eabi', + svdFile: fromUserDir('hardware/arduino-git/samd/svd/at91samd21g18.svd'), + overrideRestartCommands: [ + 'monitor reset halt', + 'monitor gdb_sync', + 'thb setup', + 'c', + ], + postAttachCommands: [ + 'set remote hardware-watchpoint-limit 2', + 'monitor reset halt', + 'monitor gdb_sync', + 'thb setup', + 'c', + ], + serverpath: fromDataDir( + 'packages/arduino/tools/openocd/0.10.0-arduino7/bin/openocd' + ), + servertype: 'openocd', + armToolchainPath: fromDataDir( + 'packages/arduino/tools/arm-none-eabi-gcc/7-2017q4/bin/' + ), + configFiles: [ + 'interface/cmsis-dap.cfg', + fromUserDir( + 'hardware/arduino-git/samd/variants/nano_33_iot/openocd_scripts/openocd.cfg' + ), + ], + }; + assert.deepStrictEqual(actual, expected); + }); + }); + + it('should build the debug --info arguments', async () => { + const { file, args } = buildDebugInfoArgs({ + board: { fqbn: 'arduino:esp32:nano_nora' }, + cliPath: testEnv.cliPath, + sketchPath, + cliConfigPath: testEnv.cliConfigPath, + programmer: 'esptool', + }); + const raw = await exec(file, args); + assert.ok(raw); + const object = JSON.parse(raw); + assert.ok(typeof object === 'object'); + }); + + ['en', 'it'].map((locale) => + it(`should fail when the programmer is missing (locale: ${locale})`, async function () { + if (!testEnv.cliConfigPaths[locale]) { + this.skip(); + } + await assert.rejects( + cliExec( + ['debug', '-I', '-b', 'arduino:esp32:nano_nora', sketchPath], + locale + ), + (reason) => isMissingProgrammerError(reason) + ); + }) + ); + + it('should fail when the programmer is unknown', async () => { + await assert.rejects( + cliExec([ + 'debug', + '-I', + '-b', + 'arduino:esp32:nano_nora', + '-P', + 'unknown', + sketchPath, + ]), + (reason) => + reason instanceof CliError && + /Programmer 'unknown' not found/i.test(reason.message) + ); + }); + + async function compile( + sketchPath: string, + fqbn: string + ): Promise<{ builder_result: { build_path: string } }> { + return cliExec(['compile', '-b', fqbn, sketchPath]); + } + + async function newSketch( + tracked: typeof temp, + sketchName = 'my_sketch' + ): Promise { + const tempDir = await tracked.mkdir(); + const sketchPath = path.join(tempDir, sketchName); + await cliExec(['sketch', 'new', sketchPath]); + return sketchPath; + } + + async function cliExec(args: string[], locale = 'en'): Promise { + return __tests__.cliExec( + testEnv.cliPath, + args, + testEnv.cliConfigPaths[locale] + ); + } + + function fromDataDir(...paths: string[]): string { + return path.join(testEnv.dataDirPath, ...paths); + } + + function fromUserDir(...paths: string[]): string { + return path.join(testEnv.userDirPath, ...paths); + } + + function fromBuildPath(...paths: string[]): string { + return path.join(buildPath, ...paths); + } +}); diff --git a/src/test/suite/debug.test.ts b/src/test/suite/debug.test.ts new file mode 100644 index 0000000..a3f4ec4 --- /dev/null +++ b/src/test/suite/debug.test.ts @@ -0,0 +1,630 @@ +import assert from 'node:assert/strict'; +import fs from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; +import temp from 'temp'; +import { ArduinoDebugLaunchConfig, DebugInfo, __tests__ } from '../../debug'; +import { BoardIdentifier } from '../../typings'; + +const { + createConfigId, + createName, + buildDebugInfoArgs, + parseRawDebugInfo, + resolveCliConfigPath, + isCustomDebugConfig, + mergeLaunchConfig, + updateLaunchConfigs, + isCommandError, + loadDebugCustomJson, + parseCustomDebugConfigs, +} = __tests__; + +describe('debug', () => { + describe('buildDebugInfoArgs', () => { + type TestMe = typeof buildDebugInfoArgs; + type Params = Parameters[0]; + type Result = ReturnType; + + it('should build args when programmer is set but no CLI config', () => { + const expected: Result = { + file: '/path/to/cli', + args: [ + 'debug', + '--info', + '--fqbn', + 'a:b:c', + '--programmer', + 'prog1', + '/path/to/sketch', + '--format', + 'json', + ], + }; + const params: Params = { + board: { + fqbn: 'a:b:c', + }, + cliPath: '/path/to/cli', + programmer: 'prog1', + sketchPath: '/path/to/sketch', + }; + const actual = buildDebugInfoArgs(params); + assert.deepStrictEqual(actual, expected); + }); + + it('should build args when programmer is unset and no CLI config', () => { + const expected: Result = { + file: '/path/to/cli', + args: [ + 'debug', + '--info', + '--fqbn', + 'a:b:c', + '/path/to/sketch', + '--format', + 'json', + ], + }; + const params: Params = { + board: { + fqbn: 'a:b:c', + }, + cliPath: '/path/to/cli', + sketchPath: '/path/to/sketch', + }; + const actual = buildDebugInfoArgs(params); + assert.deepStrictEqual(actual, expected); + }); + + it('should build args with programmer and CLI config path', () => { + const expected: Result = { + file: 'C:\\path\\to\\cli.exe', + args: [ + 'debug', + '--info', + '--fqbn', + 'a:b:c', + '--programmer', + 'prog1', + '/path/to/sketch', + '--config-file', + '/path/to/arduino-cli.yaml', + '--format', + 'json', + ], + }; + const params: Params = { + board: { + fqbn: 'a:b:c', + }, + cliPath: 'C:\\path\\to\\cli.exe', + sketchPath: '/path/to/sketch', + programmer: 'prog1', + cliConfigPath: '/path/to/arduino-cli.yaml', + }; + const actual = buildDebugInfoArgs(params); + assert.deepStrictEqual(actual, expected); + }); + }); + + describe('mergeLaunchConfig', () => { + const fqbn = 'a:b:c'; + const programmer = 'p1'; + const configId = `${fqbn}:programmer=${programmer}`; + const board: BoardIdentifier = { fqbn, name: 'ABC' }; + const executable = 'path/to/bin'; + const defaultDebugConfigFragment = { + configId, + cwd: '${workspaceRoot}', + executable, + name: 'ABC (p1)', + request: 'launch', + type: 'cortex-debug', + } as const; + + it('should merge launch config', async () => { + const actual = await mergeLaunchConfig( + board, + programmer, + { executable }, + [] + ); + assert.deepStrictEqual(actual, { + configId, + cwd: '${workspaceRoot}', + executable, + name: 'ABC (p1)', + request: 'launch', + type: 'cortex-debug', + }); + }); + + it('should merge with a custom config', async () => { + const actual = await mergeLaunchConfig( + board, + programmer, + { executable }, + [{ configId, cwd: 'alma' }] + ); + assert.deepStrictEqual(actual, { + configId, + cwd: 'alma', + executable, + name: 'ABC (p1)', + request: 'launch', + type: 'cortex-debug', + }); + }); + + it('should use the ID as the debug config name when the board name is absent', async () => { + const actual = await mergeLaunchConfig( + { + fqbn, + }, + programmer, + { executable }, + [{ configId }] + ); + assert.deepStrictEqual(actual, { + configId, + cwd: '${workspaceRoot}', + executable, + name: `Arduino (${configId})`, + request: 'launch', + type: 'cortex-debug', + }); + }); + + type Config = Parameters[2]; + interface TestInput { + key: T; + value: Config[T]; + } + type TestExpectation = ArduinoDebugLaunchConfig; + interface TestParams extends TestInput { + expected: TestExpectation; + } + function createTestInput( + key: T, + value: Config[T] + ): TestInput { + return { key, value }; + } + + const testParams: TestParams[] = [ + { + ...createTestInput('serverPath', '/path/to/server'), + expected: { + ...defaultDebugConfigFragment, + serverpath: '/path/to/server', + }, + }, + { + ...createTestInput('server', 'jlink'), + expected: { + ...defaultDebugConfigFragment, + servertype: 'jlink', + }, + }, + { + ...createTestInput('toolchainPath', '/path/to/toolchain'), + expected: { + ...defaultDebugConfigFragment, + armToolchainPath: '/path/to/toolchain', + }, + }, + { + ...createTestInput('serverConfiguration', { + scripts: ['path/to/my/script', 'path/to/another/script'], + }), + expected: { + ...defaultDebugConfigFragment, + configFiles: ['path/to/my/script', 'path/to/another/script'], + }, + }, + ]; + + testParams.map(({ key, value, expected }) => + it(`should remap the CLI's '${key}' property name to 'cortex-debug'`, async () => { + const actual = await mergeLaunchConfig( + board, + programmer, + { executable }, + [{ configId, [key]: value }] + ); + assert.deepStrictEqual(actual, expected); + }) + ); + }); + + describe('parseRawDebugInfo', () => { + it('should not parse invalid JSON input', async () => { + const actual = await parseRawDebugInfo('alma'); + assert.strictEqual(actual, undefined); + }); + + it('should reject when executable is missing', async () => { + await assert.rejects( + parseRawDebugInfo(JSON.stringify({ alma: 'korte' })), + /'executable' is missing from the debugger configuration/ + ); + }); + + it('should parse any valid raw JSON object string', async () => { + const actual = await parseRawDebugInfo( + JSON.stringify({ alma: 'korte', executable: 'e' }) + ); + assert.deepStrictEqual(actual, { alma: 'korte', executable: 'e' }); + }); + + it('should parse any valid JSON object', async () => { + const actual = await parseRawDebugInfo({ + alma: 'korte', + executable: 'e', + }); + assert.deepStrictEqual(actual, { alma: 'korte', executable: 'e' }); + }); + + it('should handle nested snake case props', async () => { + const actual = await parseRawDebugInfo( + JSON.stringify({ alma_korte: { korte_alma: 'foo' }, executable: 'e' }) + ); + assert.deepStrictEqual(actual, { + almaKorte: { korteAlma: 'foo' }, + executable: 'e', + }); + }); + + it("should not map children of 'custom_configs'", async () => { + const actual = await parseRawDebugInfo( + JSON.stringify({ + alma_korte: { korte_alma: 'foo' }, + custom_configs: { foo_bar: 'baz' }, + executable: 'e', + }) + ); + assert.deepStrictEqual(actual, { + almaKorte: { korteAlma: 'foo' }, + customConfigs: { foo_bar: 'baz' }, + executable: 'e', + }); + }); + + it('should parse a valid JSON object', async () => { + const raw = ` + { + "executable": "/private/var/folders/z1/xkw1yh5n7rz4n8djprp1mdn80000gn/T/arduino/sketches/A051B7F4F3A6DA790A80412CD0106F8D/minimal.ino.elf", + "toolchain": "gcc", + "toolchain_path": "/path/to/directories.data/packages/esp32/tools/xtensa-esp-elf-gdb/11.2_20220823/bin/", + "toolchain_prefix": "xtensa-esp32s3-elf-", + "server": "openocd", + "server_path": "/path/to/directories.data/packages/esp32/tools/openocd-esp32/v0.11.0-esp32-20221026/bin/openocd", + "server_configuration": { + "path": "/path/to/directories.data/packages/esp32/tools/openocd-esp32/v0.11.0-esp32-20221026/bin/openocd", + "scripts_dir": "/path/to/directories.data/packages/esp32/tools/openocd-esp32/v0.11.0-esp32-20221026/share/openocd/scripts/", + "scripts": [ + "debug.cfg" + ] + }, + "custom_configs": { + "cortex-debug": { + "breakAfterReset": "0" + } + }, + "programmer": "esptool" + } + `.trim(); + const expected: DebugInfo = { + executable: + '/private/var/folders/z1/xkw1yh5n7rz4n8djprp1mdn80000gn/T/arduino/sketches/A051B7F4F3A6DA790A80412CD0106F8D/minimal.ino.elf', + toolchain: 'gcc', + toolchainPath: + '/path/to/directories.data/packages/esp32/tools/xtensa-esp-elf-gdb/11.2_20220823/bin/', + toolchainPrefix: 'xtensa-esp32s3-elf-', + server: 'openocd', + serverPath: + '/path/to/directories.data/packages/esp32/tools/openocd-esp32/v0.11.0-esp32-20221026/bin/openocd', + serverConfiguration: { + path: '/path/to/directories.data/packages/esp32/tools/openocd-esp32/v0.11.0-esp32-20221026/bin/openocd', + scriptsDir: + '/path/to/directories.data/packages/esp32/tools/openocd-esp32/v0.11.0-esp32-20221026/share/openocd/scripts/', + scripts: ['debug.cfg'], + }, + customConfigs: { + 'cortex-debug': { + breakAfterReset: '0', + }, + }, + programmer: 'esptool', + }; + const actual = await parseRawDebugInfo(raw); + assert.ok(actual); + assert.deepStrictEqual(actual, expected); + }); + }); + + describe('resolveCliConfigPath', () => { + it('should use the CLI config file path from params if present', () => { + const actual = resolveCliConfigPath({ cliConfigPath: '/path/to/config' }); + assert.strictEqual(actual, '/path/to/config'); + }); + it('should fallback to IDE2 default location if absent from params', () => { + const actual = resolveCliConfigPath({}); + assert.strictEqual( + actual, + path.join(os.homedir(), '.arduinoIDE', 'arduino-cli.yaml') + ); + }); + }); + + describe('createConfigId', () => { + it('should create the configuration ID when the FQBN has no custom board options', () => { + const actual = createConfigId({ fqbn: 'a:b:c' }, 'p'); + assert.strictEqual(actual, 'a:b:c:programmer=p'); + }); + it('should create the configuration ID when the FQBN has custom board options', () => { + const actual = createConfigId({ fqbn: 'a:b:c:o1=v1' }, 'p'); + assert.strictEqual(actual, 'a:b:c:o1=v1,programmer=p'); + }); + }); + describe('createName', () => { + it('should use the generated config ID if the board name is absent', () => { + const board = { fqbn: 'a:b:c' }; + const programmer = 'p1'; + const actual = createName(board, programmer); + assert.strictEqual(actual, 'Arduino (a:b:c:programmer=p1)'); + }); + + it('should use the generated config ID with the custom board options if the board name is absent', () => { + const board = { fqbn: 'a:b:c:UsbMode=default' }; + const programmer = 'p1'; + const actual = createName(board, programmer); + assert.strictEqual( + actual, + 'Arduino (a:b:c:UsbMode=default,programmer=p1)' + ); + }); + + it('should use the board name', () => { + const board = { fqbn: 'a:b:c', name: 'board name' }; + const programmer = 'p1'; + const actual = createName(board, programmer); + assert.strictEqual(actual, 'board name (p1)'); + }); + + it('should use the board name and all custom board options', () => { + const board = { fqbn: 'a:b:c:UsbMode=default', name: 'board name' }; + const programmer = 'p1'; + const actual = createName(board, programmer); + assert.strictEqual(actual, 'board name (UsbMode=default,p1)'); + }); + }); + + describe('isCustomDebugConfig', () => { + it("should not parse as custom debug config if 'configId' is missing", () => { + assert.strictEqual(isCustomDebugConfig({}), false); + }); + it("should not parse if 'configId' is not string", () => { + assert.strictEqual(isCustomDebugConfig({ configId: 36 }), false); + }); + it('should parse custom config with empty string config ID', () => { + assert.strictEqual(isCustomDebugConfig({ configId: '' }), true); + }); + it('should parse custom config with invalid ID', () => { + assert.strictEqual(isCustomDebugConfig({ configId: 'invalid' }), true); + }); + it('should parse custom config', () => { + assert.strictEqual( + isCustomDebugConfig({ configId: 'a:b:c:programmer=p' }), + true + ); + }); + }); + + describe('isCommandError', () => { + it('should parse a valid command error', () => { + assert.strictEqual(isCommandError({ error: 'message' }), true); + }); + it('should not parse: invalid type', () => { + assert.strictEqual(isCommandError({ error: 36 }), false); + }); + it('should not parse: missing', () => { + assert.strictEqual(isCommandError({ Error: 'message' }), false); + }); + }); + + describe('parseCustomDebugConfigs', () => { + it('should parse valid custom configs', () => { + const actual = parseCustomDebugConfigs(`[ + { "configId": "a:b:c:programmer=p1", "executable": "/path/to/bin" }, + { "configId": "x:y:z:programmer=p2", "executable": "C:\\\\path\\\\to\\\\exec" } + ]`); + assert.deepStrictEqual(actual, [ + { configId: 'a:b:c:programmer=p1', executable: '/path/to/bin' }, + { + configId: 'x:y:z:programmer=p2', + executable: 'C:\\path\\to\\exec', + }, + ]); + }); + + it('should handle invalid JSON', () => { + const actual = parseCustomDebugConfigs('invalid'); + assert.deepStrictEqual(actual, []); + }); + + it("should skip if 'configId' is missing", () => { + const actual = parseCustomDebugConfigs(`[ + { "configID": "a:b:c:programmer=p1", "executable": "/path/to/bin" }, + { "configId": "x:y:z:programmer=p2", "executable": "C:\\\\path\\\\to\\\\exec" } + ]`); + assert.deepStrictEqual(actual, [ + { configId: 'x:y:z:programmer=p2', executable: 'C:\\path\\to\\exec' }, + ]); + }); + + it("should be valid without the 'executable' property", () => { + const actual = parseCustomDebugConfigs( + '[{ "configId": "a:b:c:programmer=p1" }]' + ); + assert.deepStrictEqual(actual, [{ configId: 'a:b:c:programmer=p1' }]); + }); + }); + + describe('loadDebugCustomJson', () => { + let tracked: typeof temp; + + before(function () { + tracked = this.currentTest?.ctx?.['tracked']; + assert.ok(tracked); + }); + + it("should load an empty array if the 'debug_custom.json' is missing", async () => { + const tempDirPath = await tracked.mkdir(); + const actual = await loadDebugCustomJson({ sketchPath: tempDirPath }); + assert.deepStrictEqual(actual, []); + }); + + it("should load an empty array if the 'debug_custom.json' is invalid", async () => { + const tempDirPath = await tracked.mkdir(); + await fs.writeFile( + path.join(tempDirPath, 'debug_custom.json'), + 'invalid', + { encoding: 'utf8' } + ); + const actual = await loadDebugCustomJson({ sketchPath: tempDirPath }); + assert.deepStrictEqual(actual, []); + }); + + it('should load the custom configuration', async () => { + const tempDirPath = await tracked.mkdir(); + await fs.writeFile( + path.join(tempDirPath, 'debug_custom.json'), + '[{ "configId": "a:b:c:programmer=p1" }]', + { encoding: 'utf8' } + ); + const actual = await loadDebugCustomJson({ sketchPath: tempDirPath }); + assert.deepStrictEqual(actual, [{ configId: 'a:b:c:programmer=p1' }]); + }); + + it('should skip loading invalid custom configs', async () => { + const tempDirPath = await tracked.mkdir(); + await fs.writeFile( + path.join(tempDirPath, 'debug_custom.json'), + `[{ "configID": "a:b:c:programmer=p1", "executable": "/path/to/bin" }, + { "configId": "x:y:z:programmer=p2", "executable": "C:\\\\path\\\\to\\\\exec" }]`, + { encoding: 'utf8' } + ); + const actual = await loadDebugCustomJson({ sketchPath: tempDirPath }); + assert.deepStrictEqual(actual, [ + { configId: 'x:y:z:programmer=p2', executable: 'C:\\path\\to\\exec' }, + ]); + }); + }); + + describe('updateLaunchConfigs', () => { + const configId = 'a:b:c:programmer=p1'; + const otherConfigId = 'x:y:z:programmer=p2'; + const launchConfig = { + configId, + executable: 'C:\\path\\to\\exe', + type: 'cortex-debug', + name: `Arduino (${configId}})`, + request: 'launch', + }; + const otherLaunchConfig = { + configId: otherConfigId, + executable: 'path/to/bin', + type: 'cortex-debug', + name: `Arduino (${otherConfigId}})`, + request: 'launch', + }; + + describe('IDE2', () => { + let tracked: typeof temp; + + before(function () { + tracked = this.currentTest?.ctx?.['tracked']; + assert.ok(tracked); + }); + + it('should create the launch config if missing', async () => { + const tempDir = await tracked.mkdir(); + await updateLaunchConfigs(tempDir, launchConfig); + const actual = JSON.parse( + await fs.readFile(path.join(tempDir, 'launch.json'), { + encoding: 'utf8', + }) + ); + assert.deepStrictEqual(actual, { + version: '0.2.0', + configurations: [launchConfig], + }); + }); + + it('should update the launch config if present', async () => { + const tempDir = await tracked.mkdir(); + const existing = { + version: '0.2.0', + configurations: [launchConfig], + }; + await fs.writeFile( + path.join(tempDir, 'launch.json'), + JSON.stringify(existing) + ); + const actualExisting = JSON.parse( + await fs.readFile(path.join(tempDir, 'launch.json'), { + encoding: 'utf8', + }) + ); + assert.deepStrictEqual(actualExisting, existing); + + const modifiedLaunchConfig = { + ...launchConfig, + executable: 'C:\\path\\to\\another\\exe', + }; + await updateLaunchConfigs(tempDir, modifiedLaunchConfig); + const actual = JSON.parse( + await fs.readFile(path.join(tempDir, 'launch.json'), { + encoding: 'utf8', + }) + ); + assert.deepStrictEqual(actual, { + version: '0.2.0', + configurations: [modifiedLaunchConfig], + }); + }); + + it('should insert a new launch config', async () => { + const tempDir = await tracked.mkdir(); + const existing = { + version: '0.2.0', + configurations: [otherLaunchConfig], + }; + await fs.writeFile( + path.join(tempDir, 'launch.json'), + JSON.stringify(existing) + ); + const actualExisting = JSON.parse( + await fs.readFile(path.join(tempDir, 'launch.json'), { + encoding: 'utf8', + }) + ); + assert.deepStrictEqual(actualExisting, existing); + + await updateLaunchConfigs(tempDir, launchConfig); + const actual = JSON.parse( + await fs.readFile(path.join(tempDir, 'launch.json'), { + encoding: 'utf8', + }) + ); + assert.deepStrictEqual(actual, { + version: '0.2.0', + configurations: [otherLaunchConfig, launchConfig], + }); + }); + }); + // describe('VS Code', () => {}); + }); +}); diff --git a/src/test/suite/index.ts b/src/test/suite/index.ts new file mode 100644 index 0000000..cf38d97 --- /dev/null +++ b/src/test/suite/index.ts @@ -0,0 +1,105 @@ +import { glob } from 'glob'; +import Mocha from 'mocha'; +import os from 'node:os'; +import path from 'node:path'; +import temp from 'temp'; +import { PrepareTestEnvParams, TestEnv, prepareTestEnv } from '../testEnv'; + +export async function run(): Promise { + let timeout: number | undefined = 60_000; + let testsPattern = '**/**.test.js'; + const context = testContext(); + if (context === 'all') { + testsPattern = '**/*test.js'; + } else if (context === 'slow') { + testsPattern = '**/**.slow-test.js'; + } else { + timeout = undefined; + } + if (noTestTimeout()) { + timeout = 0; + } + const mocha = new Mocha({ + ui: 'bdd', + color: true, + timeout, + }); + const tracked = temp.track(); + mocha.suite.ctx['tracked'] = tracked; + if (context) { + const testEnv = await setup(tracked); + mocha.suite.ctx['testEnv'] = testEnv; + } + const testsRoot = path.resolve(__dirname); + const files = await glob(testsPattern, { cwd: testsRoot }); + files.forEach((file) => mocha.addFile(path.resolve(testsRoot, file))); + try { + await new Promise((resolve, reject) => { + mocha.run((failures) => { + if (failures > 0) { + reject(new Error(`${failures} tests failed.`)); + } else { + resolve(); + } + }); + }); + } finally { + tracked.cleanupSync(); + } +} + +function testContext(): 'slow' | 'all' | undefined { + if (typeof process.env.TEST_CONTEXT === 'string') { + const value = process.env.TEST_CONTEXT; + if (/all/i.test(value)) { + return 'all'; + } + if (/slow/i.test(value)) { + return 'slow'; + } + } + return undefined; +} + +function noTestTimeout(): boolean { + return ( + typeof process.env.NO_TEST_TIMEOUT === 'string' && + /true/i.test(process.env.NO_TEST_TIMEOUT) + ); +} + +const testsPath = path.join(__dirname, '..', '..', '..', '.tests'); +const dataDirPath = path.join(testsPath, 'data'); +const userDirPath = path.join(testsPath, 'user'); +const cliFilename = `arduino-cli${os.platform() === 'win32' ? '.exe' : ''}`; +const cliPath = path.join(testsPath, cliFilename); + +async function setup(tracked: typeof temp): Promise { + const cliConfigPaths = { + en: path.join(testsPath, 'arduino-cli.yaml'), + it: path.join(testsPath, 'arduino-cli-it.yaml'), + } as const; + const testEnv: TestEnv = { + cliConfigPaths, + cliPath, + dataDirPath, + userDirPath, + tracked, + get cliConfigPath() { + return cliConfigPaths['en']; + }, + }; + const params: PrepareTestEnvParams = { + ...testEnv, + platformsToInstall: [ + { platform: 'esp32:esp32', version: '3.0.0-arduino3' }, + { platform: 'arduino:esp32' }, + { platform: 'arduino:samd' }, // samd is need to get the tools for the manually (Git) installed core + ], + additionalUrls: [ + 'https://downloads.arduino.cc/packages/package_nano_esp32_index.json', + ], + }; + await prepareTestEnv(params); + return testEnv; +} diff --git a/src/test/testEnv.ts b/src/test/testEnv.ts new file mode 100644 index 0000000..fd08870 --- /dev/null +++ b/src/test/testEnv.ts @@ -0,0 +1,150 @@ +import fs from 'node:fs/promises'; +import path from 'node:path'; +import type temp from 'temp'; +import { __tests__ } from '../debug'; +import { isENOENT } from '../errno'; +import { exec } from '../exec'; + +export interface TestEnv { + readonly cliPath: string; + readonly userDirPath: string; + readonly dataDirPath: string; + readonly tracked: typeof temp; + /** + * The keys are locales values are the absolute filesystem path of the CLI configuration with the pre-configured `locale`. + */ + readonly cliConfigPaths: Readonly<{ + en: string; + [local: string]: string; + }>; + + /** + * Sugar for `cliConfigPaths['en']` + */ + get cliConfigPath(): string; +} + +export interface PrepareTestEnvParams extends Omit { + readonly platformsToInstall?: readonly { + platform: string; + version?: string; + }[]; + readonly additionalUrls?: readonly string[]; +} + +export async function prepareTestEnv( + params: PrepareTestEnvParams +): Promise { + log(`Preparing test envs: ${JSON.stringify(params)}`); + await prepareWithCli(params); + await prepareWithGit(params); + log('Done'); +} + +// The latest samd core changes are not yet released +// https://github.com/arduino/ArduinoCore-samd#developing +async function prepareWithGit(params: PrepareTestEnvParams): Promise { + log('Preparing test env with Git.'); + const arduinoGitPath = path.join(params.userDirPath, 'hardware/arduino-git'); + try { + const stat = await fs.stat(arduinoGitPath); + if (stat.isDirectory()) { + log(`Skipping. ${arduinoGitPath} already exists`); + return; + } + throw new Error(`${arduinoGitPath} is not a directory.`); + } catch (err) { + if (isENOENT(err)) { + // continue + } else { + throw err; + } + } + // This is where https://github.com/arduino/ArduinoCore-API.git will be cloned + const arduinoCoreApiPath = await params.tracked.mkdir(); + await exec( + 'git', + ['clone', 'https://github.com/arduino/ArduinoCore-API.git', '--depth', '1'], + { + cwd: arduinoCoreApiPath, + } + ); + + // This is where the patched samd core will be cloned + await fs.mkdir(arduinoGitPath, { recursive: true }); + await exec( + 'git', + [ + 'clone', + 'https://github.com/umbynos/ArduinoCore-samd.git', // use a fork for the PR https://github.com/arduino/ArduinoCore-samd/pull/710 + '--depth', + '1', + '--branch', + 'debug-enhancements', // branch from https://github.com/arduino/ArduinoCore-samd/pull/710 + 'samd', + ], + { + cwd: arduinoGitPath, + } + ); + await fs.cp( + path.join(arduinoCoreApiPath, 'ArduinoCore-API/api'), + path.join(arduinoGitPath, 'samd/cores/arduino/api'), + { recursive: true } + ); + log('Done'); +} + +async function prepareWithCli(params: PrepareTestEnvParams): Promise { + log('Preparing test env with CLI'); + const cliExec = (args: string[], cliConfigPath?: string) => + __tests__.cliExec(params.cliPath, args, cliConfigPath); + const { cliConfigPaths, dataDirPath, userDirPath, additionalUrls } = params; + for (const [locale, cliConfigPath] of Object.entries(cliConfigPaths)) { + await fs.mkdir(path.dirname(cliConfigPath), { recursive: true }); + await Promise.all([ + await cliExec([ + 'config', + 'init', + '--dest-file', + cliConfigPath, + '--overwrite', + ]), + await fs.mkdir(dataDirPath, { recursive: true }), + await fs.mkdir(userDirPath, { recursive: true }), + ]); + await cliExec( + ['config', 'set', 'directories.user', userDirPath], + cliConfigPath + ); + await cliExec( + ['config', 'set', 'directories.data', dataDirPath], + cliConfigPath + ); + if (additionalUrls) { + await cliExec( + ['config', 'set', 'board_manager.additional_urls', ...additionalUrls], + cliConfigPath + ); + } + await cliExec(['config', 'set', 'locale', locale], cliConfigPath); + const config = await cliExec(['config', 'dump'], cliConfigPath); + log(`Using CLI config (locale: ${locale}): ${JSON.stringify(config)}`); + } + const cliConfigPath = cliConfigPaths['en']; + await cliExec(['core', 'update-index'], cliConfigPath); + log('Updated index'); + for (const { platform, version } of params.platformsToInstall ?? []) { + const args = [ + 'core', + 'install', + version ? `${platform}@${version}` : platform, + '--skip-post-install', + ]; + await cliExec(args, cliConfigPath); + log(`Installed ${platform}`); + } + log('Done'); +} + +const log = (...args: Parameters) => console.log(...args); diff --git a/src/typings.ts b/src/typings.ts new file mode 100644 index 0000000..6c1df0f --- /dev/null +++ b/src/typings.ts @@ -0,0 +1,25 @@ +export interface DaemonAddress { + /** + * The host where the Arduino CLI daemon is available. + */ + readonly hostname: string; + /** + * The port where the Arduino CLI daemon is listening. + */ + readonly port: number; + /** + * The [id](https://arduino.github.io/arduino-cli/latest/rpc/commands/#instance) of the initialized core Arduino client instance. + */ + readonly instance: number; +} + +export interface BoardIdentifier { + /** + * The FQBN of the the board. + */ + readonly fqbn: string; + /** + * The human-readable name of the board. Its purpose is solely for the UI. When falsy, the `fqbn` is used. + */ + readonly name?: string; +} diff --git a/src/typings/cortexDebug.ts b/src/typings/cortexDebug.ts new file mode 100644 index 0000000..5bcf286 --- /dev/null +++ b/src/typings/cortexDebug.ts @@ -0,0 +1,641 @@ +/* eslint-disable */ +/** + * Launch Configuration Attributes for `cortex-debug@1.5.1`. See the list of all available attributes [here](https://github.com/Marus/cortex-debug/blob/v1.5.1/debug_attributes.md). + * + * This file was automatically generated. **DO NOT MODIFY IT BY HAND**. + */ + +export interface CortexDebugLaunchAttributes { + /** + * GDB Server type - supported types are jlink, openocd, pyocd, pe, stlink, stutil, qemu, bmp and external + */ + servertype?: + | 'jlink' + | 'openocd' + | 'pyocd' + | 'stutil' + | 'stlink' + | 'bmp' + | 'pe' + | 'qemu' + | 'external'; + /** + * Directory to run commands from + */ + cwd?: string; + /** + * Additional arguments to pass to GDB command line + */ + debuggerArgs?: unknown[]; + /** + * Additional GDB Commands to be executed at the start of the main launch sequence (immediately after attaching to target). + */ + preLaunchCommands?: string[]; + /** + * Additional GDB Commands to be executed after the main launch sequence has finished. + */ + postLaunchCommands?: string[]; + /** + * Additional GDB Commands to be executed at the beginning of the restart sequence (after interrupting execution). + */ + preRestartCommands?: string[]; + /** + * Additional GDB Commands to be executed at the end of the restart sequence. + */ + postRestartCommands?: string[]; + /** + * You can use this to property to override the commands that are normally executed as part of flashing and launching the target. In most cases it is preferable to use preLaunchCommands and postLaunchCommands to customize the GDB launch sequence. + */ + overrideLaunchCommands?: string[]; + /** + * You can use this to property to override the commands that are normally executed as part of restarting the target. In most cases it is preferable to use preRestartCommands and postRestartCommands to customize the GDB restart sequence. + */ + overrideRestartCommands?: string[]; + /** + * Additional GDB Commands to be executed at the end of the start sequence, after a debug session has already started and runToEntryPoint is not specified. + */ + postStartSessionCommands?: string[]; + /** + * Additional GDB Commands to be executed at the end of the re-start sequence, after a debug session has already started. + */ + postRestartSessionCommands?: string[]; + /** + * You can supply a regular expression (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) in the configuration property to override the output from the GDB Server that is looked for to determine if the GDB Server has started. Under most circumstances this will not be necessary - but could be needed as a result of a change in the output of a GDB Server making it incompatible with cortex-debug. This property has no effect for bmp or external GDB Server types. + */ + overrideGDBServerStartedRegex?: string; + /** + * CPU Type Selection - used for QEMU server type + */ + cpu?: 'cortex-m3' | 'cortex-m4'; + /** + * Machine Type Selection - used for QEMU server type + */ + machine?: 'lm3s811evb' | 'lm3s6965evb'; + /** + * Target Device Identifier + */ + device?: string; + /** + * RTOS being used. For JLink this can be Azure, ChibiOS, embOS, FreeRTOS, NuttX, Zephyr or the path to a custom JLink RTOS Plugin library. For OpenOCD this can be ChibiOS, eCos, embKernel, FreeRTOS, mqx, nuttx, ThreadX, uCOS-III, or auto. + */ + rtos?: string; + /** + * This setting can be used to override the armToolchainPath user setting for a particular launch configuration. This should be the path where arm-none-eabi-gdb, arm-none-eabi-objdump and arm-none-eabi-nm are located. + */ + armToolchainPath?: string; + /** + * This setting can be used to override the toolchainPrefix user setting for a particular launch configuration. + */ + toolchainPrefix?: string; + /** + * This setting can be used to override the GDB Server path user/workspace setting for a particular launch configuration. It is the full pathname to the executable or name of executable if it is in your PATH + */ + serverpath?: string; + /** + * This setting can be used to override the GDB path user/workspace setting for a particular launch configuration. This should be the full pathname to the executable (or name of the executable if it is in your PATH). Note that other toolchain executables with the configured prefix must still be available. + */ + gdbPath?: string; + /** + * This setting can be used to override the objdump (used to find globals/statics) path user/workspace setting for a particular launch configuration. This should be the full pathname to the executable (or name of the executable if it is in your PATH). Note that other toolchain executables with the configured prefix must still be available. The program 'nm' is also expected alongside + */ + objdumpPath?: string; + /** + * Additional arguments to pass to GDB Server command line + */ + serverArgs?: string[]; + /** + * Path of executable for symbols and program information. See also `loadFiles`, `symbolFiles` + */ + executable: string; + /** + * List of files (hex/bin/elf files) to load/program instead of the executable file. Symbols are not loaded (see `symbolFiles`). Can be an empty list to specify none. If this property does not exist, then the executable is used to program the device + */ + loadFiles?: string[]; + /** + * List of ELF files to load symbols from instead of the executable file. Program information is ignored (see `loadFiles`). Can be an empty list to specify none. If this property does not exist, then the executable is used for symbols + */ + symbolFiles?: { + /** + * Pathname of an ELF file for symbols + */ + file: string; + /** + * Optional offset to apply to all sections of the ELF file. Use a string strarting with '0x' for a hexadecimal number + */ + offset?: number | string; + /** + * Optional: Load the TEXT section at the specified 'textaddress'. Use a string strarting with '0x' for a hexadecimal number + */ + textaddress?: number | string; + sections?: { + /** + * Section name + */ + name: string; + /** + * Base address for section. Use a string strarting with '0x' for a hexadecimal number + */ + address: number | string; + [k: string]: unknown; + }[]; + [k: string]: unknown; + }[]; + /** + * For externally controlled GDB Servers you must specify the GDB target to connect to. This can either be a "hostname:port" combination or path to a serial port + */ + gdbTarget?: string; + /** + * Deprecated: please use 'runToEntryPoint' instead. + */ + runToMain?: boolean; + /** + * Applies to Restart/Reset/Launch, halt debugger after a reset. Ignored if `runToEntryPoint` is used. + */ + breakAfterReset?: boolean; + /** + * Applies to Launch/Restart/Reset, ignored for Attach. If enabled the debugger will run until the start of the given function. + */ + runToEntryPoint?: string; + /** + * Number of processors/cores in the target device. + */ + numberOfProcessors?: number; + /** + * The processor you want to debug. Zero based integer index. Must be less than 'numberOfProcessors' + */ + targetProcessor?: number; + chainedConfigurations?: { + /** + * Enable/Disable entire set of chained configurations + */ + enabled?: boolean; + /** + * Related or independent server sessions. Set to true for servers like 'JLink'. Inherited by children + */ + detached?: boolean; + /** + * Are Restart/Reset/Stop/Disconnect shared? All life-cycle management done as a group by parent/root. Inherited by children + */ + lifecycleManagedByParent?: boolean; + /** + * Event to wait for. 'postStart' means wait for gdb-server connecting, 'postInit' is after init commands are completed by gdb. Inherited by children + */ + waitOnEvent?: 'postStart' | 'postInit'; + /** + * Default delay in milliseconds for a certain amount of milliseconds to begin launch. Inherited by children + */ + delayMs?: number; + /** + * Values to override/set in this child configuration. A set of name/value pairs. Set value to 'null' (no quotes) to delete. Sorry, no IntelliSense + */ + overrides?: { + [k: string]: unknown; + }; + /** + * List of properties to inherit from parent. Sorry, no IntelliSense + */ + inherits?: string[]; + launches?: { + /** + * Name of launch configuration. Sorry, no IntelliSense + */ + name?: string; + /** + * Folder to use for this configuration. Where .vscode/launch.json exists. Default is same folder as parent. Use either the full path name or the base-name of the folder + */ + folder?: string; + /** + * Enable/Disable this configuration + */ + enabled?: boolean; + /** + * Related or independent server sessions. Set to true for servers like 'JLink' + */ + detached?: boolean; + /** + * Wait for an event. 'postStart' means wait for gdb-server connecting, 'postInit' is after init commands are completed by gdb + */ + waitOnEvent?: 'postStart' | 'postInit'; + /** + * Delay in milliseconds for a certain amount of milliseconds to begin launch + */ + delayMs?: number; + /** + * Are Restart/Reset/Stop/Disconnect shared? All life-cycle management done as a group by parent/root + */ + lifecycleManagedByParent?: boolean; + /** + * Values to override/set in this child configuration. A set of name/value pairs. Set value to 'null' (no quotes) to delete. Sorry, no IntelliSense + */ + overrides?: { + [k: string]: unknown; + }; + /** + * List of properties to inherit from parent. Sorry, no IntelliSense + */ + inherits?: string[]; + [k: string]: unknown; + }[]; + [k: string]: unknown; + }; + graphConfig?: ( + | { + /** + * Create annotations on the graph for when the target processor starts and stops execution. (green line for starting execution, red line for stopping execution). + */ + annotate?: boolean; + /** + * Label for Graph + */ + label: string; + /** + * Maximum value for the X-Axis + */ + maximum: number; + /** + * Minimum value for the Y-Axis + */ + minimum: number; + /** + * Plot configurations. Data sources must be configured for "graph" (or "advanced" with a decoder that sends graph data) in the "swoConfig" section + */ + plots: { + color?: string; + /** + * Graph Data Source Id for the plot. + */ + graphId: string; + /** + * A label for this data set + */ + label?: string; + [k: string]: unknown; + }[]; + /** + * Length of time (seconds) to be plotted on screen. + */ + timespan?: number; + type?: 'realtime'; + [k: string]: unknown; + } + | { + /** + * Label for graph + */ + label: string; + /** + * The amount of time (seconds) that the XY Plot will show the trace for. + */ + timespan?: number; + type?: 'x-y-plot'; + /** + * Graph Data Source Id for the X axis + */ + xGraphId: string; + /** + * Maximum value on the X-Axis + */ + xMaximum?: number; + /** + * Minimum value on the X-Axis + */ + xMinimum?: number; + /** + * Graph Data Source Id Port for the Y axis + */ + yGraphId: string; + /** + * Maximum value on the Y-Axis + */ + yMaximum?: number; + /** + * Minimum value on the Y-Axis + */ + yMinimum?: number; + [k: string]: unknown; + } + )[]; + /** + * Used to debug this extension. Prints all GDB responses to the console. 'raw' prints gdb responses, 'parsed' prints results after parsing, 'both' prints both. 'vscode' shows raw and VSCode interactions + */ + showDevDebugOutput?: 'none' | 'parsed' | 'raw' | 'both' | 'vscode'; + /** + * Show timestamps when 'showDevDebugOutput' is enabled + */ + showDevDebugTimestamps?: boolean; + /** + * Path to a CMSIS SVD file describing the peripherals of the microcontroller; if not supplied then one may be selected based upon the 'device' entered. + */ + svdFile?: string; + /** + * If the gap between registers is less than this threshold (multiple of 8), combine into a single read from device. -1 means never combine registers and is very slow + */ + svdAddrGapThreshold?: number; + /** + * SEGGER's Real Time Trace (RTT) and supported by JLink, OpenOCD and perhaps others in the future + */ + rttConfig?: { + /** + * Enable/Disable RTT + */ + enabled?: boolean; + /** + * Address to start searching for the RTT control block. Use "auto" for Cortex-Debug to use the address from elf file + */ + address?: string; + /** + * Number of bytes to search for the RTT control block. If 'address' is 'auto', use ONLY if you have a custom RTT implementation + */ + searchSize?: number; + /** + * A string to search for to find the RTT control block. If 'address' is 'auto', use ONLY if you have a custom RTT implementation + */ + searchId?: string; + /** + * number of milliseconds (> 0) to wait for check for data on out channels + */ + polling_interval?: number; + /** + * When true, clears the search-string. Only applicable when address is "auto" + */ + clearSearch?: boolean; + /** + * SWO Decoder Configuration + */ + decoders?: ( + | { + /** + * A label for RTT Console + */ + label?: string; + /** + * RTT Channel Number (0 to 15) + */ + port: number; + /** + * 'console' with text input/output, 'binary' is for converting byte stream to other data types + */ + type?: 'console' | 'binary'; + /** + * Prompt to use for RTT Console + */ + prompt?: string; + /** + * Don't use a prompt for RTT Console + */ + noprompt?: boolean; + /** + * append to screen/logfile when another connection is made + */ + noclear?: boolean; + /** + * log all raw data (input and output) to specified file + */ + logfile?: string; + /** + * Add timestamps while printing for 'console' type. 'binary' type always prints timestamps + */ + timestamp?: boolean; + /** + * How binary data bytes are converted into a number. All little-endian + */ + encoding?: 'unsigned' | 'signed' | 'Q16.16' | 'float'; + /** + * How keyoard input is encoded Cooked mode only + */ + iencoding?: 'ascii' | 'utf8' | 'ucs2' | 'utf16le'; + /** + * Binary only: This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625 + */ + scale?: number; + /** + * Experimental: 'disabled' means no stdin. 'raw' and 'rawecho' sends chars as they are typed. + * 'rawecho' will echo chars and process RETURN keys. Even CTRL-C CTRL-D are passed on + */ + inputmode?: 'cooked' | 'raw' | 'rawecho' | 'disabled'; + [k: string]: unknown; + } + | { + /** + * This property is only used for binary and graph output formats. + */ + encoding?: 'unsigned' | 'signed' | 'Q16.16' | 'float'; + /** + * The identifier to use for this data in graph configurations. + */ + graphId: string; + /** + * RTT Channel Number + */ + port: number; + /** + * This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625 + */ + scale?: number; + type?: 'graph'; + [k: string]: unknown; + } + | { + config?: { + [k: string]: unknown; + }; + /** + * Path to a javascript module to implement the decoding functionality. + */ + decoder: string; + /** + * RTT Channel Numbers + */ + ports: number[]; + type?: 'advanced'; + [k: string]: unknown; + } + )[]; + [k: string]: unknown; + }; + swoConfig?: { + /** + * Target CPU frequency in Hz. + */ + cpuFrequency?: number; + /** + * Enable SWO decoding. + */ + enabled?: boolean; + /** + * Source for SWO data. Can either be "probe" to get directly from debug probe, or a serial port device to use a serial port external to the debug probe. + */ + source?: 'probe' | 'socket' | 'serial' | 'file'; + /** + * Path name when source is "file" or "serial". Typically a /path-name or a serial-port-name + */ + swoPath?: string; + /** + * When server is "external" && source is "socket", port to connect to. Format [host:]port + */ + swoPort?: string; + /** + * SWO Decoder Configuration + */ + decoders?: ( + | { + /** + * A label for the output window. + */ + label?: string; + /** + * ITM Port Number + */ + port: number; + /** + * If true, switches to this output when starting a debug session. + */ + showOnStartup?: boolean; + /** + * Add timestamps while printing + */ + timestamp?: boolean; + type?: 'console'; + encoding?: 'ascii' | 'utf8' | 'ucs2' | 'utf16le'; + /** + * log all raw data to specified file + */ + logfile?: string; + [k: string]: unknown; + } + | { + /** + * This property is only used for binary and graph output formats. + */ + encoding?: 'unsigned' | 'signed' | 'Q16.16' | 'float'; + /** + * A label for the output window. + */ + label?: string; + /** + * ITM Port Number + */ + port: number; + /** + * This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625 + */ + scale?: number; + type?: 'binary'; + /** + * log all raw data to specified file + */ + logfile?: string; + [k: string]: unknown; + } + | { + /** + * This property is only used for binary and graph output formats. + */ + encoding?: 'unsigned' | 'signed' | 'Q16.16' | 'float'; + /** + * The identifier to use for this data in graph configurations. + */ + graphId: string; + /** + * ITM Port Number + */ + port: number; + /** + * This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625 + */ + scale?: number; + type?: 'graph'; + /** + * log all raw data to specified file + */ + logfile?: string; + [k: string]: unknown; + } + | { + config?: { + [k: string]: unknown; + }; + /** + * Path to a javascript module to implement the decoding functionality. + */ + decoder: string; + /** + * ITM Port Numbers + */ + ports: number[]; + type?: 'advanced'; + [k: string]: unknown; + } + )[]; + /** + * SWO frequency in Hz. + */ + swoFrequency?: number; + [k: string]: unknown; + }; + /** + * IP Address for networked J-Link Adapter + */ + ipAddress?: string; + /** + * J-Link or ST-LINK Serial Number - only needed if multiple J-Links/ST-LINKs are connected to the computer + */ + serialNumber?: string; + /** + * Debug Interface type to use for connections (defaults to SWD) - Used for J-Link, ST-LINK and BMP probes. + */ + interface?: 'swd' | 'jtag' | 'cjtag'; + /** + * J-Link script file - optional input file for customizing J-Link actions. + */ + jlinkscript?: string; + /** + * OpenOCD command(s) after configuration files are loaded (-c options) + */ + openOCDLaunchCommands?: string[]; + /** + * OpenOCD command(s) before configuration files are loaded (-c options) + */ + openOCDPreConfigLaunchCommands?: string[]; + /** + * OpenOCD/PE GDB Server configuration file(s) to use when debugging (OpenOCD -f option) + */ + configFiles?: string[]; + /** + * OpenOCD directories to search for config files and scripts (-s option). If no search directories are specified, it defaults to the configured cwd. + */ + searchDir?: string[]; + /** + * For st-util only. Set this to true if your debug probe is a ST-Link V1 (for example, the ST-Link on the STM32 VL Discovery is a V1 device). When set to false a ST-Link V2 device is used. + */ + v1?: boolean; + /** + * Path to the ST-LINK_gdbserver executable. If not set then ST-LINK_gdbserver (ST-LINK_gdbserver.exe on Windows) must be on the system path. + */ + stlinkPath?: string; + /** + * This path is normally resolved to the installed STM32CubeIDE or STM32CubeProgrammer but can be overridden here. + */ + stm32cubeprogrammer?: string; + /** + * On BMP this is the ID number that should be passed to the attach command (defaults to 1); for PyOCD this is the target identifier (only needed for custom hardware) + */ + targetId?: string | number; + /** + * PyOCD Board Identifier. Needed if multiple compatible boards are connected. + */ + boardId?: string; + /** + * Path to a CMSIS-Pack file. Use to add extra device support. + */ + cmsisPack?: string; + /** + * The serial port for the Black Magic Probe GDB Server. On Windows this will be "COM", on Linux this will be something similar to /dev/ttyACM0, on OS X something like /dev/cu.usbmodemE2C0C4C6 (do not use tty versions on OS X) + */ + BMPGDBSerialPort?: string; + /** + * Power up the board over Black Magic Probe. "powerOverBMP" : "enable" or "powerOverBMP" : "disable". If not set it will use the last power state. + */ + powerOverBMP?: string; + [k: string]: unknown; +} diff --git a/syntaxes/ino.tmGrammar.json b/syntaxes/ino.tmGrammar.json index 269ded5..c41f653 100644 --- a/syntaxes/ino.tmGrammar.json +++ b/syntaxes/ino.tmGrammar.json @@ -1,2372 +1,2372 @@ { - "information_for_contributors": [ - "This file has been converted from https://github.com/atom/language-c/blob/master/grammars/c.cson", - "If you want to provide a fix or improvement, please create a pull request against the original repository.", - "Once accepted there, we are happy to receive an update request." - ], - "version": "https://github.com/atom/language-c/commit/9c0c5f202741a5647025db8d5df5fefba47b036c", - "name": "Ino", - "scopeName": "source.ino", - "patterns": [ - { - "include": "#special_block" - }, - { - "include": "#strings" - }, - { - "match": "\\b(friend|explicit|virtual|override|final|noexcept)\\b", - "name": "storage.modifier.cpp" - }, - { - "match": "\\b(private:|protected:|public:)", - "name": "storage.modifier.cpp" - }, - { - "match": "\\b(catch|operator|try|throw|using)\\b", - "name": "keyword.control.cpp" - }, - { - "match": "\\bdelete\\b(\\s*\\[\\])?|\\bnew\\b(?!])", - "name": "keyword.control.cpp" - }, - { - "match": "\\b(f|m)[A-Z]\\w*\\b", - "name": "variable.other.readwrite.member.cpp" - }, - { - "match": "\\bthis\\b", - "name": "variable.language.this.cpp" - }, - { - "match": "\\bnullptr\\b", - "name": "constant.language.cpp" - }, - { - "match": "\\btemplate\\b\\s*", - "name": "storage.type.template.cpp" - }, - { - "match": "\\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\\b\\s*", - "name": "keyword.operator.cast.cpp" - }, - { - "match": "::", - "name": "punctuation.separator.namespace.access.cpp" - }, - { - "match": "\\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\b", - "name": "keyword.operator.cpp" - }, - { - "match": "\\b(class|decltype|wchar_t|char16_t|char32_t)\\b", - "name": "storage.type.cpp" - }, - { - "match": "\\b(constexpr|export|mutable|typename|thread_local)\\b", - "name": "storage.modifier.cpp" - }, - { - "begin": "(?x)\n(?:\n ^ | # beginning of line\n (?:(?[a-zA-Z_$][\\w$]*)) # macro name\n(?:\n (\\()\n (\n \\s* \\g \\s* # first argument\n ((,) \\s* \\g \\s*)* # additional arguments\n (?:\\.\\.\\.)? # varargs ellipsis?\n )\n (\\))\n)?", - "beginCaptures": { - "1": { - "name": "keyword.control.directive.define.c" - }, - "2": { - "name": "punctuation.definition.directive.c" - }, - "3": { - "name": "entity.name.function.preprocessor.c" - }, - "5": { - "name": "punctuation.definition.parameters.begin.c" - }, - "6": { - "name": "variable.parameter.preprocessor.c" - }, - "8": { - "name": "punctuation.separator.parameters.c" - }, - "9": { - "name": "punctuation.definition.parameters.end.c" - } - }, - "end": "(?=(?://|/\\*))|(?", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.c" - } - }, - "name": "string.quoted.other.lt-gt.include.c" - } - ] - }, - { - "include": "#pragma-mark" - }, - { - "begin": "^\\s*((#)\\s*line)\\b", - "beginCaptures": { - "1": { - "name": "keyword.control.directive.line.c" - }, - "2": { - "name": "punctuation.definition.directive.c" - } - }, - "end": "(?=(?://|/\\*))|(?=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", - "end": "(?<=\\))(?!\\w)", - "name": "meta.function.c", - "patterns": [ - { - "include": "#function-innards" - } - ] - }, - { - "include": "#line_continuation_character" - }, - { - "match": "(\\[)|(\\])", - "captures": { - "1": { - "name": "punctuation.definition.begin.bracket.square.c" - }, - "2": { - "name": "punctuation.definition.end.bracket.square.c" - } - } - }, - { - "match": ";", - "name": "punctuation.terminator.statement.c" - }, - { - "match": ",", - "name": "punctuation.separator.delimiter.c" - } - ], - "repository": { - "access": { - "captures": { - "2": { - "name": "punctuation.separator.dot-access.c" - }, - "3": { - "name": "punctuation.separator.pointer-access.c" - }, - "4": { - "name": "variable.other.member.c" - } - }, - "match": "((\\.)|(->))\\s*(([a-zA-Z_][a-zA-Z_0-9]*)\\b(?!\\s*\\())?" - }, - "block": { - "begin": "\\{", - "beginCaptures": { - "0": { - "name": "punctuation.section.block.begin.bracket.curly.c" - } - }, - "end": "\\}", - "endCaptures": { - "0": { - "name": "punctuation.section.block.end.bracket.curly.c" - } - }, - "name": "meta.block.cpp", - "patterns": [ - { - "begin": "{", - "beginCaptures": { - "0": { - "name": "punctuation.section.block.begin.bracket.curly.c" - } - }, - "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)", - "endCaptures": { - "0": { - "name": "punctuation.section.block.end.bracket.curly.c" - } - }, - "name": "meta.block.c", - "patterns": [ - { - "include": "#block_innards" - } - ] - }, - { - "include": "$base" - } - ] - }, - "block_innards": { - "patterns": [ - { - "include": "#preprocessor-rule-enabled-block" - }, - { - "include": "#preprocessor-rule-disabled-block" - }, - { - "include": "#preprocessor-rule-conditional-block" - }, - { - "include": "#access" - }, - { - "include": "#libc" - }, - { - "include": "#c_function_call" - }, - { - "captures": { - "1": { - "name": "variable.other.c" - }, - "2": { - "name": "punctuation.definition.parameters.c" - } - }, - "match": "(?x)\n(?:\n (?:\n (?=\\s)(?=+!]+ | \\(\\) | \\[\\]))\n)\n\\s*(\\() # opening bracket", - "name": "meta.initialization.c" - }, - { - "begin": "{", - "beginCaptures": { - "0": { - "name": "punctuation.section.block.begin.bracket.curly.c" - } - }, - "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)", - "endCaptures": { - "0": { - "name": "punctuation.section.block.end.bracket.curly.c" - } - }, - "patterns": [ - { - "include": "#block_innards" - } - ] - }, - { - "include": "#parens-block" - }, - { - "include": "$base" - } - ] - }, - "c_function_call": { - "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate)\\s*\\()\n(?=\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", - "end": "(?<=\\))(?!\\w)", - "name": "meta.function-call.c", - "patterns": [ - { - "include": "#function-call-innards" - } - ] - }, - "comments": { - "patterns": [ - { - "captures": { - "1": { - "name": "meta.toc-list.banner.block.c" - } - }, - "match": "^/\\* =(\\s*.*?)\\s*= \\*/$\\n?", - "name": "comment.block.c" - }, - { - "begin": "/\\*", - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.begin.c" - } - }, - "end": "\\*/", - "endCaptures": { - "0": { - "name": "punctuation.definition.comment.end.c" - } - }, - "name": "comment.block.c" - }, - { - "match": "\\*/.*\\n", - "name": "invalid.illegal.stray-comment-end.c" - }, - { - "captures": { - "1": { - "name": "meta.toc-list.banner.line.c" - } - }, - "match": "^// =(\\s*.*?)\\s*=\\s*$\\n?", - "name": "comment.line.banner.cpp" - }, - { - "begin": "(^[ \\t]+)?(?=//)", - "beginCaptures": { - "1": { - "name": "punctuation.whitespace.comment.leading.cpp" - } - }, - "end": "(?!\\G)", - "patterns": [ - { - "begin": "//", - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.cpp" - } - }, - "end": "(?=\\n)", - "name": "comment.line.double-slash.cpp", - "patterns": [ - { - "include": "#line_continuation_character" - } - ] - } - ] - } - ] - }, - "disabled": { - "begin": "^\\s*#\\s*if(n?def)?\\b.*$", - "end": "^\\s*#\\s*endif\\b", - "patterns": [ - { - "include": "#disabled" - }, - { - "include": "#pragma-mark" - } - ] - }, - "libc": { - "captures": { - "1": { - "name": "punctuation.whitespace.support.function.leading.c" - }, - "2": { - "name": "support.function.C99.c" - } - }, - "match": "(?x) (\\s*) \\b\n(_Exit|(?:nearbyint|nextafter|nexttoward|netoward|nan)[fl]?|a(?:cos|sin)h?[fl]?|abort|abs|asctime|assert\n|atan(?:[h2]?[fl]?)?|atexit|ato[ifl]|atoll|bsearch|btowc|cabs[fl]?|cacos|cacos[fl]|cacosh[fl]?\n|calloc|carg[fl]?|casinh?[fl]?|catanh?[fl]?|cbrt[fl]?|ccosh?[fl]?|ceil[fl]?|cexp[fl]?|cimag[fl]?\n|clearerr|clock|clog[fl]?|conj[fl]?|copysign[fl]?|cosh?[fl]?|cpow[fl]?|cproj[fl]?|creal[fl]?\n|csinh?[fl]?|csqrt[fl]?|ctanh?[fl]?|ctime|difftime|div|erfc?[fl]?|exit|fabs[fl]?\n|exp(?:2[fl]?|[fl]|m1[fl]?)?|fclose|fdim[fl]?|fe[gs]et(?:env|exceptflag|round)|feclearexcept\n|feholdexcept|feof|feraiseexcept|ferror|fetestexcept|feupdateenv|fflush|fgetpos|fgetw?[sc]\n|floor[fl]?|fmax?[fl]?|fmin[fl]?|fmod[fl]?|fopen|fpclassify|fprintf|fputw?[sc]|fread|free|freopen\n|frexp[fl]?|fscanf|fseek|fsetpos|ftell|fwide|fwprintf|fwrite|fwscanf|genv|get[sc]|getchar|gmtime\n|gwc|gwchar|hypot[fl]?|ilogb[fl]?|imaxabs|imaxdiv|isalnum|isalpha|isblank|iscntrl|isdigit|isfinite\n|isgraph|isgreater|isgreaterequal|isinf|isless(?:equal|greater)?|isw?lower|isnan|isnormal|isw?print\n|isw?punct|isw?space|isunordered|isw?upper|iswalnum|iswalpha|iswblank|iswcntrl|iswctype|iswdigit|iswgraph\n|isw?xdigit|labs|ldexp[fl]?|ldiv|lgamma[fl]?|llabs|lldiv|llrint[fl]?|llround[fl]?|localeconv|localtime\n|log[2b]?[fl]?|log1[p0][fl]?|longjmp|lrint[fl]?|lround[fl]?|malloc|mbr?len|mbr?towc|mbsinit|mbsrtowcs\n|mbstowcs|memchr|memcmp|memcpy|memmove|memset|mktime|modf[fl]?|perror|pow[fl]?|printf|puts|putw?c(?:har)?\n|qsort|raise|rand|remainder[fl]?|realloc|remove|remquo[fl]?|rename|rewind|rint[fl]?|round[fl]?|scalbl?n[fl]?\n|scanf|setbuf|setjmp|setlocale|setvbuf|signal|signbit|sinh?[fl]?|snprintf|sprintf|sqrt[fl]?|srand|sscanf\n|strcat|strchr|strcmp|strcoll|strcpy|strcspn|strerror|strftime|strlen|strncat|strncmp|strncpy|strpbrk\n|strrchr|strspn|strstr|strto[kdf]|strtoimax|strtol[dl]?|strtoull?|strtoumax|strxfrm|swprintf|swscanf\n|system|tan|tan[fl]|tanh[fl]?|tgamma[fl]?|time|tmpfile|tmpnam|tolower|toupper|trunc[fl]?|ungetw?c|va_arg\n|va_copy|va_end|va_start|vfw?printf|vfw?scanf|vprintf|vscanf|vsnprintf|vsprintf|vsscanf|vswprintf|vswscanf\n|vwprintf|vwscanf|wcrtomb|wcscat|wcschr|wcscmp|wcscoll|wcscpy|wcscspn|wcsftime|wcslen|wcsncat|wcsncmp|wcsncpy\n|wcspbrk|wcsrchr|wcsrtombs|wcsspn|wcsstr|wcsto[dkf]|wcstoimax|wcstol[dl]?|wcstombs|wcstoull?|wcstoumax|wcsxfrm\n|wctom?b|wmem(?:set|chr|cpy|cmp|move)|wprintf|wscanf)\\b" - }, - "line_continuation_character": { - "patterns": [ - { - "match": "(\\\\)\\n", - "captures": { - "1": { - "name": "constant.character.escape.line-continuation.c" - } - } - } - ] - }, - "numbers": { - "patterns": [ - { - "match": "\\b((0(x|X)[0-9a-fA-F]([0-9a-fA-F']*[0-9a-fA-F])?)|(0(b|B)[01]([01']*[01])?)|(([0-9]([0-9']*[0-9])?\\.?[0-9]*([0-9']*[0-9])?)|(\\.[0-9]([0-9']*[0-9])?))((e|E)(\\+|-)?[0-9]([0-9']*[0-9])?)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b", - "name": "constant.numeric.c" - } - ] - }, - "parens": { - "begin": "\\(", - "beginCaptures": { - "0": { - "name": "punctuation.section.parens.begin.bracket.round.c" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.parens.end.bracket.round.c" - } - }, - "patterns": [ - { - "include": "$base" - } - ] - }, - "parens-block": { - "begin": "\\(", - "beginCaptures": { - "0": { - "name": "punctuation.section.parens.begin.bracket.round.c" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.parens.end.bracket.round.c" - } - }, - "patterns": [ - { - "include": "#block_innards" - } - ] - }, - "pragma-mark": { - "captures": { - "1": { - "name": "meta.preprocessor.pragma.c" - }, - "2": { - "name": "keyword.control.directive.pragma.pragma-mark.c" - }, - "3": { - "name": "punctuation.definition.directive.c" - }, - "4": { - "name": "entity.name.tag.pragma-mark.c" - } - }, - "match": "^\\s*(((#)\\s*pragma\\s+mark)\\s+(.*))", - "name": "meta.section" - }, - "operators": { - "patterns": [ - { - "match": "(?>=|\\|=", - "name": "keyword.operator.assignment.compound.bitwise.c" - }, - { - "match": "<<|>>", - "name": "keyword.operator.bitwise.shift.c" - }, - { - "match": "!=|<=|>=|==|<|>", - "name": "keyword.operator.comparison.c" - }, - { - "match": "&&|!|\\|\\|", - "name": "keyword.operator.logical.c" - }, - { - "match": "&|\\||\\^|~", - "name": "keyword.operator.c" - }, - { - "match": "=", - "name": "keyword.operator.assignment.c" - }, - { - "match": "%|\\*|/|-|\\+", - "name": "keyword.operator.c" - }, - { - "begin": "\\?", - "beginCaptures": { - "0": { - "name": "keyword.operator.ternary.c" - } - }, - "end": ":", - "applyEndPatternLast": true, - "endCaptures": { - "0": { - "name": "keyword.operator.ternary.c" - } - }, - "patterns": [ - { - "include": "#access" - }, - { - "include": "#libc" - }, - { - "include": "#c_function_call" - }, - { - "include": "$base" - } - ] - } - ] - }, - "strings": { - "patterns": [ - { - "begin": "\"", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.c" - } - }, - "end": "\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.c" - } - }, - "name": "string.quoted.double.c", - "patterns": [ - { - "include": "#string_escaped_char" - }, - { - "include": "#string_placeholder" - }, - { - "include": "#line_continuation_character" - } - ] - }, - { - "begin": "'", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.c" - } - }, - "end": "'", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.c" - } - }, - "name": "string.quoted.single.c", - "patterns": [ - { - "include": "#string_escaped_char" - }, - { - "include": "#line_continuation_character" - } - ] - }, - { - "begin": "(u|u8|U|L)?\"", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.cpp" - }, - "1": { - "name": "meta.encoding.cpp" - } - }, - "end": "\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.cpp" - } - }, - "name": "string.quoted.double.cpp", - "patterns": [ - { - "match": "\\\\u\\h{4}|\\\\U\\h{8}", - "name": "constant.character.escape.cpp" - }, - { - "match": "\\\\['\"?\\\\abfnrtv]", - "name": "constant.character.escape.cpp" - }, - { - "match": "\\\\[0-7]{1,3}", - "name": "constant.character.escape.cpp" - }, - { - "match": "\\\\x\\h+", - "name": "constant.character.escape.cpp" - }, - { - "include": "source.c#string_placeholder" - } - ] - }, - { - "begin": "(u|u8|U|L)?R\"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.cpp" - }, - "1": { - "name": "meta.encoding.cpp" - }, - "3": { - "name": "invalid.illegal.delimiter-too-long.cpp" - } - }, - "end": "\\)\\2(\\3)\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.cpp" - }, - "1": { - "name": "invalid.illegal.delimiter-too-long.cpp" - } - }, - "name": "string.quoted.double.raw.cpp" - } - ] - }, - "string_escaped_char": { - "patterns": [ - { - "match": "(?x)\\\\ (\n\\\\ |\n[abefnprtv'\"?] |\n[0-3]\\d{,2} |\n[4-7]\\d? |\nx[a-fA-F0-9]{,2} |\nu[a-fA-F0-9]{,4} |\nU[a-fA-F0-9]{,8} )", - "name": "constant.character.escape.c" - }, - { - "match": "\\\\.", - "name": "invalid.illegal.unknown-escape.c" - } - ] - }, - "string_placeholder": { - "patterns": [ - { - "match": "(?x) %\n(\\d+\\$)? # field (argument #)\n[#0\\- +']* # flags\n[,;:_]? # separator character (AltiVec)\n((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\n[diouxXDOUeEfFgGaACcSspn%] # conversion type", - "name": "constant.other.placeholder.c" - }, - { - "match": "(%)(?!\"\\s*(PRI|SCN))", - "captures": { - "1": { - "name": "invalid.illegal.placeholder.c" - } - } - } - ] - }, - "storage_types": { - "patterns": [ - { - "match": "\\b(asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\b", - "name": "storage.type.c" - } - ] - }, - "vararg_ellipses": { - "match": "(?=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", - "end": "(?<=\\))(?!\\w)|(?=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()", - "beginCaptures": { - "1": { - "name": "entity.name.function.c" - }, - "2": { - "name": "punctuation.section.arguments.begin.bracket.round.c" - } - }, - "end": "(\\))|(?=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()", - "beginCaptures": { - "1": { - "name": "entity.name.function.c" - }, - "2": { - "name": "punctuation.section.parameters.begin.bracket.round.c" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.parameters.end.bracket.round.c" - } - }, - "patterns": [ - { - "include": "#function-innards" - } - ] - }, - { - "begin": "\\(", - "beginCaptures": { - "0": { - "name": "punctuation.section.parens.begin.bracket.round.c" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.parens.end.bracket.round.c" - } - }, - "patterns": [ - { - "include": "#function-innards" - } - ] - }, - { - "include": "$base" - } - ] - }, - "function-call-innards": { - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#storage_types" - }, - { - "include": "#access" - }, - { - "include": "#operators" - }, - { - "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()", - "beginCaptures": { - "1": { - "name": "entity.name.function.c" - }, - "2": { - "name": "punctuation.section.arguments.begin.bracket.round.c" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.arguments.end.bracket.round.c" - } - }, - "patterns": [ - { - "include": "#function-call-innards" - } - ] - }, - { - "begin": "\\(", - "beginCaptures": { - "0": { - "name": "punctuation.section.parens.begin.bracket.round.c" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.parens.end.bracket.round.c" - } - }, - "patterns": [ - { - "include": "#function-call-innards" - } - ] - }, - { - "include": "#block_innards" - } - ] - }, - "angle_brackets": { - "begin": "<", - "end": ">", - "name": "meta.angle-brackets.cpp", - "patterns": [ - { - "include": "#angle_brackets" - }, - { - "include": "$base" - } - ] - }, - "constructor": { - "patterns": [ - { - "begin": "(?x)\n(?:^\\s*) # beginning of line\n((?!while|for|do|if|else|switch|catch|enumerate|r?iterate)[A-Za-z_][A-Za-z0-9_:]*) # actual name\n\\s*(\\() # opening bracket", - "beginCaptures": { - "1": { - "name": "entity.name.function.cpp" - }, - "2": { - "name": "punctuation.definition.parameters.begin.c" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.definition.parameters.end.c" - } - }, - "name": "meta.function.constructor.cpp", - "patterns": [ - { - "include": "$base" - } - ] - }, - { - "begin": "(?x)\n(:)\n(\n (?=\n \\s*[A-Za-z_][A-Za-z0-9_:]* # actual name\n \\s* (\\() # opening bracket\n )\n)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.parameters.c" - } - }, - "end": "(?=\\{)", - "name": "meta.function.constructor.initializer-list.cpp", - "patterns": [ - { - "include": "$base" - } - ] - } - ] - }, - "special_block": { - "patterns": [ - { - "begin": "\\b(using)\\b\\s*(namespace)\\b\\s*((?:[_A-Za-z][_A-Za-z0-9]*\\b(::)?)*)", - "beginCaptures": { - "1": { - "name": "keyword.control.cpp" - }, - "2": { - "name": "storage.type.cpp" - }, - "3": { - "name": "entity.name.type.cpp" - } - }, - "end": "(;)", - "name": "meta.using-namespace-declaration.cpp" - }, - { - "begin": "\\b(namespace)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+", - "beginCaptures": { - "1": { - "name": "storage.type.cpp" - }, - "2": { - "name": "entity.name.type.cpp" - } - }, - "captures": { - "1": { - "name": "keyword.control.namespace.$2" - } - }, - "end": "(?<=\\})|(?=(;|,|\\(|\\)|>|\\[|\\]|=))", - "name": "meta.namespace-block.cpp", - "patterns": [ - { - "begin": "\\{", - "beginCaptures": { - "0": { - "name": "punctuation.definition.scope.cpp" - } - }, - "end": "\\}", - "endCaptures": { - "0": { - "name": "punctuation.definition.scope.cpp" - } - }, - "patterns": [ - { - "include": "#special_block" - }, - { - "include": "#constructor" - }, - { - "include": "$base" - } - ] - }, - { - "include": "$base" - } - ] - }, - { - "begin": "\\b(class|struct)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*:\\s*(public|protected|private)\\s*([_A-Za-z][_A-Za-z0-9]*\\b)((\\s*,\\s*(public|protected|private)\\s*[_A-Za-z][_A-Za-z0-9]*\\b)*))?", - "beginCaptures": { - "1": { - "name": "storage.type.cpp" - }, - "2": { - "name": "entity.name.type.cpp" - }, - "4": { - "name": "storage.type.modifier.cpp" - }, - "5": { - "name": "entity.name.type.inherited.cpp" - }, - "6": { - "patterns": [ - { - "match": "(public|protected|private)", - "name": "storage.type.modifier.cpp" - }, - { - "match": "[_A-Za-z][_A-Za-z0-9]*", - "name": "entity.name.type.inherited.cpp" - } - ] - } - }, - "end": "(?<=\\})|(?=(;|\\(|\\)|>|\\[|\\]|=))", - "name": "meta.class-struct-block.cpp", - "patterns": [ - { - "include": "#angle_brackets" - }, - { - "begin": "\\{", - "beginCaptures": { - "0": { - "name": "punctuation.section.block.begin.bracket.curly.cpp" - } - }, - "end": "(\\})(\\s*\\n)?", - "endCaptures": { - "1": { - "name": "punctuation.section.block.end.bracket.curly.cpp" - }, - "2": { - "name": "invalid.illegal.you-forgot-semicolon.cpp" - } - }, - "patterns": [ - { - "include": "#special_block" - }, - { - "include": "#constructor" - }, - { - "include": "$base" - } - ] - }, - { - "include": "$base" - } - ] - }, - { - "begin": "\\b(extern)(?=\\s*\")", - "beginCaptures": { - "1": { - "name": "storage.modifier.cpp" - } - }, - "end": "(?<=\\})|(?=\\w)|(?=\\s*#\\s*endif\\b)", - "name": "meta.extern-block.cpp", - "patterns": [ - { - "begin": "\\{", - "beginCaptures": { - "0": { - "name": "punctuation.section.block.begin.bracket.curly.c" - } - }, - "end": "\\}|(?=\\s*#\\s*endif\\b)", - "endCaptures": { - "0": { - "name": "punctuation.section.block.end.bracket.curly.c" - } - }, - "patterns": [ - { - "include": "#special_block" - }, - { - "include": "$base" - } - ] - }, - { - "include": "$base" - } - ] - } - ] - } - } + "information_for_contributors": [ + "This file has been converted from https://github.com/atom/language-c/blob/master/grammars/c.cson", + "If you want to provide a fix or improvement, please create a pull request against the original repository.", + "Once accepted there, we are happy to receive an update request." + ], + "version": "https://github.com/atom/language-c/commit/9c0c5f202741a5647025db8d5df5fefba47b036c", + "name": "Ino", + "scopeName": "source.ino", + "patterns": [ + { + "include": "#special_block" + }, + { + "include": "#strings" + }, + { + "match": "\\b(friend|explicit|virtual|override|final|noexcept)\\b", + "name": "storage.modifier.cpp" + }, + { + "match": "\\b(private:|protected:|public:)", + "name": "storage.modifier.cpp" + }, + { + "match": "\\b(catch|operator|try|throw|using)\\b", + "name": "keyword.control.cpp" + }, + { + "match": "\\bdelete\\b(\\s*\\[\\])?|\\bnew\\b(?!])", + "name": "keyword.control.cpp" + }, + { + "match": "\\b(f|m)[A-Z]\\w*\\b", + "name": "variable.other.readwrite.member.cpp" + }, + { + "match": "\\bthis\\b", + "name": "variable.language.this.cpp" + }, + { + "match": "\\bnullptr\\b", + "name": "constant.language.cpp" + }, + { + "match": "\\btemplate\\b\\s*", + "name": "storage.type.template.cpp" + }, + { + "match": "\\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\\b\\s*", + "name": "keyword.operator.cast.cpp" + }, + { + "match": "::", + "name": "punctuation.separator.namespace.access.cpp" + }, + { + "match": "\\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\b", + "name": "keyword.operator.cpp" + }, + { + "match": "\\b(class|decltype|wchar_t|char16_t|char32_t)\\b", + "name": "storage.type.cpp" + }, + { + "match": "\\b(constexpr|export|mutable|typename|thread_local)\\b", + "name": "storage.modifier.cpp" + }, + { + "begin": "(?x)\n(?:\n ^ | # beginning of line\n (?:(?[a-zA-Z_$][\\w$]*)) # macro name\n(?:\n (\\()\n (\n \\s* \\g \\s* # first argument\n ((,) \\s* \\g \\s*)* # additional arguments\n (?:\\.\\.\\.)? # varargs ellipsis?\n )\n (\\))\n)?", + "beginCaptures": { + "1": { + "name": "keyword.control.directive.define.c" + }, + "2": { + "name": "punctuation.definition.directive.c" + }, + "3": { + "name": "entity.name.function.preprocessor.c" + }, + "5": { + "name": "punctuation.definition.parameters.begin.c" + }, + "6": { + "name": "variable.parameter.preprocessor.c" + }, + "8": { + "name": "punctuation.separator.parameters.c" + }, + "9": { + "name": "punctuation.definition.parameters.end.c" + } + }, + "end": "(?=(?://|/\\*))|(?", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.c" + } + }, + "name": "string.quoted.other.lt-gt.include.c" + } + ] + }, + { + "include": "#pragma-mark" + }, + { + "begin": "^\\s*((#)\\s*line)\\b", + "beginCaptures": { + "1": { + "name": "keyword.control.directive.line.c" + }, + "2": { + "name": "punctuation.definition.directive.c" + } + }, + "end": "(?=(?://|/\\*))|(?=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", + "end": "(?<=\\))(?!\\w)", + "name": "meta.function.c", + "patterns": [ + { + "include": "#function-innards" + } + ] + }, + { + "include": "#line_continuation_character" + }, + { + "match": "(\\[)|(\\])", + "captures": { + "1": { + "name": "punctuation.definition.begin.bracket.square.c" + }, + "2": { + "name": "punctuation.definition.end.bracket.square.c" + } + } + }, + { + "match": ";", + "name": "punctuation.terminator.statement.c" + }, + { + "match": ",", + "name": "punctuation.separator.delimiter.c" + } + ], + "repository": { + "access": { + "captures": { + "2": { + "name": "punctuation.separator.dot-access.c" + }, + "3": { + "name": "punctuation.separator.pointer-access.c" + }, + "4": { + "name": "variable.other.member.c" + } + }, + "match": "((\\.)|(->))\\s*(([a-zA-Z_][a-zA-Z_0-9]*)\\b(?!\\s*\\())?" + }, + "block": { + "begin": "\\{", + "beginCaptures": { + "0": { + "name": "punctuation.section.block.begin.bracket.curly.c" + } + }, + "end": "\\}", + "endCaptures": { + "0": { + "name": "punctuation.section.block.end.bracket.curly.c" + } + }, + "name": "meta.block.cpp", + "patterns": [ + { + "begin": "{", + "beginCaptures": { + "0": { + "name": "punctuation.section.block.begin.bracket.curly.c" + } + }, + "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)", + "endCaptures": { + "0": { + "name": "punctuation.section.block.end.bracket.curly.c" + } + }, + "name": "meta.block.c", + "patterns": [ + { + "include": "#block_innards" + } + ] + }, + { + "include": "$base" + } + ] + }, + "block_innards": { + "patterns": [ + { + "include": "#preprocessor-rule-enabled-block" + }, + { + "include": "#preprocessor-rule-disabled-block" + }, + { + "include": "#preprocessor-rule-conditional-block" + }, + { + "include": "#access" + }, + { + "include": "#libc" + }, + { + "include": "#c_function_call" + }, + { + "captures": { + "1": { + "name": "variable.other.c" + }, + "2": { + "name": "punctuation.definition.parameters.c" + } + }, + "match": "(?x)\n(?:\n (?:\n (?=\\s)(?=+!]+ | \\(\\) | \\[\\]))\n)\n\\s*(\\() # opening bracket", + "name": "meta.initialization.c" + }, + { + "begin": "{", + "beginCaptures": { + "0": { + "name": "punctuation.section.block.begin.bracket.curly.c" + } + }, + "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)", + "endCaptures": { + "0": { + "name": "punctuation.section.block.end.bracket.curly.c" + } + }, + "patterns": [ + { + "include": "#block_innards" + } + ] + }, + { + "include": "#parens-block" + }, + { + "include": "$base" + } + ] + }, + "c_function_call": { + "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate)\\s*\\()\n(?=\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", + "end": "(?<=\\))(?!\\w)", + "name": "meta.function-call.c", + "patterns": [ + { + "include": "#function-call-innards" + } + ] + }, + "comments": { + "patterns": [ + { + "captures": { + "1": { + "name": "meta.toc-list.banner.block.c" + } + }, + "match": "^/\\* =(\\s*.*?)\\s*= \\*/$\\n?", + "name": "comment.block.c" + }, + { + "begin": "/\\*", + "beginCaptures": { + "0": { + "name": "punctuation.definition.comment.begin.c" + } + }, + "end": "\\*/", + "endCaptures": { + "0": { + "name": "punctuation.definition.comment.end.c" + } + }, + "name": "comment.block.c" + }, + { + "match": "\\*/.*\\n", + "name": "invalid.illegal.stray-comment-end.c" + }, + { + "captures": { + "1": { + "name": "meta.toc-list.banner.line.c" + } + }, + "match": "^// =(\\s*.*?)\\s*=\\s*$\\n?", + "name": "comment.line.banner.cpp" + }, + { + "begin": "(^[ \\t]+)?(?=//)", + "beginCaptures": { + "1": { + "name": "punctuation.whitespace.comment.leading.cpp" + } + }, + "end": "(?!\\G)", + "patterns": [ + { + "begin": "//", + "beginCaptures": { + "0": { + "name": "punctuation.definition.comment.cpp" + } + }, + "end": "(?=\\n)", + "name": "comment.line.double-slash.cpp", + "patterns": [ + { + "include": "#line_continuation_character" + } + ] + } + ] + } + ] + }, + "disabled": { + "begin": "^\\s*#\\s*if(n?def)?\\b.*$", + "end": "^\\s*#\\s*endif\\b", + "patterns": [ + { + "include": "#disabled" + }, + { + "include": "#pragma-mark" + } + ] + }, + "libc": { + "captures": { + "1": { + "name": "punctuation.whitespace.support.function.leading.c" + }, + "2": { + "name": "support.function.C99.c" + } + }, + "match": "(?x) (\\s*) \\b\n(_Exit|(?:nearbyint|nextafter|nexttoward|netoward|nan)[fl]?|a(?:cos|sin)h?[fl]?|abort|abs|asctime|assert\n|atan(?:[h2]?[fl]?)?|atexit|ato[ifl]|atoll|bsearch|btowc|cabs[fl]?|cacos|cacos[fl]|cacosh[fl]?\n|calloc|carg[fl]?|casinh?[fl]?|catanh?[fl]?|cbrt[fl]?|ccosh?[fl]?|ceil[fl]?|cexp[fl]?|cimag[fl]?\n|clearerr|clock|clog[fl]?|conj[fl]?|copysign[fl]?|cosh?[fl]?|cpow[fl]?|cproj[fl]?|creal[fl]?\n|csinh?[fl]?|csqrt[fl]?|ctanh?[fl]?|ctime|difftime|div|erfc?[fl]?|exit|fabs[fl]?\n|exp(?:2[fl]?|[fl]|m1[fl]?)?|fclose|fdim[fl]?|fe[gs]et(?:env|exceptflag|round)|feclearexcept\n|feholdexcept|feof|feraiseexcept|ferror|fetestexcept|feupdateenv|fflush|fgetpos|fgetw?[sc]\n|floor[fl]?|fmax?[fl]?|fmin[fl]?|fmod[fl]?|fopen|fpclassify|fprintf|fputw?[sc]|fread|free|freopen\n|frexp[fl]?|fscanf|fseek|fsetpos|ftell|fwide|fwprintf|fwrite|fwscanf|genv|get[sc]|getchar|gmtime\n|gwc|gwchar|hypot[fl]?|ilogb[fl]?|imaxabs|imaxdiv|isalnum|isalpha|isblank|iscntrl|isdigit|isfinite\n|isgraph|isgreater|isgreaterequal|isinf|isless(?:equal|greater)?|isw?lower|isnan|isnormal|isw?print\n|isw?punct|isw?space|isunordered|isw?upper|iswalnum|iswalpha|iswblank|iswcntrl|iswctype|iswdigit|iswgraph\n|isw?xdigit|labs|ldexp[fl]?|ldiv|lgamma[fl]?|llabs|lldiv|llrint[fl]?|llround[fl]?|localeconv|localtime\n|log[2b]?[fl]?|log1[p0][fl]?|longjmp|lrint[fl]?|lround[fl]?|malloc|mbr?len|mbr?towc|mbsinit|mbsrtowcs\n|mbstowcs|memchr|memcmp|memcpy|memmove|memset|mktime|modf[fl]?|perror|pow[fl]?|printf|puts|putw?c(?:har)?\n|qsort|raise|rand|remainder[fl]?|realloc|remove|remquo[fl]?|rename|rewind|rint[fl]?|round[fl]?|scalbl?n[fl]?\n|scanf|setbuf|setjmp|setlocale|setvbuf|signal|signbit|sinh?[fl]?|snprintf|sprintf|sqrt[fl]?|srand|sscanf\n|strcat|strchr|strcmp|strcoll|strcpy|strcspn|strerror|strftime|strlen|strncat|strncmp|strncpy|strpbrk\n|strrchr|strspn|strstr|strto[kdf]|strtoimax|strtol[dl]?|strtoull?|strtoumax|strxfrm|swprintf|swscanf\n|system|tan|tan[fl]|tanh[fl]?|tgamma[fl]?|time|tmpfile|tmpnam|tolower|toupper|trunc[fl]?|ungetw?c|va_arg\n|va_copy|va_end|va_start|vfw?printf|vfw?scanf|vprintf|vscanf|vsnprintf|vsprintf|vsscanf|vswprintf|vswscanf\n|vwprintf|vwscanf|wcrtomb|wcscat|wcschr|wcscmp|wcscoll|wcscpy|wcscspn|wcsftime|wcslen|wcsncat|wcsncmp|wcsncpy\n|wcspbrk|wcsrchr|wcsrtombs|wcsspn|wcsstr|wcsto[dkf]|wcstoimax|wcstol[dl]?|wcstombs|wcstoull?|wcstoumax|wcsxfrm\n|wctom?b|wmem(?:set|chr|cpy|cmp|move)|wprintf|wscanf)\\b" + }, + "line_continuation_character": { + "patterns": [ + { + "match": "(\\\\)\\n", + "captures": { + "1": { + "name": "constant.character.escape.line-continuation.c" + } + } + } + ] + }, + "numbers": { + "patterns": [ + { + "match": "\\b((0(x|X)[0-9a-fA-F]([0-9a-fA-F']*[0-9a-fA-F])?)|(0(b|B)[01]([01']*[01])?)|(([0-9]([0-9']*[0-9])?\\.?[0-9]*([0-9']*[0-9])?)|(\\.[0-9]([0-9']*[0-9])?))((e|E)(\\+|-)?[0-9]([0-9']*[0-9])?)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b", + "name": "constant.numeric.c" + } + ] + }, + "parens": { + "begin": "\\(", + "beginCaptures": { + "0": { + "name": "punctuation.section.parens.begin.bracket.round.c" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "punctuation.section.parens.end.bracket.round.c" + } + }, + "patterns": [ + { + "include": "$base" + } + ] + }, + "parens-block": { + "begin": "\\(", + "beginCaptures": { + "0": { + "name": "punctuation.section.parens.begin.bracket.round.c" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "punctuation.section.parens.end.bracket.round.c" + } + }, + "patterns": [ + { + "include": "#block_innards" + } + ] + }, + "pragma-mark": { + "captures": { + "1": { + "name": "meta.preprocessor.pragma.c" + }, + "2": { + "name": "keyword.control.directive.pragma.pragma-mark.c" + }, + "3": { + "name": "punctuation.definition.directive.c" + }, + "4": { + "name": "entity.name.tag.pragma-mark.c" + } + }, + "match": "^\\s*(((#)\\s*pragma\\s+mark)\\s+(.*))", + "name": "meta.section" + }, + "operators": { + "patterns": [ + { + "match": "(?>=|\\|=", + "name": "keyword.operator.assignment.compound.bitwise.c" + }, + { + "match": "<<|>>", + "name": "keyword.operator.bitwise.shift.c" + }, + { + "match": "!=|<=|>=|==|<|>", + "name": "keyword.operator.comparison.c" + }, + { + "match": "&&|!|\\|\\|", + "name": "keyword.operator.logical.c" + }, + { + "match": "&|\\||\\^|~", + "name": "keyword.operator.c" + }, + { + "match": "=", + "name": "keyword.operator.assignment.c" + }, + { + "match": "%|\\*|/|-|\\+", + "name": "keyword.operator.c" + }, + { + "begin": "\\?", + "beginCaptures": { + "0": { + "name": "keyword.operator.ternary.c" + } + }, + "end": ":", + "applyEndPatternLast": true, + "endCaptures": { + "0": { + "name": "keyword.operator.ternary.c" + } + }, + "patterns": [ + { + "include": "#access" + }, + { + "include": "#libc" + }, + { + "include": "#c_function_call" + }, + { + "include": "$base" + } + ] + } + ] + }, + "strings": { + "patterns": [ + { + "begin": "\"", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.c" + } + }, + "end": "\"", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.c" + } + }, + "name": "string.quoted.double.c", + "patterns": [ + { + "include": "#string_escaped_char" + }, + { + "include": "#string_placeholder" + }, + { + "include": "#line_continuation_character" + } + ] + }, + { + "begin": "'", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.c" + } + }, + "end": "'", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.c" + } + }, + "name": "string.quoted.single.c", + "patterns": [ + { + "include": "#string_escaped_char" + }, + { + "include": "#line_continuation_character" + } + ] + }, + { + "begin": "(u|u8|U|L)?\"", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.cpp" + }, + "1": { + "name": "meta.encoding.cpp" + } + }, + "end": "\"", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.cpp" + } + }, + "name": "string.quoted.double.cpp", + "patterns": [ + { + "match": "\\\\u\\h{4}|\\\\U\\h{8}", + "name": "constant.character.escape.cpp" + }, + { + "match": "\\\\['\"?\\\\abfnrtv]", + "name": "constant.character.escape.cpp" + }, + { + "match": "\\\\[0-7]{1,3}", + "name": "constant.character.escape.cpp" + }, + { + "match": "\\\\x\\h+", + "name": "constant.character.escape.cpp" + }, + { + "include": "source.c#string_placeholder" + } + ] + }, + { + "begin": "(u|u8|U|L)?R\"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.cpp" + }, + "1": { + "name": "meta.encoding.cpp" + }, + "3": { + "name": "invalid.illegal.delimiter-too-long.cpp" + } + }, + "end": "\\)\\2(\\3)\"", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.cpp" + }, + "1": { + "name": "invalid.illegal.delimiter-too-long.cpp" + } + }, + "name": "string.quoted.double.raw.cpp" + } + ] + }, + "string_escaped_char": { + "patterns": [ + { + "match": "(?x)\\\\ (\n\\\\ |\n[abefnprtv'\"?] |\n[0-3]\\d{,2} |\n[4-7]\\d? |\nx[a-fA-F0-9]{,2} |\nu[a-fA-F0-9]{,4} |\nU[a-fA-F0-9]{,8} )", + "name": "constant.character.escape.c" + }, + { + "match": "\\\\.", + "name": "invalid.illegal.unknown-escape.c" + } + ] + }, + "string_placeholder": { + "patterns": [ + { + "match": "(?x) %\n(\\d+\\$)? # field (argument #)\n[#0\\- +']* # flags\n[,;:_]? # separator character (AltiVec)\n((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\n[diouxXDOUeEfFgGaACcSspn%] # conversion type", + "name": "constant.other.placeholder.c" + }, + { + "match": "(%)(?!\"\\s*(PRI|SCN))", + "captures": { + "1": { + "name": "invalid.illegal.placeholder.c" + } + } + } + ] + }, + "storage_types": { + "patterns": [ + { + "match": "\\b(asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\b", + "name": "storage.type.c" + } + ] + }, + "vararg_ellipses": { + "match": "(?=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", + "end": "(?<=\\))(?!\\w)|(?=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()", + "beginCaptures": { + "1": { + "name": "entity.name.function.c" + }, + "2": { + "name": "punctuation.section.arguments.begin.bracket.round.c" + } + }, + "end": "(\\))|(?=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()", + "beginCaptures": { + "1": { + "name": "entity.name.function.c" + }, + "2": { + "name": "punctuation.section.parameters.begin.bracket.round.c" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "punctuation.section.parameters.end.bracket.round.c" + } + }, + "patterns": [ + { + "include": "#function-innards" + } + ] + }, + { + "begin": "\\(", + "beginCaptures": { + "0": { + "name": "punctuation.section.parens.begin.bracket.round.c" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "punctuation.section.parens.end.bracket.round.c" + } + }, + "patterns": [ + { + "include": "#function-innards" + } + ] + }, + { + "include": "$base" + } + ] + }, + "function-call-innards": { + "patterns": [ + { + "include": "#comments" + }, + { + "include": "#storage_types" + }, + { + "include": "#access" + }, + { + "include": "#operators" + }, + { + "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()", + "beginCaptures": { + "1": { + "name": "entity.name.function.c" + }, + "2": { + "name": "punctuation.section.arguments.begin.bracket.round.c" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "punctuation.section.arguments.end.bracket.round.c" + } + }, + "patterns": [ + { + "include": "#function-call-innards" + } + ] + }, + { + "begin": "\\(", + "beginCaptures": { + "0": { + "name": "punctuation.section.parens.begin.bracket.round.c" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "punctuation.section.parens.end.bracket.round.c" + } + }, + "patterns": [ + { + "include": "#function-call-innards" + } + ] + }, + { + "include": "#block_innards" + } + ] + }, + "angle_brackets": { + "begin": "<", + "end": ">", + "name": "meta.angle-brackets.cpp", + "patterns": [ + { + "include": "#angle_brackets" + }, + { + "include": "$base" + } + ] + }, + "constructor": { + "patterns": [ + { + "begin": "(?x)\n(?:^\\s*) # beginning of line\n((?!while|for|do|if|else|switch|catch|enumerate|r?iterate)[A-Za-z_][A-Za-z0-9_:]*) # actual name\n\\s*(\\() # opening bracket", + "beginCaptures": { + "1": { + "name": "entity.name.function.cpp" + }, + "2": { + "name": "punctuation.definition.parameters.begin.c" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "punctuation.definition.parameters.end.c" + } + }, + "name": "meta.function.constructor.cpp", + "patterns": [ + { + "include": "$base" + } + ] + }, + { + "begin": "(?x)\n(:)\n(\n (?=\n \\s*[A-Za-z_][A-Za-z0-9_:]* # actual name\n \\s* (\\() # opening bracket\n )\n)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.parameters.c" + } + }, + "end": "(?=\\{)", + "name": "meta.function.constructor.initializer-list.cpp", + "patterns": [ + { + "include": "$base" + } + ] + } + ] + }, + "special_block": { + "patterns": [ + { + "begin": "\\b(using)\\b\\s*(namespace)\\b\\s*((?:[_A-Za-z][_A-Za-z0-9]*\\b(::)?)*)", + "beginCaptures": { + "1": { + "name": "keyword.control.cpp" + }, + "2": { + "name": "storage.type.cpp" + }, + "3": { + "name": "entity.name.type.cpp" + } + }, + "end": "(;)", + "name": "meta.using-namespace-declaration.cpp" + }, + { + "begin": "\\b(namespace)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+", + "beginCaptures": { + "1": { + "name": "storage.type.cpp" + }, + "2": { + "name": "entity.name.type.cpp" + } + }, + "captures": { + "1": { + "name": "keyword.control.namespace.$2" + } + }, + "end": "(?<=\\})|(?=(;|,|\\(|\\)|>|\\[|\\]|=))", + "name": "meta.namespace-block.cpp", + "patterns": [ + { + "begin": "\\{", + "beginCaptures": { + "0": { + "name": "punctuation.definition.scope.cpp" + } + }, + "end": "\\}", + "endCaptures": { + "0": { + "name": "punctuation.definition.scope.cpp" + } + }, + "patterns": [ + { + "include": "#special_block" + }, + { + "include": "#constructor" + }, + { + "include": "$base" + } + ] + }, + { + "include": "$base" + } + ] + }, + { + "begin": "\\b(class|struct)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*:\\s*(public|protected|private)\\s*([_A-Za-z][_A-Za-z0-9]*\\b)((\\s*,\\s*(public|protected|private)\\s*[_A-Za-z][_A-Za-z0-9]*\\b)*))?", + "beginCaptures": { + "1": { + "name": "storage.type.cpp" + }, + "2": { + "name": "entity.name.type.cpp" + }, + "4": { + "name": "storage.type.modifier.cpp" + }, + "5": { + "name": "entity.name.type.inherited.cpp" + }, + "6": { + "patterns": [ + { + "match": "(public|protected|private)", + "name": "storage.type.modifier.cpp" + }, + { + "match": "[_A-Za-z][_A-Za-z0-9]*", + "name": "entity.name.type.inherited.cpp" + } + ] + } + }, + "end": "(?<=\\})|(?=(;|\\(|\\)|>|\\[|\\]|=))", + "name": "meta.class-struct-block.cpp", + "patterns": [ + { + "include": "#angle_brackets" + }, + { + "begin": "\\{", + "beginCaptures": { + "0": { + "name": "punctuation.section.block.begin.bracket.curly.cpp" + } + }, + "end": "(\\})(\\s*\\n)?", + "endCaptures": { + "1": { + "name": "punctuation.section.block.end.bracket.curly.cpp" + }, + "2": { + "name": "invalid.illegal.you-forgot-semicolon.cpp" + } + }, + "patterns": [ + { + "include": "#special_block" + }, + { + "include": "#constructor" + }, + { + "include": "$base" + } + ] + }, + { + "include": "$base" + } + ] + }, + { + "begin": "\\b(extern)(?=\\s*\")", + "beginCaptures": { + "1": { + "name": "storage.modifier.cpp" + } + }, + "end": "(?<=\\})|(?=\\w)|(?=\\s*#\\s*endif\\b)", + "name": "meta.extern-block.cpp", + "patterns": [ + { + "begin": "\\{", + "beginCaptures": { + "0": { + "name": "punctuation.section.block.begin.bracket.curly.c" + } + }, + "end": "\\}|(?=\\s*#\\s*endif\\b)", + "endCaptures": { + "0": { + "name": "punctuation.section.block.end.bracket.curly.c" + } + }, + "patterns": [ + { + "include": "#special_block" + }, + { + "include": "$base" + } + ] + }, + { + "include": "$base" + } + ] + } + ] + } + } } diff --git a/tsconfig.json b/tsconfig.json index 402d398..a76796f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,9 @@ { "compilerOptions": { "target": "es6", - "module": "commonjs", - "lib": [ - "es2015" - ], + "module": "Node16", + "moduleResolution": "node16", + "lib": ["es2015"], "sourceMap": true, "inlineSources": false, "declaration": true, @@ -19,8 +18,5 @@ "esModuleInterop": true, "skipLibCheck": true }, - "exclude": [ - "./node_modules", - "./lib/**/*" - ] + "exclude": ["./node_modules", "./lib/**/*"] } diff --git a/yarn.lock b/yarn.lock index 82201a0..2769269 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,391 +2,709 @@ # yarn lockfile v1 -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@babel/code-frame@^7.0.0": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== dependencies: - "@babel/highlight" "^7.10.4" + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/highlight@^7.10.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" - integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@eslint/eslintrc@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" - integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== +"@bcherny/json-schema-ref-parser@10.0.5-fork": + version "10.0.5-fork" + resolved "https://registry.npmjs.org/@bcherny/json-schema-ref-parser/-/json-schema-ref-parser-10.0.5-fork.tgz" + integrity sha512-E/jKbPoca1tfUPj3iSbitDZTGnq6FUFjkH6L8U2oDwSuwK1WhnnVtCG7oFOTg/DDnyoXbQYUiUiGOibHqaGVnw== + dependencies: + "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.6" + call-me-maybe "^1.0.1" + js-yaml "^4.1.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^12.1.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - lodash "^4.17.20" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@eslint/js@8.55.0": + version "8.55.0" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz" + integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== + dependencies: + "@humanwhocodes/object-schema" "^2.0.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.3" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== dependencies: - "@nodelib/fs.stat" "2.0.3" + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.20" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jsdevtools/ono@^7.1.3": + version "7.1.3" + resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz" + integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/move-file@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" - integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== dependencies: - mkdirp "^1.0.4" + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== "@tootallnate/once@1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@types/deep-equal@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/deep-equal/-/deep-equal-1.0.1.tgz#71cfabb247c22bcc16d536111f50c0ed12476b03" - integrity sha512-mMUu4nWHLBlHtxXY17Fg6+ucS/MnndyOWyOe7MmwkoMYxvfQU2ajtRaEvqSUv+aVkMqH/C0NCI8UoVfRNQ10yg== - -"@types/json-schema@^7.0.3": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== - -"@types/json-schema@^7.0.5": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== - -"@types/node@*": - version "14.0.27" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1" - integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g== - -"@types/node@^10.14.9": - version "10.17.28" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.28.tgz#0e36d718a29355ee51cec83b42d921299200f6d9" - integrity sha512-dzjES1Egb4c1a89C7lKwQh8pwjYmlOAG9dW1pBgxEk57tMrLnssOfEthz8kdkNaBd7lIqQx7APm5+mZ619IiCQ== - -"@types/vscode@^1.41.0": - version "1.48.0" - resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.48.0.tgz#c1841ccf80086d53b35a9d7f2eb3b4d949bd2d2f" - integrity sha512-sZJKzsJz1gSoFXcOJWw3fnKl2sseUgZmvB4AJZS+Fea+bC/jfGPVhmFL/FfQHld/TKtukVONsmoD3Pkyx9iadg== - -"@typescript-eslint/eslint-plugin@^4.8.0": - version "4.15.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz#981b26b4076c62a5a55873fbef3fe98f83360c61" - integrity sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q== - dependencies: - "@typescript-eslint/experimental-utils" "4.15.2" - "@typescript-eslint/scope-manager" "4.15.2" - debug "^4.1.1" - functional-red-black-tree "^1.0.1" - lodash "^4.17.15" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@4.15.2": - version "4.15.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz#5efd12355bd5b535e1831282e6cf465b9a71cf36" - integrity sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.15.2" - "@typescript-eslint/types" "4.15.2" - "@typescript-eslint/typescript-estree" "4.15.2" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^4.8.0": - version "4.15.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.15.2.tgz#c804474321ef76a3955aec03664808f0d6e7872e" - integrity sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q== - dependencies: - "@typescript-eslint/scope-manager" "4.15.2" - "@typescript-eslint/types" "4.15.2" - "@typescript-eslint/typescript-estree" "4.15.2" - debug "^4.1.1" +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== -"@typescript-eslint/scope-manager@4.15.2": - version "4.15.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz#5725bda656995960ae1d004bfd1cd70320f37f4f" - integrity sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ== +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/decompress@^4.2.6": + version "4.2.7" + resolved "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.7.tgz" + integrity sha512-9z+8yjKr5Wn73Pt17/ldnmQToaFHZxK0N1GHysuk/JIPT8RIdQeoInM01wWPgypRcvb6VH1drjuFpQ4zmY437g== dependencies: - "@typescript-eslint/types" "4.15.2" - "@typescript-eslint/visitor-keys" "4.15.2" + "@types/node" "*" -"@typescript-eslint/types@4.15.2": - version "4.15.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.15.2.tgz#04acf3a2dc8001a88985291744241e732ef22c60" - integrity sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ== +"@types/deep-equal@^1.0.1": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/deep-equal/-/deep-equal-1.0.4.tgz#c0a854be62d6b9fae665137a6639aab53389a147" + integrity sha512-tqdiS4otQP4KmY0PR3u6KbZ5EWvhNdUoS/jc93UuK23C220lOZ/9TvjfxdPcKvqwwDVtmtSCrnr0p/2dirAxkA== -"@typescript-eslint/typescript-estree@4.15.2": - version "4.15.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz#c2f7a1e94f3428d229d5ecff3ead6581ee9b62fa" - integrity sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw== +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== dependencies: - "@typescript-eslint/types" "4.15.2" - "@typescript-eslint/visitor-keys" "4.15.2" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - semver "^7.3.2" - tsutils "^3.17.1" + "@types/eslint" "*" + "@types/estree" "*" -"@typescript-eslint/visitor-keys@4.15.2": - version "4.15.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz#3d1c7979ce75bf6acf9691109bd0d6b5706192b9" - integrity sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg== +"@types/eslint@*": + version "8.44.9" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.9.tgz" + integrity sha512-6yBxcvwnnYoYT1Uk2d+jvIfsuP4mb2EdIxFnrPABj5a/838qe5bGkNLFOiipX4ULQ7XVQvTxOh7jO+BTAiqsEw== dependencies: - "@typescript-eslint/types" "4.15.2" - eslint-visitor-keys "^2.0.0" + "@types/estree" "*" + "@types/json-schema" "*" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.5" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/get-value@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@types/get-value/-/get-value-3.0.5.tgz" + integrity sha512-+o8nw0TId5cDwtdVrhlc8rvzaxbCU+JksFeu8ZunY9vUaODxngXiNceTFj2gkSwGWNRpe3PtaSWt1y0VB71PvA== + +"@types/glob@^7.1.3": + version "7.2.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" + "@types/minimatch" "*" + "@types/node" "*" -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== +"@types/json-schema@*", "@types/json-schema@^7.0.11", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== +"@types/lodash@^4.14.182": + version "4.14.202" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz" + integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== +"@types/mocha@^10.0.0": + version "10.0.6" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz" + integrity sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg== + +"@types/node@*", "@types/node@>=13.7.0", "@types/node@^18.17.0": + version "18.19.3" + resolved "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz" + integrity sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg== dependencies: - "@webassemblyjs/wast-printer" "1.9.0" + undici-types "~5.26.4" -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== +"@types/parse-author@^2.0.0": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/parse-author/-/parse-author-2.0.3.tgz" + integrity sha512-pgRW2K/GVQoogylrGJXDl7PBLW9A6T4OOc9Hy9MLT5f7vgufK2GQ8FcfAbjFHR5HjcN9ByzuCczAORk49REqoA== -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/prettier@^2.6.1": + version "2.7.3" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/semver@^7.3.12": + version "7.5.6" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== + +"@types/set-value@^4.0.2": + version "4.0.3" + resolved "https://registry.npmjs.org/@types/set-value/-/set-value-4.0.3.tgz" + integrity sha512-tSuUcLl6kMzI+l0gG7FZ04xbIcynxNIYgWFj91LPAvRcn7W3L1EveXNdVjqFDgAZPjY1qCOsm8Sb1C70SxAPHw== + +"@types/temp@^0.9.3": + version "0.9.4" + resolved "https://registry.npmjs.org/@types/temp/-/temp-0.9.4.tgz" + integrity sha512-+VfWIwrlept2VBTj7Y2wQnI/Xfscy1u8Pyj/puYwss6V1IblXn1x7S0S9eFh6KyBolgLCm+rUFzhFAbdkR691g== dependencies: - "@webassemblyjs/ast" "1.9.0" + "@types/node" "*" -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== +"@types/vscode@^1.80.0": + version "1.85.0" + resolved "https://registry.npmjs.org/@types/vscode/-/vscode-1.85.0.tgz" + integrity sha512-CF/RBon/GXwdfmnjZj0WTUMZN5H6YITOfBCP4iEZlOtVQXuzw6t7Le7+cR+7JzdMrnlm7Mfp49Oj2TuSXIWo3g== + +"@typescript-eslint/eslint-plugin@^5.0.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.0.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@vscode/test-electron@^2.3.6": + version "2.3.8" + resolved "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz" + integrity sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg== dependencies: - "@xtuc/ieee754" "^1.2.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + jszip "^3.10.1" + semver "^7.5.2" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== +"@vscode/vsce@^2.22.0": + version "2.22.0" + resolved "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.22.0.tgz" + integrity sha512-8df4uJiM3C6GZ2Sx/KilSKVxsetrTBBIUb3c0W4B1EWHcddioVs5mkyDKtMNP0khP/xBILVSzlXxhV+nm2rC9A== dependencies: + azure-devops-node-api "^11.0.1" + chalk "^2.4.2" + cheerio "^1.0.0-rc.9" + commander "^6.2.1" + glob "^7.0.6" + hosted-git-info "^4.0.2" + jsonc-parser "^3.2.0" + leven "^3.1.0" + markdown-it "^12.3.2" + mime "^1.3.4" + minimatch "^3.0.3" + parse-semver "^1.1.1" + read "^1.0.7" + semver "^7.5.2" + tmp "^0.2.1" + typed-rest-client "^1.8.4" + url-join "^4.0.1" + xml2js "^0.5.0" + yauzl "^2.3.1" + yazl "^2.2.2" + optionalDependencies: + keytar "^7.7.0" + +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" + "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== +"@webpack-cli/configtest@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz" + integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== + +"@webpack-cli/info@^1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz" + integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.7.0": + version "1.7.0" + resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz" + integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== "@xtuc/ieee754@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== -acorn@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn-walk@^8.1.1: + version "8.3.1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz" + integrity sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw== -agent-base@4, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" +acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== agent-base@6: - version "6.0.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" - integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + ajv "^8.0.0" -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.5.2: version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.2: - version "6.12.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" - integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" + fast-deep-equal "^3.1.3" -ajv@^6.10.0: +ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -394,1666 +712,1260 @@ ajv@^6.10.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.12.3, ajv@^6.12.4: - version "6.12.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" - integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^7.0.2: - version "7.1.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84" - integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ== +ajv@^8.0.0, ajv@^8.9.0: + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -ansi-colors@^4.1.1: +ansi-colors@4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== +ardunno-cli@^0.1.7: + version "0.1.8" + resolved "https://registry.npmjs.org/ardunno-cli/-/ardunno-cli-0.1.8.tgz" + integrity sha512-DfyI98EFHdpc26nPYq2IXK6ZNypwBY0Fg+CAjYeGI/mjgQ1O9QUjNgz6NADwr+pcQ/ikhvLc88Ud9qR08CFTyg== dependencies: - sprintf-js "~1.0.2" + nice-grpc-common "^2.0.2" + protobufjs "^7.2.3" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -array-filter@^1.0.0: +array-buffer-byte-length@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-mutex@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.3.0.tgz#5bc765c271dfc05c48040c12032a92f1dbef2dc3" - integrity sha512-6VIpUM7s37EMXvnO3TvujgaS6gx4yJby13BhxovMYSap7nrbS0gJ1UzGcjD+HElNSdTz/+IlAIqj7H48N0ZlyQ== - dependencies: - tslib "^2.1.0" - -asynckit@^0.4.0: +async-mutex@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + resolved "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.0.tgz" + integrity sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA== dependencies: - array-filter "^1.0.0" + tslib "^2.4.0" -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= +author-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz" + integrity sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g== -aws4@^1.8.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" - integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -azure-devops-node-api@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-7.2.0.tgz#131d4e01cf12ebc6e45569b5e0c5c249e4114d6d" - integrity sha512-pMfGJ6gAQ7LRKTHgiRF+8iaUUeGAI0c8puLaqHLc7B8AR7W6GJLozK9RFeUHFjEGybC9/EB3r67WPd7e46zQ8w== +azure-devops-node-api@^11.0.1: + version "11.2.0" + resolved "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz" + integrity sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA== dependencies: - os "0.1.1" - tunnel "0.0.4" - typed-rest-client "1.2.0" - underscore "1.8.3" + tunnel "0.0.6" + typed-rest-client "^1.8.4" balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: - file-uri-to-path "1.0.0" + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" -bluebird@^3.4.7, bluebird@^3.5.1, bluebird@^3.5.5: +bluebird@^3.4.7, bluebird@^3.7.2: version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: - version "4.11.9" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" - integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== - -bn.js@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" - integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== - -boolbase@~1.0.0: +boolbase@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" + balanced-match "^1.0.0" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - browser-stdout@1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= +browserslist@^4.14.5: + version "4.22.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz" + integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" + caniuse-lite "^1.0.30001565" + electron-to-chromium "^1.4.601" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== dependencies: - pako "~1.0.5" + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" buffer-crc32@~0.2.3: version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== +buffer@^5.2.1, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^15.0.5: - version "15.0.5" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" - integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== - dependencies: - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.0" - tar "^6.0.2" - unique-filename "^1.1.1" + base64-js "^1.3.1" + ieee754 "^1.1.13" -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + +call-me-maybe@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase-keys@^9.1.2: + version "9.1.2" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-9.1.2.tgz" + integrity sha512-nFhquwz7p3nWSHeVYoIkefNPdR2Rt4EuKs9/gaqx3DhJL6HkNHIEcsH+D6N4NvW/MHxc4TT+rp0rc4K7E7x9hw== + dependencies: + camelcase "^8.0.0" + map-obj "5.0.0" + quick-lru "^6.1.1" + type-fest "^4.3.2" + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +camelcase@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz" + integrity sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA== -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +caniuse-lite@^1.0.30001565: + version "1.0.30001570" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz" + integrity sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw== -chalk@^2.0.0, chalk@^2.4.2: +chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -cheerio@^1.0.0-rc.1: - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" - integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.1" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash "^4.15.0" - parse5 "^3.0.1" - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" - integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== - dependencies: - anymatch "~3.1.1" +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== + dependencies: + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + +cheerio@^1.0.0-rc.9: + version "1.0.0-rc.12" + resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" + +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" braces "~3.0.2" - glob-parent "~5.1.0" + glob-parent "~5.1.2" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.4.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "~2.1.2" + fsevents "~2.3.2" chownr@^1.1.1: version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== +cli-color@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz" + integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + d "^1.0.1" + es5-ext "^0.10.61" + es6-iterator "^2.0.3" + memoizee "^0.4.15" + timers-ext "^0.1.7" -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== +colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== commander@^2.20.0, commander@^2.8.1: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +commander@^4.0.1: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +commander@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + +commander@^7.0.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== +copy-webpack-plugin@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz" + integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-webpack-plugin@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.1.0.tgz#5bde7f826d87e716d8d5e761ddd34bb675448458" - integrity sha512-aWjIuLt1OVQxaDVffnt3bnGmLA8zGgAJaFwPA+a+QYVPh1vhIKjVfh3SbOFLV0kRPvGBITbw17n5CsmiBS4LQQ== - dependencies: - cacache "^15.0.5" - fast-glob "^3.2.4" - find-cache-dir "^3.3.1" - glob-parent "^5.1.1" - globby "^11.0.1" - loader-utils "^2.0.0" + fast-glob "^3.2.11" + glob-parent "^6.0.1" + globby "^13.1.1" normalize-path "^3.0.0" - p-limit "^3.0.2" - schema-utils "^2.7.1" - serialize-javascript "^4.0.0" - webpack-sources "^1.4.3" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -css-select@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== -cyclist@^1.0.1: +d@1, d@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= +debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - assert-plus "^1.0.0" + ms "2.1.2" -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: - ms "2.0.0" + mimic-response "^3.1.0" -debug@4: +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + resolved "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== dependencies: - ms "^2.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== dependencies: - ms "2.0.0" + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== +decompress-targz@^4.0.0, decompress-targz@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== dependencies: - ms "^2.1.1" + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" -debug@^4.0.1, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz" + integrity sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw== dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0" - integrity sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA== - dependencies: - es-abstract "^1.17.5" - es-get-iterator "^1.1.0" - is-arguments "^1.0.4" - is-date-object "^1.0.2" - is-regex "^1.0.5" +decompress@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz" + integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + +deep-equal@^2.2.2, deep-equal@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.5" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.2" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" isarray "^2.0.5" - object-is "^1.1.2" + object-is "^1.1.5" object-keys "^1.1.1" - object.assign "^4.1.0" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" - which-boxed-primitive "^1.0.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" which-collection "^1.0.1" - which-typed-array "^1.1.2" + which-typed-array "^1.1.13" -deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -denodeify@^1.2.1: +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" - integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= +detect-libc@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== -diff@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diff@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" - integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" -domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: - domelementtype "1" + domelementtype "^2.3.0" -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== dependencies: - dom-serializer "0" - domelementtype "1" + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" -domutils@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -elliptic@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" - integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +electron-to-chromium@^1.4.601: + version "1.4.611" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.611.tgz" + integrity sha512-ZtRpDxrjHapOwxtv+nuth5ByB8clyn8crVynmRNGO3wG3LOp8RTcyZDqwaI6Ng6y8FCK2hVZmJoqwCskKbNMaw== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" - integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== +enhanced-resolve@^5.15.0: + version "5.15.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== -entities@^1.1.1, entities@~1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== -entities@^2.0.0, entities@~2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== +envinfo@^7.7.3: + version "7.11.0" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz" + integrity sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg== err-code@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= + resolved "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz" + integrity sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA== -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: - prr "~1.0.1" + is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.18.0-next.0: - version "1.18.0-next.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.0.tgz#b302834927e624d8e5837ed48224291f2c66e6fc" - integrity sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-negative-zero "^2.0.0" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" -es-get-iterator@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" - integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== +es-module-lexer@^1.2.1: + version "1.4.1" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz" + integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.62" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== dependencies: - es-abstract "^1.17.4" - has-symbols "^1.0.1" - is-arguments "^1.0.4" - is-map "^2.0.1" - is-set "^2.0.1" - is-string "^1.0.5" - isarray "^2.0.5" + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== dependencies: - es6-promise "^4.0.3" + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +eslint-config-prettier@^8.8.0: + version "8.10.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz" + integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== + +eslint-plugin-prettier@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" + prettier-linter-helpers "^1.0.0" + +eslint-plugin-unused-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz" + integrity sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A== + dependencies: + eslint-rule-composer "^0.3.0" + +eslint-rule-composer@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz" + integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== -eslint-scope@^5.0.0, eslint-scope@^5.1.1: +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" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.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" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + esrecurse "^4.3.0" + estraverse "^5.2.0" -eslint@^7.9.0: - version "7.20.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.20.0.tgz#db07c4ca4eda2e2316e7aa57ac7fc91ec550bdc7" - integrity sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.3.0" - ajv "^6.10.0" +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.39.0: + version "8.55.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz" + integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.55.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" - file-entry-cache "^6.0.0" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.20" - minimatch "^3.0.4" + lodash.merge "^4.6.2" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.4" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" -estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -events@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" - integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== dependencies: - homedir-polyfill "^1.0.1" + d "1" + es5-ext "~0.10.14" -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" +events@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^8.0.1" + human-signals "^5.0.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" + +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" + type "^2.7.2" -extend@^3.0.0, extend@~3.0.2: +extend@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1, fast-glob@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" + glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" + micromatch "^4.0.4" fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" - integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" fd-slicer@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== dependencies: pend "~1.2.0" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -file-entry-cache@^6.0.0: +file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" file-js@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/file-js/-/file-js-0.3.0.tgz#fab46bf782346c9294499f1f0d2ad07d838f25d1" - integrity sha1-+rRr94I0bJKUSZ8fDSrQfYOPJdE= + resolved "https://registry.npmjs.org/file-js/-/file-js-0.3.0.tgz" + integrity sha512-nZlX1pxpV6Mt8BghM3Z150bpsCT1zqil97UryusstZLSs9caYAe0Wph2UKPC3awfM2Dq4ri1Sv99KuK4EIImlA== dependencies: bluebird "^3.4.7" minimatch "^3.0.3" proper-lockfile "^1.2.0" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz" + integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== + +file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz" + integrity sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ== + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== -filehound@^1.17.3: - version "1.17.4" - resolved "https://registry.yarnpkg.com/filehound/-/filehound-1.17.4.tgz#3f5b76c5b3edc1080311ba802e1ad43179e4291e" - integrity sha512-A74hiTADH20bpFbXBNyKtpqN4Guffa+ROmdGJWNnuCRhaD45UVSVoI6McLcpHYmuaOERrzD3gMV3v9VZq/SHeA== +filehound@^1.17.6: + version "1.17.6" + resolved "https://registry.npmjs.org/filehound/-/filehound-1.17.6.tgz" + integrity sha512-5q4zjFkI8W2zLmvbvyvI//K882IpEj6sMNXPUQlk5H6W4Wh3OSSylEAIEmMLELP9G7ileYjTKPXOn0YzzS55Lg== dependencies: - bluebird "^3.5.1" + bluebird "^3.7.2" file-js "0.3.0" - lodash "^4.17.10" - minimatch "^3.0.4" - moment "^2.22.1" + lodash "^4.17.21" + minimatch "^5.0.0" + moment "^2.29.1" unit-compare "^1.0.1" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== +find-up@5.0.0, find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - locate-path "^3.0.0" + locate-path "^6.0.0" + path-exists "^4.0.0" find-up@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" path-exists "^4.0.0" -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" - integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: - map-cache "^0.2.2" + is-callable "^1.1.3" -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" + cross-spawn "^7.0.0" + signal-exit "^4.0.1" -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== +fqbn@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fqbn/-/fqbn-1.0.3.tgz#2efc5f7b192a3ef0d6604929de943ba17deda826" + integrity sha512-4uQvoBiyNpOKiAgbtA7mDjpMWhkRej9FIgHxwof0y03mX57Op7hCiaV5goS39eTrnFDB+VfPYIzrkXShoTXQzQ== dependencies: - minipass "^3.0.0" + ardunno-cli "^0.1.7" + clone "^2.1.2" + deep-equal "^2.2.3" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -get-caller-file@^2.0.1: +get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz" + integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== dependencies: - assert-plus "^1.0.0" + object-assign "^4.0.1" + pinkie-promise "^2.0.0" -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + +get-value@^3.0.0, get-value@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz" + integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" + isobject "^3.0.1" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== +glob-parent@^6.0.1, glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-promise@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz" + integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== + dependencies: + "@types/glob" "^7.1.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -2062,1569 +1974,1331 @@ glob@7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.6, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^10.3.10, glob@^10.3.7: + version "10.3.10" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^7.0.6, glob@^7.1.3, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" + type-fest "^0.20.2" -globby@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +globby@^13.1.1: + version "13.2.2" + resolved "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz" + integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.3.0" + ignore "^5.2.4" + merge2 "^1.4.1" + slash "^4.0.0" -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= +graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-bigints@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0, has-symbols@^1.0.1: +has-property-descriptors@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" + get-intrinsic "^1.2.2" -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-values@^1.0.0: +has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" + has-symbols "^1.0.2" -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +has-value@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/has-value/-/has-value-2.0.2.tgz" + integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA== dependencies: - function-bind "^1.1.1" + get-value "^3.0.0" + has-values "^2.0.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== +has-values@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/has-values/-/has-values-2.0.1.tgz" + integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w== dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" + kind-of "^6.0.2" -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" + function-bind "^1.1.2" -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" +he@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== +hosted-git-info@^4.0.2: + version "4.1.0" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: - parse-passwd "^1.0.0" - -htmlparser2@^3.9.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" + lru-cache "^6.0.0" -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== +htmlparser2@^8.0.1: + version "8.0.2" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== dependencies: - agent-base "4" - debug "3.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + entities "^4.4.0" http-proxy-agent@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" agent-base "6" debug "4" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -https-proxy-agent@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" debug "4" -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.0" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz" + integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -ini@^1.3.4, ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +internal-slot@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== + dependencies: + get-intrinsic "^1.2.2" + hasown "^2.0.0" + side-channel "^1.0.4" -interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: - kind-of "^3.0.2" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: - kind-of "^6.0.0" + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" - integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: - binary-extensions "^1.0.0" + has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" - integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: - kind-of "^6.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-date-object@^1.0.1, is-date-object@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" +is-callable@^1.1.3: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + hasown "^2.0.0" -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== +is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: - is-plain-object "^2.0.4" + has-tostringtag "^1.0.0" -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" -is-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" - integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== - -is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== -is-number-object@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz" + integrity sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ== -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: - kind-of "^3.0.2" + has-tostringtag "^1.0.0" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== +is-primitive@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz" + integrity sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w== + +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: - has-symbols "^1.0.1" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-set@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" - integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== -is-string@^1.0.4, is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: - has-symbols "^1.0.1" + has-tostringtag "^1.0.0" -is-typed-array@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d" - integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== +is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - available-typed-arrays "^1.0.0" - es-abstract "^1.17.4" - foreach "^2.0.5" - has-symbols "^1.0.1" + has-symbols "^1.0.2" -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-typed-array@^1.1.10: + version "1.1.12" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== is-weakmap@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== is-weakset@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" - integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" isarray@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^3.0.0, isobject@^3.0.1: +isobject@^3.0.1, isobject@^4.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== +js-yaml@4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: - argparse "^1.0.7" - esprima "^4.0.0" + argparse "^2.0.1" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-to-typescript@^13.1.1: + version "13.1.1" + resolved "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-13.1.1.tgz" + integrity sha512-F3CYhtA7F3yPbb8vF7sFchk/2dnr1/yTKf8RcvoNpjnh67ZS/ZMH1ElLt5KHAtf2/bymiejLQQszszPWEeTdSw== + dependencies: + "@bcherny/json-schema-ref-parser" "10.0.5-fork" + "@types/json-schema" "^7.0.11" + "@types/lodash" "^4.14.182" + "@types/prettier" "^2.6.1" + cli-color "^2.0.2" + get-stdin "^8.0.0" + glob "^7.1.6" + glob-promise "^4.2.2" + is-glob "^4.0.3" + lodash "^4.17.21" + minimist "^1.2.6" + mkdirp "^1.0.4" + mz "^2.7.0" + prettier "^2.6.2" json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" +jsonc-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - minimist "^1.2.5" + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= +jszip@^3.10.1: + version "3.10.1" + resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= +keytar@^7.7.0: + version "7.9.0" + resolved "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz" + integrity sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ== dependencies: - is-buffer "^1.1.5" + node-addon-api "^4.3.0" + prebuild-install "^7.0.1" -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + json-buffer "3.0.1" -kind-of@^6.0.0, kind-of@^6.0.2: +kind-of@^6.0.2: version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== leven@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" type-check "~0.4.0" -linkify-it@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" - integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== dependencies: - uc.micro "^1.0.1" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + immediate "~3.0.5" -loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== +linkify-it@^3.0.1: + version "3.0.3" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" + uc.micro "^1.0.1" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" -lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.15: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.20: +lodash@^4.17.21: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: - yallist "^3.0.2" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +long@^5.0.0: + version "5.2.3" + resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" +"lru-cache@^9.1.1 || ^10.0.0": + version "10.1.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz" + integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== dependencies: - semver "^6.0.0" + es5-ext "~0.10.2" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== dependencies: - object-visit "^1.0.0" + pify "^3.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -markdown-it@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc" - integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg== +map-obj@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-5.0.0.tgz" + integrity sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA== + +markdown-it@^12.3.2: + version "12.3.2" + resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== dependencies: - argparse "^1.0.7" - entities "~2.0.0" - linkify-it "^2.0.0" + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" mdurl "^1.0.1" uc.micro "^1.0.5" -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - mdurl@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + +memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" + braces "^3.0.2" + picomatch "^2.3.1" -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== +mime-types@^2.1.27: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.44.0" + mime-db "1.52.0" mime@^1.3.4: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== dependencies: - minipass "^3.0.0" + brace-expansion "^2.0.1" -minipass-pipeline@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== +minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: - minipass "^3.0.0" + brace-expansion "^1.1.7" -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== +minimatch@^5.0.0: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: - yallist "^4.0.0" + brace-expansion "^2.0.1" -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== +minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: - minipass "^3.0.0" - yallist "^4.0.0" + brace-expansion "^2.0.1" -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.1, mkdirp@^0.5.3: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - minimist "^1.2.5" + minimist "^1.2.6" -mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" - integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== +mkdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + +mocha@^10.2.0: + version "10.2.0" + resolved "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== dependencies: + ansi-colors "4.1.1" browser-stdout "1.3.1" - commander "2.15.1" - debug "3.1.0" - diff "3.5.0" - escape-string-regexp "1.0.5" - glob "7.1.2" - growl "1.10.5" - he "1.1.1" - minimatch "3.0.4" - mkdirp "0.5.1" - supports-color "5.4.0" - -moment@^2.14.1, moment@^2.22.1: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2, ms@^2.1.1: + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +moment@^2.14.1, moment@^2.29.1: + version "2.29.4" + resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + +ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + mute-stream@~0.0.4: version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.12.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -neo-async@^2.5.0, neo-async@^2.6.1: +neo-async@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= +nice-grpc-common@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/nice-grpc-common/-/nice-grpc-common-2.0.2.tgz" + integrity sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ== + dependencies: + ts-error "^1.0.6" + +node-abi@^3.3.0: + version "3.52.0" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz" + integrity sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ== dependencies: - remove-trailing-separator "^1.0.1" + semver "^7.3.5" + +node-addon-api@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz" + integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== dependencies: - boolbase "~1.0.0" + path-key "^4.0.0" -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" -object-assign@^4.1.1: +object-assign@^4.0.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.7.0, object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== -object-is@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.5" -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= +object.assign@^4.1.4: + version "4.1.5" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: - isobject "^3.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -os@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/os/-/os-0.1.1.tgz#208845e89e193ad4d971474b93947736a56d13f3" - integrity sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M= - -osenv@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-limit "^2.0.0" + yocto-queue "^0.1.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: - aggregate-error "^3.0.0" + p-limit "^3.0.2" p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.5: +pako@~1.0.2: version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== +parse-author@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz" + integrity sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw== dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" + author-regex "^1.0.0" -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" parse-semver@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz#9a4afd6df063dc4826f93fba4a99cf223f666cb8" - integrity sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg= + resolved "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz" + integrity sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ== dependencies: semver "^5.1.0" -parse5@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" - integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== dependencies: - "@types/node" "*" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + domhandler "^5.0.2" + parse5 "^7.0.0" -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-type@^4.0.0: +path-key@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== -path@^0.12.7: - version "0.12.7" - resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" - integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8= - dependencies: - process "^0.11.1" - util "^0.10.3" +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -pbkdf2@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pend@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -pkg-dir@^3.0.0: +pify@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== dependencies: - find-up "^3.0.0" + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== -pkg-dir@^4.1.0: +pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +prebuild-install@^7.0.1: + version "7.1.1" + resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" -process@^0.11.1, process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +prettier-package-json@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/prettier-package-json/-/prettier-package-json-2.8.0.tgz" + integrity sha512-WxtodH/wWavfw3MR7yK/GrS4pASEQ+iSTkdtSxPJWvqzG55ir5nvbLt9rw5AOiEcqqPCRM92WCtR1rk3TG3JSQ== + dependencies: + "@types/parse-author" "^2.0.0" + commander "^4.0.1" + cosmiconfig "^7.0.0" + fs-extra "^10.0.0" + glob "^7.1.6" + minimatch "^3.0.4" + parse-author "^2.0.0" + sort-object-keys "^1.1.3" + sort-order "^1.0.1" -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +prettier@^2.3.1, prettier@^2.6.2: + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== proper-lockfile@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-1.2.0.tgz#ceff5dd89d3e5f10fb75e1e8e76bc75801a59c34" - integrity sha1-zv9d2J0+XxD7deHo52vHWAGlnDQ= + resolved "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz" + integrity sha512-YNjxtCoY3A+lohlLXWCYrHDhUdfU3MMnuC+ADhloDvJo586LKW23dPrjxGvRGuus05Amcf0cQy6vrjjtbJhWpw== dependencies: err-code "^1.0.0" extend "^3.0.0" graceful-fs "^4.1.2" retry "^0.10.0" -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" +protobufjs@^7.2.3: + version "7.2.5" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz" + integrity sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" pump@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +qs@^6.9.1: + version "6.11.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +quick-lru@^6.1.1: + version "6.1.2" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.2.tgz" + integrity sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" read@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== +readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -3634,946 +3308,690 @@ read@^1.0.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== +readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" + resolve "^1.9.0" -regexp.prototype.flags@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexpp@^3.0.0, regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request@^2.69.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: +resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +resolve@^1.9.0: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" retry@^0.10.0: version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= + resolved "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz" + integrity sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== +rimraf@^5.0.5: + version "5.0.5" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz" + integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" + glob "^10.3.7" -run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - aproba "^1.1.1" + queue-microtask "^1.2.2" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" +sax@>=0.6.0: + version "1.3.0" + resolved "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== -safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== +schema-utils@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" -schema-utils@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== +seek-bzip@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz" + integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" + commander "^2.8.1" -semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^5.1.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.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== +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1, semver@^7.3.2: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== +semver@^7.3.5, semver@^7.3.7, semver@^7.5.2: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" -set-value@^2.0.0, set-value@^2.0.1: +set-function-name@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== +set-value@^4.0.2: + version "4.1.0" + resolved "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz" + integrity sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + is-plain-object "^2.0.4" + is-primitive "^3.0.1" -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - shebang-regex "^1.0.0" + kind-of "^6.0.2" shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -side-channel@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3" - integrity sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^4.0.1, signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== dependencies: - es-abstract "^1.18.0-next.0" - object-inspect "^1.8.0" + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^4.0.0: +slash@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +sort-object-keys@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz" + integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" +sort-order@^1.0.1: + version "1.1.2" + resolved "https://registry.npmjs.org/sort-order/-/sort-order-1.1.2.tgz" + integrity sha512-Q8tOrwB1TSv9fNUXym9st3TZJODtmcOIi2JWCkVNQPrRg17KPwlpwweTEb7pMwUIFMTAgx2/JsQQXEPFzYQj3A== -source-map-support@^0.5.0, source-map-support@~0.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" - integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== - dependencies: - minipass "^3.1.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + internal-slot "^1.0.4" -string-width@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.1.tgz#1933ce1f470973d224368009bd1316cad81d5f4f" - integrity sha512-LL0OLyN6AnfV9xqGQpDBwedT2Rt63737LxvsRxbcwpa2aIeynBApG2Sm//F3TaLHIR1aJBN52DWklc06b94o5Q== +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" + strip-ansi "^6.0.1" -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - safe-buffer "~5.2.0" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" -string_decoder@~1.1.1: +string_decoder@^1.1.1, string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^4.1.0" + ansi-regex "^5.0.1" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== dependencies: - ansi-regex "^5.0.0" + is-natural-number "^4.0.1" + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +supports-color@8.1.1, supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - has-flag "^3.0.0" + has-flag "^4.0.0" supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" -table@^6.0.4: - version "6.0.7" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" - integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== dependencies: - ajv "^7.0.2" - lodash "^4.17.20" - slice-ansi "^4.0.0" - string-width "^4.2.0" + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tar@^6.0.2: - version "6.0.5" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" - integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== +temp@^0.9.4: + version "0.9.4" + resolved "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz" + integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA== dependencies: + mkdirp "^0.5.1" + rimraf "~2.6.2" + +terser-webpack-plugin@^5.3.7: + version "5.3.9" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz" + integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.17" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.16.8" + +terser@^5.16.8: + version "5.26.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz" + integrity sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + source-map-support "~0.5.20" text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== dependencies: - setimmediate "^1.0.4" + thenify ">= 3.1.0 < 4" -tmp@0.0.29: - version "0.0.29" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" - integrity sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA= +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: - os-tmpdir "~1.0.1" + any-promise "^1.0.0" -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= +through@^2.3.8: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== dependencies: - kind-of "^3.0.2" + es5-ext "~0.10.46" + next-tick "1" -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= +tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" + rimraf "^3.0.0" + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" +ts-error@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/ts-error/-/ts-error-1.0.6.tgz" + integrity sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA== + +ts-node@^10.9.1: + version "10.9.2" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" tslib@^1.8.1: version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - -tslib@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tslib@^2.4.0: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tsutils@^3.17.1: - version "3.20.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698" - integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg== +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" -tunnel@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.4.tgz#2d3785a158c174c9a16dc2c046ec5fc5f1742213" - integrity sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM= - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +tunnel@0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" + integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -typed-rest-client@1.2.0: +type-fest@^4.3.2: + version "4.8.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz" + integrity sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw== + +type@^1.0.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.2.0.tgz#723085d203f38d7d147271e5ed3a75488eb44a02" - integrity sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw== - dependencies: - tunnel "0.0.4" - underscore "1.8.3" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +type@^2.7.2: + version "2.7.2" + resolved "https://registry.npmjs.org/type/-/type-2.7.2.tgz" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typed-rest-client@^1.8.4: + version "1.8.11" + resolved "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz" + integrity sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA== + dependencies: + qs "^6.9.1" + tunnel "0.0.6" + underscore "^1.12.1" -typescript@^3.8.3: - version "3.9.7" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" - integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== +typescript@^4.9.3: + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== -underscore@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" - integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== +unbzip2-stream@^1.0.9: + version "1.4.3" + resolved "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" + buffer "^5.2.1" + through "^2.3.8" -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" +underscore@^1.12.1: + version "1.13.6" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz" + integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== unit-compare@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/unit-compare/-/unit-compare-1.0.1.tgz#0c7459f0e5bf53637ea873ca3cee18de2eeca386" - integrity sha1-DHRZ8OW/U2N+qHPKPO4Y3i7so4Y= + resolved "https://registry.npmjs.org/unit-compare/-/unit-compare-1.0.1.tgz" + integrity sha512-AeLMQr8gcen2WOTwV0Gvi1nKKbY4Mms79MoltZ6hrZV/VANgE/YQly3jtWZJA/fa9m4ajhynq3XMqh5rOyZclA== dependencies: moment "^2.14.1" -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unset-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-2.0.1.tgz" + integrity sha512-2hvrBfjUE00PkqN+q0XP6yRAOGrR06uSiUoIQGZkc7GxvQ9H7v8quUPNtZjMg4uux69i8HWpIjLPUKwCuRGyNg== dependencies: - has-value "^0.3.1" - isobject "^3.0.0" + has-value "^2.0.2" + isobject "^4.0.0" -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-join@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-1.1.0.tgz#741c6c2f4596c4830d6718460920d0c92202dc78" - integrity sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg= - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +url-join@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz" + integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.10.3: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^2.0.3: - version "2.2.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" - integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== - -v8-compile-cache@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" - integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -vsce@^1.66.0: - version "1.78.0" - resolved "https://registry.yarnpkg.com/vsce/-/vsce-1.78.0.tgz#a0edad3c508df13e715a5b58d204baf4c1b0384c" - integrity sha512-4CIUTwhcU+RlQDW+GNKO6AhQ7aZJCzDA9A9r7j262LTd+NoCowE/bRV2pCII9peXMowIumTtk+Sz/pQ5Ng0VJQ== - dependencies: - azure-devops-node-api "^7.2.0" - chalk "^2.4.2" - cheerio "^1.0.0-rc.1" - commander "^2.8.1" - denodeify "^1.2.1" - glob "^7.0.6" - leven "^3.1.0" - lodash "^4.17.15" - markdown-it "^10.0.0" - mime "^1.3.4" - minimatch "^3.0.3" - osenv "^0.1.3" - parse-semver "^1.1.1" - read "^1.0.7" - semver "^5.1.0" - tmp "0.0.29" - typed-rest-client "1.2.0" - url-join "^1.1.0" - yauzl "^2.3.1" - yazl "^2.2.2" +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== vscode-jsonrpc@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz#9bab9c330d89f43fc8c1e8702b5c36e058a01794" + resolved "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz" integrity sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A== vscode-languageclient@^6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-6.1.3.tgz#c979c5bb5855714a0307e998c18ca827c1b3953a" - integrity sha512-YciJxk08iU5LmWu7j5dUt9/1OLjokKET6rME3cI4BRpiF6HZlusm2ZwPt0MYJ0lV5y43sZsQHhyon2xBg4ZJVA== + version "6.1.4" + resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-6.1.4.tgz#54aa8b1559ae2e0499cb6ab746cc2662fb6ecc0f" + integrity sha512-EUOU+bJu6axmt0RFNo3nrglQLPXMfanbYViJee3Fbn2VuQoX0ZOI4uTYhSRvYLP2vfwTP/juV62P/mksCdTZMA== dependencies: semver "^6.3.0" - vscode-languageserver-protocol "^3.15.3" + vscode-languageserver-protocol "3.15.3" -vscode-languageserver-protocol@^3.15.3: +vscode-languageserver-protocol@3.15.3: version "3.15.3" resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz#3fa9a0702d742cf7883cb6182a6212fcd0a1d8bb" integrity sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw== @@ -4583,130 +4001,100 @@ vscode-languageserver-protocol@^3.15.3: vscode-languageserver-types@3.15.1: version "3.15.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" + resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz" integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== -vscode-test@^0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/vscode-test/-/vscode-test-0.4.3.tgz#461ebf25fc4bc93d77d982aed556658a2e2b90b8" - integrity sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w== - dependencies: - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - -vscode@^1.1.33: - version "1.1.37" - resolved "https://registry.yarnpkg.com/vscode/-/vscode-1.1.37.tgz#c2a770bee4bb3fff765e2b72c7bcc813b8a6bb0a" - integrity sha512-vJNj6IlN7IJPdMavlQa1KoFB3Ihn06q1AiN3ZFI/HfzPNzbKZWPPuiU+XkpNOfGU5k15m4r80nxNPlM7wcc0wg== - dependencies: - glob "^7.1.2" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - mocha "^5.2.0" - semver "^5.4.1" - source-map-support "^0.5.0" - vscode-test "^0.4.1" - -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" - integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: + glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.0" - -web-request@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/web-request/-/web-request-1.0.7.tgz#b70c42b3cd455779e82db6886253b2491f2bd569" - integrity sha1-twxCs81FV3noLbaIYlOySR8r1Wk= - dependencies: - request "^2.69.0" - -webpack-cli@^3.3.6: - version "3.3.12" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" - integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== - dependencies: - chalk "^2.4.2" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.1" - findup-sync "^3.0.0" - global-modules "^2.0.0" - import-local "^2.0.0" - interpret "^1.4.0" - loader-utils "^1.4.0" - supports-color "^6.1.0" - v8-compile-cache "^2.1.1" - yargs "^13.3.2" - -webpack-permissions-plugin@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/webpack-permissions-plugin/-/webpack-permissions-plugin-1.0.7.tgz#644e062ea97a0748b29f1c5521973d88c5214fb8" - integrity sha512-jQqWS0wXjGHYm32lMnX6G7DqqoGvruSz7fuHmTUG0C1nni5VnT4jkaqBvv/B2LCpBbdI53BEHFcYkbLm3ibPjA== - dependencies: - filehound "^1.17.3" -webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.39.1: - version "4.44.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21" - integrity sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" +webpack-cli@^4.7.0: + version "4.10.0" + resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz" + integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.2.0" + "@webpack-cli/info" "^1.5.0" + "@webpack-cli/serve" "^1.7.0" + colorette "^2.0.14" + commander "^7.0.0" + cross-spawn "^7.0.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3: + version "5.10.0" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +webpack-permissions-plugin@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/webpack-permissions-plugin/-/webpack-permissions-plugin-1.0.9.tgz" + integrity sha512-ZMQP/4OB8TW+xGLlgnxcTCCnq5yskCLD8ojQQkllgCRchhOcO24lGVojcy27sKUWObFSOm2FRyY4cd0+rbpx9A== + dependencies: + filehound "^1.17.6" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.88.2: + version "5.89.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz" + integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -which-boxed-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1" - integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ== + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.7" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: - is-bigint "^1.0.0" - is-boolean-object "^1.0.0" - is-number-object "^1.0.3" - is-string "^1.0.4" - is-symbol "^1.0.2" + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" which-collection@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== dependencies: is-map "^2.0.1" @@ -4714,118 +4102,139 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which-typed-array@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2" - integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== - dependencies: - available-typed-arrays "^1.0.2" - es-abstract "^1.17.5" - foreach "^2.0.5" - function-bind "^1.1.1" - has-symbols "^1.0.1" - is-typed-array "^1.1.3" - -which@^1.2.14, which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +which-typed-array@^1.1.11, which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: - isexe "^2.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - errno "~0.1.7" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xml2js@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz" + integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" +yargs-parser@20.2.4, yargs-parser@^20.2.2: + version "20.2.4" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yauzl@^2.3.1: + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yauzl@^2.3.1, yauzl@^2.4.2: version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" yazl@^2.2.2: version "2.5.1" - resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" + resolved "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz" integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== dependencies: buffer-crc32 "~0.2.3" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 01710fc22282bd7d8aba4466358ab4cee8e74b00 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Wed, 13 Dec 2023 11:56:48 +0100 Subject: [PATCH 2/2] chore: update VSIX in Git Signed-off-by: Akos Kitta --- .../vscode-arduino-tools-0.1.0-beta.1.vsix | Bin 111792 -> 0 bytes .../vscode-arduino-tools-0.1.0.vsix | Bin 0 -> 113290 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 build-artifacts/vscode-arduino-tools-0.1.0-beta.1.vsix create mode 100644 build-artifacts/vscode-arduino-tools-0.1.0.vsix diff --git a/build-artifacts/vscode-arduino-tools-0.1.0-beta.1.vsix b/build-artifacts/vscode-arduino-tools-0.1.0-beta.1.vsix deleted file mode 100644 index 310bf6e8047c6cde6772de3a0dab7f0fdaabafda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111792 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 z 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 diff --git a/build-artifacts/vscode-arduino-tools-0.1.0.vsix b/build-artifacts/vscode-arduino-tools-0.1.0.vsix new file mode 100644 index 0000000000000000000000000000000000000000..996f13248d7193f5fc324c20a6b0482ad15873fd GIT binary patch literal 113290 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

!<>UlM}wXtlh0?Zt|Psg^u`3 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 literal 0 HcmV?d00001