diff --git a/.azure-pipelines/publish-nightly.yml b/.azure-pipelines/publish-nightly.yml index 3630e375..e6efeeed 100644 --- a/.azure-pipelines/publish-nightly.yml +++ b/.azure-pipelines/publish-nightly.yml @@ -23,6 +23,16 @@ resources: ref: main endpoint: Monaco +parameters: + - name: vscodeRef + displayName: The VS Code commit id. When left empty, the main branched is used. + type: string + default: '' + - name: prereleaseVersion + displayName: The prerelease version. When left empty, dev-${today} is used. + type: string + default: '' + extends: template: azure-pipelines/npm-package/pipeline.yml@templates parameters: @@ -34,21 +44,30 @@ extends: - script: npm ci displayName: Install NPM dependencies - - script: yarn ts-node ./scripts/ci/prepare-monaco-editor-core nightly + - script: yarn ts-node ./scripts/ci/monaco-editor-core-prepare nightly + env: + VSCODE_REF: ${{ parameters.vscodeRef }} + PRERELEASE_VERSION: ${{ parameters.prereleaseVersion }} + retryCountOnTaskFailure: 5 displayName: Setup, Build & Test monaco-editor-core tag: next + ghCreateTag: false publishPackage: true publishRequiresApproval: false - name: monaco-editor - workingDirectory: $(Build.SourcesDirectory)/release + workingDirectory: $(Build.SourcesDirectory)/out/monaco-editor testPlatforms: [] buildSteps: - script: npm ci displayName: Install NPM dependencies - - script: yarn ts-node ./scripts/ci/prepare-monaco-editor nightly + - script: yarn ts-node ./scripts/ci/monaco-editor-prepare nightly + env: + VSCODE_REF: ${{ parameters.vscodeRef }} + PRERELEASE_VERSION: ${{ parameters.prereleaseVersion }} + retryCountOnTaskFailure: 5 displayName: Setup, Build & Test monaco-editor tag: next diff --git a/.azure-pipelines/publish-stable.yml b/.azure-pipelines/publish-stable.yml index 2190aa47..d8cb4813 100644 --- a/.azure-pipelines/publish-stable.yml +++ b/.azure-pipelines/publish-stable.yml @@ -24,6 +24,10 @@ parameters: displayName: 🚀 Publish Editor Core type: boolean default: false + - name: publishWebpackPlugin + displayName: 🚀 Publish Webpack Plugin + type: boolean + default: false extends: template: azure-pipelines/npm-package/pipeline.yml@templates @@ -36,23 +40,39 @@ extends: - script: npm ci displayName: Install NPM dependencies - - script: yarn ts-node ./scripts/ci/prepare-monaco-editor-core stable + - script: yarn ts-node ./scripts/ci/monaco-editor-core-prepare stable displayName: Setup, Build & Test monaco-editor-core tag: latest + ghCreateTag: false publishPackage: ${{ parameters.publishMonacoEditorCore }} publishRequiresApproval: false - name: monaco-editor - workingDirectory: $(Build.SourcesDirectory)/release + workingDirectory: $(Build.SourcesDirectory)/out/monaco-editor testPlatforms: [] buildSteps: - script: npm ci displayName: Install NPM dependencies - - script: yarn ts-node ./scripts/ci/prepare-monaco-editor stable + - script: yarn ts-node ./scripts/ci/monaco-editor-prepare stable displayName: Setup, Build & Test monaco-editor tag: latest publishPackage: ${{ parameters.publishMonacoEditor }} publishRequiresApproval: false + + - name: monaco-editor-webpack-plugin + workingDirectory: $(Build.SourcesDirectory)/webpack-plugin + testPlatforms: [] + buildSteps: + - script: npm ci + displayName: Install NPM dependencies + + - script: npm run compile + displayName: Build plugin + + tag: latest + ghCreateTag: false + publishPackage: ${{ parameters.publishWebpackPlugin }} + publishRequiresApproval: false diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..fe946b2a --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,8 @@ +{ + "image": "mcr.microsoft.com/devcontainers/typescript-node", + "customizations": { + "vscode": { + "extensions": ["ms-vscode.js-debug-nightly"] + } + } +} diff --git a/.github/ISSUE_TEMPLATE/1_bug_report.yaml b/.github/ISSUE_TEMPLATE/1_bug_report.yaml index b5b1225f..fbd09bf3 100644 --- a/.github/ISSUE_TEMPLATE/1_bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/1_bug_report.yaml @@ -21,11 +21,17 @@ body: description: Can you reproduce the bug in [the monaco editor playground](https://microsoft.github.io/monaco-editor/playground.html)? A minimal reproducible example will make it significantly easier for us to get this bug fixed. options: - label: Not reproducible in [the monaco editor playground](https://microsoft.github.io/monaco-editor/playground.html) + - type: textarea + id: playgroundLink + attributes: + label: Monaco Editor Playground Link + description: Please share the link to the [monaco editor playground](https://microsoft.github.io/monaco-editor/playground.html) after you entered your example. In case of regressions, please also provide the first broken version. + - type: textarea id: playgroundSourceCode attributes: label: Monaco Editor Playground Code - description: Please provide the code to reproduce in the [monaco editor playground](https://microsoft.github.io/monaco-editor/playground.html) + description: Please provide the code from the monaco editor playground example. render: typescript - type: textarea id: steps diff --git a/.github/ISSUE_TEMPLATE/2_feature_request.yaml b/.github/ISSUE_TEMPLATE/2_feature_request.yaml index 39e2e64a..09d8eccf 100644 --- a/.github/ISSUE_TEMPLATE/2_feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/2_feature_request.yaml @@ -23,3 +23,16 @@ body: attributes: label: Description description: Please describe your feature request. + + - type: textarea + id: relevantCodePlaygroundLink + attributes: + label: Monaco Editor Playground Link + description: If applicable, please share the link to a relevant [monaco editor playground sample](https://microsoft.github.io/monaco-editor/playground.html) + + - type: textarea + id: releveantCode + attributes: + label: Monaco Editor Playground Code + description: If applicable, please share the code from the monaco editor playground sample. + render: typescript diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index abeacf57..c315421d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: uses: actions/cache@v2 with: path: '**/node_modules' - key: ${{ runner.os }}-cacheNodeModules2-${{ hashFiles('**/package-lock.json') }} + key: ${{ runner.os }}-cacheNodeModules2-${{ hashFiles('**/package-lock.json', '**/package.json') }} restore-keys: ${{ runner.os }}-cacheNodeModules2- - name: execute `npm ci` (1) @@ -39,7 +39,7 @@ jobs: run: npm run prettier-check - name: Build - run: npm run release + run: npm run build-monaco-editor - name: Run unit tests run: npm test @@ -62,5 +62,14 @@ jobs: - name: Run smoke test run: npm run smoketest + - name: Install website node modules + working-directory: website + run: yarn install --frozen-lockfile + - name: Build website - run: npm run build-website + working-directory: website + run: yarn run build + + - name: Test website + working-directory: website + run: yarn test diff --git a/.github/workflows/needs-more-info-closer.yml b/.github/workflows/info-needed-closer.yml similarity index 86% rename from .github/workflows/needs-more-info-closer.yml rename to .github/workflows/info-needed-closer.yml index 88de1919..ce6836c3 100644 --- a/.github/workflows/needs-more-info-closer.yml +++ b/.github/workflows/info-needed-closer.yml @@ -1,4 +1,4 @@ -name: Needs More Info Closer +name: Info Needed Closer on: schedule: - cron: 20 12 * * * # 5:20am Redmond @@ -18,11 +18,10 @@ jobs: ref: stable - name: Install Actions run: npm install --production --prefix ./actions - - name: Run Needs More Info Closer + - name: Run Info Needed Closer uses: ./actions/needs-more-info-closer with: - appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}} - label: needs more info + label: info-needed closeDays: 7 additionalTeam: 'spahnke|rcjsuen' closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!" diff --git a/.github/workflows/publish-website.sh b/.github/workflows/publish-website.sh deleted file mode 100755 index 41272500..00000000 --- a/.github/workflows/publish-website.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash - -COMMITTER_USER_NAME="$(git log --format='%an' -1)" -COMMITTER_EMAIL="$(git log --format='%ae' -1)" - -cd ../monaco-editor-website -git init -git config user.name "${COMMITTER_USER_NAME}" -git config user.email "${COMMITTER_EMAIL}" -git remote add origin "https://x-access-token:${GITHUB_TOKEN}@github.com/microsoft/monaco-editor.git" -git checkout -b gh-pages -git add . -git commit -m "Publish website" -git push origin gh-pages --force diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index ce5472ab..49857512 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -2,38 +2,67 @@ name: Publish Website on: push: - branches: - - main + tags: + - 'v*' # enable users to manually trigger with workflow_dispatch workflow_dispatch: {} +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: 'pages' + cancel-in-progress: false + jobs: - publish-website: - name: Publish Website + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - - uses: actions/setup-node@v2 + - name: Checkout + uses: actions/checkout@v3 + - uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561 # pin@v2 with: node-version: 16 - - name: Cache node modules id: cacheNodeModules uses: actions/cache@v2 with: path: '**/node_modules' - key: ${{ runner.os }}-cacheNodeModules-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-cacheNodeModules- - - - name: Install node modules (1) + key: ${{ runner.os }}-cacheNodeModules2-${{ hashFiles('**/package-lock.json') }} + restore-keys: ${{ runner.os }}-cacheNodeModules2- + - name: execute `npm ci` (1) if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }} run: npm ci + - name: Build + run: npm run build-monaco-editor + + - name: Install website node modules + working-directory: website + run: yarn install --frozen-lockfile + + - name: Install most recent version of monaco-editor + working-directory: website + run: yarn add monaco-editor - name: Build website - run: npm run build-website + working-directory: website + run: yarn run build + - name: Setup Pages + uses: actions/configure-pages@v3 + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + # Upload entire repository + path: './website/dist' - name: Deploy to GitHub Pages - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ./.github/workflows/publish-website.sh + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.gitignore b/.gitignore index eeb18620..678fdef0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ **/node_modules/ -**/out/ -**/release/ **/dependencies/ /test/manual/generated/** /test/smoke/vite/dist/** /test/smoke/parcel/dist/** /test/smoke/parcel/.cache/** +**/dist/ +**/out/ diff --git a/.prettierignore b/.prettierignore index f5c0ba4b..19e9315c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,6 @@ **/node_modules/ +**/dist/ **/out/ -**/release/ /samples/browser-esm-parcel/.parcel-cache/ /samples/browser-esm-parcel/dist/ /samples/browser-esm-vite-react/dist/**/*.js @@ -13,3 +13,5 @@ /test/manual/generated/ /website/lib/ /website/typedoc/monaco.d.ts +/test/smoke/vite/dist +/test/smoke/parcel/dist diff --git a/.vscode/launch.json b/.vscode/launch.json index fdfdf5f9..44c09c98 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,7 +5,38 @@ "version": "0.2.0", "configurations": [ { - "type": "pwa-node", + "name": "Monaco Editor Playground", + "type": "chrome", + "request": "launch", + "url": "https://microsoft.github.io/monaco-editor/playground.html?sourceLanguages=http%3A%2F%2Flocalhost%3A5002%2Fout%2Flanguages%2Famd-tsc", + "preLaunchTask": "Launch Http Server", + "presentation": { + "group": "monaco", + "order": 1 + } + }, + { + "name": "Website", + "type": "chrome", + "request": "launch", + "url": "http://localhost:8080/" + }, + { + // Clone VS Code and make sure the task "Launch Http Server" runs. + // Then the editor is build from sources. + // We recommend to use the workspace feature for this. + "name": "Monaco Editor Playground (Load From VS Code Http Server)", + "type": "chrome", + "request": "launch", + "url": "https://microsoft.github.io/monaco-editor/playground.html?sourceLanguages=http%3A%2F%2Flocalhost%3A5002%2Fout%2Flanguages%2Famd-tsc&source=http%3A%2F%2Flocalhost%3A5001%2Fout%2Fvs", + "preLaunchTask": "Launch Http Server", + "presentation": { + "group": "monaco", + "order": 1 + } + }, + { + "type": "node", "request": "launch", "name": "Monaco Languages Unit Tests", "skipFiles": ["/**"], @@ -14,25 +45,7 @@ "outFiles": ["${workspaceFolder}/**/*.js"] }, { - "type": "pwa-node", - "request": "launch", - "name": "release", - "skipFiles": ["/**"], - "program": "${workspaceFolder}/build/release.js", - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "pwa-node", - "request": "launch", - "name": "website", - "skipFiles": ["/**"], - "program": "${workspaceFolder}/build/website.js", - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "pwa-node", + "type": "node", "request": "launch", "name": "webpack plugin test", "skipFiles": ["/**"], diff --git a/.vscode/settings.json b/.vscode/settings.json index 6794ef5b..176dc5ad 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,7 +6,7 @@ "files.trimTrailingWhitespace": true, "search.exclude": { "**/node_modules": true, - "**/release": true, + "**/dist": true, "**/out": true }, "typescript.tsdk": "./node_modules/typescript/lib", diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..53a9eea0 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,30 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Launch Http Server", + "type": "shell", + "command": "node_modules/.bin/http-server --cors --port 5002 -a 127.0.0.1 -c-1", + "isBackground": true, + "problemMatcher": { + "pattern": { + "regexp": "does not support problems" + }, + "background": { + "activeOnStart": true, + "beginsPattern": "Shutting down http-server (will never match)", + "endsPattern": "Starting up http-server" + } + }, + "dependsOn": ["npm: watch"] + }, + { + "type": "npm", + "script": "watch", + "group": "build", + "problemMatcher": ["$tsc-watch"], + "isBackground": true, + "label": "npm: watch" + } + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 866483e4..f5a2da4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,104 @@ # Monaco Editor Changelog -## [0.35.1] +## [0.40.0] + +- Support for Glyph Margin Widgets +- Removes `getDiffLineInformationForOriginal` and `getDiffLineInformationForModified` from `IDiffEditor` +- `createTrustedTypesPolicy` is optional now +- New option `IModelDecorationOptions.shouldFillLineOnLineBreak` +- New option `EditorOptions.readOnlyMessage`` + +## [0.39.0] + +- New method `Environment.createTrustedTypesPolicy` to override trusted types handling. +- Bugfixes + +Contributions to `monaco-editor`: + +- [@dlitsman (Dmitry Litsman)](https://github.com/dlitsman): Extend the "Rendering Glyphs In The Margin" example to include a transparent color note. [PR #3945](https://github.com/microsoft/monaco-editor/pull/3945) +- [@dneto0 (David Neto)](https://github.com/dneto0): Avoid a hack in the WGSL lexer [PR #3887](https://github.com/microsoft/monaco-editor/pull/3887) +- [@spahnke (Sebastian Pahnke)](https://github.com/spahnke) + - [JS, TS] Add Monarch support for private identifiers [PR #3919](https://github.com/microsoft/monaco-editor/pull/3919) + - [JS] Add static keyword [PR #3922](https://github.com/microsoft/monaco-editor/pull/3922) +- [@titouanmathis (Titouan Mathis)](https://github.com/titouanmathis): [Webpack Plugin] Fix CJS being injected in ESM files [PR #3933](https://github.com/microsoft/monaco-editor/pull/3933) + +## [0.38.0] + +- `diffAlgorithm` values changed: `smart` -> `legacy`, `experimental` -> `advanced` +- New `registerEditorOpener` API +- New property `IViewZone.showInHiddenAreas` to show view zones in hidden areas +- New properties `InlineCompletions.suppressSuggestions` and `InlineCompletions.enableForwardStability` +- Bugfixes + +Contributions to `monaco-editor`: + +- [@dneto0 (David Neto)](https://github.com/dneto0): Add WebGPU Shading Language tokenizer, with tests [PR #3884](https://github.com/microsoft/monaco-editor/pull/3884) +- [@kisstkondoros (Tamas Kiss)](https://github.com/kisstkondoros): Fix reference error in convert method of OutlineAdapter [PR #3924](https://github.com/microsoft/monaco-editor/pull/3924) +- [@tamayika](https://github.com/tamayika): Change moduleResolution to node16 and adopt TS 5.0 [PR #3860](https://github.com/microsoft/monaco-editor/pull/3860) + +## [0.37.1] + +- Fixes Inline Completions feature + +## [0.37.0] + +- New `registerLinkOpener` API +- New `onLanguageEncountered` event for when a language is encountered during tokenization. +- Updated TypeScript to 5.0 +- New required field `canFormatMultipleRanges` on `DocumentRangeFormattingEditProvider` +- Bugfixes + +Contributions to `monaco-editor`: + +- [@danboo (Dan Boorstein)](https://github.com/danboo): add perl module (.pm) extension [PR #3258](https://github.com/microsoft/monaco-editor/pull/3258) +- [@miloush (Jan Kučera)](https://github.com/miloush): Include .xsd and .xslt as an XML extension [PR #3866](https://github.com/microsoft/monaco-editor/pull/3866) +- [@nnnnoel (Noel Kim (김민혁))](https://github.com/nnnnoel): Add CommonJS, ESM extension for TS [PR #3264](https://github.com/microsoft/monaco-editor/pull/3264) +- [@PmcFizz (Fizz)](https://github.com/PmcFizz): opt example [PR #3726](https://github.com/microsoft/monaco-editor/pull/3726) +- [@tamayika](https://github.com/tamayika) + - Fix playground samples type errors and add CI test [PR #3722](https://github.com/microsoft/monaco-editor/pull/3722) + - Add custom keybinding example [PR #3848](https://github.com/microsoft/monaco-editor/pull/3848) +- [@yuri1969 (yuri)](https://github.com/yuri1969): Various YAML improvements [PR #3864](https://github.com/microsoft/monaco-editor/pull/3864) + +## [0.36.1] + +- Marks unneeded dependencies as dev dependencies. + +## [0.36.0] + +- Maintenance release + +## [0.35.0] - Adds sticky scrolling +- Support for custom diff algorithms + +### Breaking Changes + - Renamed the option `enableDropIntoEditor` to `dropIntoEditor` +- Changed `IContentWidgetPosition.range: Range` to `IContentWidgetPosition.secondaryPosition: Position` +- `renderFinalNewline` config: is now of type `'on' | 'off' | 'dimmed'` (was `boolean`). +- `cursorSmoothCaretAnimation` config: is now of type `'off' | 'explicit' | 'on'` (was `boolean`) + +Contributions to `monaco-editor`: + +- [@andrewimcclement](https://github.com/andrewimcclement): Add .props & .targets as XML extensions [PR #3510](https://github.com/microsoft/monaco-editor/pull/3510) +- [@DetachHead](https://github.com/DetachHead): add `satisfies` keyword to typescript [PR #3337](https://github.com/microsoft/monaco-editor/pull/3337) +- [@jeremy-rifkin (Jeremy Rifkin)](https://github.com/jeremy-rifkin): Add AVX 512 types to C++ syntax highlighting [PR #3286](https://github.com/microsoft/monaco-editor/pull/3286) +- [@joecarl (José Carlos)](https://github.com/joecarl): Add setModeConfiguration for monaco.languages.typescript.[typescript|javascript]Defaults [PR #3489](https://github.com/microsoft/monaco-editor/pull/3489) +- [@jonatanklosko (Jonatan Kłosko)](https://github.com/jonatanklosko): Update Elixir tokenizer [PR #3453](https://github.com/microsoft/monaco-editor/pull/3453) +- [@JoyceZhu (Joyce Zhu)](https://github.com/JoyceZhu): Update import path for `browser-esm-webpack-small` [PR #3402](https://github.com/microsoft/monaco-editor/pull/3402) +- [@Jozebel11 (Joseph Hardwicke)](https://github.com/Jozebel11): Add position styling to playground container to equal 'relative' [PR #3446](https://github.com/microsoft/monaco-editor/pull/3446) +- [@kirjs (Kirill Cherkashin)](https://github.com/kirjs): Fix broken link in the changelog [PR #3382](https://github.com/microsoft/monaco-editor/pull/3382) +- [@LeoDog896 (Tristan F.)](https://github.com/LeoDog896) + - Ignore dist from vite/parcel in prettier [PR #3466](https://github.com/microsoft/monaco-editor/pull/3466) + - Add .kts as a file extension [PR #3467](https://github.com/microsoft/monaco-editor/pull/3467) +- [@MasterOdin (Matthew Peveler)](https://github.com/MasterOdin): Add new pgsql 15 functions [PR #3363](https://github.com/microsoft/monaco-editor/pull/3363) +- [@mofux (Thomas Zilz)](https://github.com/mofux): Resolve URIs with special characters correctly [PR #3392](https://github.com/microsoft/monaco-editor/pull/3392) +- [@nnnnoel (Noel Kim (김민혁))](https://github.com/nnnnoel): fix(mysql/tokenizer): Fix single quoted string escape [PR #3232](https://github.com/microsoft/monaco-editor/pull/3232) +- [@rcjsuen (Remy Suen)](https://github.com/rcjsuen): Fix the color provider's columns [PR #3348](https://github.com/microsoft/monaco-editor/pull/3348) +- [@RubenRBS (Rubén Rincón Blanco)](https://github.com/RubenRBS): Recognize \0 as an escape sequence [PR #3443](https://github.com/microsoft/monaco-editor/pull/3443) +- [@sekedus (Sekedus)](https://github.com/sekedus): add homepage url [PR #3497](https://github.com/microsoft/monaco-editor/pull/3497) +- [@tr3ysmith (Trey Smith)](https://github.com/tr3ysmith): Fix possible duplicate of editors in vite sample [PR #3390](https://github.com/microsoft/monaco-editor/pull/3390) ## [0.34.1] @@ -501,7 +596,7 @@ Contributions to `monaco-typescript`: - Many improvements in `monaco-typescript`: support for "deprecated" tags, API to participate in the web worker, improved lib.d.ts resolving. - New tokenization support for: Julia, Scala, Lexon, Terraform HCL, Dart, Systemverilog. - New semantic tokens provider [sample on the playground](https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-semantic-tokens-provider-example). -- New [shadow dom sample](https://github.com/microsoft/monaco-editor-samples/tree/master/browser-amd-shadow-dom) +- New [shadow dom sample](https://github.com/microsoft/monaco-editor/tree/main/samples/browser-amd-shadow-dom) - New `overflowWidgetsDomNode` constructor option to pass in a parent for overflowing widgets. - New `minimap.size` option: `proportional`, `fill`, `fit`. - New `OnTypeRename` provider and option `renameOnType`. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a42d2115..68998ab7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,15 +1,17 @@ -# Contributing +# Contributing / Dev Setup -Checkout [MAINTAINING.md](./MAINTAINING.md) for common maintaining tasks. +## Source Code Structure -## A brief explanation on the source code structure +It is important to understand that the Monaco Editor _Core_ is built directly from the [VS Code source code](https://github.com/microsoft/vscode). +The Monaco Editor then enhances the Monaco Editor Core with some basic language features. -This repository contains source code only for Monaco Editor Languages, the core editor source lives in the [vscode repository](https://github.com/microsoft/vscode). +This diagram describes the relationships between the repositories and the npm packages: -| repository | npm module | explanation | -| ----------------------------------------------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| [vscode](https://github.com/microsoft/vscode) | [monaco-editor-core](https://www.npmjs.com/package/monaco-editor-core) | editor core functionality (language agnostic) is shipped out of vscode. | -| [monaco-editor](https://github.com/microsoft/monaco-editor) | [monaco-editor](https://www.npmjs.com/package/monaco-editor) | the Monaco Editor. | +![](./docs/code-structure.dio.svg) + +By default, `monaco-editor-core` is installed from npm (through the initial `npm install`), so you can work on Monaco Editor language features without having to build the core editor / VS Code. +The nightly builds build a fresh version of `monaco-editor-core` from the `main` branch of VS Code. +For a stable release, the commit specified in `vscodeRef` in [package.json](./package.json) specifies the commit of VS Code that is used to build `monaco-editor-core`. ## Contributing a new tokenizer / a new language @@ -25,89 +27,99 @@ Please understand that we only bundle languages with the monaco editor that have import './{myLang}/{myLang}.contribution'; ``` -## Running the editor from source +## Debugging / Developing The Core Editor -You need to have all the build setup of VS Code to be able to build the Monaco Editor. +To debug core editor issues. -- Install all the [prerequisites](https://github.com/microsoft/vscode/wiki/How-to-Contribute#prerequisites) +This can be done directly from the VS Code repository and does not involve the monaco editor repository. -```bash -# clone vscode-loc repository for localized string resources -/src> git clone https://github.com/microsoft/vscode-loc -# clone VS Code repository -/src> git clone https://github.com/microsoft/vscode -/src> cd vscode -# install npm deps for vscode -/src/vscode> yarn -# start the compiler in the background -/src/vscode> yarn watch -``` +- Clone the [VS Code repository](https://github.com/microsoft/vscode): `git clone https://github.com/microsoft/vscode` +- Open the repository in VS Code: `code vscode` +- Run `yarn install` +- Select and run the launch configuration "Monaco Editor Playground" (this might take a while, as it compiles the sources): -- For the monaco editor test pages: + ![](./docs/launch%20config.png) -```bash -# clone monaco-editor (note the folders must be siblings!) -/src> git clone https://github.com/microsoft/monaco-editor +- Now you can set breakpoints and change the source code -# install npm deps for monaco-editor -/src/monaco-editor> npm install . + ![](./docs/debugging-core.gif) -# compile and bundle all plugins -/src/monaco-editor> npm run release +- Optionally, you can build `monaco-editor-core` and link it to the monaco editor repository: -# start a local http server in the background -/src/monaco-editor> npm run simpleserver -``` + ```bash + # builds out-monaco-editor-core + > yarn gulp editor-distro -Open [http://localhost:8080/monaco-editor/test/manual/?editor=src](http://localhost:8080/monaco-editor/test/manual/?editor=src) to run. + > cd out-monaco-editor-core + > npm link + > cd ../path/to/monaco-editor + + # symlinks the monaco-editor-core package to the out-monaco-editor-core folder we just built + > npm link monaco-editor-core + ``` + +## Debugging / Developing Language Support + +To debug bundled languages, such as JSON, HTML or TypeScript/JavaScript. + +- Clone the [monaco editor repository](https://github.com/microsoft/monaco-editor): `git clone https://github.com/microsoft/monaco-editor` +- Open the repository in VS Code: `code monaco-editor` +- Run `npm install` +- Select and run the launch configuration "Monaco Editor Playground" (this might take a while, as it compiles the sources): + + ![](./docs/launch%20config.png) + +- Now you can set breakpoints and change the source code + + ![](./docs/debugging-languages.gif) + +- Optionally, you can build `monaco-editor` and link it if you want to test your changes in a real application: + + ```bash + # builds out/monaco-editor + > npm run build-monaco-editor + + > cd out/monaco-editor + > npm link + + > cd ../path/to/my-app + > npm link monaco-editor + ``` ## Running the editor tests ```bash -# create a local release -/src/monaco-editor> npm run release +> npm run build-monaco-editor +> npm run test +> npm run compile --prefix webpack-plugin -# run unit tests -/src/monaco-editor> npm run test - -# compile the webpack plugin -/src/monaco-editor> npm run compile --prefix webpack-plugin - -# package using the webpack plugin -/src/monaco-editor> npm run package-for-smoketest-webpack - -# package using esbuild -/src/monaco-editor> npm run package-for-smoketest-esbuild - -# package using vite -/src/monaco-editor> npm run package-for-smoketest-vite - -# package using parcel -/src/monaco-editor> npm run package-for-smoketest-parcel --prefix test/smoke/parcel - -# run the smoketest -/src/monaco-editor> npm run smoketest-debug +> npm run package-for-smoketest-webpack +> npm run package-for-smoketest-esbuild +> npm run package-for-smoketest-vite +> npm run package-for-smoketest-parcel --prefix test/smoke/parcel +> npm run smoketest-debug ``` -> Tip: All folders must be cloned as siblings. - -> Tip: When running the test pages, use the control panel in the top right corner to switch between running from source, running from npm or running from the local release: -> ![image](https://cloud.githubusercontent.com/assets/5047891/19599080/eb0d7622-979e-11e6-96ce-dde98cd95dc1.png) - ## Running the website locally -> Note: The website is published automatically when pushing to the `master` branch. - ```bash -# create a local release -/src/monaco-editor> npm run release - -# build the website -/src/monaco-editor> npm run build-website - -# start local webserver -/src/monaco-editor> npm run simpleserver - -# open http://localhost:8080/monaco-editor-website/ +> npm install +> npm run build-monaco-editor +> cd website +> yarn install +> yarn typedoc +> yarn dev ``` + +Now webpack logs the path to the website. + +## Out Folders + +This diagram describes the output folders of the build process: + +![](./docs/out-folders.dio.svg) + +## Maintaining + +Checkout [MAINTAINING.md](./MAINTAINING.md) for common maintaining tasks (for maintainers only). diff --git a/MAINTAINING.md b/MAINTAINING.md index 98c49770..deb5aee9 100644 --- a/MAINTAINING.md +++ b/MAINTAINING.md @@ -1,29 +1,27 @@ # Maintaining -(For maintainers) +(For maintainers only) -- [Inbox Queue](https://github.com/microsoft/monaco-editor/issues?q=is%3Aissue+is%3Aopen+no%3Aassignee+-label%3Afeature-request+-label%3Aquestion+-label%3Aupstream+-label%3A%22help+wanted%22+-label%3A%22info-needed%22+-label%3A%22as-designed%22+) +Make sure every unassigned issue is labeled properly: -## Updating TypeScript +- [Inbox Queue](https://github.com/microsoft/monaco-editor/issues?q=is%3Aissue+is%3Aopen+no%3Aassignee+-label%3Afeature-request+-label%3Aupstream+-label%3A%22info-needed%22++-label%3Abug+) -- change typescript's version in `package.json`. -- execute `npm install .` -- execute `npm run import-typescript` -- adopt new APIs +## Publishing a stable build monaco-editor build -## Shipping a new monaco-editor npm module +- Make sure there exists a nightly build from the VS Code commit the stable build should be built from +- [Compare Last Stable With Nightly](https://microsoft.github.io/monaco-editor/playground.html?source=v0.40.0-dev.20230704#XQAAAAJWBgAAAAAAAABBqQkHQ5NjdMjwa-jY7SIQ9S7DNlzs5W-mwj0fe1ZCDRFc9ws9XQE0SJE1jc2VKxhaLFIw9vEWSxW3yscw_SM66BuzMt6m3zM8Thvb-XSMR_Da8IdBq3FOgly-7-xuaHSi_yUg58ZO9Mr-RKT7GyHzHoU8B9N7P-uTzmCdhT2Vv-4gNRbWSMQCUPrfmzFCkSH_WR2Vc8LGx2m0uRSFiJu82B1mS0RM-eriU9PTOqAgBrlPUMTU44VrHyVOqgs5BFrUuUHwGDzUHxeNuUk-kg2u70awQLQ83wD4o2EbSefqfIWkk2Yi0mnUS903tLA4V17MD_6OHIRArunMPL6E14ZCW0_Aql21F62Fmz--i_pNbqBIpSlBbZl6LzA1HzNsoDH7i2rn1qAw55L1MjwOU4QQMCJfffmJznAbGoZWkXK91OPYlOGNHNGG-MPUFsY5JSjLfvCWOvXypW9ZVkBZMo1qUbtE135CLqbaBiw52f3eOPBTru3IL_wT__ciAFI5NDiVOeN8V9zqkzbwiFNeQyZcjxmrDLjYTPJpao0dG61Um0w4FpVud8p77bjoAdEfG8JNO97W4cawj0HvMfvcZS81P7IsijZqA7KyVsdq79iCJQuMO31aS86cM4GTNT0TvdI7p62uiEmm9X6ZjF8oSLxW87Vt0oYAZ5wBePqdN6FwNO6BWACt2Ep9i5Q6h-mOy7_JWOiPTOH0Zz3v6SaNhjxJwZAqNG3FqvRTgLg-au-pfa8PD0No3U15UyWeqrVXSthGFghLJ16ppEwFCqFfQ6Vr0leZtSZXyk41-t5ZKMG-KQjzq1XE2PnuyOz60nV4GaYvGlMHrXz-XrEqb2kwNf_pBee0) + - Update [package.json](./package.json) + - set `version` to next stable + - set `vscodeRef` to _vscodeCommitId_ + - update `devDependencies.monaco-editor-core` to _version_ + - Run `npm install` to update lockfile + - Update [CHANGELOG.md](./CHANGELOG.md) + - API Changes / Breaking Changes / New and noteworthy + - Thank you ([use this tool](https://tools.code.visualstudio.com/acknowledgement)) + - Commit + - [Trigger build](https://dev.azure.com/monacotools/Monaco/_build?definitionId=416) -- update `package.json` and bump `"version"` as necessary -- update `package.json` and edit `"vscode"` to point to the vscode repo commit that should be shipped at `monaco-editor-core` (both `monaco-editor-core` and `monaco-editor` will be published under the same version defined in `package.json`). -- write entry in `CHANGELOG.md` - - API Changes / Breaking Changes / New and noteworthy - - Thank you ([use this tool](https://vscode-tools.azurewebsites.net/acknowledgement/)) -- trigger a build using [`Publish to npm`](https://github.com/microsoft/monaco-editor/actions/workflows/publish.yml) and type false when asked "is nightly?" -- if the publish succeeded, run `git tag 0.x.y` and `git push origin 0.x.y` -- edit `package.json` and update the `"monaco-editor-core"` dev dependency. -- run `npm install` - -#### 8. Publish new webpack plugin +#### Publish new webpack plugin - **TBD** - https://github.com/microsoft/monaco-editor/tree/main/webpack-plugin @@ -40,3 +38,10 @@ - use `npm version major` - publish using `npm publish` - remember to push tags upstream + +## Updating TypeScript + +- change typescript's version in `package.json`. +- execute `npm install .` +- execute `npm run import-typescript` +- adopt new APIs diff --git a/README.md b/README.md index 06ab413e..dfdb2b82 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,32 @@ # Monaco Editor -[![Build Status](https://dev.azure.com/ms/monaco-editor/_apis/build/status/microsoft.monaco-editor?label=website)](https://dev.azure.com/ms/monaco-editor/_build/latest?definitionId=3) +[![Versions](https://img.shields.io/npm/v/monaco-editor)](https://www.npmjs.com/package/monaco-editor) +[![Versions](https://img.shields.io/npm/v/monaco-editor/next)](https://www.npmjs.com/package/monaco-editor) +[![Feature Requests](https://img.shields.io/github/issues/microsoft/monaco-editor/feature-request.svg)](https://github.com/microsoft/monaco-editor/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc) +[![Bugs](https://img.shields.io/github/issues/microsoft/monaco-editor/bug.svg)](https://github.com/microsoft/monaco-editor/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3Abug) -The Monaco Editor is the code editor which powers [VS Code](https://github.com/microsoft/vscode), with the features better described [here](https://code.visualstudio.com/docs/editor/editingevolved). - -Please note that this repository contains no source code for the code editor, it only contains the scripts to package everything together and ship the `monaco-editor` npm module. +The Monaco Editor is the fully featured code editor from [VS Code](https://github.com/microsoft/vscode). Check out the [VS Code docs](https://code.visualstudio.com/docs/editor/editingevolved) to see some of the supported features. ![image](https://user-images.githubusercontent.com/5047891/94183711-290c0780-fea3-11ea-90e3-c88ff9d21bd6.png) ## Try it out -Try the editor out [on our website](https://microsoft.github.io/monaco-editor/index.html). +Try out the editor and see various examples [in our interactive playground](https://microsoft.github.io/monaco-editor/playground.html). + +The playground is the best way to learn about how to use the editor, which features is supports, to try out different versions and to create minimal reproducible examples for bug reports. ## Installing ``` -$ npm install monaco-editor +> npm install monaco-editor ``` You will get: -- inside `esm`: ESM version of the editor (compatible with e.g. webpack) -- inside `dev`: AMD bundled, not minified -- inside `min`: AMD bundled, and minified -- inside `min-maps`: source maps for `min` +- inside `/esm`: ESM version of the editor (compatible with e.g. webpack) +- inside `/dev`: AMD bundled, not minified +- inside `/min`: AMD bundled, and minified +- inside `/min-maps`: source maps for `min` - `monaco.d.ts`: this specifies the API of the editor (this is what is actually versioned, everything else is considered private and might break with any release). It is recommended to develop against the `dev` version, and in production to use the `min` version. @@ -34,14 +37,14 @@ It is recommended to develop against the `dev` version, and in production to use - [Integrate the AMD version](./docs/integrate-amd.md). - [Integrate the ESM version](./docs/integrate-esm.md) - Learn how to use the editor API and try out your own customizations in the [playground](https://microsoft.github.io/monaco-editor/playground.html). -- Explore the [API docs](https://microsoft.github.io/monaco-editor/api/index.html) or read them straight from [`monaco.d.ts`](https://github.com/microsoft/monaco-editor/blob/main/website/typedoc/monaco.d.ts). +- Explore the [API docs](https://microsoft.github.io/monaco-editor/docs.html) or read them straight from [`monaco.d.ts`](https://microsoft.github.io/monaco-editor/node_modules/monaco-editor/monaco.d.ts). - Read [this guide](https://github.com/microsoft/monaco-editor/wiki/Accessibility-Guide-for-Integrators) to ensure the editor is accessible to all your users! - Create a Monarch tokenizer for a new programming language [in the Monarch playground](https://microsoft.github.io/monaco-editor/monarch.html). - Ask questions on [StackOverflow](https://stackoverflow.com/questions/tagged/monaco-editor)! Search open and closed issues, there are a lot of tips in there! ## Issues -Create [issues](https://github.com/microsoft/monaco-editor/issues) in this repository for anything related to the Monaco Editor. Always mention **the version** of the editor when creating issues and **the browser** you're having trouble in. Please search for existing issues to avoid duplicates. +Create [issues](https://github.com/microsoft/monaco-editor/issues) in this repository for anything related to the Monaco Editor. Please search for existing issues to avoid duplicates. ## FAQ @@ -79,13 +82,10 @@ No. - Please see https://github.com/bolinfest/monaco-tm which puts together `monaco-editor`, `vscode-oniguruma` and `vscode-textmate` to get TM grammar support in the editor. -❓ **What about IE 11 support?** +## Contributing / Local Development -- The Monaco Editor no longer supports IE 11. The last version that was tested on IE 11 is `0.18.1`. - -## Development setup - -Please see [CONTRIBUTING](./CONTRIBUTING.md) +We are welcoming contributions from the community! +Please see [CONTRIBUTING](./CONTRIBUTING.md) for details how you can contribute effectively, how you can run the editor from sources and how you can debug and fix issues. ## Code of Conduct diff --git a/build/build.ts b/build/build-languages.ts similarity index 88% rename from build/build.ts rename to build/build-languages.ts index e0bc5453..a5933794 100644 --- a/build/build.ts +++ b/build/build-languages.ts @@ -4,33 +4,33 @@ *--------------------------------------------------------------------------------------------*/ import glob from 'glob'; -import { tsc, dts, buildESM, buildAMD } from './utils'; +import { runTsc, massageAndCopyDts, buildESM, buildAMD } from './utils'; import { copyFile, removeDir } from './fs'; -removeDir(`out`); +removeDir(`out/languages`); -tsc(`src/tsconfig.json`); +runTsc(`src/tsconfig.json`); //#region Type Defintion -dts( - `out/amd/language/css/monaco.contribution.d.ts`, - `out/release/css.d.ts`, +massageAndCopyDts( + `out/languages/amd-tsc/language/css/monaco.contribution.d.ts`, + `out/languages/bundled/css.d.ts`, 'monaco.languages.css' ); -dts( - `out/amd/language/html/monaco.contribution.d.ts`, - `out/release/html.d.ts`, +massageAndCopyDts( + `out/languages/amd-tsc/language/html/monaco.contribution.d.ts`, + `out/languages/bundled/html.d.ts`, 'monaco.languages.html' ); -dts( - `out/amd/language/json/monaco.contribution.d.ts`, - `out/release/json.d.ts`, +massageAndCopyDts( + `out/languages/amd-tsc/language/json/monaco.contribution.d.ts`, + `out/languages/bundled/json.d.ts`, 'monaco.languages.json' ); -dts( - `out/amd/language/typescript/monaco.contribution.d.ts`, - `out/release/typescript.d.ts`, +massageAndCopyDts( + `out/languages/amd-tsc/language/typescript/monaco.contribution.d.ts`, + `out/languages/bundled/typescript.d.ts`, 'monaco.languages.typescript' ); @@ -131,11 +131,6 @@ buildAMD({ //#region typescript -copyFile( - `src/language/typescript/lib/typescriptServices-amd.js`, - `out/amd/language/typescript/lib/typescriptServices.js` -); - buildESM({ base: 'language/typescript', entryPoints: [ diff --git a/build/release.ts b/build/build-monaco-editor.ts similarity index 90% rename from build/release.ts rename to build/build-monaco-editor.ts index 38eef1b6..1a2d3ba0 100644 --- a/build/release.ts +++ b/build/build-monaco-editor.ts @@ -10,7 +10,7 @@ import { removeDir } from '../build/fs'; import ts = require('typescript'); import { generateMetadata } from './releaseMetadata'; -removeDir(`release`); +removeDir(`out/monaco-editor`); // dev folder AMD_releaseOne('dev'); @@ -39,7 +39,7 @@ generateMetadata(); delete json.scripts['postinstall']; packageJSON.contents = Buffer.from(JSON.stringify(json, null, ' ')); - writeFiles([packageJSON], `release`); + writeFiles([packageJSON], `out/monaco-editor`); })(); (() => { @@ -59,7 +59,7 @@ generateMetadata(); }) ); - writeFiles(otherFiles, `release`); + writeFiles(otherFiles, `out/monaco-editor`); })(); /** @@ -70,13 +70,13 @@ function AMD_releaseOne(type: 'dev' | 'min') { base: `node_modules/monaco-editor-core/${type}` }); AMD_addPluginContribs(type, coreFiles); - writeFiles(coreFiles, `release/${type}`); + writeFiles(coreFiles, `out/monaco-editor/${type}`); - const pluginFiles = readFiles(`out/release/${type}/**/*`, { - base: `out/release/${type}`, + const pluginFiles = readFiles(`out/languages/bundled/amd-${type}/**/*`, { + base: `out/languages/bundled/amd-${type}`, ignore: ['**/monaco.contribution.js'] }); - writeFiles(pluginFiles, `release/${type}`); + writeFiles(pluginFiles, `out/monaco-editor/${type}`); } /** @@ -96,8 +96,8 @@ function AMD_addPluginContribs(type: 'dev' | 'min', files: IFile[]) { // Rename the AMD module 'vs/editor/editor.main' to 'vs/editor/edcore.main' contents = contents.replace(/"vs\/editor\/editor\.main\"/, '"vs/editor/edcore.main"'); - const pluginFiles = readFiles(`out/release/${type}/**/monaco.contribution.js`, { - base: `out/release/${type}` + const pluginFiles = readFiles(`out/languages/bundled/amd-${type}/**/monaco.contribution.js`, { + base: `out/languages/bundled/amd-${type}` }); const extraContent = pluginFiles.map((file) => { @@ -141,7 +141,7 @@ function ESM_release() { }); ESM_addImportSuffix(coreFiles); ESM_addPluginContribs(coreFiles); - writeFiles(coreFiles, `release/esm`); + writeFiles(coreFiles, `out/monaco-editor/esm`); ESM_releasePlugins(); } @@ -152,7 +152,7 @@ function ESM_release() { * Rewrites imports for 'monaco-editor-core/**' */ function ESM_releasePlugins() { - const files = readFiles(`out/release/esm/**/*`, { base: 'out/release/esm/' }); + const files = readFiles(`out/languages/bundled/esm/**/*`, { base: 'out/languages/bundled/esm/' }); for (const file of files) { if (!/(\.js$)|(\.ts$)/.test(file.path)) { @@ -210,7 +210,7 @@ function ESM_releasePlugins() { } ESM_addImportSuffix(files); - writeFiles(files, `release/esm`); + writeFiles(files, `out/monaco-editor/esm`); } /** @@ -256,8 +256,8 @@ function ESM_addPluginContribs(files: IFile[]) { const mainFileDestPath = 'vs/editor/editor.main.js'; - const mainFileImports = readFiles(`out/release/esm/**/monaco.contribution.js`, { - base: `out/release/esm` + const mainFileImports = readFiles(`out/languages/bundled/esm/**/monaco.contribution.js`, { + base: `out/languages/bundled/esm` }).map((file) => { let relativePath = path .relative(path.dirname(mainFileDestPath), file.path) @@ -292,8 +292,8 @@ function releaseDTS() { let contents = monacodts.contents.toString(); - const extraContent = readFiles('out/release/*.d.ts', { - base: 'out/release/' + const extraContent = readFiles('out/languages/bundled/*.d.ts', { + base: 'out/languages/bundled/' }).map((file) => { return file.contents.toString().replace(/\/\/\/ path.dirname(f)) + .map((f) => f.substring('src/basic-languages/'.length)); + languages.push('css'); + languages.push('html'); + languages.push('json'); + languages.push('typescript'); + + // some languages have a different id than their folder + languages = languages.map((l) => { + switch (l) { + case 'coffee': + return 'coffeescript'; + case 'protobuf': + return 'proto'; + case 'solidity': + return 'sol'; + case 'sophia': + return 'aes'; + default: + return l; + } + }); + + let fail = false; + for (const language of languages) { + const expectedSamplePath = path.join( + REPO_ROOT, + `website/src/website/data/home-samples/sample.${language}.txt` + ); + if (!fs.existsSync(expectedSamplePath)) { + console.error(`Missing sample for ${language} at ${expectedSamplePath}`); + fail = true; + } + } + if (fail) { + process.exit(1); + } +} diff --git a/build/importTypescript.ts b/build/importTypescript.ts index 7e519c39..14035727 100644 --- a/build/importTypescript.ts +++ b/build/importTypescript.ts @@ -37,7 +37,12 @@ export const typescriptVersion = "${typeScriptDependencyVersion}";\n` let tsServices = fs.readFileSync(path.join(TYPESCRIPT_LIB_SOURCE, 'typescript.js')).toString(); - // The output from this build will only be accessible via AMD or ESM; rather than removing + tsServices = tsServices.replace( + 'const path = matchedStar ? subst.replace("*", matchedStar) : subst;', + 'const path = matchedStar ? subst.replace("*", matchedStar) : subst; // CodeQL [SM02383] This is a false positive, the code is from the TypeScript compiler' + ); + + // The output from this build will only be accessible via ESM; rather than removing // references to require/module, define them as dummy variables that bundlers will ignore. // The TS code can figure out that it's not running under Node even with these defined. tsServices = @@ -48,21 +53,6 @@ var module = { exports: {} }; /* END MONACOCHANGE */ ` + tsServices; - const tsServices_amd = - generatedNote + - tsServices + - ` -// MONACOCHANGE -// Defining the entire module name because r.js has an issue and cannot bundle this file -// correctly with an anonymous define call -define("vs/language/typescript/lib/typescriptServices", [], function() { return ts; }); -// END MONACOCHANGE -`; - fs.writeFileSync( - path.join(TYPESCRIPT_LIB_DESTINATION, 'typescriptServices-amd.js'), - stripSourceMaps(tsServices_amd) - ); - const tsServices_esm = generatedNote + tsServices + diff --git a/build/npm/installAll.ts b/build/npm/installAll.ts index b1329d40..60d62692 100644 --- a/build/npm/installAll.ts +++ b/build/npm/installAll.ts @@ -12,7 +12,7 @@ import { REPO_ROOT } from '../utils'; const files = glob.sync('**/package.json', { cwd: REPO_ROOT, - ignore: ['**/node_modules/**', '**/out/**', '**/release/**'] + ignore: ['**/node_modules/**', '**/dist/**', '**/out/**'] }); for (const file of files) { diff --git a/build/npm/removeAll.ts b/build/npm/removeAll.ts index cf2c59be..c48e8629 100644 --- a/build/npm/removeAll.ts +++ b/build/npm/removeAll.ts @@ -10,7 +10,7 @@ import { REPO_ROOT } from '../utils'; const files = glob.sync('**/package-lock.json', { cwd: REPO_ROOT, - ignore: ['**/node_modules/**', '**/out/**', '**/release/**'] + ignore: ['**/node_modules/**', '**/out/**'] }); for (const file of files) { diff --git a/build/releaseMetadata.ts b/build/releaseMetadata.ts index 07245665..17a530ff 100644 --- a/build/releaseMetadata.ts +++ b/build/releaseMetadata.ts @@ -26,7 +26,7 @@ const customFeatureLabels = { function getBasicLanguages(): Promise<{ label: string; entry: string }[]> { return new Promise((resolve, reject) => { glob( - './release/esm/vs/basic-languages/*/*.contribution.js', + './out/monaco-editor/esm/vs/basic-languages/*/*.contribution.js', { cwd: path.dirname(__dirname) }, (err, files) => { if (err) { @@ -36,7 +36,7 @@ function getBasicLanguages(): Promise<{ label: string; entry: string }[]> { resolve( files.map((file) => { - const entry = file.substring('./release/esm/'.length).replace(/\.js$/, ''); + const entry = file.substring('./out/monaco-editor/esm/'.length).replace(/\.js$/, ''); const label = path.basename(file).replace(/\.contribution\.js$/, ''); return { label: label, @@ -52,7 +52,7 @@ function getBasicLanguages(): Promise<{ label: string; entry: string }[]> { function readAdvancedLanguages(): Promise { return new Promise((resolve, reject) => { glob( - './release/esm/vs/language/*/monaco.contribution.js', + './out/monaco-editor/esm/vs/language/*/monaco.contribution.js', { cwd: path.dirname(__dirname) }, (err, files) => { if (err) { @@ -62,7 +62,7 @@ function readAdvancedLanguages(): Promise { resolve( files - .map((file) => file.substring('./release/esm/vs/language/'.length)) + .map((file) => file.substring('./out/monaco-editor/esm/vs/language/'.length)) .map((file) => file.substring(0, file.length - '/monaco.contribution.js'.length)) ); } @@ -95,7 +95,7 @@ function getAdvancedLanguages(): Promise< }); function checkFileExists(moduleName) { - const filePath = path.join(REPO_ROOT, 'release/esm', `${moduleName}.js`); + const filePath = path.join(REPO_ROOT, 'out/monaco-editor/esm', `${moduleName}.js`); if (!fs.existsSync(filePath)) { console.error(`Could not find ${filePath}.`); process.exit(1); @@ -174,7 +174,7 @@ export type EditorFeature = ${features.map((el) => `'${el.label}'`).join(' | ')} export type NegatedEditorFeature = ${features.map((el) => `'!${el.label}'`).join(' | ')}; `; - const dtsDestination = path.join(REPO_ROOT, 'release/esm/metadata.d.ts'); + const dtsDestination = path.join(REPO_ROOT, 'out/monaco-editor/esm/metadata.d.ts'); ensureDir(path.dirname(dtsDestination)); fs.writeFileSync(dtsDestination, dtsContents.replace(/\r\n/g, '\n')); @@ -182,9 +182,18 @@ export type NegatedEditorFeature = ${features.map((el) => `'!${el.label}'`).join exports.features = ${JSON.stringify(features, null, ' ')}; exports.languages = ${JSON.stringify(languages, null, ' ')}; `; - const jsDestination = path.join(REPO_ROOT, 'release/esm/metadata.js'); + const jsDestination = path.join(REPO_ROOT, 'out/monaco-editor/esm/metadata.js'); ensureDir(path.dirname(jsDestination)); fs.writeFileSync(jsDestination, jsContents.replace(/\r\n/g, '\n')); + + for (const feature of [...features, ...languages]) { + const entries = [].concat(feature.entry); + for (const entry of entries) { + const dtsDestination = path.join(REPO_ROOT, 'out/monaco-editor/esm', entry) + '.d.ts'; + ensureDir(path.dirname(dtsDestination)); + fs.writeFileSync(dtsDestination, 'export {}\n'); + } + } } ); } @@ -213,8 +222,12 @@ function getFeatures(): { label: string; entry: string | string[] }[] { let features: string[] = []; const files = - fs.readFileSync(path.join(REPO_ROOT, 'release/esm/vs/editor/edcore.main.js')).toString() + - fs.readFileSync(path.join(REPO_ROOT, 'release/esm/vs/editor/editor.all.js')).toString(); + fs + .readFileSync(path.join(REPO_ROOT, 'out/monaco-editor/esm/vs/editor/edcore.main.js')) + .toString() + + fs + .readFileSync(path.join(REPO_ROOT, 'out/monaco-editor/esm/vs/editor/editor.all.js')) + .toString(); files.split(/\r\n|\n/).forEach((line) => { const m = line.match(/import '([^']+)'/); if (m) { diff --git a/build/utils.ts b/build/utils.ts index 472ae44a..06f056ef 100644 --- a/build/utils.ts +++ b/build/utils.ts @@ -16,7 +16,7 @@ export const REPO_ROOT = path.join(__dirname, '../'); /** * Launch the typescript compiler synchronously over a project. */ -export function tsc(_projectPath: string) { +export function runTsc(_projectPath: string) { const projectPath = path.join(REPO_ROOT, _projectPath); console.log(`Launching compiler at ${_projectPath}...`); const res = cp.spawnSync( @@ -47,12 +47,12 @@ export function prettier(_filePath: string) { /** * Transform an external .d.ts file to an internal .d.ts file */ -export function dts(_source: string, _destination: string, namespace: string) { - const source = path.join(REPO_ROOT, _source); - const destination = path.join(REPO_ROOT, _destination); +export function massageAndCopyDts(source: string, destination: string, namespace: string) { + const absoluteSource = path.join(REPO_ROOT, source); + const absoluteDestination = path.join(REPO_ROOT, destination); const lines = fs - .readFileSync(source) + .readFileSync(absoluteSource) .toString() .split(/\r\n|\r|\n/); @@ -81,10 +81,10 @@ export function dts(_source: string, _destination: string, namespace: string) { result.push(`}`); result.push(``); - ensureDir(path.dirname(destination)); - fs.writeFileSync(destination, result.join('\n')); + ensureDir(path.dirname(absoluteDestination)); + fs.writeFileSync(absoluteDestination, result.join('\n')); - prettier(_destination); + prettier(destination); } export function build(options: import('esbuild').BuildOptions) { @@ -113,7 +113,7 @@ export function buildESM(options: { base: string; entryPoints: string[]; externa }, external: options.external, outbase: `src/${options.base}`, - outdir: `out/release/esm/vs/${options.base}/`, + outdir: `out/languages/bundled/esm/vs/${options.base}/`, plugins: [ alias({ 'vscode-nls': path.join(__dirname, 'fillers/vscode-nls.ts') @@ -156,7 +156,7 @@ function buildOneAMD( js: 'return moduleExports;\n});' }, outbase: `src/${options.base}`, - outdir: `out/release/${type}/vs/${options.base}/`, + outdir: `out/languages/bundled/amd-${type}/vs/${options.base}/`, plugins: [ alias({ 'vscode-nls': path.join(__dirname, '../build/fillers/vscode-nls.ts'), diff --git a/build/website.ts b/build/website.ts deleted file mode 100644 index 438c52f4..00000000 --- a/build/website.ts +++ /dev/null @@ -1,163 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import glob = require('glob'); -import path = require('path'); -import fs = require('fs'); -import cp = require('child_process'); -import CleanCSS from 'clean-css'; -import { REPO_ROOT, readFiles, writeFiles } from './utils'; -import { removeDir } from './fs'; - -const MONACO_EDITOR_VERSION: string = (() => { - const output = cp.execSync(`npm show monaco-editor version`).toString(); - const version = output.split(/\r\n|\r|\n/g)[0]; - if (!/\d+\.\d+\.\d+/.test(version)) { - console.log('unrecognized package.json version: ' + version); - process.exit(1); - } - return version; -})(); - -removeDir(`../monaco-editor-website`); -checkSamples(); -generateWebsite(); - -/** - * Check that there are samples for all available languages - */ -function checkSamples() { - let languages = glob - .sync('src/basic-languages/*/*.contribution.ts', { cwd: REPO_ROOT }) - .map((f) => path.dirname(f)) - .map((f) => f.substring('src/basic-languages/'.length)); - languages.push('css'); - languages.push('html'); - languages.push('json'); - languages.push('typescript'); - - // some languages have a different id than their folder - languages = languages.map((l) => { - switch (l) { - case 'coffee': - return 'coffeescript'; - case 'protobuf': - return 'proto'; - case 'solidity': - return 'sol'; - case 'sophia': - return 'aes'; - default: - return l; - } - }); - - let fail = false; - for (const language of languages) { - const expectedSamplePath = path.join(REPO_ROOT, `website/index/samples/sample.${language}.txt`); - if (!fs.existsSync(expectedSamplePath)) { - console.error(`Missing sample for ${language} at ${expectedSamplePath}`); - fail = true; - } - } - if (fail) { - process.exit(1); - } -} - -function replaceWithRelativeResource( - dataPath: string, - contents: string, - regex: RegExp, - callback: (match: string, fileContents: Buffer) => string -): string { - return contents.replace(regex, function (_, m0) { - const filePath = path.join(REPO_ROOT, 'website', path.dirname(dataPath), m0); - return callback(m0, fs.readFileSync(filePath)); - }); -} - -function generateWebsite() { - const files = readFiles('website/**/*', { - base: 'website', - ignore: ['website/typedoc/**/*'], - dot: true - }); - - for (const file of files) { - if (!file.contents || !/\.(html)$/.test(file.path) || /new-samples/.test(file.path)) { - continue; - } - - let contents = file.contents.toString(); - contents = contents.replace(/\.\.\/release\/dev/g, 'node_modules/monaco-editor/min'); - // contents = contents.replace(/\.\.\/\.\.\/release\/dev/g, '../monaco-editor/release/dev'); - contents = contents.replace(/{{version}}/g, MONACO_EDITOR_VERSION); - contents = contents.replace(/{{year}}/g, String(new Date().getFullYear())); - - // Preload xhr contents - contents = replaceWithRelativeResource( - file.path, - contents, - /
' +
-					fileContents
-						.toString('utf8')
-						.replace(/&/g, '&')
-						.replace(//g, '>') +
-					'
' - ); - } - ); - - // Inline fork.png - contents = replaceWithRelativeResource( - file.path, - contents, - /src="(\.\/fork.png)"/g, - function (m0, fileContents) { - return 'src="data:image/png;base64,' + fileContents.toString('base64') + '"'; - } - ); - - // let allCSS = ''; - contents = replaceWithRelativeResource( - file.path, - contents, - /${minifiedCSS}`; - } - ); - - // Inline javascript - contents = replaceWithRelativeResource( - file.path, - contents, - /'; - } - ); - - file.contents = Buffer.from(contents.split(/\r\n|\r|\n/).join('\n')); - } - - writeFiles(files, `../monaco-editor-website`); - - // temporarily create package.json so that npm install doesn't bark - fs.writeFileSync(path.join(REPO_ROOT, '../monaco-editor-website/package.json'), '{}'); - fs.writeFileSync(path.join(REPO_ROOT, '../monaco-editor-website/.nojekyll'), ''); - cp.execSync('npm install monaco-editor', { - cwd: path.join(REPO_ROOT, '../monaco-editor-website') - }); - fs.unlinkSync(path.join(REPO_ROOT, '../monaco-editor-website/package.json')); -} diff --git a/docs/code-structure.dio.svg b/docs/code-structure.dio.svg new file mode 100644 index 00000000..f4b0abb2 --- /dev/null +++ b/docs/code-structure.dio.svg @@ -0,0 +1,275 @@ + + + + + + + + +
+
+
+ Provides the source for +
+
+
+
+ + Provides the source for + +
+
+ + + + +
+
+
+ GitHub Repository +
+ microsoft/vscode +
+
+
+
+ + GitHub Repository... + +
+
+ + + + +
+
+
+ npm package +
+ monaco-editor-core +
+
+
+
+ + npm package... + +
+
+ + + + +
+
+
+ GitHub Repository +
+ microsoft/monaco-editor +
+
+
+
+ + GitHub Repository... + +
+
+ + + + +
+
+
+ npm package +
+ monaco-editor +
+
+
+
+ + npm package... + +
+
+ + + + + +
+
+
+ Provides language feature sources +
+ including TypeScript, html, css, json +
+ and others +
+
+
+
+ + Provides language feature sources... + +
+
+ + + + +
+
+
+ Folder +
+ /src +
+
+
+
+ + Folder... + +
+
+ + + + + +
+
+
+ Describe how to build +
+
+
+
+ + Describe how to build + +
+
+ + + + +
+
+
+ Folder +
+ /scripts +
+
+
+
+ + Folder... + +
+
+ + + + + +
+
+
+ Dev Dependency +
+
+
+
+ + Dev Dependency + +
+
+ + + + + +
+
+
+ package.json +
+
+
+
+ + package.json + +
+
+ + + + +
+
+
+ File +
+ /package.json +
+
+
+
+ + File... + +
+
+ + + + + +
+
+
+ Provides the core editor sources +
+
+
+
+ + Provides the core editor sources + +
+
+ + + + +
+
+
+ shipped sources +
+
+
+
+ + shipped sources + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
diff --git a/docs/debugging-core.gif b/docs/debugging-core.gif new file mode 100644 index 00000000..37179f6d Binary files /dev/null and b/docs/debugging-core.gif differ diff --git a/docs/debugging-languages.gif b/docs/debugging-languages.gif new file mode 100644 index 00000000..73c0d6d4 Binary files /dev/null and b/docs/debugging-languages.gif differ diff --git a/docs/launch config.png b/docs/launch config.png new file mode 100644 index 00000000..d39e0b15 Binary files /dev/null and b/docs/launch config.png differ diff --git a/docs/out-folders.dio.svg b/docs/out-folders.dio.svg new file mode 100644 index 00000000..81022ce4 --- /dev/null +++ b/docs/out-folders.dio.svg @@ -0,0 +1,347 @@ + + + + + + + +
+
+
+ npm package +
+ monaco-editor +
+
+
+
+ + npm package... + +
+
+ + + + + +
+
+
+ tsc +
+
+
+
+ + tsc + +
+
+ + + + + +
+
+
+ esbuild ESM +
+
+
+
+ + esbuild ESM + +
+
+ + + + + +
+
+
+ esbuild AMD +
+
+
+
+ + esbuild AMD + +
+
+ + + + +
+
+
+ /src +
+
+
+
+ + /src + +
+
+ + + + +
+
+
+ /out/languages/amd-tsc +
+
+
+
+ + /out/languages/amd-tsc + +
+
+ + + + + + +
+
+
+ /out/languages/bundled/esm +
+
+
+
+ + /out/languages/bundled/esm + +
+
+ + + + + + +
+
+
+ /out/languages/bundled/amd-{dev, min} +
+
+
+
+ + /out/languages/bundled/amd-{dev, min} + +
+
+ + + + + + +
+
+
+ npm package +
+ monaco-editor-core +
+
+
+
+ + npm package... + +
+
+ + + + +
+
+
+ /out/monaco-editor/{dev, min} +
+
+
+
+ + /out/monaco-editor/{dev, min} + +
+
+ + + + +
+
+
+ /out/monaco-editor/esm +
+
+
+
+ + /out/monaco-editor/esm + +
+
+ + + + + + +
+
+
+ *.d.ts +
+
+
+
+ + *.d.ts + +
+
+ + + + +
+
+
+ {/dev, /min} +
+
+
+
+ + {/dev, /min} + +
+
+ + + + + + +
+
+
+ esm +
+
+
+
+ + esm + +
+
+ + + + +
+
+
+ /out/monaco-editor/monaco.d.ts +
+
+
+
+ + /out/monaco-editor/monaco.d.ts + +
+
+ + + + + +
+
+
+
+ + ts-node ./build/build-monaco-editor + +
+
+
+
+
+ + ts-node ./build/build-monaco-editor + +
+
+ + + + + +
+
+
+
+ npm run build +
+
+
+
+
+ + npm run build + +
+
+ + + + + +
+
+
+
+ npm run build-monaco-editor +
+
+
+
+
+ + npm run build-monaco-editor + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
diff --git a/package-lock.json b/package-lock.json index 7e99facc..cd4c6c87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,17 @@ { "name": "monaco-editor", - "version": "0.34.1", + "version": "0.40.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "monaco-editor", - "version": "0.34.1", + "version": "0.40.0", "hasInstallScript": true, "license": "MIT", "devDependencies": { "@types/mocha": "^9.1.0", + "@types/shelljs": "^0.8.11", "@typescript/vfs": "^1.3.5", "chai": "^4.3.6", "clean-css": "^5.2.4", @@ -19,36 +20,38 @@ "esbuild-plugin-alias": "^0.2.1", "file-loader": "^6.2.0", "glob": "^7.2.0", + "http-server": "^14.1.1", "husky": "^7.0.4", "jsdom": "^19.0.0", "jsonc-parser": "^3.0.0", "mocha": "^9.2.0", - "monaco-editor-core": "0.35.0-dev.20221208", + "monaco-editor-core": "^0.40.0-dev.20230629", "parcel": "^2.7.0", - "playwright": "^1.18.1", + "pin-github-action": "^1.8.0", + "playwright": "^1.32.2", "prettier": "^2.5.1", "pretty-quick": "^3.1.3", "requirejs": "^2.3.6", + "shelljs": "^0.8.5", "style-loader": "^3.3.1", "terser": "^5.14.2", "ts-node": "^10.6.0", - "typedoc": "^0.22.11", - "typescript": "4.5.5", - "vite": "^3.1.8", + "typescript": "^5.0.2", + "vite": "^3.2.7", "vscode-css-languageservice": "5.4.1", "vscode-html-languageservice": "4.2.4", "vscode-json-languageservice": "4.2.1", "vscode-languageserver-textdocument": "^1.0.4", "vscode-languageserver-types": "3.16.0", "vscode-uri": "3.0.3", - "webpack": "^5.74.0", + "webpack": "^5.76.0", "yaserver": "^0.4.0" } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", "dev": true, "dependencies": { "@babel/highlight": "^7.18.6" @@ -173,9 +176,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.11.tgz", - "integrity": "sha512-PzMcQLazLBkwDEkrNPi9AbjFt6+3I7HKbiYF2XtWQ7wItrHvEOeO3T8Am434zAozWtVP7lrTue1bEfc2nYWeCA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", "cpu": [ "arm" ], @@ -189,9 +192,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.11.tgz", - "integrity": "sha512-geWp637tUhNmhL3Xgy4Bj703yXB9dqiLJe05lCUfjSFDrQf9C/8pArusyPUbUbPwlC/EAUjBw32sxuIl/11dZw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", "cpu": [ "loong64" ], @@ -370,9 +373,9 @@ } }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.1.2.tgz", - "integrity": "sha512-TyVLn3S/+ikMDsh0gbKv2YydKClN8HaJDDpONlaZR+LVJmsxLFUgA+O7zu59h9+f9gX1aj/ahw9wqa6rosmrYQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.2.0.tgz", + "integrity": "sha512-Z9LFPzfoJi4mflGWV+rv7o7ZbMU5oAU9VmzCgL240KnqDW65Y2HFCT3MW06/ITJSnbVLacmcEJA8phywK7JinQ==", "cpu": [ "arm64" ], @@ -383,9 +386,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.1.2.tgz", - "integrity": "sha512-YPXtcVkhmVNoMGlqp81ZHW4dMxK09msWgnxtsDpSiZwTzUBG2N+No2bsr7WMtBKCVJMSD6mbAl7YhKUqkp/Few==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.2.0.tgz", + "integrity": "sha512-vq0tT8sjZsy4JdSqmadWVw6f66UXqUCabLmUVHZwUFzMgtgoIIQjT4VVRHKvlof3P/dMCkbMJ5hB1oJ9OWHaaw==", "cpu": [ "x64" ], @@ -396,9 +399,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.1.2.tgz", - "integrity": "sha512-42R4MAFeIeNn+L98qwxAt360bwzX2Kf0ZQkBBucJ2Ircza3asoY4CDbgiu9VWklq8gWJVSJSJBwDI+c/THiWkA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.2.0.tgz", + "integrity": "sha512-SaJ3Qq4lX9Syd2xEo9u3qPxi/OB+5JO/ngJKK97XDpa1C587H9EWYO6KD8995DAjSinWvdHKRrCOXVUC5fvGOg==", "cpu": [ "arm" ], @@ -409,9 +412,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.1.2.tgz", - "integrity": "sha512-vHZ2JiOWF2+DN9lzltGbhtQNzDo8fKFGrf37UJrgqxU0yvtERrzUugnfnX1wmVfFhSsF8OxrfqiNOUc5hko1Zg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.2.0.tgz", + "integrity": "sha512-hlxxLdRmPyq16QCutUtP8Tm6RDWcyaLsRssaHROatgnkOxdleMTgetf9JsdncL8vLh7FVy/RN9i3XR5dnb9cRA==", "cpu": [ "arm64" ], @@ -422,9 +425,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.1.2.tgz", - "integrity": "sha512-RjRoRxg7Q3kPAdUSC5EUUPlwfMkIVhmaRTIe+cqHbKrGZ4M6TyCA/b5qMaukQ/1CHWrqYY2FbKOAU8Hg0pQFzg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.2.0.tgz", + "integrity": "sha512-94y5PJrSOqUNcFKmOl7z319FelCLAE0rz/jPCWS+UtdMZvpa4jrQd+cJPQCLp2Fes1yAW/YUQj/Di6YVT3c3Iw==", "cpu": [ "x64" ], @@ -435,9 +438,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.1.2.tgz", - "integrity": "sha512-rIZVR48zA8hGkHIK7ED6+ZiXsjRCcAVBJbm8o89OKAMTmEAQ2QvoOxoiu3w2isAaWwzgtQIOFIqHwvZDyLKCvw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.2.0.tgz", + "integrity": "sha512-XrC0JzsqQSvOyM3t04FMLO6z5gCuhPE6k4FXuLK5xf52ZbdvcFe1yBmo7meCew9B8G2f0T9iu9t3kfTYRYROgA==", "cpu": [ "x64" ], @@ -447,21 +450,154 @@ "win32" ] }, - "node_modules/@parcel/bundler-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.7.0.tgz", - "integrity": "sha512-PU5MtWWhc+dYI9x8mguYnm9yiG6TkI7niRpxgJgtqAyGHuEyNXVBQQ0X+qyOF4D9LdankBf8uNN18g31IET2Zg==", + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.40.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, + "dependencies": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } + }, + "node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@parcel/bundler-default": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.8.1.tgz", + "integrity": "sha512-hyzrZdzjFWjKFh0s8ykFke5bTBwWdOkmnFEsB2zaJEALf83td6JaH18w3iYNwF1Q5qplSTu6AeNOeVbR7DXi4g==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.8.1", + "@parcel/graph": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -469,14 +605,14 @@ } }, "node_modules/@parcel/cache": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.7.0.tgz", - "integrity": "sha512-JlXNoZXcWzLKdDlfeF3dIj5Vtel5T9vtdBN72PJ+cjC4qNHk4Uwvc5sfOBELuibGN0bVu2bwY9nUgSwCiB1iIA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.8.1.tgz", + "integrity": "sha512-wvdn0B21bg227JzgxxlCwu6L8SryAZyTe/pZ32jsUsGxuVqT2BLYczyQL7OqCG5902rnImsBjETkOIxXeCgThg==", "dev": true, "dependencies": { - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/fs": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/utils": "2.8.1", "lmdb": "2.5.2" }, "engines": { @@ -487,13 +623,13 @@ "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.7.0" + "@parcel/core": "^2.8.1" } }, "node_modules/@parcel/codeframe": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.7.0.tgz", - "integrity": "sha512-UTKx0jejJmmO1dwTHSJuRgrO8N6PMlkxRT6sew8N6NC3Bgv6pu0EbO+RtlWt/jCvzcdLOPdIoTzj4MMZvgcMYg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.8.1.tgz", + "integrity": "sha512-VNmnWJHYDQP9vRo9WZIGV5YeBzDuJVeYLLBzmYYnT2QZx85gXYKUm05LfYqKYnP0FmMT1bv7AWLMKN6HFhVrfw==", "dev": true, "dependencies": { "chalk": "^4.1.0" @@ -507,16 +643,16 @@ } }, "node_modules/@parcel/compressor-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.7.0.tgz", - "integrity": "sha512-SCXwnOOQT6EmpusBsYWNQ/RFri+2JnKuE0gMSf2dROl2xbererX45FYzeDplWALCKAdjMNDpFwU+FyMYoVZSCQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.8.1.tgz", + "integrity": "sha512-mm3RFiaofqzwdFxkuvUopsiOe4dyBIheY8D5Yh4BebuavPcgvLmrW3B3BaIR84kv6l6zy3i0QiuaLgbYhnrnuQ==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0" + "@parcel/plugin": "2.8.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -524,70 +660,70 @@ } }, "node_modules/@parcel/config-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.7.0.tgz", - "integrity": "sha512-ZzsLr97AYrz8c9k6qn3DlqPzifi3vbP7q3ynUrAFxmt0L4+K0H9N508ZkORYmCgaFjLIQ8Y3eWpwCJ0AewPNIg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.8.1.tgz", + "integrity": "sha512-UGj4BZ6keEPZ+8RWYRDEQJkbTaVG0r6ewNxqV4kKew4vCejRg1TMnQL8OJYG2non10sQqbmisfZMqCECA6OJMg==", "dev": true, "dependencies": { - "@parcel/bundler-default": "2.7.0", - "@parcel/compressor-raw": "2.7.0", - "@parcel/namer-default": "2.7.0", - "@parcel/optimizer-css": "2.7.0", - "@parcel/optimizer-htmlnano": "2.7.0", - "@parcel/optimizer-image": "2.7.0", - "@parcel/optimizer-svgo": "2.7.0", - "@parcel/optimizer-terser": "2.7.0", - "@parcel/packager-css": "2.7.0", - "@parcel/packager-html": "2.7.0", - "@parcel/packager-js": "2.7.0", - "@parcel/packager-raw": "2.7.0", - "@parcel/packager-svg": "2.7.0", - "@parcel/reporter-dev-server": "2.7.0", - "@parcel/resolver-default": "2.7.0", - "@parcel/runtime-browser-hmr": "2.7.0", - "@parcel/runtime-js": "2.7.0", - "@parcel/runtime-react-refresh": "2.7.0", - "@parcel/runtime-service-worker": "2.7.0", - "@parcel/transformer-babel": "2.7.0", - "@parcel/transformer-css": "2.7.0", - "@parcel/transformer-html": "2.7.0", - "@parcel/transformer-image": "2.7.0", - "@parcel/transformer-js": "2.7.0", - "@parcel/transformer-json": "2.7.0", - "@parcel/transformer-postcss": "2.7.0", - "@parcel/transformer-posthtml": "2.7.0", - "@parcel/transformer-raw": "2.7.0", - "@parcel/transformer-react-refresh-wrap": "2.7.0", - "@parcel/transformer-svg": "2.7.0" + "@parcel/bundler-default": "2.8.1", + "@parcel/compressor-raw": "2.8.1", + "@parcel/namer-default": "2.8.1", + "@parcel/optimizer-css": "2.8.1", + "@parcel/optimizer-htmlnano": "2.8.1", + "@parcel/optimizer-image": "2.8.1", + "@parcel/optimizer-svgo": "2.8.1", + "@parcel/optimizer-terser": "2.8.1", + "@parcel/packager-css": "2.8.1", + "@parcel/packager-html": "2.8.1", + "@parcel/packager-js": "2.8.1", + "@parcel/packager-raw": "2.8.1", + "@parcel/packager-svg": "2.8.1", + "@parcel/reporter-dev-server": "2.8.1", + "@parcel/resolver-default": "2.8.1", + "@parcel/runtime-browser-hmr": "2.8.1", + "@parcel/runtime-js": "2.8.1", + "@parcel/runtime-react-refresh": "2.8.1", + "@parcel/runtime-service-worker": "2.8.1", + "@parcel/transformer-babel": "2.8.1", + "@parcel/transformer-css": "2.8.1", + "@parcel/transformer-html": "2.8.1", + "@parcel/transformer-image": "2.8.1", + "@parcel/transformer-js": "2.8.1", + "@parcel/transformer-json": "2.8.1", + "@parcel/transformer-postcss": "2.8.1", + "@parcel/transformer-posthtml": "2.8.1", + "@parcel/transformer-raw": "2.8.1", + "@parcel/transformer-react-refresh-wrap": "2.8.1", + "@parcel/transformer-svg": "2.8.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.7.0" + "@parcel/core": "^2.8.1" } }, "node_modules/@parcel/core": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.7.0.tgz", - "integrity": "sha512-7yKZUdh314Q/kU/9+27ZYTfcnXS6VYHuG+iiUlIohnvUUybxLqVJhdMU9Q+z2QcPka1IdJWz4K4Xx0y6/4goyg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.8.1.tgz", + "integrity": "sha512-i84Ic+Ei907kChVGrTOhN3+AB46ymqia0wJCxio/BAbUJc3PLx0EmOAgLutACVNompCYcXpV9kASiGJHcfHW5w==", "dev": true, "dependencies": { "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/graph": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", + "@parcel/cache": "2.8.1", + "@parcel/diagnostic": "2.8.1", + "@parcel/events": "2.8.1", + "@parcel/fs": "2.8.1", + "@parcel/graph": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/package-manager": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", + "@parcel/workers": "2.8.1", "abortcontroller-polyfill": "^1.1.9", "base-x": "^3.0.8", "browserslist": "^4.6.6", @@ -616,26 +752,10 @@ "semver": "bin/semver" } }, - "node_modules/@parcel/css": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@parcel/css/-/css-1.14.0.tgz", - "integrity": "sha512-r5tJWe6NF6lesfPw1N3g7N7WUKpHqi2ONnw9wl5ccSGGIxkmgcPaPQxfvmhdjXvQnktSuIOR0HjQXVXu+/en/w==", - "dev": true, - "dependencies": { - "lightningcss": "^1.14.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@parcel/diagnostic": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.7.0.tgz", - "integrity": "sha512-pdq/cTwVoL0n8yuDCRXFRSQHVWdmmIXPt3R3iT4KtYDYvOrMT2dLPT79IMqQkhYPANW8GuL15n/WxRngfRdkug==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.8.1.tgz", + "integrity": "sha512-IyMREe9OkfEqTNi67ZmFRtc6dZ35w0Snj05yDnxv5fKcLftYgZ1UDl2/64WIQQ2MZQnrZV9qrdZssdPhY9Qf3A==", "dev": true, "dependencies": { "@mischnic/json-sourcemap": "^0.1.0", @@ -650,9 +770,9 @@ } }, "node_modules/@parcel/events": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.7.0.tgz", - "integrity": "sha512-kQDwMKgZ1U4M/G17qeDYF6bW5kybluN6ajYPc7mZcrWg+trEI/oXi81GMFaMX0BSUhwhbiN5+/Vb2wiG/Sn6ig==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.8.1.tgz", + "integrity": "sha512-x3JOa9RgEhHTGhRusC9/Er4/KZQ4F5M2QVTaHTmCqWqA/eOVXpi5xQTERvNFsb/5cmfsDlFPXPd1g4ErRJfasw==", "dev": true, "engines": { "node": ">= 12.0.0" @@ -663,16 +783,16 @@ } }, "node_modules/@parcel/fs": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.7.0.tgz", - "integrity": "sha512-PU5fo4Hh8y03LZgemgVREttc0wyHQUNmsJCybxTB7EjJie2CqJRumo+DFppArlvdchLwJdc9em03yQV/GNWrEg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.8.1.tgz", + "integrity": "sha512-+3lZfH0/2IoGrlq09SuOaULe55S6F+G2rGVHLqPt8JO9JJr1fMAZIGVA8YkPOv4Y/LhL0M1ly0gek4k+jl8iDg==", "dev": true, "dependencies": { - "@parcel/fs-search": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/watcher": "^2.0.0", - "@parcel/workers": "2.7.0" + "@parcel/fs-search": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", + "@parcel/watcher": "^2.0.7", + "@parcel/workers": "2.8.1" }, "engines": { "node": ">= 12.0.0" @@ -682,13 +802,13 @@ "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.7.0" + "@parcel/core": "^2.8.1" } }, "node_modules/@parcel/fs-search": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.7.0.tgz", - "integrity": "sha512-K1Hv25bnRpwQVA15RvcRuB8ZhfclnCHA8N8L6w7Ul1ncSJDxCIkIAc5hAubYNNYW3kWjCC2SOaEgFKnbvMllEQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.8.1.tgz", + "integrity": "sha512-zp1CjB3Va4Sp7JrS/8tUs5NzHYPiWgabsL70Xv7ExlvIBZC42HI0VEbBFvNn4/pra2s+VqJhStd2GTBvjnwk9g==", "dev": true, "dependencies": { "detect-libc": "^1.0.3" @@ -702,12 +822,11 @@ } }, "node_modules/@parcel/graph": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.7.0.tgz", - "integrity": "sha512-Q6E94GS6q45PtsZh+m+gvFRp/N1Qopxhu2sxjcWsGs5iBd6IWn2oYLWOH5iVzEjWuYpW2HkB08lH6J50O63uOA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.8.1.tgz", + "integrity": "sha512-ZNRZLGfpcASMRhKmu3nySyMybqXtddneCf29E3FLqYEqj5dqbp4jBfKI55E9vxVUssp4cNKmVfqcTHFGXfGEaQ==", "dev": true, "dependencies": { - "@parcel/utils": "2.7.0", "nullthrows": "^1.1.1" }, "engines": { @@ -719,9 +838,9 @@ } }, "node_modules/@parcel/hash": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.7.0.tgz", - "integrity": "sha512-k6bSKnIlPJMPU3yjQzfgfvF9zuJZGOAlJgzpL4BbWvdbE8BTdjzLcFn0Ujrtud94EgIkiXd22sC2HpCUWoHGdA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.8.1.tgz", + "integrity": "sha512-qI2CDyN7ogdCi0Euha3pCr9oZ8+4XBO/hRlYPo6MQ7pAg/dfncg+xEpWyt/g2KRhbTapX/+Zk8SnRJyy+Pynvw==", "dev": true, "dependencies": { "detect-libc": "^1.0.3", @@ -736,13 +855,13 @@ } }, "node_modules/@parcel/logger": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.7.0.tgz", - "integrity": "sha512-qjMY/bYo38+o+OiIrTRldU9CwL1E7J72t+xkTP8QIcUxLWz5LYR0YbynZUVulmBSfqsykjjxCy4a+8siVr+lPw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.8.1.tgz", + "integrity": "sha512-jnZfAZT8OQVilATC+tgxoNgx1woc84akG6R3lYeYbmKByRQdZ5QzEUJ4IIgXKCXk6Vp+GhORs7Omot418zx1xg==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0" + "@parcel/diagnostic": "2.8.1", + "@parcel/events": "2.8.1" }, "engines": { "node": ">= 12.0.0" @@ -753,9 +872,9 @@ } }, "node_modules/@parcel/markdown-ansi": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.7.0.tgz", - "integrity": "sha512-ipOX0D6FVZFEXeb/z8MnTMq2RQEIuaILY90olVIuHEFLHHfOPEn+RK3u13HA1ChF5/9E3cMD79tu6x9JL9Kqag==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.8.1.tgz", + "integrity": "sha512-5aNMdBlUniCjcJOdsgaLrr9xRKPgH7zmnifdJOlUOeW2wk95xRRVLIbTJoMtGxkN4gySxPZWX+SfOYXVLWqqAw==", "dev": true, "dependencies": { "chalk": "^4.1.0" @@ -769,18 +888,18 @@ } }, "node_modules/@parcel/namer-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.7.0.tgz", - "integrity": "sha512-lIKMdsmi//7fepecNDYmJYzBlL91HifPsX03lJCdu1dC6q5fBs+gG0XjKKG7yPnSCw1qH/4m7drzt9+dRZYAHQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.8.1.tgz", + "integrity": "sha512-ewI1Rk7Fn3iqsgnU2bcelgQtckrhWtRip7mdeI7VWr+M/M1DiwVvaxOQCZ8E083umjooMvmRDXXx9YGAqT8Kgw==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -788,13 +907,13 @@ } }, "node_modules/@parcel/node-resolver-core": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.7.0.tgz", - "integrity": "sha512-5UJQHalqMxdhJIs2hhqQzFfQpF7+NAowsRq064lYtiRvcD8wMr3OOQ9wd1iazGpFSl4JKdT7BwDU9/miDJmanQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.8.1.tgz", + "integrity": "sha512-kg7YQwYAIxVfV8DW8IjhiF1xf4XCQ9NReZSpgNZ1ubUvApakRqfLvttp4K1ZIpnm+OLvtgXn1euV4J9jhx7qXw==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1", "semver": "^5.7.1" }, @@ -816,22 +935,22 @@ } }, "node_modules/@parcel/optimizer-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.7.0.tgz", - "integrity": "sha512-IfnOMACqhcAclKyOW9X9JpsknB6OShk9OVvb8EvbDTKHJhQHNNmzE88OkSI/pS3ZVZP9Zj+nWcVHguV+kvDeiQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.8.1.tgz", + "integrity": "sha512-iZqNhZiMtTg2z19FpGkFFx3SQpWakh3S7gaG75fN4Mt3o84G35ag920uHT/6a34wFBHSuH05lLZGUlDwKIU5Ng==", "dev": true, "dependencies": { - "@parcel/css": "^1.12.2", - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "browserslist": "^4.6.6", + "lightningcss": "^1.16.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -839,12 +958,12 @@ } }, "node_modules/@parcel/optimizer-htmlnano": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.7.0.tgz", - "integrity": "sha512-5QrGdWS5Hi4VXE3nQNrGqugmSXt68YIsWwKRAdarOxzyULSJS3gbCiQOXqIPRJobfZjnSIcdtkyxSiCUe1inIA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.8.1.tgz", + "integrity": "sha512-lIm2nvU506fzNQl6VrsANKjHC1wVwqgfPLJreC7JazRLBYwTl2UvyjNmAEjtnmoGbwA6GS9+Y3TaYcbGjNvpwA==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", + "@parcel/plugin": "2.8.1", "htmlnano": "^2.0.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", @@ -852,28 +971,96 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/optimizer-image": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.7.0.tgz", - "integrity": "sha512-EnaXz5UjR67FUu0BEcqZTT9LsbB/iFAkkghCotbnbOuC5QQsloq6tw54TKU3y+R3qsjgUoMtGxPcGfVoXxZXYw==", + "node_modules/@parcel/optimizer-htmlnano/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/@parcel/optimizer-htmlnano/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@parcel/optimizer-htmlnano/node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@parcel/optimizer-htmlnano/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/@parcel/optimizer-htmlnano/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@parcel/optimizer-image": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.8.1.tgz", + "integrity": "sha512-mi4pgr/aj47y5X7zLsHP+tFv9hW1wUDnAu9PxCrBKGE0uEqWs9L6boCzJ1dmjfnvNT9phs6ZXyv4zlayRBVQLw==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", + "@parcel/workers": "2.8.1", "detect-libc": "^1.0.3" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -881,41 +1068,109 @@ } }, "node_modules/@parcel/optimizer-svgo": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.7.0.tgz", - "integrity": "sha512-IO1JV4NpfP3V7FrhsqCcV8pDQIHraFi1/ZvEJyssITxjH49Im/txKlwMiQuZZryAPn8Xb8g395Muawuk6AK6sg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.8.1.tgz", + "integrity": "sha512-V8KP+EaO0jLI0l3hpiv/fTSVRKCRKyBwSZt0dnWU2LWPAOIK5H3ggeicXc61th+nEACk/u7YzoP7oxpU87VzHA==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "svgo": "^2.4.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/optimizer-terser": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.7.0.tgz", - "integrity": "sha512-07VZjIO8xsl2/WmS/qHI8lI/cpu47iS9eRpqwfZEEsdk1cfz50jhWkmFudHBxiHGMfcZ//1+DdaPg9RDBWZtZA==", + "node_modules/@parcel/optimizer-svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/@parcel/optimizer-svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@parcel/optimizer-svgo/node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@parcel/optimizer-svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/@parcel/optimizer-svgo/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@parcel/optimizer-terser": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.8.1.tgz", + "integrity": "sha512-ELNtiq1nqvEfURwFgSzK93Zb3C0ruxIUT/ln8zGi8KQTxWKA0PLthzlAqwAotA/zKF5DwjUa3gw0pn2xKuZv8w==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1", "terser": "^5.2.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -923,17 +1178,17 @@ } }, "node_modules/@parcel/package-manager": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.7.0.tgz", - "integrity": "sha512-wmfSX1mRrTi8MeA4KrnPk/x7zGUsILCQmTo6lA4gygzAxDbM1pGuyFN8/Kt0y0SFO2lbljARtD/4an5qdotH+Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.8.1.tgz", + "integrity": "sha512-zv0hAOwlCHcV4jNM60hG9fkNcEwkI9O/FsZlPMqqXBq5rKJ4iMyvOoMCzkfWUqf3RkgqvXSqTfEaDD6MQJ0ZGg==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/fs": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", + "@parcel/workers": "2.8.1", "semver": "^5.7.1" }, "engines": { @@ -944,7 +1199,7 @@ "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.7.0" + "@parcel/core": "^2.8.1" } }, "node_modules/@parcel/package-manager/node_modules/semver": { @@ -957,19 +1212,19 @@ } }, "node_modules/@parcel/packager-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.7.0.tgz", - "integrity": "sha512-44nzZwu+ssGuiFmYM6cf/Y4iChiUZ4DUzzpegnGlhXtKJKe4NHntxThJynuRZWKN2AAf48avApDpimg2jW0KDw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.8.1.tgz", + "integrity": "sha512-nFeIwNgElEVZQCUKOU52T34TMpUhpCazNzAD79/Adrwu4YsFlIU6DmGePyGYlXDNlyuM+gCIu5uXgVUyn96ZnA==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -977,20 +1232,20 @@ } }, "node_modules/@parcel/packager-html": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.7.0.tgz", - "integrity": "sha512-Zgqd7sdcY/UnR370GR0q2ilmEohUDXsO8A1F28QCJzIsR1iCB6KRUT74+pawfQ1IhXZLaaFLLYe0UWcfm0JeXg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.8.1.tgz", + "integrity": "sha512-9e1HM4kutardgEmWLJTqG+jGoA/sozaN8xVQ8tavFRyMS3dEjB78Kb/+nT887nIXmoWSFSkUkh1LM+9O4OqkJQ==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1", "posthtml": "^0.16.5" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -998,22 +1253,22 @@ } }, "node_modules/@parcel/packager-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.7.0.tgz", - "integrity": "sha512-wTRdM81PgRVDzWGXdWmqLwguWnTYWzhEDdjXpW2n8uMOu/CjHhMtogk65aaYk3GOnq6OBL/NsrmBiV/zKPj1vA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.8.1.tgz", + "integrity": "sha512-BWJsCjBZAexeCHGDxJrXYduVdlTygj6Ok6HIg2skIkAVfPLipx9GIh10EBsdHZy3GhWddvnvxaMXQdUvoADnEw==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "globals": "^13.2.0", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1021,16 +1276,16 @@ } }, "node_modules/@parcel/packager-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.7.0.tgz", - "integrity": "sha512-jg2Zp8dI5VpIQlaeahXDCfrPN9m/DKht1NkR9P2CylMAwqCcc1Xc1RRiF0wfwcPZpPMpq1265n+4qnB7rjGBlA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.8.1.tgz", + "integrity": "sha512-VeXRLPT2WF03sVjxI1yaRvDJAvxorxCLm56xwxCWmDgRTBb4q/cv81AAVztLkYsOltjDWJnFSQLm1AvZz6oSaw==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0" + "@parcel/plugin": "2.8.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1038,19 +1293,19 @@ } }, "node_modules/@parcel/packager-svg": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.7.0.tgz", - "integrity": "sha512-EmJg3HpD6/xxKBjir/CdCKJZwI24iVfBuxRS9LUp3xHAIebOzVh1z6IN+i2Di5+NyRwfOFaLliL4uMa1zwbyCA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.8.1.tgz", + "integrity": "sha512-Yln3iuAohtVN8XDDbBWqH0fUMVWfsmDpJ6pNjZPTyXeaFOw2GkqvRaQwQM5CDXKGstkLHCzYBBhIVrmEWxTyXA==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", "posthtml": "^0.16.4" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1058,12 +1313,12 @@ } }, "node_modules/@parcel/plugin": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.7.0.tgz", - "integrity": "sha512-qqgx+nnMn6/0lRc4lKbLGmhNtBiT93S2gFNB4Eb4Pfz/SxVYoW+fmml+KdfOSiZffWOAH5L6NwhyD7N8aSikzw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.8.1.tgz", + "integrity": "sha512-7rAKJ8UvjwMwyiOKy5nl1UEjeLLINN6tKU8Gr9rqjfC9lux/wrd0+wuixtncThpyNJHOdmPggqTA412s2pgbNQ==", "dev": true, "dependencies": { - "@parcel/types": "2.7.0" + "@parcel/types": "2.8.1" }, "engines": { "node": ">= 12.0.0" @@ -1074,20 +1329,20 @@ } }, "node_modules/@parcel/reporter-cli": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.7.0.tgz", - "integrity": "sha512-80gEODg8cnAmnxGVuaSVDo8JJ54P9AA2bHwSs1cIkHWlJ3BjDQb83H31bBHncJ5Kn5kQ/j+7WjlqHpTCiOR9PA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.8.1.tgz", + "integrity": "sha512-9+Wk9eaQOTHAQs6h+aeoqPGCJxNJkMdLnD7eHbHd8Jn+Ge4ux29yBJUn5zfmWLo/5zGI8yXDjoLLOQNPqVgU2g==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", "chalk": "^4.1.0", "term-size": "^2.2.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1095,17 +1350,17 @@ } }, "node_modules/@parcel/reporter-dev-server": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.7.0.tgz", - "integrity": "sha512-ySuou5addK8fGue8aXzo536BaEjMujDrEc1xkp4TasInXHVcA98b+SYX5NAZTGob5CxKvZQ5ylhg77zW30B+iA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.8.1.tgz", + "integrity": "sha512-LO3gu8r+NpKJHNzJPEum/Mvem0Pr8B66J7OAFJWCHkJ4QMJU7V8F40gcweKCbbVBctMelptz2eTqXr4pBgrlkg==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0" + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1113,17 +1368,17 @@ } }, "node_modules/@parcel/resolver-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.7.0.tgz", - "integrity": "sha512-v8TvWsbLK7/q7n4gv6OrYNbW18xUx4zKbVMGZb1u4yMhzEH4HFr1D9OeoTq3jk+ximAigds8B6triQbL5exF7A==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.8.1.tgz", + "integrity": "sha512-t203Y7PEGnwl4GEr9AthgMOgjLbtCCKzzKty3PLRSeZY4e2grc/SRUWZM7lQO2UMlKpheXuEJy4irvHl7qv43A==", "dev": true, "dependencies": { - "@parcel/node-resolver-core": "2.7.0", - "@parcel/plugin": "2.7.0" + "@parcel/node-resolver-core": "2.8.1", + "@parcel/plugin": "2.8.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1131,17 +1386,17 @@ } }, "node_modules/@parcel/runtime-browser-hmr": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.7.0.tgz", - "integrity": "sha512-PLbMLdclQeYsi2LkilZVGFV1n3y55G1jaBvby4ekedUZjMw3SWdMY2tDxgSDdFWfLCnYHJXdGUQSzGGi1kPzjA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.8.1.tgz", + "integrity": "sha512-BmkJYQYGtkXNnI25sl1yE9sWDXK1t6Rtz3tTUDB0kD62ukV6rx6qjEpmcHdB2NgjvAkPIwZHnVK4KE1QX71dTg==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0" + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1149,18 +1404,18 @@ } }, "node_modules/@parcel/runtime-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.7.0.tgz", - "integrity": "sha512-9/YUZTBNrSN2H6rbz/o1EOM0O7I3ZR/x9IDzxjJBD6Mi+0uCgCD02aedare/SNr1qgnbZZWmhpOzC+YgREcfLA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.8.1.tgz", + "integrity": "sha512-OMbjlunfk+b+4OUjjCZxsJOlxXAG878g6rUr1LIBBlukK65z1WxhjBukjf2y7ZbtIvIx3/k07fNgekQeFYBJaQ==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1168,19 +1423,19 @@ } }, "node_modules/@parcel/runtime-react-refresh": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.7.0.tgz", - "integrity": "sha512-vDKO0rWqRzEpmvoZ4kkYUiSsTxT5NnH904BFPFxKI0wJCl6yEmPuEifmATo73OuYhP6jIP3Qfl1R4TtiDFPJ1Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.8.1.tgz", + "integrity": "sha512-HbPKocBTt9Adj01MTYJnkp+U8WODBCCE+j9GdUHnLEobuctupLLM+ARiGXEzc4T+dwxgo/1nKaYCki9segCBFg==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "react-error-overlay": "6.0.9", "react-refresh": "^0.9.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1188,18 +1443,18 @@ } }, "node_modules/@parcel/runtime-service-worker": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.7.0.tgz", - "integrity": "sha512-uD2pAV0yV6+e7JaWH4KVPbG+zRCrxr/OACyS9tIh+Q/R1vRmh8zGM3yhdrcoiZ7tFOnM72vd6xY11eTrUsSVig==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.8.1.tgz", + "integrity": "sha512-hIwtcx6UxXTxv3LzQHX057jrlYXKSQMmLDq0+CNHMvStjIqMvE2inn6WBXL7fBC0iFbe4/wknRow+cX8nHKIzQ==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1219,15 +1474,15 @@ } }, "node_modules/@parcel/transformer-babel": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.7.0.tgz", - "integrity": "sha512-7iklDXXnKH1530+QbI+e4kIJ+Q1puA1ulRS10db3aUJMj5GnvXGDFwhSZ7+T1ps66QHO7cVO29VlbqiRDarH1Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.8.1.tgz", + "integrity": "sha512-pIURnRJ1GU885tRrSHmmA6sE8JSC8/KpU9XM9wmK6Se/nWbSFTvNkiRx1sXxmUXBUPBCa0VFqQEcwrzGB4Py6A==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "browserslist": "^4.6.6", "json5": "^2.2.0", "nullthrows": "^1.1.1", @@ -1235,7 +1490,7 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1252,22 +1507,22 @@ } }, "node_modules/@parcel/transformer-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.7.0.tgz", - "integrity": "sha512-J4EpWK9spQpXyNCmKK8Xnane0xW/1B/EAmfp7Fiv7g+5yUjY4ODf4KUugvE+Eb2gekPkhOKNHermO2KrX0/PFA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.8.1.tgz", + "integrity": "sha512-DUPIcfZpuPYR/6SAu1TI08n2zjb7p3qoAkqqh2lIQniL99uEq8OsNFl84JEwUIiESZS/ExpQ7yXxAN7G1qamVw==", "dev": true, "dependencies": { - "@parcel/css": "^1.12.2", - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "browserslist": "^4.6.6", + "lightningcss": "^1.16.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1275,14 +1530,14 @@ } }, "node_modules/@parcel/transformer-html": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.7.0.tgz", - "integrity": "sha512-wYJl5rn81W+Rlk9oQwDJcjoVsWVDKyeri84FzmlGXOsg0EYgnqOiG+3MDM8GeZjfuGe5fuoum4eqZeS0WdUHXw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.8.1.tgz", + "integrity": "sha512-Ve9qjNE+gWdyHyDKyzq+UwYdX0KjoHGo8WVN2qX0UtH+TYwnoi51oi+GTBa96+0Rq8fzBHWkqf53sUTFzDaFdw==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/plugin": "2.8.1", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -1291,7 +1546,7 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1308,36 +1563,36 @@ } }, "node_modules/@parcel/transformer-image": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.7.0.tgz", - "integrity": "sha512-mhi9/R5/ULhCkL2COVIKhNFoLDiZwQgprdaTJr5fnODggVxEX5o7ebFV6KNLMTEkwZUJWoB1hL0ziI0++DtoFA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.8.1.tgz", + "integrity": "sha512-K5PF00LXY1RelPEdMcZSc/rsQcjjmeBNDvLSrv9DWVbhiYZ+k3JRS9y5Ga+wPYRdEl0d+Z61ku0+cqz/uCoryA==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", + "@parcel/workers": "2.8.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "peerDependencies": { - "@parcel/core": "^2.7.0" + "@parcel/core": "^2.8.1" } }, "node_modules/@parcel/transformer-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.7.0.tgz", - "integrity": "sha512-mzerR+D4rDomUSIk5RSTa2w+DXBdXUeQrpDO74WCDdpDi1lIl8ppFpqtmU7O6y6p8QsgkmS9b0g/vhcry6CJTA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.8.1.tgz", + "integrity": "sha512-yGYpgBwL0DrkojXNvij+8f1Av6oU8PNUMVbfZRIVMdZ+Wtjx8NyAeY16cjSIxnG16vL5Pff+QhlBKRp9n6tnKA==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "@swc/helpers": "^0.4.2", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", + "@parcel/workers": "2.8.1", + "@swc/helpers": "^0.4.12", "browserslist": "^4.6.6", "detect-libc": "^1.0.3", "nullthrows": "^1.1.1", @@ -1346,14 +1601,14 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.7.0" + "@parcel/core": "^2.8.1" } }, "node_modules/@parcel/transformer-js/node_modules/semver": { @@ -1366,17 +1621,17 @@ } }, "node_modules/@parcel/transformer-json": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.7.0.tgz", - "integrity": "sha512-RQjuxBpYOch+kr4a0zi77KJtOLTPYRM7iq4NN80zKnA0r0dwDUCxZBtaj2l0O0o3R4MMJnm+ncP+cB7XR7dZYA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.8.1.tgz", + "integrity": "sha512-CijTTmMModiyBJCJoPlQvjrByaAs4jKMF+8Mbbaap39A1hJPNVSReFvHbRBO/cZ+2uVgxuSmfYD00YuZ784aVg==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", + "@parcel/plugin": "2.8.1", "json5": "^2.2.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1384,15 +1639,15 @@ } }, "node_modules/@parcel/transformer-postcss": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.7.0.tgz", - "integrity": "sha512-b6RskXBWf0MjpC9qjR2dQ1ZdRnlOiKYseG5CEovWCqM218RtdydFKz7jS+5Gxkb6qBtOG7zGPONXdPe+gTILcA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.8.1.tgz", + "integrity": "sha512-xmO4zA8nCgCgPstqxHr2BzRSJtqAy8cyAY1R9oi5FHkU5xHEzOGrcj5JynlU0eJssFten48kf8Csx6ciOsH1ZA==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "clone": "^2.1.1", "nullthrows": "^1.1.1", "postcss-value-parser": "^4.2.0", @@ -1400,7 +1655,7 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1417,13 +1672,13 @@ } }, "node_modules/@parcel/transformer-posthtml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.7.0.tgz", - "integrity": "sha512-cP8YOiSynWJ1ycmBlhnnHeuQb2cwmklZ+BNyLUktj5p78kDy2de7VjX+dRNRHoW4H9OgEcSF4UEfDVVz5RYIhw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.8.1.tgz", + "integrity": "sha512-CLrSw+386j7RCrWV3Oyob4qNP+qyfVRDs1BzJZMMW8MFjxEC/ohPi2piGNzaqWPHOvATFodqXBvJBc2WcEZKGA==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -1432,7 +1687,7 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1449,16 +1704,16 @@ } }, "node_modules/@parcel/transformer-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.7.0.tgz", - "integrity": "sha512-sDnItWCFSDez0izK1i5cgv+kXzZTbcJh4rNpVIgmE1kBLvAz608sqgcCkavb2wVJIvLesxYM+5G4p1CwkDlZ1g==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.8.1.tgz", + "integrity": "sha512-LVC6FX5tcLrZcOV1yzA8FMT5R+u2uQqCt/TXPhrt3MBw3WovKpaMicSkR0AI/802tg+nm1wpURVEfAA2S9+AQw==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0" + "@parcel/plugin": "2.8.1" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1466,18 +1721,18 @@ } }, "node_modules/@parcel/transformer-react-refresh-wrap": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.7.0.tgz", - "integrity": "sha512-1vRmIJzyBA1nIiXTAU6tZExq2FvJj/2F0ft6KDw8GYPv0KjmdiPo/PmaZ7JeSVOM6SdXQIQCbTmp1vkMP7DtkA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.8.1.tgz", + "integrity": "sha512-VkULeuyy0CrxfMwrRkn4V/HmbXzbuqp3+drvYFRCo29SFuC6rJbBF43XiewmvJijWIGCfEAa6bU9/csg2d5+3g==", "dev": true, "dependencies": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "react-refresh": "^0.9.0" }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1485,14 +1740,14 @@ } }, "node_modules/@parcel/transformer-svg": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.7.0.tgz", - "integrity": "sha512-ioER37zceuuE+K6ZrnjCyMUWEnv+63hIAFResc1OXxRhyt+7kzMz9ZqK0Mt6QMLwl1dxhkLmrU41n9IxzKZuSQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.8.1.tgz", + "integrity": "sha512-HSPve53tWttfKmoXgNLmrF49UCsE38xsA/CkWxI6wQM2qoqLMyei5DY9UsD0cjcAm87tSlZFTq9E/Nbol8g50w==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/plugin": "2.8.1", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -1501,7 +1756,7 @@ }, "engines": { "node": ">= 12.0.0", - "parcel": "^2.7.0" + "parcel": "^2.8.1" }, "funding": { "type": "opencollective", @@ -1518,32 +1773,32 @@ } }, "node_modules/@parcel/types": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.7.0.tgz", - "integrity": "sha512-+dhXVUnseTCpJvBTGMp0V6X13z6O/A/+CUtwEpMGZ8XSmZ4Gk44GvaTiBOp0bJpWG4fvCKp+UmC8PYbrDiiziw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.8.1.tgz", + "integrity": "sha512-sLkpjGCCJy8Hxe6+dme+sugyu6+RW5B8WcdXG1Ynp7SkdgEYV44TKNVGnhoxsHi50G+O1ktZ4jzAu+pzubidXQ==", "dev": true, "dependencies": { - "@parcel/cache": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/workers": "2.7.0", + "@parcel/cache": "2.8.1", + "@parcel/diagnostic": "2.8.1", + "@parcel/fs": "2.8.1", + "@parcel/package-manager": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/workers": "2.8.1", "utility-types": "^3.10.0" } }, "node_modules/@parcel/utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.7.0.tgz", - "integrity": "sha512-jNZ5bIGg1r1RDRKi562o4kuVwnz+XJ2Ie3b0Zwrqwvgfj6AbRFIKzDd+h85dWWmcDYzKUbHp11u6VJl1u8Vapg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.8.1.tgz", + "integrity": "sha512-C01Iz+K7oUVNTEzMW6SLDpqTDpm+Z3S+Ms3TxImkLYmdvYpYtzdU+gAllv6ck9WgB1Kqgcxq3TC0yhFsNDb5WQ==", "dev": true, "dependencies": { - "@parcel/codeframe": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/markdown-ansi": "2.7.0", - "@parcel/source-map": "^2.0.0", + "@parcel/codeframe": "2.8.1", + "@parcel/diagnostic": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/markdown-ansi": "2.8.1", + "@parcel/source-map": "^2.1.1", "chalk": "^4.1.0" }, "engines": { @@ -1555,9 +1810,9 @@ } }, "node_modules/@parcel/watcher": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.5.tgz", - "integrity": "sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.7.tgz", + "integrity": "sha512-gc3hoS6e+2XdIQ4HHljDB1l0Yx2EWh/sBBtCEFNKGSMlwASWeAQsOY/fPbxOBcZ/pg0jBh4Ga+4xHlZc4faAEQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -1573,15 +1828,15 @@ } }, "node_modules/@parcel/workers": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.7.0.tgz", - "integrity": "sha512-99VfaOX+89+RaoTSyH9ZQtkMBFZBFMvJmVJ/GeJT6QCd2wtKBStTHlaSnQOkLD/iRjJCNwV2xpZmm8YkTwV+hg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.8.1.tgz", + "integrity": "sha512-6TnRPwBpxXUsekKK88OxPZ500gvApxF0TaZdSDvmMlvDWjZYgkDN3AAsaFS1gwFLS4XKogn2TgjUnocVof8DXg==", "dev": true, "dependencies": { - "@parcel/diagnostic": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", "chrome-trace-event": "^1.0.2", "nullthrows": "^1.1.1" }, @@ -1593,13 +1848,13 @@ "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.7.0" + "@parcel/core": "^2.8.1" } }, "node_modules/@swc/helpers": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.12.tgz", - "integrity": "sha512-R6RmwS9Dld5lNvwKlPn62+piU+WDG1sMfsnfJioXCciyko/gZ0DQ4Mqglhq1iGU1nQ/RcGkAwfMH+elMSkJH3Q==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", "dev": true, "dependencies": { "tslib": "^2.4.0" @@ -1648,9 +1903,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", - "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", "dev": true, "dependencies": { "@types/estree": "*", @@ -1673,6 +1928,16 @@ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -1692,24 +1957,18 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", - "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==", + "version": "18.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", + "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", "dev": true }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "node_modules/@types/shelljs": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.11.tgz", + "integrity": "sha512-x9yaMvEh5BEaZKeVQC4vp3l+QoFj3BXcd4aYfuKSzIIyihjdVARAadYy3SMNIz0WCCdS2vB9JL/U6GQk5PaxQw==", "dev": true, - "optional": true, "dependencies": { + "@types/glob": "*", "@types/node": "*" } }, @@ -1899,9 +2158,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2081,6 +2340,15 @@ "node": "*" } }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2102,6 +2370,30 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -2188,21 +2480,25 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -2225,9 +2521,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001421", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001421.tgz", - "integrity": "sha512-Sw4eLbgUJAEhjLs1Fa+mk45sidp1wRn5y6GtDpHGBaNJ9OCDJaVh2tIaWWUnGfuXfKf1JCBaIarak3FkVAvEeA==", + "version": "1.0.30001439", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz", + "integrity": "sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==", "dev": true, "funding": [ { @@ -2394,12 +2690,12 @@ } }, "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, "engines": { - "node": ">= 12" + "node": ">= 10" } }, "node_modules/concat-map": { @@ -2408,20 +2704,31 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" } }, "node_modules/create-require": { @@ -2445,19 +2752,19 @@ } }, "node_modules/css-loader": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", - "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz", + "integrity": "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==", "dev": true, "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.4.7", + "postcss": "^8.4.18", "postcss-modules-extract-imports": "^3.0.0", "postcss-modules-local-by-default": "^4.0.0", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" + "semver": "^7.3.8" }, "engines": { "node": ">= 12.13.0" @@ -2471,32 +2778,99 @@ } }, "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", "nth-check": "^2.0.1" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "node_modules/css-select/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "domelementtype": "^2.3.0" }, "engines": { - "node": ">=8.0.0" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/css-select/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/css-what": { @@ -2524,17 +2898,44 @@ } }, "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "css-tree": "^1.1.2" + "css-tree": "~2.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/cssom": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", @@ -2574,9 +2975,9 @@ } }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -2635,6 +3036,12 @@ "node": ">=0.4.0" } }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, "node_modules/detect-libc": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", @@ -2778,9 +3185,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -2853,9 +3260,9 @@ } }, "node_modules/esbuild-android-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", - "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", "cpu": [ "x64" ], @@ -2869,9 +3276,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", - "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", "cpu": [ "arm64" ], @@ -2885,9 +3292,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", - "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", "cpu": [ "x64" ], @@ -2901,9 +3308,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", - "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", "cpu": [ "arm64" ], @@ -2917,9 +3324,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", - "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", "cpu": [ "x64" ], @@ -2933,9 +3340,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", - "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", "cpu": [ "arm64" ], @@ -2949,9 +3356,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", - "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", "cpu": [ "ia32" ], @@ -2965,9 +3372,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", - "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", "cpu": [ "x64" ], @@ -2981,9 +3388,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", - "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", "cpu": [ "arm" ], @@ -2997,9 +3404,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", - "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", "cpu": [ "arm64" ], @@ -3013,9 +3420,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", - "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", "cpu": [ "mips64el" ], @@ -3029,9 +3436,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", - "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", "cpu": [ "ppc64" ], @@ -3045,9 +3452,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", - "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", "cpu": [ "riscv64" ], @@ -3061,9 +3468,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", - "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", "cpu": [ "s390x" ], @@ -3077,9 +3484,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", - "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", "cpu": [ "x64" ], @@ -3093,9 +3500,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", - "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", "cpu": [ "x64" ], @@ -3115,9 +3522,9 @@ "dev": true }, "node_modules/esbuild-sunos-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", - "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", "cpu": [ "x64" ], @@ -3131,9 +3538,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", - "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", "cpu": [ "ia32" ], @@ -3163,6 +3570,310 @@ } }, "node_modules/esbuild-windows-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-android-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", + "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-android-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", + "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-darwin-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", + "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-darwin-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", + "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-freebsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", + "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-freebsd-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", + "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", + "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", + "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-arm": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", + "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", + "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-mips64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", + "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-ppc64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", + "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-riscv64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", + "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-s390x": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", + "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-netbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", + "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-openbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", + "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-sunos-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", + "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-windows-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", + "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-windows-arm64": { "version": "0.14.49", "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", @@ -3286,6 +3997,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -3318,26 +4035,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3356,15 +4053,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, "node_modules/file-loader": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", @@ -3422,6 +4110,26 @@ "flat": "cli.js" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -3480,6 +4188,20 @@ "node": "*" } }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-port": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", @@ -3543,9 +4265,9 @@ "dev": true }, "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3593,6 +4315,18 @@ "node": ">=8" } }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -3615,22 +4349,22 @@ } }, "node_modules/htmlnano": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.2.tgz", - "integrity": "sha512-+ZrQFS4Ub+zd+/fWwfvoYCEGNEa0/zrpys6CyXxvZDwtL7Pl+pOtRkiujyvBQ7Lmfp7/iEPxtOFgxWA16Gkj3w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.4.tgz", + "integrity": "sha512-WGCkyGFwjKW1GeCBsPYacMvaMnZtFJ0zIRnC2NCddkA+IOEhTqskXrS7lep+3yYZw/nQ3dW1UAX4yA/GJyR8BA==", "dev": true, "dependencies": { - "cosmiconfig": "^7.0.1", + "cosmiconfig": "^8.0.0", "posthtml": "^0.16.5", "timsort": "^0.3.0" }, "peerDependencies": { - "cssnano": "^5.0.11", + "cssnano": "^6.0.0", "postcss": "^8.3.11", - "purgecss": "^4.0.3", + "purgecss": "^5.0.0", "relateurl": "^0.2.7", - "srcset": "^5.0.0", - "svgo": "^2.8.0", + "srcset": "4.0.0", + "svgo": "^3.0.2", "terser": "^5.10.0", "uncss": "^0.17.3" }, @@ -3680,6 +4414,20 @@ "entities": "^3.0.1" } }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -3694,6 +4442,45 @@ "node": ">= 6" } }, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-server/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -3796,11 +4583,14 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } }, "node_modules/is-arrayish": { "version": "0.2.1", @@ -3821,9 +4611,9 @@ } }, "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -3886,6 +4676,15 @@ "node": ">=8" } }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -3936,12 +4735,6 @@ "node": ">= 10.13.0" } }, - "node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", - "dev": true - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4019,9 +4812,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -4050,9 +4843,9 @@ } }, "node_modules/lightningcss": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.16.0.tgz", - "integrity": "sha512-5+ZS9h+xeADcJTF2oRCT3yNZBlDYyOgQSdrWNBCqsIwm8ucKbF061OBVv/WHP4Zk8FToNhwFklk/hMuOngqsIg==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.17.1.tgz", + "integrity": "sha512-DwwM/YYqGwLLP3he41wzDXT/m+8jdEZ80i9ViQNLRgyhey3Vm6N7XHn+4o3PY6wSnVT23WLuaROIpbpIVTNOjg==", "dev": true, "dependencies": { "detect-libc": "^1.0.3" @@ -4065,20 +4858,20 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-darwin-arm64": "1.16.0", - "lightningcss-darwin-x64": "1.16.0", - "lightningcss-linux-arm-gnueabihf": "1.16.0", - "lightningcss-linux-arm64-gnu": "1.16.0", - "lightningcss-linux-arm64-musl": "1.16.0", - "lightningcss-linux-x64-gnu": "1.16.0", - "lightningcss-linux-x64-musl": "1.16.0", - "lightningcss-win32-x64-msvc": "1.16.0" + "lightningcss-darwin-arm64": "1.17.1", + "lightningcss-darwin-x64": "1.17.1", + "lightningcss-linux-arm-gnueabihf": "1.17.1", + "lightningcss-linux-arm64-gnu": "1.17.1", + "lightningcss-linux-arm64-musl": "1.17.1", + "lightningcss-linux-x64-gnu": "1.17.1", + "lightningcss-linux-x64-musl": "1.17.1", + "lightningcss-win32-x64-msvc": "1.17.1" } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.16.0.tgz", - "integrity": "sha512-gIhz6eZFwsC4oVMjBGQ3QWDdLQY7vcXFyM/x91PilgHqu63B9uBa10EZA75YoTEkbKhoz0uDCqyHh/EoF1GrkQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.17.1.tgz", + "integrity": "sha512-YTAHEy4XlzI3sMbUVjbPi9P7+N7lGcgl2JhCZhiQdRAEKnZLQch8kb5601sgESxdGXjgei7JZFqi/vVEk81wYg==", "cpu": [ "arm64" ], @@ -4096,9 +4889,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.16.0.tgz", - "integrity": "sha512-kLPi+OEpDj3UGY6DC8TfjbcULJDKMP+TVKSlrEkNGn8t1YRzi2g4oy7UVTSB5AnSbT0CusUItzdVjHQ49EdoNA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.17.1.tgz", + "integrity": "sha512-UhXPUS2+yTTf5sXwUV0+8QY2x0bPGLgC/uhcknWSQMqWn1zGty4fFvH04D7f7ij0ujwSuN+Q0HtU7lgmMrPz0A==", "cpu": [ "x64" ], @@ -4116,9 +4909,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.16.0.tgz", - "integrity": "sha512-oSwEbvXUPr//H/ainBRJXTxHerlheee/KgkTTmAQWiVnt8HV+bRohTBWWPBy5ZArgiGLwj7ogv45istgljPN2Q==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.17.1.tgz", + "integrity": "sha512-alUZumuznB6K/9yZ0zuZkODXUm8uRnvs9t0CL46CXN16Y2h4gOx5ahUCMlelUb7inZEsgJIoepgLsJzBUrSsBw==", "cpu": [ "arm" ], @@ -4136,9 +4929,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.16.0.tgz", - "integrity": "sha512-Drq9BSVIvmV9zsDJbCZWCulMvKMQWFIlYXPCKV/iwRj+ZAJ1BRngma0cNHB6uW7Wac8Jg04CJN5IA4ELE3J+cQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.17.1.tgz", + "integrity": "sha512-/1XaH2cOjDt+ivmgfmVFUYCA0MtfNWwtC4P8qVi53zEQ7P8euyyZ1ynykZOyKXW9Q0DzrwcLTh6+hxVLcbtGBg==", "cpu": [ "arm64" ], @@ -4156,9 +4949,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.16.0.tgz", - "integrity": "sha512-1QXWStnTEo4RFQf0mfGhRyNUeEHilCZ0NA97XgwKwrYr/M7sYKU/1HWY00dPxFJ6GITR2pfJGo9xi3ScSSBxbA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.17.1.tgz", + "integrity": "sha512-/IgE7lYWFHCCQFTMIwtt+fXLcVOha8rcrNze1JYGPWNorO6NBc6MJo5u5cwn5qMMSz9fZCCDIlBBU4mGwjQszQ==", "cpu": [ "arm64" ], @@ -4176,9 +4969,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.16.0.tgz", - "integrity": "sha512-gD2eQYD5OFs1p83R0TcMCEc5HRyJES4lR4THmclv7khm3dc9vc+2VT0kFBPxO1L2AwlZuvXaaMan7X1Ul7uSfA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.17.1.tgz", + "integrity": "sha512-OyE802IAp4DB9vZrHlOyWunbHLM9dN08tJIKN/HhzzLKIHizubOWX6NMzUXMZLsaUrYwVAHHdyEA+712p8mMzA==", "cpu": [ "x64" ], @@ -4196,9 +4989,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.16.0.tgz", - "integrity": "sha512-HJsKeYxloEvg2WCQhtYPqzZUliLu9JBJNeI5y9cPQeDR/7ayGGLbVhJaotPtzJkElOFL/SaXsS+FRuH4w+yafg==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.17.1.tgz", + "integrity": "sha512-ydwGgV3Usba5P53RAOqCA9MsRsbb8jFIEVhf7/BXFjpKNoIQyijVTXhwIgQr/oGwUNOHfgQ3F8ruiUjX/p2YKw==", "cpu": [ "x64" ], @@ -4216,9 +5009,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.16.0.tgz", - "integrity": "sha512-h4ayyAlOMLUHV9NdofcIu79aEjmly93adVxcg5wDJpkvMiwDTufEN30M8G4gGcjo1JE5jFjAcyQcRpXYkYcemA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.17.1.tgz", + "integrity": "sha512-Ngqtx9NazaiAOk71XWwSsqgAuwYF+8PO6UYsoU7hAukdrSS98kwaBMEDw1igeIiZy1XD/4kh5KVnkjNf7ZOxVQ==", "cpu": [ "x64" ], @@ -4307,6 +5100,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -4344,35 +5143,34 @@ "node": ">=10" } }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "node_modules/marked": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", - "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==", + "node_modules/matcher": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-4.0.0.tgz", + "integrity": "sha512-S6x5wmcDmsDRRU/c2dkccDwQPXoFczc5+HpQ2lON8pnvHlnvHAHj5WlLVvw6n6vNyHuVugYrFohYxbS+pvFpKQ==", "dev": true, - "bin": { - "marked": "bin/marked.js" + "dependencies": { + "escape-string-regexp": "^4.0.0" }, "engines": { - "node": ">= 12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "optional": true, + "peer": true }, "node_modules/merge-stream": { "version": "2.0.0", @@ -4380,18 +5178,6 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", @@ -4434,6 +5220,27 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mocha": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", @@ -4519,9 +5326,9 @@ "dev": true }, "node_modules/monaco-editor-core": { - "version": "0.35.0-dev.20221208", - "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.35.0-dev.20221208.tgz", - "integrity": "sha512-XQpKe+FoGoIWDqn/xiz5+Iyi1PrVWArlrBqqkQuWu4IBjUvs7/krZLqnsy/Vfoflu9Ldtoc1JU9wNu0tyDv66A==", + "version": "0.40.0-dev.20230707", + "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.40.0-dev.20230707.tgz", + "integrity": "sha512-aKvvZjZYww+5KbyYq5L3aUjdRmVVXZrCXGO0A0GTISpx2PuqThDpEv7r4ZQkhHQxHSGCRZdLr2JAdgFLkNcmxg==", "dev": true }, "node_modules/mri": { @@ -4540,18 +5347,18 @@ "dev": true }, "node_modules/msgpackr": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.7.2.tgz", - "integrity": "sha512-mWScyHTtG6TjivXX9vfIy2nBtRupaiAj0HQ2mtmpmYujAmqZmaaEVPaSZ1NKLMvicaMLFzEaMk0ManxMRg8rMQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.1.tgz", + "integrity": "sha512-05fT4J8ZqjYlR4QcRDIhLCYKUOHXk7C/xa62GzMKj74l3up9k2QZ3LgFc6qWdsPHl91QA2WLWqWc8b8t7GLNNw==", "dev": true, "optionalDependencies": { - "msgpackr-extract": "^2.1.2" + "msgpackr-extract": "^2.2.0" } }, "node_modules/msgpackr-extract": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-2.1.2.tgz", - "integrity": "sha512-cmrmERQFb19NX2JABOGtrKdHMyI6RUyceaPBQ2iRz9GnDkjBWFjNJC0jyyoOfZl2U/LZE3tQCCQc4dlRyA8mcA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-2.2.0.tgz", + "integrity": "sha512-0YcvWSv7ZOGl9Od6Y5iJ3XnPww8O7WLcpYMDwX+PAA/uXLDtyw94PJv9GLQV/nnp3cWlDhMoyKZIQLrx33sWog==", "dev": true, "hasInstallScript": true, "optional": true, @@ -4562,12 +5369,12 @@ "download-msgpackr-prebuilds": "bin/download-prebuilds.js" }, "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "2.1.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "2.1.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "2.1.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "2.1.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "2.1.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "2.1.2" + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "2.2.0", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "2.2.0", + "@msgpackr-extract/msgpackr-extract-linux-arm": "2.2.0", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "2.2.0", + "@msgpackr-extract/msgpackr-extract-linux-x64": "2.2.0", + "@msgpackr-extract/msgpackr-extract-win32-x64": "2.2.0" } }, "node_modules/multimatch": { @@ -4610,6 +5417,48 @@ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true }, + "node_modules/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/node-gyp-build": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", @@ -4633,9 +5482,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.7.tgz", + "integrity": "sha512-EJ3rzxL9pTWPjk5arA0s0dgXpnyiAbJDE6wHT62g7VsgrgQgmmZ+Ru++M1BFofncWja+Pnn3rEr3fieRySAdKQ==", "dev": true }, "node_modules/normalize-path": { @@ -4683,6 +5532,15 @@ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4707,6 +5565,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -4770,21 +5637,21 @@ } }, "node_modules/parcel": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.7.0.tgz", - "integrity": "sha512-pRYwnivwtNP0tip8xYSo4zCB0XhLt7/gJzP1p8OovCqkmFjG9VG+GW9TcAKqMIo0ovEa9tT+/s6gY1Qy+BONGQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.8.1.tgz", + "integrity": "sha512-3hl31uIRG+k3N54Le0fLQU8a5VsKFN3j3igs3rEQv6GtXFUNjq58m/Fc1dbOI/v+0fPOv01wyHACn9MCQYesVA==", "dev": true, "dependencies": { - "@parcel/config-default": "2.7.0", - "@parcel/core": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/reporter-cli": "2.7.0", - "@parcel/reporter-dev-server": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/config-default": "2.8.1", + "@parcel/core": "2.8.1", + "@parcel/diagnostic": "2.8.1", + "@parcel/events": "2.8.1", + "@parcel/fs": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/package-manager": "2.8.1", + "@parcel/reporter-cli": "2.8.1", + "@parcel/reporter-dev-server": "2.8.1", + "@parcel/utils": "2.8.1", "chalk": "^4.1.0", "commander": "^7.0.0", "get-port": "^4.2.0", @@ -4801,15 +5668,6 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/parcel/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4897,12 +5755,6 @@ "node": "*" } }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -4921,86 +5773,86 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pin-github-action": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/pin-github-action/-/pin-github-action-1.8.0.tgz", + "integrity": "sha512-8QMKGbDUmMLFSyeV7hDIVmlI8B3ThJed1uFYuhcCBLi/w8xHPbrPhnCvJndYdugNc8aj1FrijrOMDLQ93ATc7A==", + "dev": true, + "dependencies": { + "@octokit/rest": "^18", + "commander": "^9", + "debug": "^4.3.4", + "matcher": "^4.0.0", + "yaml": "^2.1.3" + }, + "bin": { + "pin-github-action": "bin.js" + } + }, + "node_modules/pin-github-action/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/playwright": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.18.1.tgz", - "integrity": "sha512-8EaX9EtbtAoMq5tnzIsoA3b/V86V/6Mq2skuOU4qEw+5OVxs1lwesDwmjy/RVU1Qfx5UuwSQzhp45wyH22oa+A==", + "version": "1.32.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.32.2.tgz", + "integrity": "sha512-jHVnXJke0PXpuPszKtk9y1zZSlzO5+2a+aockT/AND0oeXx46FiJEFrafthurglLygVZA+1gEbtUM1C7qtTV+Q==", "dev": true, "hasInstallScript": true, "dependencies": { - "playwright-core": "=1.18.1" + "playwright-core": "1.32.2" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=12" + "node": ">=14" } }, - "node_modules/playwright/node_modules/playwright-core": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.18.1.tgz", - "integrity": "sha512-NALGl8R1GHzGLlhUApmpmfh6M1rrrPcDTygWvhTbprxwGB9qd/j9DRwyn4HTQcUB6o0/VOpo46fH9ez3+D/Rog==", + "node_modules/playwright-core": { + "version": "1.32.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.32.2.tgz", + "integrity": "sha512-zD7aonO+07kOTthsrCR3YCVnDcqSHIJpdFUtZEMOb6//1Rc7/6mZDRdw+nlzcQiQltOOsiqI3rrSyn/SlyjnJQ==", + "dev": true, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", "dev": true, "dependencies": { - "commander": "^8.2.0", - "debug": "^4.1.1", - "extract-zip": "^2.0.1", - "https-proxy-agent": "^5.0.0", - "jpeg-js": "^0.4.2", - "mime": "^2.4.6", - "pngjs": "^5.0.0", - "progress": "^2.0.3", - "proper-lockfile": "^4.1.1", - "proxy-from-env": "^1.1.0", - "rimraf": "^3.0.2", - "socks-proxy-agent": "^6.1.0", - "stack-utils": "^2.0.3", - "ws": "^7.4.6", - "yauzl": "^2.10.0", - "yazl": "^2.5.1" - }, - "bin": { - "playwright": "cli.js" + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" }, "engines": { - "node": ">=12" + "node": ">= 0.12.0" } }, - "node_modules/playwright/node_modules/ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/pngjs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", - "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", - "dev": true, - "engines": { - "node": ">=10.13.0" + "dependencies": { + "ms": "^2.1.1" } }, "node_modules/postcss": { - "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "version": "8.4.20", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", + "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", "dev": true, "funding": [ { @@ -5081,9 +5933,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -5281,32 +6133,6 @@ "node": ">=8" } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -5332,6 +6158,21 @@ "node": ">=6" } }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -5368,10 +6209,22 @@ "node": ">=8.10.0" } }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==", + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, "node_modules/require-directory": { @@ -5396,6 +6249,12 @@ "node": ">=0.4.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -5422,34 +6281,10 @@ "node": ">=4" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/rollup": { - "version": "2.78.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", - "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -5517,6 +6352,12 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true + }, "node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -5562,15 +6403,35 @@ "node": ">=8" } }, - "node_modules/shiki": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.0.tgz", - "integrity": "sha512-iczxaIYeBFHTFrQPb9DVy2SKgYxC4Wo7Iucm7C17cCh2Ge/refnvHscUOxM85u57MfLoNOtjoEFUWt9gBexblA==", + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "dependencies": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "5.2.0" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/signal-exit": { @@ -5579,44 +6440,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", - "dev": true, - "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -5652,27 +6475,6 @@ "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", "dev": true }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -5764,33 +6566,29 @@ } }, "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz", + "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" + "css-select": "^5.1.0", + "css-tree": "^2.2.1", + "csso": "^5.0.5", + "picocolors": "^1.0.0" }, "bin": { "svgo": "bin/svgo" }, "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, "node_modules/symbol-tree": { @@ -5983,9 +6781,9 @@ } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, "node_modules/type-check": { @@ -6021,41 +6819,37 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedoc": { - "version": "0.22.11", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.11.tgz", - "integrity": "sha512-pVr3hh6dkS3lPPaZz1fNpvcrqLdtEvXmXayN55czlamSgvEjh+57GUqfhAI1Xsuu/hNHUT1KNSx8LH2wBP/7SA==", - "dev": true, - "dependencies": { - "glob": "^7.2.0", - "lunr": "^2.3.9", - "marked": "^4.0.10", - "minimatch": "^3.0.4", - "shiki": "^0.10.0" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 12.10.0" - }, - "peerDependencies": { - "typescript": "4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x || 4.5.x" - } - }, "node_modules/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -6100,6 +6894,12 @@ "punycode": "^2.1.0" } }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -6128,15 +6928,15 @@ "dev": true }, "node_modules/vite": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz", - "integrity": "sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz", + "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==", "dev": true, "dependencies": { "esbuild": "^0.15.9", - "postcss": "^8.4.16", + "postcss": "^8.4.18", "resolve": "^1.22.1", - "rollup": "~2.78.0" + "rollup": "^2.79.1" }, "bin": { "vite": "bin/vite.js" @@ -6148,12 +6948,17 @@ "fsevents": "~2.3.2" }, "peerDependencies": { + "@types/node": ">= 14", "less": "*", "sass": "*", "stylus": "*", + "sugarss": "*", "terser": "^5.4.0" }, "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, "less": { "optional": true }, @@ -6163,15 +6968,18 @@ "stylus": { "optional": true }, + "sugarss": { + "optional": true + }, "terser": { "optional": true } } }, "node_modules/vite/node_modules/esbuild": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.11.tgz", - "integrity": "sha512-OgHGuhlfZ//mToxjte1D5iiiQgWfJ2GByVMwEC/IuoXsBGkuyK1+KrjYu0laSpnN/L1UmLUCv0s25vObdc1bVg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", "dev": true, "hasInstallScript": true, "bin": { @@ -6181,322 +6989,34 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.15.11", - "@esbuild/linux-loong64": "0.15.11", - "esbuild-android-64": "0.15.11", - "esbuild-android-arm64": "0.15.11", - "esbuild-darwin-64": "0.15.11", - "esbuild-darwin-arm64": "0.15.11", - "esbuild-freebsd-64": "0.15.11", - "esbuild-freebsd-arm64": "0.15.11", - "esbuild-linux-32": "0.15.11", - "esbuild-linux-64": "0.15.11", - "esbuild-linux-arm": "0.15.11", - "esbuild-linux-arm64": "0.15.11", - "esbuild-linux-mips64le": "0.15.11", - "esbuild-linux-ppc64le": "0.15.11", - "esbuild-linux-riscv64": "0.15.11", - "esbuild-linux-s390x": "0.15.11", - "esbuild-netbsd-64": "0.15.11", - "esbuild-openbsd-64": "0.15.11", - "esbuild-sunos-64": "0.15.11", - "esbuild-windows-32": "0.15.11", - "esbuild-windows-64": "0.15.11", - "esbuild-windows-arm64": "0.15.11" - } - }, - "node_modules/vite/node_modules/esbuild-android-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.11.tgz", - "integrity": "sha512-rrwoXEiuI1kaw4k475NJpexs8GfJqQUKcD08VR8sKHmuW9RUuTR2VxcupVvHdiGh9ihxL9m3lpqB1kju92Ialw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-android-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.11.tgz", - "integrity": "sha512-/hDubOg7BHOhUUsT8KUIU7GfZm5bihqssvqK5PfO4apag7YuObZRZSzViyEKcFn2tPeHx7RKbSBXvAopSHDZJQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-darwin-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.11.tgz", - "integrity": "sha512-1DqHD0ms3AhiwkKnjRUzmiW7JnaJJr5FKrPiR7xuyMwnjDqvNWDdMq4rKSD9OC0piFNK6n0LghsglNMe2MwJtA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-darwin-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.11.tgz", - "integrity": "sha512-OMzhxSbS0lwwrW40HHjRCeVIJTURdXFA8c3GU30MlHKuPCcvWNUIKVucVBtNpJySXmbkQMDJdJNrXzNDyvoqvQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-freebsd-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.11.tgz", - "integrity": "sha512-8dKP26r0/Qyez8nTCwpq60QbuYKOeBygdgOAWGCRalunyeqWRoSZj9TQjPDnTTI9joxd3QYw3UhVZTKxO9QdRg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-freebsd-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.11.tgz", - "integrity": "sha512-aSGiODiukLGGnSg/O9+cGO2QxEacrdCtCawehkWYTt5VX1ni2b9KoxpHCT9h9Y6wGqNHmXFnB47RRJ8BIqZgmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-linux-32": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.11.tgz", - "integrity": "sha512-lsrAfdyJBGx+6aHIQmgqUonEzKYeBnyfJPkT6N2dOf1RoXYYV1BkWB6G02tjsrz1d5wZzaTc3cF+TKmuTo/ZwA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-linux-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.11.tgz", - "integrity": "sha512-Y2Rh+PcyVhQqXKBTacPCltINN3uIw2xC+dsvLANJ1SpK5NJUtxv8+rqWpjmBgaNWKQT1/uGpMmA9olALy9PLVA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-linux-arm": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.11.tgz", - "integrity": "sha512-TJllTVk5aSyqPFvvcHTvf6Wu1ZKhWpJ/qNmZO8LL/XeB+LXCclm7HQHNEIz6MT7IX8PmlC1BZYrOiw2sXSB95A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-linux-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.11.tgz", - "integrity": "sha512-uhcXiTwTmD4OpxJu3xC5TzAAw6Wzf9O1XGWL448EE9bqGjgV1j+oK3lIHAfsHnuIn8K4nDW8yjX0Sv5S++oRuw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-linux-mips64le": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.11.tgz", - "integrity": "sha512-WD61y/R1M4BLe4gxXRypoQ0Ci+Vjf714QYzcPNkiYv5I8K8WDz2ZR8Bm6cqKxd6rD+e/rZgPDbhQ9PCf7TMHmA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-linux-ppc64le": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.11.tgz", - "integrity": "sha512-JVleZS9oPVLTlBhPTWgOwxFWU/wMUdlBwTbGA4GF8c38sLbS13cupj+C8bLq929jU7EMWry4SaL+tKGIaTlqKg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-linux-riscv64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.11.tgz", - "integrity": "sha512-9aLIalZ2HFHIOZpmVU11sEAS9F8TnHw49daEjcgMpBXHFF57VuT9f9/9LKJhw781Gda0P9jDkuCWJ0tFbErvJw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-linux-s390x": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.11.tgz", - "integrity": "sha512-sZHtiXXOKsLI3XGBGoYO4qKBzJlb8xNsWmvFiwFMHFzA4AXgDP1KDp7Dawe9C2pavTRBDvl+Ok4n/DHQ59oaTg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-netbsd-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.11.tgz", - "integrity": "sha512-hUC9yN06K9sg7ju4Vgu9ChAPdsEgtcrcLfyNT5IKwKyfpLvKUwCMZSdF+gRD3WpyZelgTQfJ+pDx5XFbXTlB0A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-openbsd-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.11.tgz", - "integrity": "sha512-0bBo9SQR4t66Wd91LGMAqmWorzO0TTzVjYiifwoFtel8luFeXuPThQnEm5ztN4g0fnvcp7AnUPPzS/Depf17wQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-sunos-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.11.tgz", - "integrity": "sha512-EuBdTGlsMTjEl1sQnBX2jfygy7iR6CKfvOzi+gEOfhDqbHXsmY1dcpbVtcwHAg9/2yUZSfMJHMAgf1z8M4yyyw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild-windows-32": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.11.tgz", - "integrity": "sha512-O0/Wo1Wk6dc0rZSxkvGpmTNIycEznHmkObTFz2VHBhjPsO4ZpCgfGxNkCpz4AdAIeMczpTXt/8d5vdJNKEGC+Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" } }, "node_modules/vite/node_modules/esbuild-windows-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.11.tgz", - "integrity": "sha512-x977Q4HhNjnHx00b4XLAnTtj5vfbdEvkxaQwC1Zh5AN8g5EX+izgZ6e5QgqJgpzyRNJqh4hkgIJF1pyy1be0mQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", "cpu": [ "x64" ], @@ -6509,22 +7029,6 @@ "node": ">=12" } }, - "node_modules/vite/node_modules/esbuild-windows-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.11.tgz", - "integrity": "sha512-VwUHFACuBahrvntdcMKZteUZ9HaYrBRODoKe4tIWxguQRvvYoYb7iu5LrcRS/FQx8KPZNaa72zuqwVtHeXsITw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/vscode-css-languageservice": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-5.4.1.tgz", @@ -6580,18 +7084,6 @@ "integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==", "dev": true }, - "node_modules/vscode-oniguruma": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz", - "integrity": "sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", - "dev": true - }, "node_modules/vscode-uri": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.3.tgz", @@ -6648,9 +7140,9 @@ } }, "node_modules/webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -6848,12 +7340,12 @@ "dev": true }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", + "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargs": { @@ -6907,25 +7399,6 @@ "yaserver": "bin/yaserver" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yazl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -6950,9 +7423,9 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", "dev": true, "requires": { "@babel/highlight": "^7.18.6" @@ -7049,16 +7522,16 @@ } }, "@esbuild/android-arm": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.11.tgz", - "integrity": "sha512-PzMcQLazLBkwDEkrNPi9AbjFt6+3I7HKbiYF2XtWQ7wItrHvEOeO3T8Am434zAozWtVP7lrTue1bEfc2nYWeCA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.11.tgz", - "integrity": "sha512-geWp637tUhNmhL3Xgy4Bj703yXB9dqiLJe05lCUfjSFDrQf9C/8pArusyPUbUbPwlC/EAUjBw32sxuIl/11dZw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", "dev": true, "optional": true }, @@ -7180,148 +7653,273 @@ } }, "@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.1.2.tgz", - "integrity": "sha512-TyVLn3S/+ikMDsh0gbKv2YydKClN8HaJDDpONlaZR+LVJmsxLFUgA+O7zu59h9+f9gX1aj/ahw9wqa6rosmrYQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.2.0.tgz", + "integrity": "sha512-Z9LFPzfoJi4mflGWV+rv7o7ZbMU5oAU9VmzCgL240KnqDW65Y2HFCT3MW06/ITJSnbVLacmcEJA8phywK7JinQ==", "dev": true, "optional": true }, "@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.1.2.tgz", - "integrity": "sha512-YPXtcVkhmVNoMGlqp81ZHW4dMxK09msWgnxtsDpSiZwTzUBG2N+No2bsr7WMtBKCVJMSD6mbAl7YhKUqkp/Few==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.2.0.tgz", + "integrity": "sha512-vq0tT8sjZsy4JdSqmadWVw6f66UXqUCabLmUVHZwUFzMgtgoIIQjT4VVRHKvlof3P/dMCkbMJ5hB1oJ9OWHaaw==", "dev": true, "optional": true }, "@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.1.2.tgz", - "integrity": "sha512-42R4MAFeIeNn+L98qwxAt360bwzX2Kf0ZQkBBucJ2Ircza3asoY4CDbgiu9VWklq8gWJVSJSJBwDI+c/THiWkA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.2.0.tgz", + "integrity": "sha512-SaJ3Qq4lX9Syd2xEo9u3qPxi/OB+5JO/ngJKK97XDpa1C587H9EWYO6KD8995DAjSinWvdHKRrCOXVUC5fvGOg==", "dev": true, "optional": true }, "@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.1.2.tgz", - "integrity": "sha512-vHZ2JiOWF2+DN9lzltGbhtQNzDo8fKFGrf37UJrgqxU0yvtERrzUugnfnX1wmVfFhSsF8OxrfqiNOUc5hko1Zg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.2.0.tgz", + "integrity": "sha512-hlxxLdRmPyq16QCutUtP8Tm6RDWcyaLsRssaHROatgnkOxdleMTgetf9JsdncL8vLh7FVy/RN9i3XR5dnb9cRA==", "dev": true, "optional": true }, "@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.1.2.tgz", - "integrity": "sha512-RjRoRxg7Q3kPAdUSC5EUUPlwfMkIVhmaRTIe+cqHbKrGZ4M6TyCA/b5qMaukQ/1CHWrqYY2FbKOAU8Hg0pQFzg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.2.0.tgz", + "integrity": "sha512-94y5PJrSOqUNcFKmOl7z319FelCLAE0rz/jPCWS+UtdMZvpa4jrQd+cJPQCLp2Fes1yAW/YUQj/Di6YVT3c3Iw==", "dev": true, "optional": true }, "@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.1.2.tgz", - "integrity": "sha512-rIZVR48zA8hGkHIK7ED6+ZiXsjRCcAVBJbm8o89OKAMTmEAQ2QvoOxoiu3w2isAaWwzgtQIOFIqHwvZDyLKCvw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.2.0.tgz", + "integrity": "sha512-XrC0JzsqQSvOyM3t04FMLO6z5gCuhPE6k4FXuLK5xf52ZbdvcFe1yBmo7meCew9B8G2f0T9iu9t3kfTYRYROgA==", "dev": true, "optional": true }, - "@parcel/bundler-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.7.0.tgz", - "integrity": "sha512-PU5MtWWhc+dYI9x8mguYnm9yiG6TkI7niRpxgJgtqAyGHuEyNXVBQQ0X+qyOF4D9LdankBf8uNN18g31IET2Zg==", + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "dev": true, + "requires": { + "@octokit/types": "^6.40.0" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "requires": {} + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "dev": true, + "requires": { + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, + "requires": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "@parcel/bundler-default": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.8.1.tgz", + "integrity": "sha512-hyzrZdzjFWjKFh0s8ykFke5bTBwWdOkmnFEsB2zaJEALf83td6JaH18w3iYNwF1Q5qplSTu6AeNOeVbR7DXi4g==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.8.1", + "@parcel/graph": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1" } }, "@parcel/cache": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.7.0.tgz", - "integrity": "sha512-JlXNoZXcWzLKdDlfeF3dIj5Vtel5T9vtdBN72PJ+cjC4qNHk4Uwvc5sfOBELuibGN0bVu2bwY9nUgSwCiB1iIA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.8.1.tgz", + "integrity": "sha512-wvdn0B21bg227JzgxxlCwu6L8SryAZyTe/pZ32jsUsGxuVqT2BLYczyQL7OqCG5902rnImsBjETkOIxXeCgThg==", "dev": true, "requires": { - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/fs": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/utils": "2.8.1", "lmdb": "2.5.2" } }, "@parcel/codeframe": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.7.0.tgz", - "integrity": "sha512-UTKx0jejJmmO1dwTHSJuRgrO8N6PMlkxRT6sew8N6NC3Bgv6pu0EbO+RtlWt/jCvzcdLOPdIoTzj4MMZvgcMYg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.8.1.tgz", + "integrity": "sha512-VNmnWJHYDQP9vRo9WZIGV5YeBzDuJVeYLLBzmYYnT2QZx85gXYKUm05LfYqKYnP0FmMT1bv7AWLMKN6HFhVrfw==", "dev": true, "requires": { "chalk": "^4.1.0" } }, "@parcel/compressor-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.7.0.tgz", - "integrity": "sha512-SCXwnOOQT6EmpusBsYWNQ/RFri+2JnKuE0gMSf2dROl2xbererX45FYzeDplWALCKAdjMNDpFwU+FyMYoVZSCQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.8.1.tgz", + "integrity": "sha512-mm3RFiaofqzwdFxkuvUopsiOe4dyBIheY8D5Yh4BebuavPcgvLmrW3B3BaIR84kv6l6zy3i0QiuaLgbYhnrnuQ==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0" + "@parcel/plugin": "2.8.1" } }, "@parcel/config-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.7.0.tgz", - "integrity": "sha512-ZzsLr97AYrz8c9k6qn3DlqPzifi3vbP7q3ynUrAFxmt0L4+K0H9N508ZkORYmCgaFjLIQ8Y3eWpwCJ0AewPNIg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.8.1.tgz", + "integrity": "sha512-UGj4BZ6keEPZ+8RWYRDEQJkbTaVG0r6ewNxqV4kKew4vCejRg1TMnQL8OJYG2non10sQqbmisfZMqCECA6OJMg==", "dev": true, "requires": { - "@parcel/bundler-default": "2.7.0", - "@parcel/compressor-raw": "2.7.0", - "@parcel/namer-default": "2.7.0", - "@parcel/optimizer-css": "2.7.0", - "@parcel/optimizer-htmlnano": "2.7.0", - "@parcel/optimizer-image": "2.7.0", - "@parcel/optimizer-svgo": "2.7.0", - "@parcel/optimizer-terser": "2.7.0", - "@parcel/packager-css": "2.7.0", - "@parcel/packager-html": "2.7.0", - "@parcel/packager-js": "2.7.0", - "@parcel/packager-raw": "2.7.0", - "@parcel/packager-svg": "2.7.0", - "@parcel/reporter-dev-server": "2.7.0", - "@parcel/resolver-default": "2.7.0", - "@parcel/runtime-browser-hmr": "2.7.0", - "@parcel/runtime-js": "2.7.0", - "@parcel/runtime-react-refresh": "2.7.0", - "@parcel/runtime-service-worker": "2.7.0", - "@parcel/transformer-babel": "2.7.0", - "@parcel/transformer-css": "2.7.0", - "@parcel/transformer-html": "2.7.0", - "@parcel/transformer-image": "2.7.0", - "@parcel/transformer-js": "2.7.0", - "@parcel/transformer-json": "2.7.0", - "@parcel/transformer-postcss": "2.7.0", - "@parcel/transformer-posthtml": "2.7.0", - "@parcel/transformer-raw": "2.7.0", - "@parcel/transformer-react-refresh-wrap": "2.7.0", - "@parcel/transformer-svg": "2.7.0" + "@parcel/bundler-default": "2.8.1", + "@parcel/compressor-raw": "2.8.1", + "@parcel/namer-default": "2.8.1", + "@parcel/optimizer-css": "2.8.1", + "@parcel/optimizer-htmlnano": "2.8.1", + "@parcel/optimizer-image": "2.8.1", + "@parcel/optimizer-svgo": "2.8.1", + "@parcel/optimizer-terser": "2.8.1", + "@parcel/packager-css": "2.8.1", + "@parcel/packager-html": "2.8.1", + "@parcel/packager-js": "2.8.1", + "@parcel/packager-raw": "2.8.1", + "@parcel/packager-svg": "2.8.1", + "@parcel/reporter-dev-server": "2.8.1", + "@parcel/resolver-default": "2.8.1", + "@parcel/runtime-browser-hmr": "2.8.1", + "@parcel/runtime-js": "2.8.1", + "@parcel/runtime-react-refresh": "2.8.1", + "@parcel/runtime-service-worker": "2.8.1", + "@parcel/transformer-babel": "2.8.1", + "@parcel/transformer-css": "2.8.1", + "@parcel/transformer-html": "2.8.1", + "@parcel/transformer-image": "2.8.1", + "@parcel/transformer-js": "2.8.1", + "@parcel/transformer-json": "2.8.1", + "@parcel/transformer-postcss": "2.8.1", + "@parcel/transformer-posthtml": "2.8.1", + "@parcel/transformer-raw": "2.8.1", + "@parcel/transformer-react-refresh-wrap": "2.8.1", + "@parcel/transformer-svg": "2.8.1" } }, "@parcel/core": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.7.0.tgz", - "integrity": "sha512-7yKZUdh314Q/kU/9+27ZYTfcnXS6VYHuG+iiUlIohnvUUybxLqVJhdMU9Q+z2QcPka1IdJWz4K4Xx0y6/4goyg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.8.1.tgz", + "integrity": "sha512-i84Ic+Ei907kChVGrTOhN3+AB46ymqia0wJCxio/BAbUJc3PLx0EmOAgLutACVNompCYcXpV9kASiGJHcfHW5w==", "dev": true, "requires": { "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/graph": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", + "@parcel/cache": "2.8.1", + "@parcel/diagnostic": "2.8.1", + "@parcel/events": "2.8.1", + "@parcel/fs": "2.8.1", + "@parcel/graph": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/package-manager": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", + "@parcel/workers": "2.8.1", "abortcontroller-polyfill": "^1.1.9", "base-x": "^3.0.8", "browserslist": "^4.6.6", @@ -7342,19 +7940,10 @@ } } }, - "@parcel/css": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@parcel/css/-/css-1.14.0.tgz", - "integrity": "sha512-r5tJWe6NF6lesfPw1N3g7N7WUKpHqi2ONnw9wl5ccSGGIxkmgcPaPQxfvmhdjXvQnktSuIOR0HjQXVXu+/en/w==", - "dev": true, - "requires": { - "lightningcss": "^1.14.0" - } - }, "@parcel/diagnostic": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.7.0.tgz", - "integrity": "sha512-pdq/cTwVoL0n8yuDCRXFRSQHVWdmmIXPt3R3iT4KtYDYvOrMT2dLPT79IMqQkhYPANW8GuL15n/WxRngfRdkug==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.8.1.tgz", + "integrity": "sha512-IyMREe9OkfEqTNi67ZmFRtc6dZ35w0Snj05yDnxv5fKcLftYgZ1UDl2/64WIQQ2MZQnrZV9qrdZssdPhY9Qf3A==", "dev": true, "requires": { "@mischnic/json-sourcemap": "^0.1.0", @@ -7362,47 +7951,46 @@ } }, "@parcel/events": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.7.0.tgz", - "integrity": "sha512-kQDwMKgZ1U4M/G17qeDYF6bW5kybluN6ajYPc7mZcrWg+trEI/oXi81GMFaMX0BSUhwhbiN5+/Vb2wiG/Sn6ig==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.8.1.tgz", + "integrity": "sha512-x3JOa9RgEhHTGhRusC9/Er4/KZQ4F5M2QVTaHTmCqWqA/eOVXpi5xQTERvNFsb/5cmfsDlFPXPd1g4ErRJfasw==", "dev": true }, "@parcel/fs": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.7.0.tgz", - "integrity": "sha512-PU5fo4Hh8y03LZgemgVREttc0wyHQUNmsJCybxTB7EjJie2CqJRumo+DFppArlvdchLwJdc9em03yQV/GNWrEg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.8.1.tgz", + "integrity": "sha512-+3lZfH0/2IoGrlq09SuOaULe55S6F+G2rGVHLqPt8JO9JJr1fMAZIGVA8YkPOv4Y/LhL0M1ly0gek4k+jl8iDg==", "dev": true, "requires": { - "@parcel/fs-search": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/watcher": "^2.0.0", - "@parcel/workers": "2.7.0" + "@parcel/fs-search": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", + "@parcel/watcher": "^2.0.7", + "@parcel/workers": "2.8.1" } }, "@parcel/fs-search": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.7.0.tgz", - "integrity": "sha512-K1Hv25bnRpwQVA15RvcRuB8ZhfclnCHA8N8L6w7Ul1ncSJDxCIkIAc5hAubYNNYW3kWjCC2SOaEgFKnbvMllEQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.8.1.tgz", + "integrity": "sha512-zp1CjB3Va4Sp7JrS/8tUs5NzHYPiWgabsL70Xv7ExlvIBZC42HI0VEbBFvNn4/pra2s+VqJhStd2GTBvjnwk9g==", "dev": true, "requires": { "detect-libc": "^1.0.3" } }, "@parcel/graph": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.7.0.tgz", - "integrity": "sha512-Q6E94GS6q45PtsZh+m+gvFRp/N1Qopxhu2sxjcWsGs5iBd6IWn2oYLWOH5iVzEjWuYpW2HkB08lH6J50O63uOA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.8.1.tgz", + "integrity": "sha512-ZNRZLGfpcASMRhKmu3nySyMybqXtddneCf29E3FLqYEqj5dqbp4jBfKI55E9vxVUssp4cNKmVfqcTHFGXfGEaQ==", "dev": true, "requires": { - "@parcel/utils": "2.7.0", "nullthrows": "^1.1.1" } }, "@parcel/hash": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.7.0.tgz", - "integrity": "sha512-k6bSKnIlPJMPU3yjQzfgfvF9zuJZGOAlJgzpL4BbWvdbE8BTdjzLcFn0Ujrtud94EgIkiXd22sC2HpCUWoHGdA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.8.1.tgz", + "integrity": "sha512-qI2CDyN7ogdCi0Euha3pCr9oZ8+4XBO/hRlYPo6MQ7pAg/dfncg+xEpWyt/g2KRhbTapX/+Zk8SnRJyy+Pynvw==", "dev": true, "requires": { "detect-libc": "^1.0.3", @@ -7410,43 +7998,43 @@ } }, "@parcel/logger": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.7.0.tgz", - "integrity": "sha512-qjMY/bYo38+o+OiIrTRldU9CwL1E7J72t+xkTP8QIcUxLWz5LYR0YbynZUVulmBSfqsykjjxCy4a+8siVr+lPw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.8.1.tgz", + "integrity": "sha512-jnZfAZT8OQVilATC+tgxoNgx1woc84akG6R3lYeYbmKByRQdZ5QzEUJ4IIgXKCXk6Vp+GhORs7Omot418zx1xg==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0" + "@parcel/diagnostic": "2.8.1", + "@parcel/events": "2.8.1" } }, "@parcel/markdown-ansi": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.7.0.tgz", - "integrity": "sha512-ipOX0D6FVZFEXeb/z8MnTMq2RQEIuaILY90olVIuHEFLHHfOPEn+RK3u13HA1ChF5/9E3cMD79tu6x9JL9Kqag==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.8.1.tgz", + "integrity": "sha512-5aNMdBlUniCjcJOdsgaLrr9xRKPgH7zmnifdJOlUOeW2wk95xRRVLIbTJoMtGxkN4gySxPZWX+SfOYXVLWqqAw==", "dev": true, "requires": { "chalk": "^4.1.0" } }, "@parcel/namer-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.7.0.tgz", - "integrity": "sha512-lIKMdsmi//7fepecNDYmJYzBlL91HifPsX03lJCdu1dC6q5fBs+gG0XjKKG7yPnSCw1qH/4m7drzt9+dRZYAHQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.8.1.tgz", + "integrity": "sha512-ewI1Rk7Fn3iqsgnU2bcelgQtckrhWtRip7mdeI7VWr+M/M1DiwVvaxOQCZ8E083umjooMvmRDXXx9YGAqT8Kgw==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", "nullthrows": "^1.1.1" } }, "@parcel/node-resolver-core": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.7.0.tgz", - "integrity": "sha512-5UJQHalqMxdhJIs2hhqQzFfQpF7+NAowsRq064lYtiRvcD8wMr3OOQ9wd1iazGpFSl4JKdT7BwDU9/miDJmanQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.8.1.tgz", + "integrity": "sha512-kg7YQwYAIxVfV8DW8IjhiF1xf4XCQ9NReZSpgNZ1ubUvApakRqfLvttp4K1ZIpnm+OLvtgXn1euV4J9jhx7qXw==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1", "semver": "^5.7.1" }, @@ -7460,84 +8048,194 @@ } }, "@parcel/optimizer-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.7.0.tgz", - "integrity": "sha512-IfnOMACqhcAclKyOW9X9JpsknB6OShk9OVvb8EvbDTKHJhQHNNmzE88OkSI/pS3ZVZP9Zj+nWcVHguV+kvDeiQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.8.1.tgz", + "integrity": "sha512-iZqNhZiMtTg2z19FpGkFFx3SQpWakh3S7gaG75fN4Mt3o84G35ag920uHT/6a34wFBHSuH05lLZGUlDwKIU5Ng==", "dev": true, "requires": { - "@parcel/css": "^1.12.2", - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "browserslist": "^4.6.6", + "lightningcss": "^1.16.1", "nullthrows": "^1.1.1" } }, "@parcel/optimizer-htmlnano": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.7.0.tgz", - "integrity": "sha512-5QrGdWS5Hi4VXE3nQNrGqugmSXt68YIsWwKRAdarOxzyULSJS3gbCiQOXqIPRJobfZjnSIcdtkyxSiCUe1inIA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.8.1.tgz", + "integrity": "sha512-lIm2nvU506fzNQl6VrsANKjHC1wVwqgfPLJreC7JazRLBYwTl2UvyjNmAEjtnmoGbwA6GS9+Y3TaYcbGjNvpwA==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", + "@parcel/plugin": "2.8.1", "htmlnano": "^2.0.0", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "svgo": "^2.4.0" + }, + "dependencies": { + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + } } }, "@parcel/optimizer-image": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.7.0.tgz", - "integrity": "sha512-EnaXz5UjR67FUu0BEcqZTT9LsbB/iFAkkghCotbnbOuC5QQsloq6tw54TKU3y+R3qsjgUoMtGxPcGfVoXxZXYw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.8.1.tgz", + "integrity": "sha512-mi4pgr/aj47y5X7zLsHP+tFv9hW1wUDnAu9PxCrBKGE0uEqWs9L6boCzJ1dmjfnvNT9phs6ZXyv4zlayRBVQLw==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", + "@parcel/workers": "2.8.1", "detect-libc": "^1.0.3" } }, "@parcel/optimizer-svgo": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.7.0.tgz", - "integrity": "sha512-IO1JV4NpfP3V7FrhsqCcV8pDQIHraFi1/ZvEJyssITxjH49Im/txKlwMiQuZZryAPn8Xb8g395Muawuk6AK6sg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.8.1.tgz", + "integrity": "sha512-V8KP+EaO0jLI0l3hpiv/fTSVRKCRKyBwSZt0dnWU2LWPAOIK5H3ggeicXc61th+nEACk/u7YzoP7oxpU87VzHA==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "svgo": "^2.4.0" + }, + "dependencies": { + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + } } }, "@parcel/optimizer-terser": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.7.0.tgz", - "integrity": "sha512-07VZjIO8xsl2/WmS/qHI8lI/cpu47iS9eRpqwfZEEsdk1cfz50jhWkmFudHBxiHGMfcZ//1+DdaPg9RDBWZtZA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.8.1.tgz", + "integrity": "sha512-ELNtiq1nqvEfURwFgSzK93Zb3C0ruxIUT/ln8zGi8KQTxWKA0PLthzlAqwAotA/zKF5DwjUa3gw0pn2xKuZv8w==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1", "terser": "^5.2.0" } }, "@parcel/package-manager": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.7.0.tgz", - "integrity": "sha512-wmfSX1mRrTi8MeA4KrnPk/x7zGUsILCQmTo6lA4gygzAxDbM1pGuyFN8/Kt0y0SFO2lbljARtD/4an5qdotH+Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.8.1.tgz", + "integrity": "sha512-zv0hAOwlCHcV4jNM60hG9fkNcEwkI9O/FsZlPMqqXBq5rKJ4iMyvOoMCzkfWUqf3RkgqvXSqTfEaDD6MQJ0ZGg==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/fs": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", + "@parcel/workers": "2.8.1", "semver": "^5.7.1" }, "dependencies": { @@ -7550,149 +8248,149 @@ } }, "@parcel/packager-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.7.0.tgz", - "integrity": "sha512-44nzZwu+ssGuiFmYM6cf/Y4iChiUZ4DUzzpegnGlhXtKJKe4NHntxThJynuRZWKN2AAf48avApDpimg2jW0KDw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.8.1.tgz", + "integrity": "sha512-nFeIwNgElEVZQCUKOU52T34TMpUhpCazNzAD79/Adrwu4YsFlIU6DmGePyGYlXDNlyuM+gCIu5uXgVUyn96ZnA==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1" } }, "@parcel/packager-html": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.7.0.tgz", - "integrity": "sha512-Zgqd7sdcY/UnR370GR0q2ilmEohUDXsO8A1F28QCJzIsR1iCB6KRUT74+pawfQ1IhXZLaaFLLYe0UWcfm0JeXg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.8.1.tgz", + "integrity": "sha512-9e1HM4kutardgEmWLJTqG+jGoA/sozaN8xVQ8tavFRyMS3dEjB78Kb/+nT887nIXmoWSFSkUkh1LM+9O4OqkJQ==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1", "posthtml": "^0.16.5" } }, "@parcel/packager-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.7.0.tgz", - "integrity": "sha512-wTRdM81PgRVDzWGXdWmqLwguWnTYWzhEDdjXpW2n8uMOu/CjHhMtogk65aaYk3GOnq6OBL/NsrmBiV/zKPj1vA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.8.1.tgz", + "integrity": "sha512-BWJsCjBZAexeCHGDxJrXYduVdlTygj6Ok6HIg2skIkAVfPLipx9GIh10EBsdHZy3GhWddvnvxaMXQdUvoADnEw==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "globals": "^13.2.0", "nullthrows": "^1.1.1" } }, "@parcel/packager-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.7.0.tgz", - "integrity": "sha512-jg2Zp8dI5VpIQlaeahXDCfrPN9m/DKht1NkR9P2CylMAwqCcc1Xc1RRiF0wfwcPZpPMpq1265n+4qnB7rjGBlA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.8.1.tgz", + "integrity": "sha512-VeXRLPT2WF03sVjxI1yaRvDJAvxorxCLm56xwxCWmDgRTBb4q/cv81AAVztLkYsOltjDWJnFSQLm1AvZz6oSaw==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0" + "@parcel/plugin": "2.8.1" } }, "@parcel/packager-svg": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.7.0.tgz", - "integrity": "sha512-EmJg3HpD6/xxKBjir/CdCKJZwI24iVfBuxRS9LUp3xHAIebOzVh1z6IN+i2Di5+NyRwfOFaLliL4uMa1zwbyCA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.8.1.tgz", + "integrity": "sha512-Yln3iuAohtVN8XDDbBWqH0fUMVWfsmDpJ6pNjZPTyXeaFOw2GkqvRaQwQM5CDXKGstkLHCzYBBhIVrmEWxTyXA==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", "posthtml": "^0.16.4" } }, "@parcel/plugin": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.7.0.tgz", - "integrity": "sha512-qqgx+nnMn6/0lRc4lKbLGmhNtBiT93S2gFNB4Eb4Pfz/SxVYoW+fmml+KdfOSiZffWOAH5L6NwhyD7N8aSikzw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.8.1.tgz", + "integrity": "sha512-7rAKJ8UvjwMwyiOKy5nl1UEjeLLINN6tKU8Gr9rqjfC9lux/wrd0+wuixtncThpyNJHOdmPggqTA412s2pgbNQ==", "dev": true, "requires": { - "@parcel/types": "2.7.0" + "@parcel/types": "2.8.1" } }, "@parcel/reporter-cli": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.7.0.tgz", - "integrity": "sha512-80gEODg8cnAmnxGVuaSVDo8JJ54P9AA2bHwSs1cIkHWlJ3BjDQb83H31bBHncJ5Kn5kQ/j+7WjlqHpTCiOR9PA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.8.1.tgz", + "integrity": "sha512-9+Wk9eaQOTHAQs6h+aeoqPGCJxNJkMdLnD7eHbHd8Jn+Ge4ux29yBJUn5zfmWLo/5zGI8yXDjoLLOQNPqVgU2g==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", "chalk": "^4.1.0", "term-size": "^2.2.1" } }, "@parcel/reporter-dev-server": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.7.0.tgz", - "integrity": "sha512-ySuou5addK8fGue8aXzo536BaEjMujDrEc1xkp4TasInXHVcA98b+SYX5NAZTGob5CxKvZQ5ylhg77zW30B+iA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.8.1.tgz", + "integrity": "sha512-LO3gu8r+NpKJHNzJPEum/Mvem0Pr8B66J7OAFJWCHkJ4QMJU7V8F40gcweKCbbVBctMelptz2eTqXr4pBgrlkg==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0" + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1" } }, "@parcel/resolver-default": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.7.0.tgz", - "integrity": "sha512-v8TvWsbLK7/q7n4gv6OrYNbW18xUx4zKbVMGZb1u4yMhzEH4HFr1D9OeoTq3jk+ximAigds8B6triQbL5exF7A==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.8.1.tgz", + "integrity": "sha512-t203Y7PEGnwl4GEr9AthgMOgjLbtCCKzzKty3PLRSeZY4e2grc/SRUWZM7lQO2UMlKpheXuEJy4irvHl7qv43A==", "dev": true, "requires": { - "@parcel/node-resolver-core": "2.7.0", - "@parcel/plugin": "2.7.0" + "@parcel/node-resolver-core": "2.8.1", + "@parcel/plugin": "2.8.1" } }, "@parcel/runtime-browser-hmr": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.7.0.tgz", - "integrity": "sha512-PLbMLdclQeYsi2LkilZVGFV1n3y55G1jaBvby4ekedUZjMw3SWdMY2tDxgSDdFWfLCnYHJXdGUQSzGGi1kPzjA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.8.1.tgz", + "integrity": "sha512-BmkJYQYGtkXNnI25sl1yE9sWDXK1t6Rtz3tTUDB0kD62ukV6rx6qjEpmcHdB2NgjvAkPIwZHnVK4KE1QX71dTg==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0" + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1" } }, "@parcel/runtime-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.7.0.tgz", - "integrity": "sha512-9/YUZTBNrSN2H6rbz/o1EOM0O7I3ZR/x9IDzxjJBD6Mi+0uCgCD02aedare/SNr1qgnbZZWmhpOzC+YgREcfLA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.8.1.tgz", + "integrity": "sha512-OMbjlunfk+b+4OUjjCZxsJOlxXAG878g6rUr1LIBBlukK65z1WxhjBukjf2y7ZbtIvIx3/k07fNgekQeFYBJaQ==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1" } }, "@parcel/runtime-react-refresh": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.7.0.tgz", - "integrity": "sha512-vDKO0rWqRzEpmvoZ4kkYUiSsTxT5NnH904BFPFxKI0wJCl6yEmPuEifmATo73OuYhP6jIP3Qfl1R4TtiDFPJ1Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.8.1.tgz", + "integrity": "sha512-HbPKocBTt9Adj01MTYJnkp+U8WODBCCE+j9GdUHnLEobuctupLLM+ARiGXEzc4T+dwxgo/1nKaYCki9segCBFg==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "react-error-overlay": "6.0.9", "react-refresh": "^0.9.0" } }, "@parcel/runtime-service-worker": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.7.0.tgz", - "integrity": "sha512-uD2pAV0yV6+e7JaWH4KVPbG+zRCrxr/OACyS9tIh+Q/R1vRmh8zGM3yhdrcoiZ7tFOnM72vd6xY11eTrUsSVig==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.8.1.tgz", + "integrity": "sha512-hIwtcx6UxXTxv3LzQHX057jrlYXKSQMmLDq0+CNHMvStjIqMvE2inn6WBXL7fBC0iFbe4/wknRow+cX8nHKIzQ==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1" } }, @@ -7706,15 +8404,15 @@ } }, "@parcel/transformer-babel": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.7.0.tgz", - "integrity": "sha512-7iklDXXnKH1530+QbI+e4kIJ+Q1puA1ulRS10db3aUJMj5GnvXGDFwhSZ7+T1ps66QHO7cVO29VlbqiRDarH1Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.8.1.tgz", + "integrity": "sha512-pIURnRJ1GU885tRrSHmmA6sE8JSC8/KpU9XM9wmK6Se/nWbSFTvNkiRx1sXxmUXBUPBCa0VFqQEcwrzGB4Py6A==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "browserslist": "^4.6.6", "json5": "^2.2.0", "nullthrows": "^1.1.1", @@ -7730,29 +8428,29 @@ } }, "@parcel/transformer-css": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.7.0.tgz", - "integrity": "sha512-J4EpWK9spQpXyNCmKK8Xnane0xW/1B/EAmfp7Fiv7g+5yUjY4ODf4KUugvE+Eb2gekPkhOKNHermO2KrX0/PFA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.8.1.tgz", + "integrity": "sha512-DUPIcfZpuPYR/6SAu1TI08n2zjb7p3qoAkqqh2lIQniL99uEq8OsNFl84JEwUIiESZS/ExpQ7yXxAN7G1qamVw==", "dev": true, "requires": { - "@parcel/css": "^1.12.2", - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", "browserslist": "^4.6.6", + "lightningcss": "^1.16.1", "nullthrows": "^1.1.1" } }, "@parcel/transformer-html": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.7.0.tgz", - "integrity": "sha512-wYJl5rn81W+Rlk9oQwDJcjoVsWVDKyeri84FzmlGXOsg0EYgnqOiG+3MDM8GeZjfuGe5fuoum4eqZeS0WdUHXw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.8.1.tgz", + "integrity": "sha512-Ve9qjNE+gWdyHyDKyzq+UwYdX0KjoHGo8WVN2qX0UtH+TYwnoi51oi+GTBa96+0Rq8fzBHWkqf53sUTFzDaFdw==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/plugin": "2.8.1", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -7769,29 +8467,29 @@ } }, "@parcel/transformer-image": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.7.0.tgz", - "integrity": "sha512-mhi9/R5/ULhCkL2COVIKhNFoLDiZwQgprdaTJr5fnODggVxEX5o7ebFV6KNLMTEkwZUJWoB1hL0ziI0++DtoFA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.8.1.tgz", + "integrity": "sha512-K5PF00LXY1RelPEdMcZSc/rsQcjjmeBNDvLSrv9DWVbhiYZ+k3JRS9y5Ga+wPYRdEl0d+Z61ku0+cqz/uCoryA==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", + "@parcel/workers": "2.8.1", "nullthrows": "^1.1.1" } }, "@parcel/transformer-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.7.0.tgz", - "integrity": "sha512-mzerR+D4rDomUSIk5RSTa2w+DXBdXUeQrpDO74WCDdpDi1lIl8ppFpqtmU7O6y6p8QsgkmS9b0g/vhcry6CJTA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.8.1.tgz", + "integrity": "sha512-yGYpgBwL0DrkojXNvij+8f1Av6oU8PNUMVbfZRIVMdZ+Wtjx8NyAeY16cjSIxnG16vL5Pff+QhlBKRp9n6tnKA==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/utils": "2.7.0", - "@parcel/workers": "2.7.0", - "@swc/helpers": "^0.4.2", + "@parcel/diagnostic": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.8.1", + "@parcel/workers": "2.8.1", + "@swc/helpers": "^0.4.12", "browserslist": "^4.6.6", "detect-libc": "^1.0.3", "nullthrows": "^1.1.1", @@ -7808,25 +8506,25 @@ } }, "@parcel/transformer-json": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.7.0.tgz", - "integrity": "sha512-RQjuxBpYOch+kr4a0zi77KJtOLTPYRM7iq4NN80zKnA0r0dwDUCxZBtaj2l0O0o3R4MMJnm+ncP+cB7XR7dZYA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.8.1.tgz", + "integrity": "sha512-CijTTmMModiyBJCJoPlQvjrByaAs4jKMF+8Mbbaap39A1hJPNVSReFvHbRBO/cZ+2uVgxuSmfYD00YuZ784aVg==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", + "@parcel/plugin": "2.8.1", "json5": "^2.2.0" } }, "@parcel/transformer-postcss": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.7.0.tgz", - "integrity": "sha512-b6RskXBWf0MjpC9qjR2dQ1ZdRnlOiKYseG5CEovWCqM218RtdydFKz7jS+5Gxkb6qBtOG7zGPONXdPe+gTILcA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.8.1.tgz", + "integrity": "sha512-xmO4zA8nCgCgPstqxHr2BzRSJtqAy8cyAY1R9oi5FHkU5xHEzOGrcj5JynlU0eJssFten48kf8Csx6ciOsH1ZA==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "clone": "^2.1.1", "nullthrows": "^1.1.1", "postcss-value-parser": "^4.2.0", @@ -7842,13 +8540,13 @@ } }, "@parcel/transformer-posthtml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.7.0.tgz", - "integrity": "sha512-cP8YOiSynWJ1ycmBlhnnHeuQb2cwmklZ+BNyLUktj5p78kDy2de7VjX+dRNRHoW4H9OgEcSF4UEfDVVz5RYIhw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.8.1.tgz", + "integrity": "sha512-CLrSw+386j7RCrWV3Oyob4qNP+qyfVRDs1BzJZMMW8MFjxEC/ohPi2piGNzaqWPHOvATFodqXBvJBc2WcEZKGA==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -7865,34 +8563,34 @@ } }, "@parcel/transformer-raw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.7.0.tgz", - "integrity": "sha512-sDnItWCFSDez0izK1i5cgv+kXzZTbcJh4rNpVIgmE1kBLvAz608sqgcCkavb2wVJIvLesxYM+5G4p1CwkDlZ1g==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.8.1.tgz", + "integrity": "sha512-LVC6FX5tcLrZcOV1yzA8FMT5R+u2uQqCt/TXPhrt3MBw3WovKpaMicSkR0AI/802tg+nm1wpURVEfAA2S9+AQw==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0" + "@parcel/plugin": "2.8.1" } }, "@parcel/transformer-react-refresh-wrap": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.7.0.tgz", - "integrity": "sha512-1vRmIJzyBA1nIiXTAU6tZExq2FvJj/2F0ft6KDw8GYPv0KjmdiPo/PmaZ7JeSVOM6SdXQIQCbTmp1vkMP7DtkA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.8.1.tgz", + "integrity": "sha512-VkULeuyy0CrxfMwrRkn4V/HmbXzbuqp3+drvYFRCo29SFuC6rJbBF43XiewmvJijWIGCfEAa6bU9/csg2d5+3g==", "dev": true, "requires": { - "@parcel/plugin": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/plugin": "2.8.1", + "@parcel/utils": "2.8.1", "react-refresh": "^0.9.0" } }, "@parcel/transformer-svg": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.7.0.tgz", - "integrity": "sha512-ioER37zceuuE+K6ZrnjCyMUWEnv+63hIAFResc1OXxRhyt+7kzMz9ZqK0Mt6QMLwl1dxhkLmrU41n9IxzKZuSQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.8.1.tgz", + "integrity": "sha512-HSPve53tWttfKmoXgNLmrF49UCsE38xsA/CkWxI6wQM2qoqLMyei5DY9UsD0cjcAm87tSlZFTq9E/Nbol8g50w==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/plugin": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/plugin": "2.8.1", "nullthrows": "^1.1.1", "posthtml": "^0.16.5", "posthtml-parser": "^0.10.1", @@ -7909,39 +8607,39 @@ } }, "@parcel/types": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.7.0.tgz", - "integrity": "sha512-+dhXVUnseTCpJvBTGMp0V6X13z6O/A/+CUtwEpMGZ8XSmZ4Gk44GvaTiBOp0bJpWG4fvCKp+UmC8PYbrDiiziw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.8.1.tgz", + "integrity": "sha512-sLkpjGCCJy8Hxe6+dme+sugyu6+RW5B8WcdXG1Ynp7SkdgEYV44TKNVGnhoxsHi50G+O1ktZ4jzAu+pzubidXQ==", "dev": true, "requires": { - "@parcel/cache": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/source-map": "^2.0.0", - "@parcel/workers": "2.7.0", + "@parcel/cache": "2.8.1", + "@parcel/diagnostic": "2.8.1", + "@parcel/fs": "2.8.1", + "@parcel/package-manager": "2.8.1", + "@parcel/source-map": "^2.1.1", + "@parcel/workers": "2.8.1", "utility-types": "^3.10.0" } }, "@parcel/utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.7.0.tgz", - "integrity": "sha512-jNZ5bIGg1r1RDRKi562o4kuVwnz+XJ2Ie3b0Zwrqwvgfj6AbRFIKzDd+h85dWWmcDYzKUbHp11u6VJl1u8Vapg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.8.1.tgz", + "integrity": "sha512-C01Iz+K7oUVNTEzMW6SLDpqTDpm+Z3S+Ms3TxImkLYmdvYpYtzdU+gAllv6ck9WgB1Kqgcxq3TC0yhFsNDb5WQ==", "dev": true, "requires": { - "@parcel/codeframe": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/hash": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/markdown-ansi": "2.7.0", - "@parcel/source-map": "^2.0.0", + "@parcel/codeframe": "2.8.1", + "@parcel/diagnostic": "2.8.1", + "@parcel/hash": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/markdown-ansi": "2.8.1", + "@parcel/source-map": "^2.1.1", "chalk": "^4.1.0" } }, "@parcel/watcher": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.5.tgz", - "integrity": "sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.7.tgz", + "integrity": "sha512-gc3hoS6e+2XdIQ4HHljDB1l0Yx2EWh/sBBtCEFNKGSMlwASWeAQsOY/fPbxOBcZ/pg0jBh4Ga+4xHlZc4faAEQ==", "dev": true, "requires": { "node-addon-api": "^3.2.1", @@ -7949,23 +8647,23 @@ } }, "@parcel/workers": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.7.0.tgz", - "integrity": "sha512-99VfaOX+89+RaoTSyH9ZQtkMBFZBFMvJmVJ/GeJT6QCd2wtKBStTHlaSnQOkLD/iRjJCNwV2xpZmm8YkTwV+hg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.8.1.tgz", + "integrity": "sha512-6TnRPwBpxXUsekKK88OxPZ500gvApxF0TaZdSDvmMlvDWjZYgkDN3AAsaFS1gwFLS4XKogn2TgjUnocVof8DXg==", "dev": true, "requires": { - "@parcel/diagnostic": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/types": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/diagnostic": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/types": "2.8.1", + "@parcel/utils": "2.8.1", "chrome-trace-event": "^1.0.2", "nullthrows": "^1.1.1" } }, "@swc/helpers": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.12.tgz", - "integrity": "sha512-R6RmwS9Dld5lNvwKlPn62+piU+WDG1sMfsnfJioXCciyko/gZ0DQ4Mqglhq1iGU1nQ/RcGkAwfMH+elMSkJH3Q==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", "dev": true, "requires": { "tslib": "^2.4.0" @@ -8008,9 +8706,9 @@ "dev": true }, "@types/eslint": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", - "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", "dev": true, "requires": { "@types/estree": "*", @@ -8033,6 +8731,16 @@ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -8052,24 +8760,18 @@ "dev": true }, "@types/node": { - "version": "18.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", - "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==", + "version": "18.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", + "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", "dev": true }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "@types/shelljs": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.11.tgz", + "integrity": "sha512-x9yaMvEh5BEaZKeVQC4vp3l+QoFj3BXcd4aYfuKSzIIyihjdVARAadYy3SMNIz0WCCdS2vB9JL/U6GQk5PaxQw==", "dev": true, - "optional": true, "requires": { + "@types/glob": "*", "@types/node": "*" } }, @@ -8259,9 +8961,9 @@ "dev": true }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true }, "acorn-globals": { @@ -8390,6 +9092,15 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -8411,6 +9122,29 @@ "safe-buffer": "^5.0.1" } }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -8472,18 +9206,22 @@ "update-browserslist-db": "^1.0.9" } }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -8497,9 +9235,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001421", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001421.tgz", - "integrity": "sha512-Sw4eLbgUJAEhjLs1Fa+mk45sidp1wRn5y6GtDpHGBaNJ9OCDJaVh2tIaWWUnGfuXfKf1JCBaIarak3FkVAvEeA==", + "version": "1.0.30001439", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz", + "integrity": "sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==", "dev": true }, "chai": { @@ -8617,9 +9355,9 @@ } }, "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, "concat-map": { @@ -8628,17 +9366,22 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true + }, "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "path-type": "^4.0.0" } }, "create-require": { @@ -8659,42 +9402,93 @@ } }, "css-loader": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", - "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz", + "integrity": "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==", "dev": true, "requires": { "icss-utils": "^5.1.0", - "postcss": "^8.4.7", + "postcss": "^8.4.18", "postcss-modules-extract-imports": "^3.0.0", "postcss-modules-local-by-default": "^4.0.0", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" + "semver": "^7.3.8" } }, "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, + "optional": true, + "peer": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", "nth-check": "^2.0.1" + }, + "dependencies": { + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "domelementtype": "^2.3.0" + } + }, + "domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "optional": true, + "peer": true + } } }, "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, + "optional": true, + "peer": true, "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" } }, "css-what": { @@ -8710,12 +9504,36 @@ "dev": true }, "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, + "optional": true, + "peer": true, "requires": { - "css-tree": "^1.1.2" + "css-tree": "~2.2.0" + }, + "dependencies": { + "css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + } + }, + "mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "optional": true, + "peer": true + } } }, "cssom": { @@ -8753,9 +9571,9 @@ } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -8794,6 +9612,12 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, "detect-libc": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", @@ -8900,9 +9724,9 @@ } }, "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -8956,117 +9780,252 @@ "esbuild-windows-32": "0.14.49", "esbuild-windows-64": "0.14.49", "esbuild-windows-arm64": "0.14.49" + }, + "dependencies": { + "esbuild-android-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", + "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", + "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", + "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", + "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", + "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", + "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", + "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", + "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", + "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", + "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", + "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", + "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", + "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", + "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", + "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", + "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", + "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", + "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.49", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", + "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", + "dev": true, + "optional": true + } } }, "esbuild-android-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", - "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", - "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", - "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", - "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", - "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", - "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", - "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", - "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", - "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", - "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", - "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", - "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", - "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", - "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", - "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", - "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", "dev": true, "optional": true }, @@ -9077,16 +10036,16 @@ "dev": true }, "esbuild-sunos-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", - "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", - "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", "dev": true, "optional": true }, @@ -9098,9 +10057,9 @@ "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", - "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", "dev": true, "optional": true }, @@ -9174,6 +10133,12 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -9197,18 +10162,6 @@ "strip-final-newline": "^2.0.0" } }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -9227,15 +10180,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, "file-loader": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", @@ -9271,6 +10215,12 @@ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -9313,6 +10263,17 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, "get-port": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", @@ -9358,9 +10319,9 @@ "dev": true }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -9393,6 +10354,12 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -9409,12 +10376,12 @@ } }, "htmlnano": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.2.tgz", - "integrity": "sha512-+ZrQFS4Ub+zd+/fWwfvoYCEGNEa0/zrpys6CyXxvZDwtL7Pl+pOtRkiujyvBQ7Lmfp7/iEPxtOFgxWA16Gkj3w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.4.tgz", + "integrity": "sha512-WGCkyGFwjKW1GeCBsPYacMvaMnZtFJ0zIRnC2NCddkA+IOEhTqskXrS7lep+3yYZw/nQ3dW1UAX4yA/GJyR8BA==", "dev": true, "requires": { - "cosmiconfig": "^7.0.1", + "cosmiconfig": "^8.0.0", "posthtml": "^0.16.5", "timsort": "^0.3.0" } @@ -9431,6 +10398,17 @@ "entities": "^3.0.1" } }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, "http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -9442,6 +10420,35 @@ "debug": "4" } }, + "http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "requires": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } + } + }, "https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -9512,10 +10519,10 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, "is-arrayish": { @@ -9534,9 +10541,9 @@ } }, "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "requires": { "has": "^1.0.3" @@ -9581,6 +10588,12 @@ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -9616,12 +10629,6 @@ "supports-color": "^8.0.0" } }, - "jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -9685,9 +10692,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jsonc-parser": { @@ -9707,75 +10714,75 @@ } }, "lightningcss": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.16.0.tgz", - "integrity": "sha512-5+ZS9h+xeADcJTF2oRCT3yNZBlDYyOgQSdrWNBCqsIwm8ucKbF061OBVv/WHP4Zk8FToNhwFklk/hMuOngqsIg==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.17.1.tgz", + "integrity": "sha512-DwwM/YYqGwLLP3he41wzDXT/m+8jdEZ80i9ViQNLRgyhey3Vm6N7XHn+4o3PY6wSnVT23WLuaROIpbpIVTNOjg==", "dev": true, "requires": { "detect-libc": "^1.0.3", - "lightningcss-darwin-arm64": "1.16.0", - "lightningcss-darwin-x64": "1.16.0", - "lightningcss-linux-arm-gnueabihf": "1.16.0", - "lightningcss-linux-arm64-gnu": "1.16.0", - "lightningcss-linux-arm64-musl": "1.16.0", - "lightningcss-linux-x64-gnu": "1.16.0", - "lightningcss-linux-x64-musl": "1.16.0", - "lightningcss-win32-x64-msvc": "1.16.0" + "lightningcss-darwin-arm64": "1.17.1", + "lightningcss-darwin-x64": "1.17.1", + "lightningcss-linux-arm-gnueabihf": "1.17.1", + "lightningcss-linux-arm64-gnu": "1.17.1", + "lightningcss-linux-arm64-musl": "1.17.1", + "lightningcss-linux-x64-gnu": "1.17.1", + "lightningcss-linux-x64-musl": "1.17.1", + "lightningcss-win32-x64-msvc": "1.17.1" } }, "lightningcss-darwin-arm64": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.16.0.tgz", - "integrity": "sha512-gIhz6eZFwsC4oVMjBGQ3QWDdLQY7vcXFyM/x91PilgHqu63B9uBa10EZA75YoTEkbKhoz0uDCqyHh/EoF1GrkQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.17.1.tgz", + "integrity": "sha512-YTAHEy4XlzI3sMbUVjbPi9P7+N7lGcgl2JhCZhiQdRAEKnZLQch8kb5601sgESxdGXjgei7JZFqi/vVEk81wYg==", "dev": true, "optional": true }, "lightningcss-darwin-x64": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.16.0.tgz", - "integrity": "sha512-kLPi+OEpDj3UGY6DC8TfjbcULJDKMP+TVKSlrEkNGn8t1YRzi2g4oy7UVTSB5AnSbT0CusUItzdVjHQ49EdoNA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.17.1.tgz", + "integrity": "sha512-UhXPUS2+yTTf5sXwUV0+8QY2x0bPGLgC/uhcknWSQMqWn1zGty4fFvH04D7f7ij0ujwSuN+Q0HtU7lgmMrPz0A==", "dev": true, "optional": true }, "lightningcss-linux-arm-gnueabihf": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.16.0.tgz", - "integrity": "sha512-oSwEbvXUPr//H/ainBRJXTxHerlheee/KgkTTmAQWiVnt8HV+bRohTBWWPBy5ZArgiGLwj7ogv45istgljPN2Q==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.17.1.tgz", + "integrity": "sha512-alUZumuznB6K/9yZ0zuZkODXUm8uRnvs9t0CL46CXN16Y2h4gOx5ahUCMlelUb7inZEsgJIoepgLsJzBUrSsBw==", "dev": true, "optional": true }, "lightningcss-linux-arm64-gnu": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.16.0.tgz", - "integrity": "sha512-Drq9BSVIvmV9zsDJbCZWCulMvKMQWFIlYXPCKV/iwRj+ZAJ1BRngma0cNHB6uW7Wac8Jg04CJN5IA4ELE3J+cQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.17.1.tgz", + "integrity": "sha512-/1XaH2cOjDt+ivmgfmVFUYCA0MtfNWwtC4P8qVi53zEQ7P8euyyZ1ynykZOyKXW9Q0DzrwcLTh6+hxVLcbtGBg==", "dev": true, "optional": true }, "lightningcss-linux-arm64-musl": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.16.0.tgz", - "integrity": "sha512-1QXWStnTEo4RFQf0mfGhRyNUeEHilCZ0NA97XgwKwrYr/M7sYKU/1HWY00dPxFJ6GITR2pfJGo9xi3ScSSBxbA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.17.1.tgz", + "integrity": "sha512-/IgE7lYWFHCCQFTMIwtt+fXLcVOha8rcrNze1JYGPWNorO6NBc6MJo5u5cwn5qMMSz9fZCCDIlBBU4mGwjQszQ==", "dev": true, "optional": true }, "lightningcss-linux-x64-gnu": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.16.0.tgz", - "integrity": "sha512-gD2eQYD5OFs1p83R0TcMCEc5HRyJES4lR4THmclv7khm3dc9vc+2VT0kFBPxO1L2AwlZuvXaaMan7X1Ul7uSfA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.17.1.tgz", + "integrity": "sha512-OyE802IAp4DB9vZrHlOyWunbHLM9dN08tJIKN/HhzzLKIHizubOWX6NMzUXMZLsaUrYwVAHHdyEA+712p8mMzA==", "dev": true, "optional": true }, "lightningcss-linux-x64-musl": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.16.0.tgz", - "integrity": "sha512-HJsKeYxloEvg2WCQhtYPqzZUliLu9JBJNeI5y9cPQeDR/7ayGGLbVhJaotPtzJkElOFL/SaXsS+FRuH4w+yafg==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.17.1.tgz", + "integrity": "sha512-ydwGgV3Usba5P53RAOqCA9MsRsbb8jFIEVhf7/BXFjpKNoIQyijVTXhwIgQr/oGwUNOHfgQ3F8ruiUjX/p2YKw==", "dev": true, "optional": true }, "lightningcss-win32-x64-msvc": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.16.0.tgz", - "integrity": "sha512-h4ayyAlOMLUHV9NdofcIu79aEjmly93adVxcg5wDJpkvMiwDTufEN30M8G4gGcjo1JE5jFjAcyQcRpXYkYcemA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.17.1.tgz", + "integrity": "sha512-Ngqtx9NazaiAOk71XWwSsqgAuwYF+8PO6UYsoU7hAukdrSS98kwaBMEDw1igeIiZy1XD/4kh5KVnkjNf7ZOxVQ==", "dev": true, "optional": true }, @@ -9838,6 +10845,12 @@ "p-locate": "^5.0.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -9866,29 +10879,28 @@ "yallist": "^4.0.0" } }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "marked": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", - "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==", - "dev": true + "matcher": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-4.0.0.tgz", + "integrity": "sha512-S6x5wmcDmsDRRU/c2dkccDwQPXoFczc5+HpQ2lON8pnvHlnvHAHj5WlLVvw6n6vNyHuVugYrFohYxbS+pvFpKQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^4.0.0" + } }, "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "optional": true, + "peer": true }, "merge-stream": { "version": "2.0.0", @@ -9896,12 +10908,6 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, "mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", @@ -9932,6 +10938,21 @@ "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, "mocha": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", @@ -9999,9 +11020,9 @@ } }, "monaco-editor-core": { - "version": "0.35.0-dev.20221208", - "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.35.0-dev.20221208.tgz", - "integrity": "sha512-XQpKe+FoGoIWDqn/xiz5+Iyi1PrVWArlrBqqkQuWu4IBjUvs7/krZLqnsy/Vfoflu9Ldtoc1JU9wNu0tyDv66A==", + "version": "0.40.0-dev.20230707", + "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.40.0-dev.20230707.tgz", + "integrity": "sha512-aKvvZjZYww+5KbyYq5L3aUjdRmVVXZrCXGO0A0GTISpx2PuqThDpEv7r4ZQkhHQxHSGCRZdLr2JAdgFLkNcmxg==", "dev": true }, "mri": { @@ -10017,27 +11038,27 @@ "dev": true }, "msgpackr": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.7.2.tgz", - "integrity": "sha512-mWScyHTtG6TjivXX9vfIy2nBtRupaiAj0HQ2mtmpmYujAmqZmaaEVPaSZ1NKLMvicaMLFzEaMk0ManxMRg8rMQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.1.tgz", + "integrity": "sha512-05fT4J8ZqjYlR4QcRDIhLCYKUOHXk7C/xa62GzMKj74l3up9k2QZ3LgFc6qWdsPHl91QA2WLWqWc8b8t7GLNNw==", "dev": true, "requires": { - "msgpackr-extract": "^2.1.2" + "msgpackr-extract": "^2.2.0" } }, "msgpackr-extract": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-2.1.2.tgz", - "integrity": "sha512-cmrmERQFb19NX2JABOGtrKdHMyI6RUyceaPBQ2iRz9GnDkjBWFjNJC0jyyoOfZl2U/LZE3tQCCQc4dlRyA8mcA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-2.2.0.tgz", + "integrity": "sha512-0YcvWSv7ZOGl9Od6Y5iJ3XnPww8O7WLcpYMDwX+PAA/uXLDtyw94PJv9GLQV/nnp3cWlDhMoyKZIQLrx33sWog==", "dev": true, "optional": true, "requires": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "2.1.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "2.1.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "2.1.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "2.1.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "2.1.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "2.1.2", + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "2.2.0", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "2.2.0", + "@msgpackr-extract/msgpackr-extract-linux-arm": "2.2.0", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "2.2.0", + "@msgpackr-extract/msgpackr-extract-linux-x64": "2.2.0", + "@msgpackr-extract/msgpackr-extract-win32-x64": "2.2.0", "node-gyp-build-optional-packages": "5.0.3" } }, @@ -10072,6 +11093,39 @@ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true }, + "node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, "node-gyp-build": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", @@ -10085,9 +11139,9 @@ "dev": true }, "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.7.tgz", + "integrity": "sha512-EJ3rzxL9pTWPjk5arA0s0dgXpnyiAbJDE6wHT62g7VsgrgQgmmZ+Ru++M1BFofncWja+Pnn3rEr3fieRySAdKQ==", "dev": true }, "normalize-path": { @@ -10126,6 +11180,12 @@ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -10144,6 +11204,12 @@ "mimic-fn": "^2.1.0" } }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -10189,33 +11255,25 @@ "dev": true }, "parcel": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.7.0.tgz", - "integrity": "sha512-pRYwnivwtNP0tip8xYSo4zCB0XhLt7/gJzP1p8OovCqkmFjG9VG+GW9TcAKqMIo0ovEa9tT+/s6gY1Qy+BONGQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.8.1.tgz", + "integrity": "sha512-3hl31uIRG+k3N54Le0fLQU8a5VsKFN3j3igs3rEQv6GtXFUNjq58m/Fc1dbOI/v+0fPOv01wyHACn9MCQYesVA==", "dev": true, "requires": { - "@parcel/config-default": "2.7.0", - "@parcel/core": "2.7.0", - "@parcel/diagnostic": "2.7.0", - "@parcel/events": "2.7.0", - "@parcel/fs": "2.7.0", - "@parcel/logger": "2.7.0", - "@parcel/package-manager": "2.7.0", - "@parcel/reporter-cli": "2.7.0", - "@parcel/reporter-dev-server": "2.7.0", - "@parcel/utils": "2.7.0", + "@parcel/config-default": "2.8.1", + "@parcel/core": "2.8.1", + "@parcel/diagnostic": "2.8.1", + "@parcel/events": "2.8.1", + "@parcel/fs": "2.8.1", + "@parcel/logger": "2.8.1", + "@parcel/package-manager": "2.8.1", + "@parcel/reporter-cli": "2.8.1", + "@parcel/reporter-dev-server": "2.8.1", + "@parcel/utils": "2.8.1", "chalk": "^4.1.0", "commander": "^7.0.0", "get-port": "^4.2.0", "v8-compile-cache": "^2.0.0" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - } } }, "parent-module": { @@ -10281,12 +11339,6 @@ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -10299,58 +11351,68 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, - "playwright": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.18.1.tgz", - "integrity": "sha512-8EaX9EtbtAoMq5tnzIsoA3b/V86V/6Mq2skuOU4qEw+5OVxs1lwesDwmjy/RVU1Qfx5UuwSQzhp45wyH22oa+A==", + "pin-github-action": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/pin-github-action/-/pin-github-action-1.8.0.tgz", + "integrity": "sha512-8QMKGbDUmMLFSyeV7hDIVmlI8B3ThJed1uFYuhcCBLi/w8xHPbrPhnCvJndYdugNc8aj1FrijrOMDLQ93ATc7A==", "dev": true, "requires": { - "playwright-core": "=1.18.1" + "@octokit/rest": "^18", + "commander": "^9", + "debug": "^4.3.4", + "matcher": "^4.0.0", + "yaml": "^2.1.3" }, "dependencies": { - "playwright-core": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.18.1.tgz", - "integrity": "sha512-NALGl8R1GHzGLlhUApmpmfh6M1rrrPcDTygWvhTbprxwGB9qd/j9DRwyn4HTQcUB6o0/VOpo46fH9ez3+D/Rog==", - "dev": true, - "requires": { - "commander": "^8.2.0", - "debug": "^4.1.1", - "extract-zip": "^2.0.1", - "https-proxy-agent": "^5.0.0", - "jpeg-js": "^0.4.2", - "mime": "^2.4.6", - "pngjs": "^5.0.0", - "progress": "^2.0.3", - "proper-lockfile": "^4.1.1", - "proxy-from-env": "^1.1.0", - "rimraf": "^3.0.2", - "socks-proxy-agent": "^6.1.0", - "stack-utils": "^2.0.3", - "ws": "^7.4.6", - "yauzl": "^2.10.0", - "yazl": "^2.5.1" - } - }, - "ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "dev": true, - "requires": {} + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true } } }, - "pngjs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", - "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "playwright": { + "version": "1.32.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.32.2.tgz", + "integrity": "sha512-jHVnXJke0PXpuPszKtk9y1zZSlzO5+2a+aockT/AND0oeXx46FiJEFrafthurglLygVZA+1gEbtUM1C7qtTV+Q==", + "dev": true, + "requires": { + "playwright-core": "1.32.2" + } + }, + "playwright-core": { + "version": "1.32.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.32.2.tgz", + "integrity": "sha512-zD7aonO+07kOTthsrCR3YCVnDcqSHIJpdFUtZEMOb6//1Rc7/6mZDRdw+nlzcQiQltOOsiqI3rrSyn/SlyjnJQ==", "dev": true }, + "portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, "postcss": { - "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "version": "8.4.20", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", + "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", "dev": true, "requires": { "nanoid": "^3.3.4", @@ -10403,9 +11465,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -10541,29 +11603,6 @@ } } }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -10586,6 +11625,15 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -10616,10 +11664,19 @@ "picomatch": "^2.2.1" } }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, "regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==", + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, "require-directory": { @@ -10634,6 +11691,12 @@ "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -10651,25 +11714,10 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "rollup": { - "version": "2.78.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", - "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -10707,6 +11755,12 @@ "ajv-keywords": "^3.5.2" } }, + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -10740,15 +11794,26 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "shiki": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.0.tgz", - "integrity": "sha512-iczxaIYeBFHTFrQPb9DVy2SKgYxC4Wo7Iucm7C17cCh2Ge/refnvHscUOxM85u57MfLoNOtjoEFUWt9gBexblA==", + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "requires": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "5.2.0" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" } }, "signal-exit": { @@ -10757,33 +11822,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true - }, - "socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" - } - }, - "socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -10812,23 +11850,6 @@ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", "dev": true }, - "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -10884,26 +11905,19 @@ "dev": true }, "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz", + "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==", "dev": true, + "optional": true, + "peer": true, "requires": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - } + "css-select": "^5.1.0", + "css-tree": "^2.2.1", + "csso": "^5.0.5", + "picocolors": "^1.0.0" } }, "symbol-tree": { @@ -11028,9 +12042,9 @@ } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "dev": true }, "type-check": { @@ -11054,23 +12068,25 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "typedoc": { - "version": "0.22.11", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.11.tgz", - "integrity": "sha512-pVr3hh6dkS3lPPaZz1fNpvcrqLdtEvXmXayN55czlamSgvEjh+57GUqfhAI1Xsuu/hNHUT1KNSx8LH2wBP/7SA==", + "typescript": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", + "dev": true + }, + "union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", "dev": true, "requires": { - "glob": "^7.2.0", - "lunr": "^2.3.9", - "marked": "^4.0.10", - "minimatch": "^3.0.4", - "shiki": "^0.10.0" + "qs": "^6.4.0" } }, - "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", "dev": true }, "universalify": { @@ -11098,6 +12114,12 @@ "punycode": "^2.1.0" } }, + "url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -11123,185 +12145,52 @@ "dev": true }, "vite": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz", - "integrity": "sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz", + "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==", "dev": true, "requires": { "esbuild": "^0.15.9", "fsevents": "~2.3.2", - "postcss": "^8.4.16", + "postcss": "^8.4.18", "resolve": "^1.22.1", - "rollup": "~2.78.0" + "rollup": "^2.79.1" }, "dependencies": { "esbuild": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.11.tgz", - "integrity": "sha512-OgHGuhlfZ//mToxjte1D5iiiQgWfJ2GByVMwEC/IuoXsBGkuyK1+KrjYu0laSpnN/L1UmLUCv0s25vObdc1bVg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", "dev": true, "requires": { - "@esbuild/android-arm": "0.15.11", - "@esbuild/linux-loong64": "0.15.11", - "esbuild-android-64": "0.15.11", - "esbuild-android-arm64": "0.15.11", - "esbuild-darwin-64": "0.15.11", - "esbuild-darwin-arm64": "0.15.11", - "esbuild-freebsd-64": "0.15.11", - "esbuild-freebsd-arm64": "0.15.11", - "esbuild-linux-32": "0.15.11", - "esbuild-linux-64": "0.15.11", - "esbuild-linux-arm": "0.15.11", - "esbuild-linux-arm64": "0.15.11", - "esbuild-linux-mips64le": "0.15.11", - "esbuild-linux-ppc64le": "0.15.11", - "esbuild-linux-riscv64": "0.15.11", - "esbuild-linux-s390x": "0.15.11", - "esbuild-netbsd-64": "0.15.11", - "esbuild-openbsd-64": "0.15.11", - "esbuild-sunos-64": "0.15.11", - "esbuild-windows-32": "0.15.11", - "esbuild-windows-64": "0.15.11", - "esbuild-windows-arm64": "0.15.11" + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" } }, - "esbuild-android-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.11.tgz", - "integrity": "sha512-rrwoXEiuI1kaw4k475NJpexs8GfJqQUKcD08VR8sKHmuW9RUuTR2VxcupVvHdiGh9ihxL9m3lpqB1kju92Ialw==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.11.tgz", - "integrity": "sha512-/hDubOg7BHOhUUsT8KUIU7GfZm5bihqssvqK5PfO4apag7YuObZRZSzViyEKcFn2tPeHx7RKbSBXvAopSHDZJQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.11.tgz", - "integrity": "sha512-1DqHD0ms3AhiwkKnjRUzmiW7JnaJJr5FKrPiR7xuyMwnjDqvNWDdMq4rKSD9OC0piFNK6n0LghsglNMe2MwJtA==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.11.tgz", - "integrity": "sha512-OMzhxSbS0lwwrW40HHjRCeVIJTURdXFA8c3GU30MlHKuPCcvWNUIKVucVBtNpJySXmbkQMDJdJNrXzNDyvoqvQ==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.11.tgz", - "integrity": "sha512-8dKP26r0/Qyez8nTCwpq60QbuYKOeBygdgOAWGCRalunyeqWRoSZj9TQjPDnTTI9joxd3QYw3UhVZTKxO9QdRg==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.11.tgz", - "integrity": "sha512-aSGiODiukLGGnSg/O9+cGO2QxEacrdCtCawehkWYTt5VX1ni2b9KoxpHCT9h9Y6wGqNHmXFnB47RRJ8BIqZgmQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.11.tgz", - "integrity": "sha512-lsrAfdyJBGx+6aHIQmgqUonEzKYeBnyfJPkT6N2dOf1RoXYYV1BkWB6G02tjsrz1d5wZzaTc3cF+TKmuTo/ZwA==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.11.tgz", - "integrity": "sha512-Y2Rh+PcyVhQqXKBTacPCltINN3uIw2xC+dsvLANJ1SpK5NJUtxv8+rqWpjmBgaNWKQT1/uGpMmA9olALy9PLVA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.11.tgz", - "integrity": "sha512-TJllTVk5aSyqPFvvcHTvf6Wu1ZKhWpJ/qNmZO8LL/XeB+LXCclm7HQHNEIz6MT7IX8PmlC1BZYrOiw2sXSB95A==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.11.tgz", - "integrity": "sha512-uhcXiTwTmD4OpxJu3xC5TzAAw6Wzf9O1XGWL448EE9bqGjgV1j+oK3lIHAfsHnuIn8K4nDW8yjX0Sv5S++oRuw==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.11.tgz", - "integrity": "sha512-WD61y/R1M4BLe4gxXRypoQ0Ci+Vjf714QYzcPNkiYv5I8K8WDz2ZR8Bm6cqKxd6rD+e/rZgPDbhQ9PCf7TMHmA==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.11.tgz", - "integrity": "sha512-JVleZS9oPVLTlBhPTWgOwxFWU/wMUdlBwTbGA4GF8c38sLbS13cupj+C8bLq929jU7EMWry4SaL+tKGIaTlqKg==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.11.tgz", - "integrity": "sha512-9aLIalZ2HFHIOZpmVU11sEAS9F8TnHw49daEjcgMpBXHFF57VuT9f9/9LKJhw781Gda0P9jDkuCWJ0tFbErvJw==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.11.tgz", - "integrity": "sha512-sZHtiXXOKsLI3XGBGoYO4qKBzJlb8xNsWmvFiwFMHFzA4AXgDP1KDp7Dawe9C2pavTRBDvl+Ok4n/DHQ59oaTg==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.11.tgz", - "integrity": "sha512-hUC9yN06K9sg7ju4Vgu9ChAPdsEgtcrcLfyNT5IKwKyfpLvKUwCMZSdF+gRD3WpyZelgTQfJ+pDx5XFbXTlB0A==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.11.tgz", - "integrity": "sha512-0bBo9SQR4t66Wd91LGMAqmWorzO0TTzVjYiifwoFtel8luFeXuPThQnEm5ztN4g0fnvcp7AnUPPzS/Depf17wQ==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.11.tgz", - "integrity": "sha512-EuBdTGlsMTjEl1sQnBX2jfygy7iR6CKfvOzi+gEOfhDqbHXsmY1dcpbVtcwHAg9/2yUZSfMJHMAgf1z8M4yyyw==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.11.tgz", - "integrity": "sha512-O0/Wo1Wk6dc0rZSxkvGpmTNIycEznHmkObTFz2VHBhjPsO4ZpCgfGxNkCpz4AdAIeMczpTXt/8d5vdJNKEGC+Q==", - "dev": true, - "optional": true - }, "esbuild-windows-64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.11.tgz", - "integrity": "sha512-x977Q4HhNjnHx00b4XLAnTtj5vfbdEvkxaQwC1Zh5AN8g5EX+izgZ6e5QgqJgpzyRNJqh4hkgIJF1pyy1be0mQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.11", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.11.tgz", - "integrity": "sha512-VwUHFACuBahrvntdcMKZteUZ9HaYrBRODoKe4tIWxguQRvvYoYb7iu5LrcRS/FQx8KPZNaa72zuqwVtHeXsITw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", "dev": true, "optional": true } @@ -11362,18 +12251,6 @@ "integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==", "dev": true }, - "vscode-oniguruma": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz", - "integrity": "sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ==", - "dev": true - }, - "vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", - "dev": true - }, "vscode-uri": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.3.tgz", @@ -11421,9 +12298,9 @@ "dev": true }, "webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -11559,9 +12436,9 @@ "dev": true }, "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", + "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", "dev": true }, "yargs": { @@ -11603,25 +12480,6 @@ "integrity": "sha512-98Vj4sgqB1fLcpf2wK7h3dFCaabISHU9CXZHaAx3QLkvTTCD31MzMcNbw5V5jZFBK7ffkFqfWig6B20KQt4wtA==", "dev": true }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "yazl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3" - } - }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 23039443..0790a0f8 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "monaco-editor", - "version": "0.34.1", - "vscodeRef": "0316a754aa4c25208bef91937efbce2ab1e3ce37", + "version": "0.40.0", + "vscodeRef": "660393deaaa6d1996740ff4880f1bad43768c814", "private": true, "description": "A browser based code editor", + "homepage": "https://github.com/microsoft/monaco-editor", "author": "Microsoft Corporation", "license": "MIT", "scripts": { - "build-website": "ts-node ./build/website && npm run typedoc", "import-typescript": "ts-node ./build/importTypescript", "playwright-install": "node ./node_modules/playwright/install.js", "playwright-install-deps": "playwright install-deps", @@ -15,7 +15,6 @@ "prettier-check": "prettier --check .", "prettier": "prettier --write .", "pretty-quick": "pretty-quick --staged", - "release": "ts-node ./build/build && ts-node ./build/release", "simpleserver": "ts-node ./build/simpleserver", "package-for-smoketest-webpack": "ts-node ./test/smoke/package-webpack", "package-for-smoketest-webpack-cross-origin": "ts-node ./test/smoke/package-webpack --cross-origin", @@ -23,11 +22,13 @@ "package-for-smoketest-vite": "ts-node ./test/smoke/package-vite", "smoketest": "node ./test/smoke/runner.js", "smoketest-debug": "node ./test/smoke/runner.js --debug-tests", - "test": "mocha test/unit/all.js", + "test": "mocha test/unit/all.js && ts-node ./build/check-samples", "deps-all-remove": "ts-node ./build/npm/removeAll", "deps-all-install": "ts-node ./build/npm/installAll", - "typedoc": "cd website/typedoc && \"../../node_modules/.bin/typedoc\" --options ./typedoc.json", - "watch": "tsc -w -p ./src" + "update-actions": "pin-github-action ./.github/workflows/website.yml", + "watch": "tsc -w -p ./src", + "build": "ts-node ./build/build-languages", + "build-monaco-editor": "npm run build && ts-node ./build/build-monaco-editor" }, "typings": "./esm/vs/editor/editor.api.d.ts", "module": "./esm/vs/editor/editor.main.js", @@ -37,6 +38,7 @@ }, "devDependencies": { "@types/mocha": "^9.1.0", + "@types/shelljs": "^0.8.11", "@typescript/vfs": "^1.3.5", "chai": "^4.3.6", "clean-css": "^5.2.4", @@ -45,29 +47,31 @@ "esbuild-plugin-alias": "^0.2.1", "file-loader": "^6.2.0", "glob": "^7.2.0", + "http-server": "^14.1.1", "husky": "^7.0.4", "jsdom": "^19.0.0", "jsonc-parser": "^3.0.0", "mocha": "^9.2.0", - "monaco-editor-core": "0.35.0-dev.20221208", + "monaco-editor-core": "^0.40.0-dev.20230629", "parcel": "^2.7.0", - "playwright": "^1.18.1", + "pin-github-action": "^1.8.0", + "playwright": "^1.32.2", "prettier": "^2.5.1", "pretty-quick": "^3.1.3", "requirejs": "^2.3.6", + "shelljs": "^0.8.5", "style-loader": "^3.3.1", "terser": "^5.14.2", "ts-node": "^10.6.0", - "typedoc": "^0.22.11", - "typescript": "4.5.5", - "vite": "^3.1.8", + "typescript": "^5.0.2", + "vite": "^3.2.7", "vscode-css-languageservice": "5.4.1", "vscode-html-languageservice": "4.2.4", "vscode-json-languageservice": "4.2.1", "vscode-languageserver-textdocument": "^1.0.4", "vscode-languageserver-types": "3.16.0", "vscode-uri": "3.0.3", - "webpack": "^5.74.0", + "webpack": "^5.76.0", "yaserver": "^0.4.0" }, "alias": { diff --git a/samples/browser-esm-vite-react/package-lock.json b/samples/browser-esm-vite-react/package-lock.json index 79a03a3e..22e369d4 100644 --- a/samples/browser-esm-vite-react/package-lock.json +++ b/samples/browser-esm-vite-react/package-lock.json @@ -12,8 +12,8 @@ "monaco-editor": "^0.32.0", "react": "^17.0.2", "react-dom": "^17.0.2", - "typescript": "^4.5.5", - "vite": "^2.9.13" + "typescript": "^5.0.2", + "vite": "^2.9.16" } }, "node_modules/@ampproject/remapping": { @@ -1104,9 +1104,9 @@ } }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -1359,28 +1359,28 @@ } }, "node_modules/typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/vite": { - "version": "2.9.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.13.tgz", - "integrity": "sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==", + "version": "2.9.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz", + "integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==", "dev": true, "dependencies": { "esbuild": "^0.14.27", "postcss": "^8.4.13", "resolve": "^1.22.0", - "rollup": "^2.59.0" + "rollup": ">=2.59.0 <2.78.0" }, "bin": { "vite": "bin/vite.js" @@ -2116,9 +2116,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "loose-envify": { @@ -2292,22 +2292,22 @@ "dev": true }, "typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true }, "vite": { - "version": "2.9.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.13.tgz", - "integrity": "sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==", + "version": "2.9.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz", + "integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==", "dev": true, "requires": { "esbuild": "^0.14.27", "fsevents": "~2.3.2", "postcss": "^8.4.13", "resolve": "^1.22.0", - "rollup": "^2.59.0" + "rollup": ">=2.59.0 <2.78.0" } } } diff --git a/samples/browser-esm-vite-react/package.json b/samples/browser-esm-vite-react/package.json index bb07b61c..07ff5a1b 100644 --- a/samples/browser-esm-vite-react/package.json +++ b/samples/browser-esm-vite-react/package.json @@ -14,7 +14,7 @@ "@types/react": "^17.0.39", "@types/react-dom": "^17.0.11", "@vitejs/plugin-react": "^1.1.4", - "typescript": "^4.5.5", - "vite": "^2.9.13" + "typescript": "^5.0.2", + "vite": "^2.9.16" } } diff --git a/samples/browser-esm-vite-react/src/components/Editor.tsx b/samples/browser-esm-vite-react/src/components/Editor.tsx index 71aedd45..86992ec7 100644 --- a/samples/browser-esm-vite-react/src/components/Editor.tsx +++ b/samples/browser-esm-vite-react/src/components/Editor.tsx @@ -7,13 +7,15 @@ export const Editor: VFC = () => { const monacoEl = useRef(null); useEffect(() => { - if (monacoEl && !editor) { - setEditor( - monaco.editor.create(monacoEl.current!, { + if (monacoEl) { + setEditor((editor) => { + if (editor) return editor; + + return monaco.editor.create(monacoEl.current!, { value: ['function x() {', '\tconsole.log("Hello world!");', '}'].join('\n'), language: 'typescript' - }) - ); + }); + }); } return () => editor?.dispose(); diff --git a/samples/browser-esm-webpack-small/index.js b/samples/browser-esm-webpack-small/index.js index d414b4aa..8aa87102 100644 --- a/samples/browser-esm-webpack-small/index.js +++ b/samples/browser-esm-webpack-small/index.js @@ -17,7 +17,7 @@ import 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js'; // import 'monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo.js'; // import 'monaco-editor/esm/vs/editor/contrib/dnd/dnd.js'; // import 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols.js'; -import 'monaco-editor/esm/vs/editor/contrib/find/findController.js'; +import 'monaco-editor/esm/vs/editor/contrib/find/browser/findController.js'; // import 'monaco-editor/esm/vs/editor/contrib/folding/folding.js'; // import 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js'; // import 'monaco-editor/esm/vs/editor/contrib/format/formatActions.js'; diff --git a/samples/browser-esm-webpack-typescript-react/package-lock.json b/samples/browser-esm-webpack-typescript-react/package-lock.json index 72e8bcf4..85f8c1e2 100644 --- a/samples/browser-esm-webpack-typescript-react/package-lock.json +++ b/samples/browser-esm-webpack-typescript-react/package-lock.json @@ -1892,9 +1892,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", + "version": "18.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", + "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", "dev": true, "peer": true }, @@ -2106,9 +2106,9 @@ "peer": true }, "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "peer": true, "bin": { @@ -2488,9 +2488,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "peer": true, "dependencies": { @@ -2692,9 +2692,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true, "peer": true }, @@ -2808,10 +2808,10 @@ "node": ">=4" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "node_modules/json-parse-even-better-errors": { + "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==", "dev": true, "peer": true }, @@ -2822,9 +2822,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -3509,9 +3509,9 @@ } }, "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "peer": true, "dependencies": { @@ -3523,9 +3523,9 @@ } }, "node_modules/webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "version": "5.76.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", + "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", "dev": true, "peer": true, "dependencies": { @@ -3534,24 +3534,24 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", + "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.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "bin": { @@ -4892,9 +4892,9 @@ "dev": true }, "@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", + "version": "18.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", + "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", "dev": true, "peer": true }, @@ -5106,9 +5106,9 @@ "peer": true }, "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "peer": true }, @@ -5382,9 +5382,9 @@ "dev": true }, "enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "peer": true, "requires": { @@ -5540,9 +5540,9 @@ "dev": true }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true, "peer": true }, @@ -5625,10 +5625,10 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "json-parse-even-better-errors": { + "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==", "dev": true, "peer": true }, @@ -5639,9 +5639,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "loader-runner": { @@ -6150,9 +6150,9 @@ } }, "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "peer": true, "requires": { @@ -6161,9 +6161,9 @@ } }, "webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "version": "5.76.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", + "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", "dev": true, "peer": true, "requires": { @@ -6172,24 +6172,24 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", + "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.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" } }, diff --git a/samples/package-lock.json b/samples/package-lock.json index 3d303f3c..a5400f22 100644 --- a/samples/package-lock.json +++ b/samples/package-lock.json @@ -19,8 +19,8 @@ "style-loader": "^3.3.1", "terser-webpack-plugin": "^5.3.1", "ts-loader": "^9.2.6", - "typescript": "^4.5.5", - "webpack": "^5.68.0", + "typescript": "^5.0.2", + "webpack": "^5.76.0", "webpack-cli": "^4.9.2", "webpack-dev-server": "^4.7.4", "yaserver": "^0.4.0" @@ -294,9 +294,10 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "18.7.1", - "dev": true, - "license": "MIT" + "version": "18.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", + "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", + "dev": true }, "node_modules/@types/qs": { "version": "6.9.7", @@ -1395,9 +1396,9 @@ "license": "ISC" }, "node_modules/electron/node_modules/@types/node": { - "version": "16.18.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz", - "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==", + "version": "16.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.14.tgz", + "integrity": "sha512-wvzClDGQXOCVNU4APPopC2KtMYukaF1MN/W3xAmslx22Z4/IF1/izDMekuyoUlwfnDHYCIZGaj7jMwnJKBTxKw==", "dev": true }, "node_modules/emojis-list": { @@ -2082,9 +2083,10 @@ } }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "dev": true, - "license": "BSD-2-Clause" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true }, "node_modules/http-deceiver": { "version": "1.2.7", @@ -2417,9 +2419,10 @@ "optional": true }, "node_modules/json5": { - "version": "2.2.1", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -4075,15 +4078,16 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "4.7.4", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/universalify": { @@ -4190,9 +4194,10 @@ } }, "node_modules/webpack": { - "version": "5.74.0", + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", @@ -4709,7 +4714,9 @@ "dev": true }, "@types/node": { - "version": "18.7.1", + "version": "18.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", + "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", "dev": true }, "@types/qs": { @@ -5438,9 +5445,9 @@ }, "dependencies": { "@types/node": { - "version": "16.18.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz", - "integrity": "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==", + "version": "16.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.14.tgz", + "integrity": "sha512-wvzClDGQXOCVNU4APPopC2KtMYukaF1MN/W3xAmslx22Z4/IF1/izDMekuyoUlwfnDHYCIZGaj7jMwnJKBTxKw==", "dev": true } } @@ -5880,7 +5887,9 @@ } }, "http-cache-semantics": { - "version": "4.1.0", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "http-deceiver": { @@ -6082,7 +6091,9 @@ "optional": true }, "json5": { - "version": "2.2.1", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jsonfile": { @@ -7123,7 +7134,9 @@ "dev": true }, "typescript": { - "version": "4.7.4", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", + "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true }, "universalify": { @@ -7185,7 +7198,9 @@ } }, "webpack": { - "version": "5.74.0", + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", diff --git a/samples/package.json b/samples/package.json index 89bb8b98..ddf82cf0 100644 --- a/samples/package.json +++ b/samples/package.json @@ -20,10 +20,10 @@ "style-loader": "^3.3.1", "terser-webpack-plugin": "^5.3.1", "ts-loader": "^9.2.6", - "typescript": "^4.5.5", + "typescript": "^5.0.2", "webpack-cli": "^4.9.2", "webpack-dev-server": "^4.7.4", - "webpack": "^5.68.0", + "webpack": "^5.76.0", "yaserver": "^0.4.0" }, "overrides": { diff --git a/scripts/ci/env.ts b/scripts/ci/env.ts new file mode 100644 index 00000000..222743fa --- /dev/null +++ b/scripts/ci/env.ts @@ -0,0 +1,6 @@ +export function getEnv(): { + VSCODE_REF: string | undefined; + PRERELEASE_VERSION: string | undefined; +} { + return process.env as any; +} diff --git a/scripts/ci/prepare-monaco-editor-core.ts b/scripts/ci/monaco-editor-core-prepare.ts similarity index 76% rename from scripts/ci/prepare-monaco-editor-core.ts rename to scripts/ci/monaco-editor-core-prepare.ts index daa66990..1cae7348 100644 --- a/scripts/ci/prepare-monaco-editor-core.ts +++ b/scripts/ci/monaco-editor-core-prepare.ts @@ -1,6 +1,7 @@ import { mkdir, rm } from 'fs/promises'; import { join, resolve } from 'path'; -import { group, gitShallowClone, run, writeJsonFile, getNightlyVersion } from '../lib'; +import { PackageJson, group, gitShallowClone, run, writeJsonFile, getNightlyVersion } from '../lib'; +import { getEnv } from './env'; const selfPath = __dirname; const rootPath = join(selfPath, '..', '..'); @@ -21,8 +22,8 @@ async function prepareMonacoEditorCoreReleaseStableOrNightly() { version = monacoEditorPackageJson.version; ref = monacoEditorPackageJson.vscodeRef; } else if (arg === 'nightly') { - version = getNightlyVersion(monacoEditorPackageJson.version); - ref = 'main'; + version = getNightlyVersion(monacoEditorPackageJson.version, getEnv().PRERELEASE_VERSION); + ref = getEnv().VSCODE_REF || 'main'; } else { throw new Error('Invalid argument'); } @@ -37,9 +38,17 @@ async function prepareMonacoEditorCoreRelease(version: string, vscodeRef: string await rm(dependenciesPath, { force: true, recursive: true }); + let vscodeCommitId: string; + await group('Checkout vscode', async () => { - await gitShallowClone(vscodePath, 'https://github.com/microsoft/vscode.git', vscodeRef); + const result = await gitShallowClone( + vscodePath, + 'https://github.com/microsoft/vscode.git', + vscodeRef + ); + vscodeCommitId = result.commitId; }); + await group('Checkout vscode-loc', async () => { await gitShallowClone( // Must be a sibling to the vscode repository @@ -54,8 +63,10 @@ async function prepareMonacoEditorCoreRelease(version: string, vscodeRef: string vscodePath, './build/monaco/package.json' ); - const packageJson = require(monacoEditorCorePackageJsonSourcePath) as { version: string }; + const packageJson = require(monacoEditorCorePackageJsonSourcePath) as PackageJson; packageJson.version = version; + // This ensures we can always figure out which commit monaco-editor-core was built from + packageJson.vscodeCommitId = vscodeCommitId; await writeJsonFile(monacoEditorCorePackageJsonSourcePath, packageJson); }); diff --git a/scripts/ci/monaco-editor-prepare.ts b/scripts/ci/monaco-editor-prepare.ts new file mode 100644 index 00000000..f7f81f13 --- /dev/null +++ b/scripts/ci/monaco-editor-prepare.ts @@ -0,0 +1,72 @@ +import { readFile } from 'fs/promises'; +import { join, resolve } from 'path'; +import { PackageJson, getNightlyVersion, group, run, writeJsonFile, gitCommitId } from '../lib'; +import { getEnv } from './env'; + +const selfPath = __dirname; +const rootPath = join(selfPath, '..', '..'); +const monacoEditorPackageJsonPath = resolve(rootPath, 'package.json'); +const monacoEditorCorePackageJsonPath = resolve( + rootPath, + 'node_modules', + 'monaco-editor-core', + 'package.json' +); + +async function prepareMonacoEditorReleaseStableOrNightly() { + const monacoEditorPackageJson = JSON.parse( + await readFile(monacoEditorPackageJsonPath, { encoding: 'utf-8' }) + ) as PackageJson; + + let version: string; + + const arg = process.argv[2]; + if (arg === 'stable') { + version = monacoEditorPackageJson.version; + } else if (arg === 'nightly') { + version = getNightlyVersion(monacoEditorPackageJson.version, getEnv().PRERELEASE_VERSION); + } else { + throw new Error('Invalid argument'); + } + + await prepareMonacoEditorRelease(version); + + // npm package is now in ./out/monaco-editor, ready to be published +} + +async function prepareMonacoEditorRelease(monacoEditorCoreVersion: string) { + await group('npm ci', async () => { + await run('npm ci', { cwd: resolve(rootPath, 'webpack-plugin') }); + }); + + await group('Set Version & Update monaco-editor-core Version', async () => { + const packageJson = JSON.parse( + await readFile(monacoEditorPackageJsonPath, { encoding: 'utf-8' }) + ) as PackageJson; + packageJson.version = monacoEditorCoreVersion; + packageJson.devDependencies['monaco-editor-core'] = monacoEditorCoreVersion; + await writeJsonFile(monacoEditorPackageJsonPath, packageJson); + }); + + await group('npm install to pick up monaco-editor-core', async () => { + await run('npm install', { cwd: rootPath }); + }); + + await group('Setting vscode commitId from monaco-editor-core', async () => { + const monacoEditorCorePackageJson = JSON.parse( + await readFile(monacoEditorCorePackageJsonPath, { encoding: 'utf-8' }) + ) as PackageJson; + const packageJson = JSON.parse( + await readFile(monacoEditorPackageJsonPath, { encoding: 'utf-8' }) + ) as PackageJson; + packageJson.vscodeCommitId = monacoEditorCorePackageJson.vscodeCommitId; + packageJson.monacoCommitId = await gitCommitId(rootPath); + await writeJsonFile(monacoEditorPackageJsonPath, packageJson); + }); + + await group('Building & Testing', async () => { + await run(resolve(selfPath, './monaco-editor.sh'), { cwd: rootPath }); + }); +} + +prepareMonacoEditorReleaseStableOrNightly(); diff --git a/scripts/ci/monaco-editor.sh b/scripts/ci/monaco-editor.sh index 4efd4f74..344c5c08 100755 --- a/scripts/ci/monaco-editor.sh +++ b/scripts/ci/monaco-editor.sh @@ -1,14 +1,12 @@ #!/bin/bash set -e -# execute `npm install` to pick up local monaco-editor-core -npm install # Install OS Dependencies for Playwright sudo npm run playwright-install-deps # Check prettier npm run prettier-check # Build -npm run release +npm run build-monaco-editor # Run unit tests npm test @@ -27,7 +25,4 @@ npm run package-for-smoketest-parcel --prefix test/smoke/parcel # Run smoke test npm run smoketest -# Build website -npm run build-website - -# npm package is now ready to be published in ./release +# npm package is now ready to be published in ./out/monaco-editor diff --git a/scripts/ci/prepare-monaco-editor.ts b/scripts/ci/prepare-monaco-editor.ts deleted file mode 100644 index a9b59646..00000000 --- a/scripts/ci/prepare-monaco-editor.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { readFile } from 'fs/promises'; -import { join, resolve } from 'path'; -import { getNightlyVersion, group, run, writeJsonFile } from '../lib'; - -const selfPath = __dirname; -const rootPath = join(selfPath, '..', '..'); -const monacoEditorPackageJsonPath = resolve(rootPath, 'package.json'); - -async function prepareMonacoEditorReleaseStableOrNightly() { - const monacoEditorPackageJson = JSON.parse( - await readFile(monacoEditorPackageJsonPath, { encoding: 'utf-8' }) - ) as { version: string }; - - let version: string; - - const arg = process.argv[2]; - if (arg === 'stable') { - version = monacoEditorPackageJson.version; - } else if (arg === 'nightly') { - version = getNightlyVersion(monacoEditorPackageJson.version); - } else { - throw new Error('Invalid argument'); - } - - await prepareMonacoEditorRelease(version); - - // npm package is now in ./release, ready to be published -} - -async function prepareMonacoEditorRelease(version: string) { - await group('npm ci', async () => { - await run('npm ci', { cwd: resolve(rootPath, 'webpack-plugin') }); - }); - - await group('Set Version', async () => { - const packageJson = JSON.parse( - await readFile(monacoEditorPackageJsonPath, { encoding: 'utf-8' }) - ) as { version: string; devDependencies: Record }; - packageJson.version = version; - packageJson.devDependencies['monaco-editor-core'] = version; - - await writeJsonFile(monacoEditorPackageJsonPath, packageJson); - }); - - await group('Building & Testing', async () => { - await run(resolve(selfPath, './monaco-editor.sh'), { cwd: rootPath }); - }); -} - -prepareMonacoEditorReleaseStableOrNightly(); diff --git a/scripts/lib/index.ts b/scripts/lib/index.ts index 62f3c9ec..a8eca48d 100644 --- a/scripts/lib/index.ts +++ b/scripts/lib/index.ts @@ -19,13 +19,42 @@ export async function run(command: string, options: RunOptions) { }); } -export async function gitShallowClone(targetPath: string, repositoryUrl: string, ref: string) { +export async function runGetOutput(command: string, options: RunOptions): Promise { + console.log(`Running ${command} in ${options.cwd}`); + return new Promise((resolve, reject) => { + const process = spawn(command, { shell: true, cwd: options.cwd, stdio: 'pipe' }); + let output = ''; + process.stdout.on('data', (data) => { + output += data; + }); + process.on('exit', (code) => { + if (code !== 0) { + reject(new Error(`Command ${command} exited with code ${code}`)); + } else { + resolve(output); + } + }); + }); +} + +export async function gitCommitId(repositoryPath: string): Promise { + const commitId = (await runGetOutput('git rev-parse HEAD', { cwd: repositoryPath })).trim(); + return commitId; +} + +export async function gitShallowClone( + targetPath: string, + repositoryUrl: string, + ref: string +): Promise<{ commitId: string }> { await mkdir(targetPath, { recursive: true }); const options: RunOptions = { cwd: targetPath }; await run('git init', options); await run(`git remote add origin ${repositoryUrl}`, options); await run(`git fetch --depth 1 origin ${ref}`, options); await run(`git checkout ${ref}`, options); + const commitId = await gitCommitId(targetPath); + return { commitId }; } export async function group(name: string, body: () => Promise): Promise { @@ -44,12 +73,22 @@ export async function writeJsonFile(filePath: string, jsonData: unknown): Promis await writeFile(filePath, JSON.stringify(jsonData, null, '\t') + '\n'); } -export function getNightlyVersion(version: string): string { +export function getNightlyVersion(version: string, prerelease: string | undefined): string { const pieces = version.split('.'); const minor = parseInt(pieces[1], 10); const date = new Date(); const yyyy = date.getUTCFullYear(); const mm = String(date.getUTCMonth() + 1).padStart(2, '0'); const dd = String(date.getUTCDate()).padStart(2, '0'); - return `0.${minor + 1}.0-dev.${yyyy}${mm}${dd}`; + + prerelease = prerelease || `dev.${yyyy}${mm}${dd}`; + return `0.${minor + 1}.0-${prerelease}`; +} + +export interface PackageJson { + version: string; + vscodeRef?: string; + vscodeCommitId?: string; + monacoCommitId?: string; + devDependencies: Record; } diff --git a/src/basic-languages/_.contribution.ts b/src/basic-languages/_.contribution.ts index 0a7efdf8..f0983d1c 100644 --- a/src/basic-languages/_.contribution.ts +++ b/src/basic-languages/_.contribution.ts @@ -73,7 +73,7 @@ export function registerLanguage(def: ILang): void { return mod.language; } }); - languages.onLanguage(languageId, async () => { + languages.onLanguageEncountered(languageId, async () => { const mod = await lazyLanguageLoader.load(); languages.setLanguageConfiguration(languageId, mod.conf); }); diff --git a/src/basic-languages/cpp/cpp.ts b/src/basic-languages/cpp/cpp.ts index a158fcd9..e1cc31a7 100644 --- a/src/basic-languages/cpp/cpp.ts +++ b/src/basic-languages/cpp/cpp.ts @@ -197,6 +197,9 @@ export const language = { '__m256', '__m256d', '__m256i', + '__m512', + '__m512d', + '__m512i', '__m64', '__multiple_inheritance', '__newslot', @@ -272,7 +275,7 @@ export const language = { // we include these common regular expressions symbols: /[=>{ // See https://elixir-lang.org/getting-started/sigils.html // Sigils allow for typing values using their textual representation. - // All sigils start with ~ followed by a letter indicating sigil type + // All sigils start with ~ followed by a letter or + // multi-letter uppercase starting at Elixir v1.15.0, indicating sigil type // and then a delimiter pair enclosing the textual representation. // Optional modifiers are allowed after the closing delimiter. // For instance a regular expressions can be written as: @@ -353,16 +354,16 @@ export const language = { sigils: [ [/~[a-z]@sigilStartDelimiter/, { token: '@rematch', next: '@sigil.interpol' }], - [/~[A-Z]@sigilStartDelimiter/, { token: '@rematch', next: '@sigil.noInterpol' }] + [/~([A-Z]+)@sigilStartDelimiter/, { token: '@rematch', next: '@sigil.noInterpol' }] ], sigil: [ - [/~([a-zA-Z])\{/, { token: '@rematch', switchTo: '@sigilStart.$S2.$1.{.}' }], - [/~([a-zA-Z])\[/, { token: '@rematch', switchTo: '@sigilStart.$S2.$1.[.]' }], - [/~([a-zA-Z])\(/, { token: '@rematch', switchTo: '@sigilStart.$S2.$1.(.)' }], - [/~([a-zA-Z])\' }], + [/~([a-z]|[A-Z]+)\{/, { token: '@rematch', switchTo: '@sigilStart.$S2.$1.{.}' }], + [/~([a-z]|[A-Z]+)\[/, { token: '@rematch', switchTo: '@sigilStart.$S2.$1.[.]' }], + [/~([a-z]|[A-Z]+)\(/, { token: '@rematch', switchTo: '@sigilStart.$S2.$1.(.)' }], + [/~([a-z]|[A-Z]+)\' }], [ - /~([a-zA-Z])(@sigilSymmetricDelimiter)/, + /~([a-z]|[A-Z]+)(@sigilSymmetricDelimiter)/, { token: '@rematch', switchTo: '@sigilStart.$S2.$1.$2.$2' } ] ], @@ -475,7 +476,7 @@ export const language = { // Fallback to the generic sigil by default 'sigilStart.interpol': [ [ - /~([a-zA-Z])@sigilStartDelimiter/, + /~([a-z]|[A-Z]+)@sigilStartDelimiter/, { token: 'sigil.delimiter', switchTo: '@sigilContinue.$S2.$S3.$S4.$S5' @@ -498,7 +499,7 @@ export const language = { 'sigilStart.noInterpol': [ [ - /~([a-zA-Z])@sigilStartDelimiter/, + /~([a-z]|[A-Z]+)@sigilStartDelimiter/, { token: 'sigil.delimiter', switchTo: '@sigilContinue.$S2.$S3.$S4.$S5' diff --git a/src/basic-languages/javascript/javascript.test.ts b/src/basic-languages/javascript/javascript.test.ts index a3566422..88da829f 100644 --- a/src/basic-languages/javascript/javascript.test.ts +++ b/src/basic-languages/javascript/javascript.test.ts @@ -39,6 +39,65 @@ testTokenization('javascript', [ } ], + // identifiers + [ + { + line: 'foo;', + tokens: [ + { startIndex: 0, type: 'identifier.js' }, + { startIndex: 3, type: 'delimiter.js' } + ] + } + ], + + [ + { + line: 'foo() { return 1; }', + tokens: [ + { startIndex: 0, type: 'identifier.js' }, + { startIndex: 3, type: 'delimiter.parenthesis.js' }, + { startIndex: 5, type: '' }, + { startIndex: 6, type: 'delimiter.bracket.js' }, + { startIndex: 7, type: '' }, + { startIndex: 8, type: 'keyword.js' }, + { startIndex: 14, type: '' }, + { startIndex: 15, type: 'number.js' }, + { startIndex: 16, type: 'delimiter.js' }, + { startIndex: 17, type: '' }, + { startIndex: 18, type: 'delimiter.bracket.js' } + ] + } + ], + + [ + { + line: '#foo;', + tokens: [ + { startIndex: 0, type: 'identifier.js' }, + { startIndex: 4, type: 'delimiter.js' } + ] + } + ], + + [ + { + line: '#foo() { return 1; }', + tokens: [ + { startIndex: 0, type: 'identifier.js' }, + { startIndex: 4, type: 'delimiter.parenthesis.js' }, + { startIndex: 6, type: '' }, + { startIndex: 7, type: 'delimiter.bracket.js' }, + { startIndex: 8, type: '' }, + { startIndex: 9, type: 'keyword.js' }, + { startIndex: 15, type: '' }, + { startIndex: 16, type: 'number.js' }, + { startIndex: 17, type: 'delimiter.js' }, + { startIndex: 18, type: '' }, + { startIndex: 19, type: 'delimiter.bracket.js' } + ] + } + ], + // Comments - single line [ { diff --git a/src/basic-languages/javascript/javascript.ts b/src/basic-languages/javascript/javascript.ts index 5ad3bd67..3af6b4f8 100644 --- a/src/basic-languages/javascript/javascript.ts +++ b/src/basic-languages/javascript/javascript.ts @@ -43,6 +43,7 @@ export const language = { 'null', 'return', 'set', + 'static', 'super', 'switch', 'symbol', diff --git a/src/basic-languages/kotlin/kotlin.contribution.ts b/src/basic-languages/kotlin/kotlin.contribution.ts index 67e95746..fa6ce3ac 100644 --- a/src/basic-languages/kotlin/kotlin.contribution.ts +++ b/src/basic-languages/kotlin/kotlin.contribution.ts @@ -10,7 +10,7 @@ declare var require: any; registerLanguage({ id: 'kotlin', - extensions: ['.kt'], + extensions: ['.kt', '.kts'], aliases: ['Kotlin', 'kotlin'], mimetypes: ['text/x-kotlin-source', 'text/x-kotlin'], loader: () => { diff --git a/src/basic-languages/mdx/mdx.contribution.ts b/src/basic-languages/mdx/mdx.contribution.ts new file mode 100644 index 00000000..c435bfcf --- /dev/null +++ b/src/basic-languages/mdx/mdx.contribution.ts @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { registerLanguage } from '../_.contribution'; + +declare var AMD: any; +declare var require: any; + +registerLanguage({ + id: 'mdx', + extensions: ['.mdx'], + aliases: ['MDX', 'mdx'], + loader: () => { + if (AMD) { + return new Promise((resolve, reject) => { + require(['vs/basic-languages/mdx/mdx'], resolve, reject); + }); + } else { + return import('./mdx'); + } + } +}); diff --git a/src/basic-languages/mdx/mdx.test.ts b/src/basic-languages/mdx/mdx.test.ts new file mode 100644 index 00000000..99ef43cc --- /dev/null +++ b/src/basic-languages/mdx/mdx.test.ts @@ -0,0 +1,171 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { testTokenization } from '../test/testRunner'; + +testTokenization( + ['mdx', 'yaml'], + [ + // headers + [ + { + line: '# header 1', + tokens: [{ startIndex: 0, type: 'keyword.mdx' }] + }, + { + line: '## header 2', + tokens: [{ startIndex: 0, type: 'keyword.mdx' }] + }, + { + line: '### header 3', + tokens: [{ startIndex: 0, type: 'keyword.mdx' }] + }, + { + line: '#### header 4', + tokens: [{ startIndex: 0, type: 'keyword.mdx' }] + }, + { + line: '##### header 5', + tokens: [{ startIndex: 0, type: 'keyword.mdx' }] + }, + { + line: '###### header 6', + tokens: [{ startIndex: 0, type: 'keyword.mdx' }] + } + ], + + // Lists + [ + { + line: '- apple', + tokens: [ + { startIndex: 0, type: 'keyword.mdx' }, + { startIndex: 1, type: 'white.mdx' }, + { startIndex: 2, type: '' } + ] + }, + { + line: '* pear', + tokens: [ + { startIndex: 0, type: 'keyword.mdx' }, + { startIndex: 1, type: 'white.mdx' }, + { startIndex: 2, type: '' } + ] + }, + { + line: '+ pineapple', + tokens: [ + { startIndex: 0, type: 'keyword.mdx' }, + { startIndex: 1, type: 'white.mdx' }, + { startIndex: 2, type: '' } + ] + }, + { + line: '1. orange', + tokens: [ + { startIndex: 0, type: 'number.mdx' }, + { startIndex: 2, type: 'white.mdx' }, + { startIndex: 3, type: '' } + ] + } + ], + + // Frontmatter + [ + { + line: '---', + tokens: [{ startIndex: 0, type: 'meta.content.mdx' }] + }, + { + line: 'frontmatter: yaml', + tokens: [ + { startIndex: 0, type: 'type.yaml' }, + { startIndex: 11, type: 'operators.yaml' }, + { startIndex: 12, type: 'white.yaml' }, + { startIndex: 13, type: 'string.yaml' } + ] + }, + { + line: '---', + tokens: [{ startIndex: 0, type: 'meta.content.mdx' }] + } + ], + + // links + [ + { + line: '[MDX](https://mdxjs.com)', + tokens: [ + { startIndex: 0, type: '' }, + { startIndex: 1, type: 'type.identifier.mdx' }, + { startIndex: 4, type: '' }, + { startIndex: 6, type: 'string.link.mdx' }, + { startIndex: 23, type: '' } + ] + }, + { + line: '[monaco][monaco]', + tokens: [ + { startIndex: 0, type: '' }, + { startIndex: 1, type: 'type.identifier.mdx' }, + { startIndex: 7, type: '' }, + { startIndex: 9, type: 'type.identifier.mdx' }, + { startIndex: 15, type: '' } + ] + }, + { + line: '[monaco][]', + tokens: [ + { startIndex: 0, type: '' }, + { startIndex: 1, type: 'type.identifier.mdx' }, + { startIndex: 9, type: '' } + ] + }, + { + line: '[monaco]', + tokens: [ + { startIndex: 0, type: '' }, + { startIndex: 1, type: 'type.identifier.mdx' }, + { startIndex: 7, type: '' } + ] + }, + { + line: '[monaco]: https://github.com/microsoft/monaco-editor', + tokens: [ + { startIndex: 0, type: '' }, + { startIndex: 1, type: 'type.identifier.mdx' }, + { startIndex: 7, type: '' }, + { startIndex: 10, type: 'string.link.mdx' } + ] + } + ], + + // JSX + [ + { + line: '
**child**
', + tokens: [ + { startIndex: 0, type: 'type.identifier.mdx' }, + // This is incorrect. MDX children that start on the same line are JSX, not markdown + { startIndex: 5, type: 'strong.mdx' }, + { startIndex: 14, type: 'type.identifier.mdx' } + ] + }, + { + line: '{console.log("This is JavaScript")}', + tokens: [ + { startIndex: 0, type: 'delimiter.bracket.mdx' }, + { startIndex: 1, type: 'identifier.js' }, + { startIndex: 8, type: 'delimiter.js' }, + { startIndex: 9, type: 'identifier.js' }, + { startIndex: 12, type: 'delimiter.parenthesis.js' }, + { startIndex: 13, type: 'string.js' }, + { startIndex: 33, type: 'delimiter.parenthesis.js' }, + { startIndex: 34, type: 'delimiter.bracket.mdx' } + ] + } + ] + ] +); diff --git a/src/basic-languages/mdx/mdx.ts b/src/basic-languages/mdx/mdx.ts new file mode 100644 index 00000000..dfbc01e8 --- /dev/null +++ b/src/basic-languages/mdx/mdx.ts @@ -0,0 +1,163 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { languages } from '../../fillers/monaco-editor-core'; + +export const conf: languages.LanguageConfiguration = { + comments: { + blockComment: ['{/*', '*/}'] + }, + brackets: [['{', '}']], + autoClosingPairs: [ + { open: '"', close: '"' }, + { open: "'", close: "'" }, + { open: '“', close: '”' }, + { open: '‘', close: '’' }, + { open: '`', close: '`' }, + { open: '{', close: '}' }, + { open: '(', close: ')' }, + { open: '_', close: '_' }, + { open: '**', close: '**' }, + { open: '<', close: '>' } + ], + onEnterRules: [ + { + beforeText: /^\s*- .+/, + action: { indentAction: languages.IndentAction.None, appendText: '- ' } + }, + { + beforeText: /^\s*\+ .+/, + action: { indentAction: languages.IndentAction.None, appendText: '+ ' } + }, + { + beforeText: /^\s*\* .+/, + action: { indentAction: languages.IndentAction.None, appendText: '* ' } + }, + { + beforeText: /^> /, + action: { indentAction: languages.IndentAction.None, appendText: '> ' } + }, + { + beforeText: /<\w+/, + action: { indentAction: languages.IndentAction.Indent } + }, + { + beforeText: /\s+>\s*$/, + action: { indentAction: languages.IndentAction.Indent } + }, + { + beforeText: /<\/\w+>/, + action: { indentAction: languages.IndentAction.Outdent } + }, + ...Array.from({ length: 100 }, (_, index) => ({ + beforeText: new RegExp(`^${index}\\. .+`), + action: { indentAction: languages.IndentAction.None, appendText: `${index + 1}. ` } + })) + ] +}; + +export const language = { + defaultToken: '', + tokenPostfix: '.mdx', + control: /[!#()*+.[\\\]_`{}\-]/, + escapes: /\\@control/, + + tokenizer: { + root: [ + [/^---$/, { token: 'meta.content', next: '@frontmatter', nextEmbedded: 'yaml' }], + [/^\s*import/, { token: 'keyword', next: '@import', nextEmbedded: 'js' }], + [/^\s*export/, { token: 'keyword', next: '@export', nextEmbedded: 'js' }], + [/<\w+/, { token: 'type.identifier', next: '@jsx' }], + [/<\/?\w+>/, 'type.identifier'], + [ + /^(\s*)(>*\s*)(#{1,6}\s)/, + [{ token: 'white' }, { token: 'comment' }, { token: 'keyword', next: '@header' }] + ], + [/^(\s*)(>*\s*)([*+-])(\s+)/, ['white', 'comment', 'keyword', 'white']], + [/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/, ['white', 'comment', 'number', 'white']], + [/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/, ['white', 'comment', 'number', 'white']], + [/^(\s*)(>*\s*)(-{3,}|\*{3,}|_{3,})$/, ['white', 'comment', 'keyword']], + [/`{3,}(\s.*)?$/, { token: 'string', next: '@codeblock_backtick' }], + [/~{3,}(\s.*)?$/, { token: 'string', next: '@codeblock_tilde' }], + [ + /`{3,}(\S+).*$/, + { token: 'string', next: '@codeblock_highlight_backtick', nextEmbedded: '$1' } + ], + [ + /~{3,}(\S+).*$/, + { token: 'string', next: '@codeblock_highlight_tilde', nextEmbedded: '$1' } + ], + [/^(\s*)(-{4,})$/, ['white', 'comment']], + [/^(\s*)(>+)/, ['white', 'comment']], + { include: 'content' } + ], + content: [ + [ + /(\[)(.+)(]\()(.+)(\s+".*")(\))/, + ['', 'string.link', '', 'type.identifier', 'string.link', ''] + ], + [/(\[)(.+)(]\()(.+)(\))/, ['', 'type.identifier', '', 'string.link', '']], + [/(\[)(.+)(]\[)(.+)(])/, ['', 'type.identifier', '', 'type.identifier', '']], + [/(\[)(.+)(]:\s+)(\S*)/, ['', 'type.identifier', '', 'string.link']], + [/(\[)(.+)(])/, ['', 'type.identifier', '']], + [/`.*`/, 'variable.source'], + [/_/, { token: 'emphasis', next: '@emphasis_underscore' }], + [/\*(?!\*)/, { token: 'emphasis', next: '@emphasis_asterisk' }], + [/\*\*/, { token: 'strong', next: '@strong' }], + [/{/, { token: 'delimiter.bracket', next: '@expression', nextEmbedded: 'js' }] + ], + import: [[/'\s*(;|$)/, { token: 'string', next: '@pop', nextEmbedded: '@pop' }]], + expression: [ + [/{/, { token: 'delimiter.bracket', next: '@expression' }], + [/}/, { token: 'delimiter.bracket', next: '@pop', nextEmbedded: '@pop' }] + ], + export: [[/^\s*$/, { token: 'delimiter.bracket', next: '@pop', nextEmbedded: '@pop' }]], + jsx: [ + [/\s+/, ''], + [/(\w+)(=)("(?:[^"\\]|\\.)*")/, ['attribute.name', 'operator', 'string']], + [/(\w+)(=)('(?:[^'\\]|\\.)*')/, ['attribute.name', 'operator', 'string']], + [/(\w+(?=\s|>|={|$))/, ['attribute.name']], + [/={/, { token: 'delimiter.bracket', next: '@expression', nextEmbedded: 'js' }], + [/>/, { token: 'type.identifier', next: '@pop' }] + ], + header: [ + [/.$/, { token: 'keyword', next: '@pop' }], + { include: 'content' }, + [/./, { token: 'keyword' }] + ], + strong: [ + [/\*\*/, { token: 'strong', next: '@pop' }], + { include: 'content' }, + [/./, { token: 'strong' }] + ], + emphasis_underscore: [ + [/_/, { token: 'emphasis', next: '@pop' }], + { include: 'content' }, + [/./, { token: 'emphasis' }] + ], + emphasis_asterisk: [ + [/\*(?!\*)/, { token: 'emphasis', next: '@pop' }], + { include: 'content' }, + [/./, { token: 'emphasis' }] + ], + frontmatter: [[/^---$/, { token: 'meta.content', nextEmbedded: '@pop', next: '@pop' }]], + codeblock_highlight_backtick: [ + [/\s*`{3,}\s*$/, { token: 'string', next: '@pop', nextEmbedded: '@pop' }], + [/.*$/, 'variable.source'] + ], + codeblock_highlight_tilde: [ + [/\s*~{3,}\s*$/, { token: 'string', next: '@pop', nextEmbedded: '@pop' }], + [/.*$/, 'variable.source'] + ], + codeblock_backtick: [ + [/\s*`{3,}\s*$/, { token: 'string', next: '@pop' }], + [/.*$/, 'variable.source'] + ], + codeblock_tilde: [ + [/\s*~{3,}\s*$/, { token: 'string', next: '@pop' }], + [/.*$/, 'variable.source'] + ] + } +}; diff --git a/src/basic-languages/monaco.contribution.ts b/src/basic-languages/monaco.contribution.ts index db51ca61..b6c07a54 100644 --- a/src/basic-languages/monaco.contribution.ts +++ b/src/basic-languages/monaco.contribution.ts @@ -39,6 +39,7 @@ import './lua/lua.contribution'; import './liquid/liquid.contribution'; import './m3/m3.contribution'; import './markdown/markdown.contribution'; +import './mdx/mdx.contribution'; import './mips/mips.contribution'; import './msdax/msdax.contribution'; import './mysql/mysql.contribution'; @@ -79,5 +80,6 @@ import './tcl/tcl.contribution'; import './twig/twig.contribution'; import './typescript/typescript.contribution'; import './vb/vb.contribution'; +import './wgsl/wgsl.contribution'; import './xml/xml.contribution'; import './yaml/yaml.contribution'; diff --git a/src/basic-languages/mysql/mysql.ts b/src/basic-languages/mysql/mysql.ts index ef16e561..1b943f17 100644 --- a/src/basic-languages/mysql/mysql.ts +++ b/src/basic-languages/mysql/mysql.ts @@ -862,6 +862,7 @@ export const language = { [/"/, { token: 'string.double', next: '@stringDouble' }] ], string: [ + [/\\'/, 'string'], [/[^']+/, 'string'], [/''/, 'string'], [/'/, { token: 'string', next: '@pop' }] diff --git a/src/basic-languages/perl/perl.contribution.ts b/src/basic-languages/perl/perl.contribution.ts index f0ac9ce2..2d1ace18 100644 --- a/src/basic-languages/perl/perl.contribution.ts +++ b/src/basic-languages/perl/perl.contribution.ts @@ -10,7 +10,7 @@ declare var require: any; registerLanguage({ id: 'perl', - extensions: ['.pl'], + extensions: ['.pl', '.pm'], aliases: ['Perl', 'pl'], loader: () => { if (AMD) { diff --git a/src/basic-languages/pgsql/pgsql.ts b/src/basic-languages/pgsql/pgsql.ts index 5f4baa86..2eb663b4 100644 --- a/src/basic-languages/pgsql/pgsql.ts +++ b/src/basic-languages/pgsql/pgsql.ts @@ -627,11 +627,15 @@ export const language = { 'range_intersect_agg', 'range_merge', 'rank', + 'regexp_count', + 'regexp_instr', + 'regexp_like', 'regexp_match', 'regexp_matches', 'regexp_replace', 'regexp_split_to_array', 'regexp_split_to_table', + 'regexp_substr', 'regr_avgx', 'regr_avgy', 'regr_count', diff --git a/src/basic-languages/typescript/typescript.contribution.ts b/src/basic-languages/typescript/typescript.contribution.ts index eaec2a91..8627f521 100644 --- a/src/basic-languages/typescript/typescript.contribution.ts +++ b/src/basic-languages/typescript/typescript.contribution.ts @@ -10,7 +10,7 @@ declare var require: any; registerLanguage({ id: 'typescript', - extensions: ['.ts', '.tsx'], + extensions: ['.ts', '.tsx', '.cts', '.mts'], aliases: ['TypeScript', 'ts', 'typescript'], mimetypes: ['text/typescript'], loader: (): Promise => { diff --git a/src/basic-languages/typescript/typescript.test.ts b/src/basic-languages/typescript/typescript.test.ts index b2a3400e..363e5c2c 100644 --- a/src/basic-languages/typescript/typescript.test.ts +++ b/src/basic-languages/typescript/typescript.test.ts @@ -39,6 +39,65 @@ testTokenization('typescript', [ } ], + // identifiers + [ + { + line: 'foo;', + tokens: [ + { startIndex: 0, type: 'identifier.ts' }, + { startIndex: 3, type: 'delimiter.ts' } + ] + } + ], + + [ + { + line: 'foo() { return 1; }', + tokens: [ + { startIndex: 0, type: 'identifier.ts' }, + { startIndex: 3, type: 'delimiter.parenthesis.ts' }, + { startIndex: 5, type: '' }, + { startIndex: 6, type: 'delimiter.bracket.ts' }, + { startIndex: 7, type: '' }, + { startIndex: 8, type: 'keyword.ts' }, + { startIndex: 14, type: '' }, + { startIndex: 15, type: 'number.ts' }, + { startIndex: 16, type: 'delimiter.ts' }, + { startIndex: 17, type: '' }, + { startIndex: 18, type: 'delimiter.bracket.ts' } + ] + } + ], + + [ + { + line: '#foo;', + tokens: [ + { startIndex: 0, type: 'identifier.ts' }, + { startIndex: 4, type: 'delimiter.ts' } + ] + } + ], + + [ + { + line: '#foo() { return 1; }', + tokens: [ + { startIndex: 0, type: 'identifier.ts' }, + { startIndex: 4, type: 'delimiter.parenthesis.ts' }, + { startIndex: 6, type: '' }, + { startIndex: 7, type: 'delimiter.bracket.ts' }, + { startIndex: 8, type: '' }, + { startIndex: 9, type: 'keyword.ts' }, + { startIndex: 15, type: '' }, + { startIndex: 16, type: 'number.ts' }, + { startIndex: 17, type: 'delimiter.ts' }, + { startIndex: 18, type: '' }, + { startIndex: 19, type: 'delimiter.bracket.ts' } + ] + } + ], + // Comments - single line [ { diff --git a/src/basic-languages/typescript/typescript.ts b/src/basic-languages/typescript/typescript.ts index a08fb1af..317a637f 100644 --- a/src/basic-languages/typescript/typescript.ts +++ b/src/basic-languages/typescript/typescript.ts @@ -137,6 +137,7 @@ export const language = { 'require', 'global', 'return', + 'satisfies', 'set', 'static', 'string', @@ -226,7 +227,7 @@ export const language = { common: [ // identifiers and keywords [ - /[a-z_$][\w$]*/, + /#?[a-z_$][\w$]*/, { cases: { '@keywords': 'keyword', diff --git a/src/basic-languages/wgsl/wgsl.contribution.ts b/src/basic-languages/wgsl/wgsl.contribution.ts new file mode 100644 index 00000000..10802ffd --- /dev/null +++ b/src/basic-languages/wgsl/wgsl.contribution.ts @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { registerLanguage } from '../_.contribution'; + +declare var AMD: any; +declare var require: any; + +registerLanguage({ + id: 'wgsl', + extensions: ['.wgsl'], + aliases: ['WebGPU Shading Language', 'WGSL', 'wgsl'], + loader: () => { + if (AMD) { + return new Promise((resolve, reject) => { + require(['vs/basic-languages/wgsl/wgsl'], resolve, reject); + }); + } else { + return import('./wgsl'); + } + } +}); diff --git a/src/basic-languages/wgsl/wgsl.test.ts b/src/basic-languages/wgsl/wgsl.test.ts new file mode 100644 index 00000000..237c4fd6 --- /dev/null +++ b/src/basic-languages/wgsl/wgsl.test.ts @@ -0,0 +1,3915 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation, Google LLC. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { testTokenization, ITestItem } from '../test/testRunner'; + +const cases: ITestItem[][] = [ + // address space + [ + { + line: 'alias a=ptr;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'operator.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 20, type: 'delimiter.wgsl' }, + { startIndex: 21, type: 'variable.predefined.wgsl' }, + { startIndex: 24, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias b=ptr;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'operator.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' }, + { startIndex: 20, type: 'variable.predefined.wgsl' }, + { startIndex: 23, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias c=ptr;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'operator.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' }, + { startIndex: 22, type: 'variable.predefined.wgsl' }, + { startIndex: 25, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias d=ptr;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'operator.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' }, + { startIndex: 20, type: 'variable.predefined.wgsl' }, + { startIndex: 23, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias e=ptr;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'operator.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' }, + { startIndex: 20, type: 'variable.predefined.wgsl' }, + { startIndex: 23, type: 'delimiter.wgsl' } + ] + } + ], + // attribute + [ + { + line: '@id(0) override x:i32 = 1;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 3, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 4, type: 'number.wgsl' }, + { startIndex: 5, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 6, type: 'white.wgsl' }, + { startIndex: 7, type: 'keyword.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'identifier.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'operator.wgsl' }, + { startIndex: 23, type: 'white.wgsl' }, + { startIndex: 24, type: 'number.wgsl' }, + { startIndex: 25, type: 'delimiter.wgsl' } + ] + }, + { + line: '@ id(1) override y:i32 = 2;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 1, type: 'white.wgsl' }, + { startIndex: 2, type: 'annotation.wgsl' }, + { startIndex: 4, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 5, type: 'number.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'keyword.wgsl' }, + { startIndex: 16, type: 'white.wgsl' }, + { startIndex: 17, type: 'identifier.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' }, + { startIndex: 19, type: 'variable.predefined.wgsl' }, + { startIndex: 22, type: 'white.wgsl' }, + { startIndex: 23, type: 'operator.wgsl' }, + { startIndex: 24, type: 'white.wgsl' }, + { startIndex: 25, type: 'number.wgsl' }, + { startIndex: 26, type: 'delimiter.wgsl' } + ] + }, + { + line: '@//comment', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 1, type: 'comment.wgsl' } + ] + }, + { + line: 'id(1) override z:i32 = 3;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 2, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 3, type: 'number.wgsl' }, + { startIndex: 4, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'keyword.wgsl' }, + { startIndex: 14, type: 'white.wgsl' }, + { startIndex: 15, type: 'identifier.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' }, + { startIndex: 17, type: 'variable.predefined.wgsl' }, + { startIndex: 20, type: 'white.wgsl' }, + { startIndex: 21, type: 'operator.wgsl' }, + { startIndex: 22, type: 'white.wgsl' }, + { startIndex: 23, type: 'number.wgsl' }, + { startIndex: 24, type: 'delimiter.wgsl' } + ] + }, + { + line: '@must_use fn foo() -> i32 { return 32; }', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'keyword.wgsl' }, + { startIndex: 12, type: 'white.wgsl' }, + { startIndex: 13, type: 'identifier.wgsl' }, + { startIndex: 16, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 18, type: 'white.wgsl' }, + { startIndex: 19, type: 'operator.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'variable.predefined.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'delimiter.curly.wgsl' }, + { startIndex: 27, type: 'white.wgsl' }, + { startIndex: 28, type: 'keyword.wgsl' }, + { startIndex: 34, type: 'white.wgsl' }, + { startIndex: 35, type: 'number.wgsl' }, + { startIndex: 37, type: 'delimiter.wgsl' }, + { startIndex: 38, type: 'white.wgsl' }, + { startIndex: 39, type: 'delimiter.curly.wgsl' } + ] + } + ], + // block comment + [ + { + line: ' /**/', + tokens: [ + { startIndex: 0, type: 'white.wgsl' }, + { startIndex: 1, type: 'comment.wgsl' } + ] + }, + { + line: ' /*block with newline', + tokens: [ + { startIndex: 0, type: 'white.wgsl' }, + { startIndex: 1, type: 'comment.wgsl' } + ] + }, + { line: ' */', tokens: [{ startIndex: 0, type: 'comment.wgsl' }] }, + { + line: ' /*block with line', + tokens: [ + { startIndex: 0, type: 'white.wgsl' }, + { startIndex: 1, type: 'comment.wgsl' } + ] + }, + { line: ' ending comment// */', tokens: [{ startIndex: 0, type: 'comment.wgsl' }] }, + { + line: ' /* nested /*', + tokens: [ + { startIndex: 0, type: 'white.wgsl' }, + { startIndex: 1, type: 'comment.wgsl' } + ] + }, + { line: ' */', tokens: [{ startIndex: 0, type: 'comment.wgsl' }] }, + { line: ' */', tokens: [{ startIndex: 0, type: 'comment.wgsl' }] } + ], + // bool types + [ + { + line: 'alias boolean=bool;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 13, type: 'operator.wgsl' }, + { startIndex: 14, type: 'variable.predefined.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias bvec2=vec2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'operator.wgsl' }, + { startIndex: 17, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias bvec3=vec3;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'operator.wgsl' }, + { startIndex: 17, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias bvec4=vec4;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'operator.wgsl' }, + { startIndex: 17, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + } + ], + // brackets + [ + { + line: 'const one = array(1)[0];', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 18, type: 'number.wgsl' }, + { startIndex: 19, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 20, type: 'delimiter.square.wgsl' }, + { startIndex: 21, type: 'number.wgsl' }, + { startIndex: 22, type: 'delimiter.square.wgsl' }, + { startIndex: 23, type: 'delimiter.wgsl' } + ] + }, + { + line: 'fn none() {}', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 2, type: 'white.wgsl' }, + { startIndex: 3, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'delimiter.curly.wgsl' } + ] + } + ], + // const numbers + [ + { + line: 'const a = 0;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.wgsl' }, + { startIndex: 11, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const au = 0u;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.wgsl' }, + { startIndex: 13, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const ai = 0i;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.wgsl' }, + { startIndex: 13, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const b = 12345;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const bu = 12345u;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const bi= 12345i;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const c = 0x0;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.hex.wgsl' }, + { startIndex: 13, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const cu = 0x0u;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const ci = 0x0i;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const d = 0x12345;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.hex.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const di = 0x12345i;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const du = 0x12345u;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const eh = 0h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 13, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const ef = 0f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 13, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const f = 1.;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.float.wgsl' }, + { startIndex: 12, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const fh = 1.h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 14, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const ff = 1.f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 14, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const g = .1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.float.wgsl' }, + { startIndex: 12, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const gh = .1h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 14, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const gf = .1f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 14, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const g = 1e1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.float.wgsl' }, + { startIndex: 13, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const gh = 1e1h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const gf = 1e1f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const h = 1e+1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.float.wgsl' }, + { startIndex: 14, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const hh = 1e+1h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const hf = 1e+1f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const i = 1e-1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.float.wgsl' }, + { startIndex: 14, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const ih = 1e-1h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const if = 1e-1f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'keyword.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const j = 1.0e+1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.float.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const jh = 1.0e+1h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const jf= 1.0e+1f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.float.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const k = 1.0e-1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.float.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const kh = 1.0e-1h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.float.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const kf= 1.0e-1f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.float.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const l = 0x1p1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.hex.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const lh = 0x1p1h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const lf = 0x1p1f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const m = 0x1p+1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.hex.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const mh = 0x1p+1h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const mf = 0x1p+1f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const n = 0x1p-1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.hex.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const nh = 0x1p-1h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const nf = 0x1p-1f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const oo = 0x1.p1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const ooh = 0x1.p1h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'number.hex.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const oof = 0x1.p1f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'number.hex.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const p = 0x.1p1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'operator.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'number.hex.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const ph = 0x.1p1h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const pf = 0x.1p1f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.hex.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + } + ], + // depth texture + [ + { + line: '@group(0) @binding(1) var texture_depth_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 42, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(2) var texture_depth_2d_array;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 48, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(4) var texture_depth_cube;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(5) var texture_depth_cube_array;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 50, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(5) var texture_depth_multisampled_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'delimiter.wgsl' } + ] + } + ], + // directive + [ + { + line: 'enable f16;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 6, type: 'white.wgsl' }, + { startIndex: 7, type: 'meta.content.wgsl' }, + { startIndex: 10, type: 'delimiter.wgsl' } + ] + }, + { + line: 'requires v1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'meta.content.wgsl' }, + { startIndex: 11, type: 'delimiter.wgsl' } + ] + }, + { + line: 'diagnostic(error,derivative_uniformity);', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 10, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 11, type: 'meta.content.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' }, + { startIndex: 17, type: 'meta.content.wgsl' }, + { startIndex: 38, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 39, type: 'delimiter.wgsl' } + ] + }, + { + line: 'diagnostic(warning,derivative_uniformity);', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 10, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 11, type: 'meta.content.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' }, + { startIndex: 19, type: 'meta.content.wgsl' }, + { startIndex: 40, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 41, type: 'delimiter.wgsl' } + ] + }, + { + line: 'diagnostic(off,derivative_uniformity);', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 10, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 11, type: 'meta.content.wgsl' }, + { startIndex: 14, type: 'delimiter.wgsl' }, + { startIndex: 15, type: 'meta.content.wgsl' }, + { startIndex: 36, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 37, type: 'delimiter.wgsl' } + ] + }, + { + line: 'diagnostic(info,derivative_uniformity);', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 10, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 11, type: 'meta.content.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' }, + { startIndex: 16, type: 'meta.content.wgsl' }, + { startIndex: 37, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 38, type: 'delimiter.wgsl' } + ] + }, + { line: '', tokens: [] }, + { + line: '@diagnostic(off,derviative_uniformity) fn main() {}', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 11, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 12, type: 'identifier.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' }, + { startIndex: 16, type: 'identifier.wgsl' }, + { startIndex: 37, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 38, type: 'white.wgsl' }, + { startIndex: 39, type: 'keyword.wgsl' }, + { startIndex: 41, type: 'white.wgsl' }, + { startIndex: 42, type: 'identifier.wgsl' }, + { startIndex: 46, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 48, type: 'white.wgsl' }, + { startIndex: 49, type: 'delimiter.curly.wgsl' } + ] + } + ], + // external texture + [ + { + line: '@group(0) @binding(5) var texture_external;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 42, type: 'delimiter.wgsl' } + ] + } + ], + // keywords + [ + { line: 'alias', tokens: [{ startIndex: 0, type: 'keyword.wgsl' }] }, + { line: 'break', tokens: [{ startIndex: 0, type: 'keyword.wgsl' }] }, + { line: 'case', tokens: [{ startIndex: 0, type: 'keyword.wgsl' }] }, + { line: 'const', tokens: [{ startIndex: 0, type: 'keyword.wgsl' }] }, + { line: 'const_assert', tokens: [{ startIndex: 0, type: 'keyword.wgsl' }] }, + { line: 'continue', tokens: [{ startIndex: 0, type: 'keyword.wgsl' }] }, + { line: 'continuing', tokens: [{ startIndex: 0, type: 'keyword.wgsl' }] }, + { line: 'default', tokens: [{ startIndex: 0, type: 'keyword.wgsl' }] }, + { line: 'diagnostic', tokens: [{ startIndex: 0, type: 'keyword.wgsl' }] }, + { line: 'discard', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'else', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'enable', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'false', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'fn', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'for', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'if', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'let', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'loop', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'override', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'requires', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'return', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'struct', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'switch', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'true', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'var', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] }, + { line: 'while', tokens: [{ startIndex: 0, type: 'meta.content.wgsl' }] } + ], + // line comment + [ + { + line: ' // this is a line-ending comment', + tokens: [ + { startIndex: 0, type: 'white.wgsl' }, + { startIndex: 2, type: 'comment.wgsl' } + ] + }, + { + line: ' //* embed a bock comment start, after a space', + tokens: [ + { startIndex: 0, type: 'white.wgsl' }, + { startIndex: 1, type: 'comment.wgsl' } + ] + }, + { + line: '// /* embed a bock comment start, v2', + tokens: [{ startIndex: 0, type: 'comment.wgsl' }] + } + ], + // multisampled texture + [ + { + line: '@group(0) @binding(5) var texture_multisampled_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 49, type: 'operator.wgsl' }, + { startIndex: 50, type: 'variable.predefined.wgsl' }, + { startIndex: 53, type: 'delimiter.wgsl' } + ] + } + ], + // numeric types + [ + { + line: 'enable f16;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 6, type: 'white.wgsl' }, + { startIndex: 7, type: 'meta.content.wgsl' }, + { startIndex: 10, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias int=i32;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 13, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias uint=u32;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 14, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias float=f32;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias half=f16;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 14, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias ivec2=vec2i;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias uvec2=vec2u;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias vec2=vec2f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'variable.predefined.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias ivec3=vec3i;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias uvec3=vec3u;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias vec3=vec3f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'variable.predefined.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias ivec4=vec4i;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias uvec4=vec4u;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias ivec2_=vec2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias uvec2_=vec2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias vec2_=vec2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'operator.wgsl' }, + { startIndex: 17, type: 'variable.predefined.wgsl' }, + { startIndex: 20, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias ivec3_=vec3;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias uvec3_=vec3;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias vec3_=vec3;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'operator.wgsl' }, + { startIndex: 17, type: 'variable.predefined.wgsl' }, + { startIndex: 20, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias ivec4_=vec4;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias uvec4_=vec4;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias vec4_=vec4;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'operator.wgsl' }, + { startIndex: 17, type: 'variable.predefined.wgsl' }, + { startIndex: 20, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias hvec2=vec2h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias hvec3=vec3h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias hvec4=vec4h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias hvec4_=vec4;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m22=mat2x2f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m23=mat2x3f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m24=mat2x4f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m32=mat3x2f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m33=mat3x3f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m34=mat3x4f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m42=mat4x2f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m43=mat4x3f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m44=mat4x4f;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m22_=mat2x2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m23_=mat2x3;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m24_=mat2x4;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m32_=mat3x2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m33_=mat3x3;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m34_=mat3x4;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m42_=mat4x2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m43_=mat4x3;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m44_=mat4x4;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m22=mat2x2h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias m23=mat2x3h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h24=mat2x4h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h32=mat3x2h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h33=mat3x3h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h34=mat3x4h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h42=mat4x2h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h43=mat4x3h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h44=mat4x4h;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h22_=mat2x2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h23_=mat2x3;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h24_=mat2x4;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h32_=mat3x2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h33_=mat3x3;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h34_=mat3x4;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h42_=mat4x2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h43_=mat4x3;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias h44_=mat4x4;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'delimiter.wgsl' } + ] + } + ], + // operators + [ + { + line: 'const add = 0+1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'number.wgsl' }, + { startIndex: 13, type: 'operator.wgsl' }, + { startIndex: 14, type: 'number.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const sub = 0-1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'number.wgsl' }, + { startIndex: 13, type: 'operator.wgsl' }, + { startIndex: 14, type: 'number.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const mult = 1*0;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'white.wgsl' }, + { startIndex: 13, type: 'number.wgsl' }, + { startIndex: 14, type: 'operator.wgsl' }, + { startIndex: 15, type: 'number.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const div = 1/0;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'number.wgsl' }, + { startIndex: 13, type: 'operator.wgsl' }, + { startIndex: 14, type: 'number.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const rem = 2%1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'number.wgsl' }, + { startIndex: 13, type: 'operator.wgsl' }, + { startIndex: 14, type: 'number.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const xor = 1^2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'number.wgsl' }, + { startIndex: 13, type: 'delimiter.wgsl' }, + { startIndex: 14, type: 'number.wgsl' }, + { startIndex: 15, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const or = 1|2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'operator.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'number.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 13, type: 'number.wgsl' }, + { startIndex: 14, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const not = !false;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'operator.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'delimiter.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const complement = ~1u;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 16, type: 'white.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'white.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' }, + { startIndex: 20, type: 'number.wgsl' }, + { startIndex: 22, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const less = 1<0;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'white.wgsl' }, + { startIndex: 13, type: 'number.wgsl' }, + { startIndex: 14, type: 'operator.wgsl' }, + { startIndex: 15, type: 'number.wgsl' }, + { startIndex: 16, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const lesseq = 1<=0;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 12, type: 'white.wgsl' }, + { startIndex: 13, type: 'operator.wgsl' }, + { startIndex: 14, type: 'white.wgsl' }, + { startIndex: 15, type: 'number.wgsl' }, + { startIndex: 16, type: 'operator.wgsl' }, + { startIndex: 18, type: 'number.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const equal = 1==2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 13, type: 'white.wgsl' }, + { startIndex: 14, type: 'number.wgsl' }, + { startIndex: 15, type: 'operator.wgsl' }, + { startIndex: 17, type: 'number.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const greater = 1>2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 13, type: 'white.wgsl' }, + { startIndex: 14, type: 'operator.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'number.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'number.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const greatereq = 1>=2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'operator.wgsl' }, + { startIndex: 17, type: 'white.wgsl' }, + { startIndex: 18, type: 'number.wgsl' }, + { startIndex: 19, type: 'operator.wgsl' }, + { startIndex: 21, type: 'number.wgsl' }, + { startIndex: 22, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const noteq = 1!=2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 13, type: 'white.wgsl' }, + { startIndex: 14, type: 'number.wgsl' }, + { startIndex: 15, type: 'operator.wgsl' }, + { startIndex: 17, type: 'number.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const leftshift = 1<<2;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'operator.wgsl' }, + { startIndex: 17, type: 'white.wgsl' }, + { startIndex: 18, type: 'number.wgsl' }, + { startIndex: 19, type: 'operator.wgsl' }, + { startIndex: 21, type: 'number.wgsl' }, + { startIndex: 22, type: 'delimiter.wgsl' } + ] + }, + { + line: 'const rightshift = 2>>1;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 16, type: 'white.wgsl' }, + { startIndex: 17, type: 'operator.wgsl' }, + { startIndex: 18, type: 'white.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'operator.wgsl' }, + { startIndex: 22, type: 'number.wgsl' }, + { startIndex: 23, type: 'delimiter.wgsl' } + ] + }, + { + line: 'fn arith() -> i32 {', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 2, type: 'white.wgsl' }, + { startIndex: 3, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 13, type: 'white.wgsl' }, + { startIndex: 14, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'white.wgsl' }, + { startIndex: 18, type: 'delimiter.curly.wgsl' } + ] + }, + { + line: 'var a: i32;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 3, type: 'white.wgsl' }, + { startIndex: 4, type: 'identifier.wgsl' }, + { startIndex: 5, type: 'delimiter.wgsl' }, + { startIndex: 6, type: 'white.wgsl' }, + { startIndex: 7, type: 'variable.predefined.wgsl' }, + { startIndex: 10, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a += 1;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'white.wgsl' }, + { startIndex: 2, type: 'operator.wgsl' }, + { startIndex: 4, type: 'white.wgsl' }, + { startIndex: 5, type: 'number.wgsl' }, + { startIndex: 6, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a -= 1;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'white.wgsl' }, + { startIndex: 2, type: 'operator.wgsl' }, + { startIndex: 4, type: 'white.wgsl' }, + { startIndex: 5, type: 'number.wgsl' }, + { startIndex: 6, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a *= 1;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'white.wgsl' }, + { startIndex: 2, type: 'operator.wgsl' }, + { startIndex: 4, type: 'white.wgsl' }, + { startIndex: 5, type: 'number.wgsl' }, + { startIndex: 6, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a /= 1;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'white.wgsl' }, + { startIndex: 2, type: 'operator.wgsl' }, + { startIndex: 4, type: 'white.wgsl' }, + { startIndex: 5, type: 'number.wgsl' }, + { startIndex: 6, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a %= 2;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'white.wgsl' }, + { startIndex: 2, type: 'operator.wgsl' }, + { startIndex: 4, type: 'white.wgsl' }, + { startIndex: 5, type: 'number.wgsl' }, + { startIndex: 6, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a ^= 2;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'white.wgsl' }, + { startIndex: 2, type: 'operator.wgsl' }, + { startIndex: 4, type: 'white.wgsl' }, + { startIndex: 5, type: 'number.wgsl' }, + { startIndex: 6, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a &= 2;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'white.wgsl' }, + { startIndex: 2, type: 'operator.wgsl' }, + { startIndex: 4, type: 'white.wgsl' }, + { startIndex: 5, type: 'number.wgsl' }, + { startIndex: 6, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a |= 2;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'white.wgsl' }, + { startIndex: 2, type: 'operator.wgsl' }, + { startIndex: 4, type: 'white.wgsl' }, + { startIndex: 5, type: 'number.wgsl' }, + { startIndex: 6, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a <<= 1;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'white.wgsl' }, + { startIndex: 2, type: 'operator.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'number.wgsl' }, + { startIndex: 7, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a >>= 1;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'white.wgsl' }, + { startIndex: 2, type: 'operator.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'number.wgsl' }, + { startIndex: 7, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a++;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'delimiter.wgsl' } + ] + }, + { + line: 'a--;', + tokens: [ + { startIndex: 0, type: 'identifier.wgsl' }, + { startIndex: 1, type: 'delimiter.wgsl' } + ] + }, + { + line: 'let b = true&&false;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 3, type: 'white.wgsl' }, + { startIndex: 4, type: 'identifier.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'operator.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 14, type: 'variable.predefined.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' } + ] + }, + { + line: 'let c = true||false;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 3, type: 'white.wgsl' }, + { startIndex: 4, type: 'identifier.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'operator.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 12, type: 'operator.wgsl' }, + { startIndex: 14, type: 'variable.predefined.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' } + ] + }, + { + line: 'return a;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 6, type: 'white.wgsl' }, + { startIndex: 7, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'delimiter.wgsl' } + ] + }, + { line: '}', tokens: [{ startIndex: 0, type: 'delimiter.curly.wgsl' }] } + ], + // predeclared + [ + { + line: 'read write read_write', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 4, type: 'white.wgsl' }, + { startIndex: 5, type: 'variable.predefined.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'function private workgroup uniform storage', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'white.wgsl' }, + { startIndex: 17, type: 'variable.predefined.wgsl' }, + { startIndex: 26, type: 'white.wgsl' }, + { startIndex: 27, type: 'variable.predefined.wgsl' }, + { startIndex: 34, type: 'white.wgsl' }, + { startIndex: 35, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'perspective linear flat', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 18, type: 'white.wgsl' }, + { startIndex: 19, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'center centroid sample', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 6, type: 'white.wgsl' }, + { startIndex: 7, type: 'variable.predefined.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'vertex_index instance_index position front_facing frag_depth', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 12, type: 'white.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 27, type: 'white.wgsl' }, + { startIndex: 28, type: 'variable.predefined.wgsl' }, + { startIndex: 36, type: 'white.wgsl' }, + { startIndex: 37, type: 'variable.predefined.wgsl' }, + { startIndex: 49, type: 'white.wgsl' }, + { startIndex: 50, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'local_invocation_id local_invocation_index', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 19, type: 'white.wgsl' }, + { startIndex: 20, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'global_invocation_id workgroup_id num_workgroups', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 20, type: 'white.wgsl' }, + { startIndex: 21, type: 'variable.predefined.wgsl' }, + { startIndex: 33, type: 'white.wgsl' }, + { startIndex: 34, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'sample_index sample_mask', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 12, type: 'white.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' } + ] + }, + { line: 'rgba8unorm', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rgba8snorm', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rgba8uint', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rgba8sint', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rgba16uint', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rgba16sint', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rgba16float', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'r32uint', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'r32sint', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'r32float', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rg32uint', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rg32sint', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rg32float', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rgba32uint', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rgba32sint', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'rgba32float', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'bgra8unorm', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: '', tokens: [] }, + { line: 'bool', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'f16', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'f32', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'i32', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { + line: 'sampler sampler_comparison', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'texture_depth_2d', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { + line: 'texture_depth_2d_array', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { + line: 'texture_depth_cube', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { + line: 'texture_depth_cube_array', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { + line: 'texture_depth_multisampled_2d', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { + line: 'texture_external', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { + line: 'texture_external', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { line: 'u32', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: '', tokens: [] }, + { line: 'array', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'atomic', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'mat2x2', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'mat2x3', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'mat2x4', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'mat3x2', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'mat3x3', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'mat3x4', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'mat4x2', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'mat4x3', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'mat4x4', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'ptr', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'texture_1d', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'texture_2d', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { + line: 'texture_2d_array', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { line: 'texture_3d', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'texture_cube', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { + line: 'texture_cube_array', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { + line: 'texture_multisampled_2d', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { + line: 'texture_storage_1d', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { + line: 'texture_storage_2d', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { + line: 'texture_storage_2d_array', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { + line: 'texture_storage_3d', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + }, + { line: 'vec2', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'vec3', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: 'vec4', tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] }, + { line: '', tokens: [] }, + { + line: 'vec2i vec3i vec4i', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'vec2u vec3u vec4u', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'vec2f vec3f vec4f', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'vec2h vec3h vec4h', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'mat2x2f mat2x3f mat2x4f', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'mat3x2f mat3x3f mat3x4f', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'mat4x2f mat4x3f mat4x4f', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'mat2x2h mat2x3h mat2x4h', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'mat3x2h mat3x3h mat3x4h', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'mat4x2h mat4x3h mat4x4h', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'variable.predefined.wgsl' } + ] + }, + { line: '', tokens: [] }, + { + line: 'bitcast all any select arrayLength abs acos acosh asin asinh atan atanh atan2', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'variable.predefined.wgsl' }, + { startIndex: 22, type: 'white.wgsl' }, + { startIndex: 23, type: 'variable.predefined.wgsl' }, + { startIndex: 34, type: 'white.wgsl' }, + { startIndex: 35, type: 'variable.predefined.wgsl' }, + { startIndex: 38, type: 'white.wgsl' }, + { startIndex: 39, type: 'variable.predefined.wgsl' }, + { startIndex: 43, type: 'white.wgsl' }, + { startIndex: 44, type: 'variable.predefined.wgsl' }, + { startIndex: 49, type: 'white.wgsl' }, + { startIndex: 50, type: 'variable.predefined.wgsl' }, + { startIndex: 54, type: 'white.wgsl' }, + { startIndex: 55, type: 'variable.predefined.wgsl' }, + { startIndex: 60, type: 'white.wgsl' }, + { startIndex: 61, type: 'variable.predefined.wgsl' }, + { startIndex: 65, type: 'white.wgsl' }, + { startIndex: 66, type: 'variable.predefined.wgsl' }, + { startIndex: 71, type: 'white.wgsl' }, + { startIndex: 72, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'ceil clamp cos cosh countLeadingZeros countOneBits countTrailingZeros cross', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 4, type: 'white.wgsl' }, + { startIndex: 5, type: 'variable.predefined.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 14, type: 'white.wgsl' }, + { startIndex: 15, type: 'variable.predefined.wgsl' }, + { startIndex: 19, type: 'white.wgsl' }, + { startIndex: 20, type: 'variable.predefined.wgsl' }, + { startIndex: 37, type: 'white.wgsl' }, + { startIndex: 38, type: 'variable.predefined.wgsl' }, + { startIndex: 50, type: 'white.wgsl' }, + { startIndex: 51, type: 'variable.predefined.wgsl' }, + { startIndex: 69, type: 'white.wgsl' }, + { startIndex: 70, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'degrees determinant distance dot exp exp2 extractBits faceForward firstLeadingBit', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 7, type: 'white.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 19, type: 'white.wgsl' }, + { startIndex: 20, type: 'variable.predefined.wgsl' }, + { startIndex: 28, type: 'white.wgsl' }, + { startIndex: 29, type: 'variable.predefined.wgsl' }, + { startIndex: 32, type: 'white.wgsl' }, + { startIndex: 33, type: 'variable.predefined.wgsl' }, + { startIndex: 36, type: 'white.wgsl' }, + { startIndex: 37, type: 'variable.predefined.wgsl' }, + { startIndex: 41, type: 'white.wgsl' }, + { startIndex: 42, type: 'variable.predefined.wgsl' }, + { startIndex: 53, type: 'white.wgsl' }, + { startIndex: 54, type: 'variable.predefined.wgsl' }, + { startIndex: 65, type: 'white.wgsl' }, + { startIndex: 66, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'firstTrailingBit floor fma fract frexp inverseBits inverseSqrt ldexp length', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'white.wgsl' }, + { startIndex: 17, type: 'variable.predefined.wgsl' }, + { startIndex: 22, type: 'white.wgsl' }, + { startIndex: 23, type: 'variable.predefined.wgsl' }, + { startIndex: 26, type: 'white.wgsl' }, + { startIndex: 27, type: 'variable.predefined.wgsl' }, + { startIndex: 32, type: 'white.wgsl' }, + { startIndex: 33, type: 'variable.predefined.wgsl' }, + { startIndex: 38, type: 'white.wgsl' }, + { startIndex: 39, type: 'variable.predefined.wgsl' }, + { startIndex: 50, type: 'white.wgsl' }, + { startIndex: 51, type: 'variable.predefined.wgsl' }, + { startIndex: 62, type: 'white.wgsl' }, + { startIndex: 63, type: 'variable.predefined.wgsl' }, + { startIndex: 68, type: 'white.wgsl' }, + { startIndex: 69, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'log log2 max min mix modf normalize pow quantizeToF16 radians reflect refract', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 3, type: 'white.wgsl' }, + { startIndex: 4, type: 'variable.predefined.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'variable.predefined.wgsl' }, + { startIndex: 12, type: 'white.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'white.wgsl' }, + { startIndex: 17, type: 'variable.predefined.wgsl' }, + { startIndex: 20, type: 'white.wgsl' }, + { startIndex: 21, type: 'variable.predefined.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 35, type: 'white.wgsl' }, + { startIndex: 36, type: 'variable.predefined.wgsl' }, + { startIndex: 39, type: 'white.wgsl' }, + { startIndex: 40, type: 'variable.predefined.wgsl' }, + { startIndex: 53, type: 'white.wgsl' }, + { startIndex: 54, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'white.wgsl' }, + { startIndex: 62, type: 'variable.predefined.wgsl' }, + { startIndex: 69, type: 'white.wgsl' }, + { startIndex: 70, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'reverseBits round saturate sign sin sinh smoothstep sqrt step tan tanh transpose', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'white.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'white.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 26, type: 'white.wgsl' }, + { startIndex: 27, type: 'variable.predefined.wgsl' }, + { startIndex: 31, type: 'white.wgsl' }, + { startIndex: 32, type: 'variable.predefined.wgsl' }, + { startIndex: 35, type: 'white.wgsl' }, + { startIndex: 36, type: 'variable.predefined.wgsl' }, + { startIndex: 40, type: 'white.wgsl' }, + { startIndex: 41, type: 'variable.predefined.wgsl' }, + { startIndex: 51, type: 'white.wgsl' }, + { startIndex: 52, type: 'variable.predefined.wgsl' }, + { startIndex: 56, type: 'white.wgsl' }, + { startIndex: 57, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'white.wgsl' }, + { startIndex: 62, type: 'variable.predefined.wgsl' }, + { startIndex: 65, type: 'white.wgsl' }, + { startIndex: 66, type: 'variable.predefined.wgsl' }, + { startIndex: 70, type: 'white.wgsl' }, + { startIndex: 71, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'trunc dpdx dpdxCoarse dpdxFine dpdy dpdyCoarse dpdyFine fwidth fwidthCoarse fwidthFine', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'variable.predefined.wgsl' }, + { startIndex: 10, type: 'white.wgsl' }, + { startIndex: 11, type: 'variable.predefined.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'variable.predefined.wgsl' }, + { startIndex: 30, type: 'white.wgsl' }, + { startIndex: 31, type: 'variable.predefined.wgsl' }, + { startIndex: 35, type: 'white.wgsl' }, + { startIndex: 36, type: 'variable.predefined.wgsl' }, + { startIndex: 46, type: 'white.wgsl' }, + { startIndex: 47, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'white.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 62, type: 'white.wgsl' }, + { startIndex: 63, type: 'variable.predefined.wgsl' }, + { startIndex: 75, type: 'white.wgsl' }, + { startIndex: 76, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'textureDimensions textureGather textureGatherCompare textureLoad textureNumLayers', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'white.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 31, type: 'white.wgsl' }, + { startIndex: 32, type: 'variable.predefined.wgsl' }, + { startIndex: 52, type: 'white.wgsl' }, + { startIndex: 53, type: 'variable.predefined.wgsl' }, + { startIndex: 64, type: 'white.wgsl' }, + { startIndex: 65, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'textureNumLevels textureNumSamples textureSample textureSampleBias textureSampleCompare', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 16, type: 'white.wgsl' }, + { startIndex: 17, type: 'variable.predefined.wgsl' }, + { startIndex: 34, type: 'white.wgsl' }, + { startIndex: 35, type: 'variable.predefined.wgsl' }, + { startIndex: 48, type: 'white.wgsl' }, + { startIndex: 49, type: 'variable.predefined.wgsl' }, + { startIndex: 66, type: 'white.wgsl' }, + { startIndex: 67, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'textureSampleCompareLevel textureSampleGrad textureSampleLevel textureSampleBaseClampToEdge', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 43, type: 'white.wgsl' }, + { startIndex: 44, type: 'variable.predefined.wgsl' }, + { startIndex: 62, type: 'white.wgsl' }, + { startIndex: 63, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'textureStore atomicLoad atomicStore atomicAdd atomicSub atomicMax atomicMin', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 12, type: 'white.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 23, type: 'white.wgsl' }, + { startIndex: 24, type: 'variable.predefined.wgsl' }, + { startIndex: 35, type: 'white.wgsl' }, + { startIndex: 36, type: 'variable.predefined.wgsl' }, + { startIndex: 45, type: 'white.wgsl' }, + { startIndex: 46, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'white.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 65, type: 'white.wgsl' }, + { startIndex: 66, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'atomicAnd atomicOr atomicXor atomicExchange atomicCompareExchangeWeak pack4x8snorm', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'variable.predefined.wgsl' }, + { startIndex: 18, type: 'white.wgsl' }, + { startIndex: 19, type: 'variable.predefined.wgsl' }, + { startIndex: 28, type: 'white.wgsl' }, + { startIndex: 29, type: 'variable.predefined.wgsl' }, + { startIndex: 43, type: 'white.wgsl' }, + { startIndex: 44, type: 'variable.predefined.wgsl' }, + { startIndex: 69, type: 'white.wgsl' }, + { startIndex: 70, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'pack4x8unorm pack2x16snorm pack2x16unorm pack2x16float unpack4x8snorm unpack4x8unorm', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 12, type: 'white.wgsl' }, + { startIndex: 13, type: 'variable.predefined.wgsl' }, + { startIndex: 26, type: 'white.wgsl' }, + { startIndex: 27, type: 'variable.predefined.wgsl' }, + { startIndex: 40, type: 'white.wgsl' }, + { startIndex: 41, type: 'variable.predefined.wgsl' }, + { startIndex: 54, type: 'white.wgsl' }, + { startIndex: 55, type: 'variable.predefined.wgsl' }, + { startIndex: 69, type: 'white.wgsl' }, + { startIndex: 70, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'unpack2x16snorm unpack2x16unorm unpack2x16float storageBarrier workgroupBarrier', + tokens: [ + { startIndex: 0, type: 'variable.predefined.wgsl' }, + { startIndex: 15, type: 'white.wgsl' }, + { startIndex: 16, type: 'variable.predefined.wgsl' }, + { startIndex: 31, type: 'white.wgsl' }, + { startIndex: 32, type: 'variable.predefined.wgsl' }, + { startIndex: 47, type: 'white.wgsl' }, + { startIndex: 48, type: 'variable.predefined.wgsl' }, + { startIndex: 62, type: 'white.wgsl' }, + { startIndex: 63, type: 'variable.predefined.wgsl' } + ] + }, + { + line: 'workgroupUniformLoad', + tokens: [{ startIndex: 0, type: 'variable.predefined.wgsl' }] + } + ], + // reserved + [ + { line: 'NULL', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'Self', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'abstract', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'active', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'alignas', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'alignof', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'as', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'asm', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'asm_fragment', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'async', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'attribute', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'auto', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'await', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'become', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'binding_array', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'cast', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'catch', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'class', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'co_await', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'co_return', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'co_yield', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'coherent', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'column_major', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'common', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'compile', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'compile_fragment', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'concept', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'const_cast', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'consteval', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'constexpr', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'constinit', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'crate', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'debugger', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'decltype', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'delete', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'demote', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'demote_to_helper', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'do', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'dynamic_cast', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'enum', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'explicit', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'export', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'extends', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'extern', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'external', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'fallthrough', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'filter', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'final', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'finally', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'friend', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'from', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'fxgroup', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'get', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'goto', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'groupshared', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'highp', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'impl', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'implements', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'import', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'inline', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'instanceof', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'interface', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'layout', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'lowp', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'macro', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'macro_rules', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'match', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'mediump', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'meta', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'mod', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'module', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'move', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'mut', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'mutable', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'namespace', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'new', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'nil', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'noexcept', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'noinline', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'nointerpolation', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'noperspective', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'null', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'nullptr', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'of', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'operator', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'package', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'packoffset', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'partition', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'pass', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'patch', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'pixelfragment', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'precise', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'precision', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'premerge', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'priv', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'protected', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'pub', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'public', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'readonly', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'ref', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'regardless', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'register', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'reinterpret_cast', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'require', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'resource', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'restrict', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'self', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'set', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'shared', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'sizeof', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'smooth', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'snorm', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'static', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'static_assert', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'static_cast', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'std', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'subroutine', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'super', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'target', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'template', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'this', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'thread_local', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'throw', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'trait', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'try', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'type', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'typedef', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'typeid', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'typename', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'typeof', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'union', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'unless', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'unorm', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'unsafe', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'unsized', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'use', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'using', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'varying', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'virtual', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'volatile', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'wgsl', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'where', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'with', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'writeonly', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] }, + { line: 'yield', tokens: [{ startIndex: 0, type: 'invalid.wgsl' }] } + ], + // sampled texture + [ + { + line: '@group(0) @binding(0) var texture_1d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 36, type: 'operator.wgsl' }, + { startIndex: 37, type: 'variable.predefined.wgsl' }, + { startIndex: 40, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(1) var texture_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 36, type: 'operator.wgsl' }, + { startIndex: 37, type: 'variable.predefined.wgsl' }, + { startIndex: 40, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(2) var texture_2d_array;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 42, type: 'operator.wgsl' }, + { startIndex: 43, type: 'variable.predefined.wgsl' }, + { startIndex: 46, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(3) var texture_3d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 36, type: 'operator.wgsl' }, + { startIndex: 37, type: 'variable.predefined.wgsl' }, + { startIndex: 40, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(4) var texture_cube;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 38, type: 'operator.wgsl' }, + { startIndex: 39, type: 'variable.predefined.wgsl' }, + { startIndex: 42, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(5) var texture_cube_array;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 48, type: 'delimiter.wgsl' } + ] + } + ], + // storage texture + [ + { + line: '@group(0) @binding(0) var texture_storage_1d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'delimiter.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(1) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'delimiter.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(2) var texture_storage_2d_array;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 50, type: 'operator.wgsl' }, + { startIndex: 51, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'delimiter.wgsl' }, + { startIndex: 62, type: 'variable.predefined.wgsl' }, + { startIndex: 67, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(3) var texture_storage_3d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'delimiter.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'delimiter.wgsl' } + ] + } + ], + // texel formats + [ + { + line: '@group(0) @binding(0) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'delimiter.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(1) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'delimiter.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(2) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 54, type: 'delimiter.wgsl' }, + { startIndex: 55, type: 'variable.predefined.wgsl' }, + { startIndex: 60, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(3) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 54, type: 'delimiter.wgsl' }, + { startIndex: 55, type: 'variable.predefined.wgsl' }, + { startIndex: 60, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(4) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'delimiter.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(5) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'delimiter.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(6) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 56, type: 'delimiter.wgsl' }, + { startIndex: 57, type: 'variable.predefined.wgsl' }, + { startIndex: 62, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(7) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 52, type: 'delimiter.wgsl' }, + { startIndex: 53, type: 'variable.predefined.wgsl' }, + { startIndex: 58, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(8) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 52, type: 'delimiter.wgsl' }, + { startIndex: 53, type: 'variable.predefined.wgsl' }, + { startIndex: 58, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(0) @binding(9) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 53, type: 'delimiter.wgsl' }, + { startIndex: 54, type: 'variable.predefined.wgsl' }, + { startIndex: 59, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(1) @binding(0) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 53, type: 'delimiter.wgsl' }, + { startIndex: 54, type: 'variable.predefined.wgsl' }, + { startIndex: 59, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(1) @binding(1) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 53, type: 'delimiter.wgsl' }, + { startIndex: 54, type: 'variable.predefined.wgsl' }, + { startIndex: 59, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(1) @binding(2) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 54, type: 'delimiter.wgsl' }, + { startIndex: 55, type: 'variable.predefined.wgsl' }, + { startIndex: 60, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(1) @binding(3) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'delimiter.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(1) @binding(4) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'delimiter.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(1) @binding(5) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 56, type: 'delimiter.wgsl' }, + { startIndex: 57, type: 'variable.predefined.wgsl' }, + { startIndex: 62, type: 'delimiter.wgsl' } + ] + }, + { + line: '@group(1) @binding(6) var texture_storage_2d;', + tokens: [ + { startIndex: 0, type: 'annotation.wgsl' }, + { startIndex: 6, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 7, type: 'number.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'white.wgsl' }, + { startIndex: 10, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'keyword.wgsl' }, + { startIndex: 25, type: 'white.wgsl' }, + { startIndex: 26, type: 'variable.predefined.wgsl' }, + { startIndex: 44, type: 'operator.wgsl' }, + { startIndex: 45, type: 'variable.predefined.wgsl' }, + { startIndex: 55, type: 'delimiter.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'delimiter.wgsl' } + ] + } + ], + // tiny render + [ + { line: '@vertex', tokens: [{ startIndex: 0, type: 'annotation.wgsl' }] }, + { + line: 'fn vmain(@location(0) v: vec4) -> @builtin(position) vec4f {', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 2, type: 'white.wgsl' }, + { startIndex: 3, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'annotation.wgsl' }, + { startIndex: 18, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 19, type: 'number.wgsl' }, + { startIndex: 20, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 21, type: 'white.wgsl' }, + { startIndex: 22, type: 'identifier.wgsl' }, + { startIndex: 23, type: 'delimiter.wgsl' }, + { startIndex: 24, type: 'white.wgsl' }, + { startIndex: 25, type: 'variable.predefined.wgsl' }, + { startIndex: 29, type: 'operator.wgsl' }, + { startIndex: 30, type: 'variable.predefined.wgsl' }, + { startIndex: 33, type: 'operator.wgsl' }, + { startIndex: 34, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 35, type: 'white.wgsl' }, + { startIndex: 36, type: 'operator.wgsl' }, + { startIndex: 38, type: 'white.wgsl' }, + { startIndex: 39, type: 'annotation.wgsl' }, + { startIndex: 47, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 48, type: 'variable.predefined.wgsl' }, + { startIndex: 56, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 57, type: 'white.wgsl' }, + { startIndex: 58, type: 'variable.predefined.wgsl' }, + { startIndex: 63, type: 'white.wgsl' }, + { startIndex: 64, type: 'delimiter.curly.wgsl' } + ] + }, + { + line: ' return v;', + tokens: [ + { startIndex: 0, type: 'white.wgsl' }, + { startIndex: 2, type: 'keyword.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'identifier.wgsl' }, + { startIndex: 10, type: 'delimiter.wgsl' } + ] + }, + { line: '}', tokens: [{ startIndex: 0, type: 'delimiter.curly.wgsl' }] }, + { line: '', tokens: [] }, + { line: '@fragment', tokens: [{ startIndex: 0, type: 'annotation.wgsl' }] }, + { + line: 'fn fmain(@builtin(position) pos: vec4f) -> @location(0) vec4f {', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 2, type: 'white.wgsl' }, + { startIndex: 3, type: 'identifier.wgsl' }, + { startIndex: 8, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 9, type: 'annotation.wgsl' }, + { startIndex: 17, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 18, type: 'variable.predefined.wgsl' }, + { startIndex: 26, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 27, type: 'white.wgsl' }, + { startIndex: 28, type: 'identifier.wgsl' }, + { startIndex: 31, type: 'delimiter.wgsl' }, + { startIndex: 32, type: 'white.wgsl' }, + { startIndex: 33, type: 'variable.predefined.wgsl' }, + { startIndex: 38, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 39, type: 'white.wgsl' }, + { startIndex: 40, type: 'operator.wgsl' }, + { startIndex: 42, type: 'white.wgsl' }, + { startIndex: 43, type: 'annotation.wgsl' }, + { startIndex: 52, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 53, type: 'number.wgsl' }, + { startIndex: 54, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 55, type: 'white.wgsl' }, + { startIndex: 56, type: 'variable.predefined.wgsl' }, + { startIndex: 61, type: 'white.wgsl' }, + { startIndex: 62, type: 'delimiter.curly.wgsl' } + ] + }, + { + line: ' return vec4f(0.25,0.25,1.0,1.0);', + tokens: [ + { startIndex: 0, type: 'white.wgsl' }, + { startIndex: 2, type: 'keyword.wgsl' }, + { startIndex: 8, type: 'white.wgsl' }, + { startIndex: 9, type: 'variable.predefined.wgsl' }, + { startIndex: 14, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 15, type: 'number.float.wgsl' }, + { startIndex: 19, type: 'delimiter.wgsl' }, + { startIndex: 20, type: 'number.float.wgsl' }, + { startIndex: 24, type: 'delimiter.wgsl' }, + { startIndex: 25, type: 'number.float.wgsl' }, + { startIndex: 28, type: 'delimiter.wgsl' }, + { startIndex: 29, type: 'number.float.wgsl' }, + { startIndex: 32, type: 'delimiter.parenthesis.wgsl' }, + { startIndex: 33, type: 'delimiter.wgsl' } + ] + }, + { line: '}', tokens: [{ startIndex: 0, type: 'delimiter.curly.wgsl' }] } + ], + // type generators + [ + { + line: '// Test predeclared type generators, other than vector, matrix, and texture.', + tokens: [{ startIndex: 0, type: 'comment.wgsl' }] + }, + { + line: 'alias a=array;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'operator.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 13, type: 'operator.wgsl' }, + { startIndex: 14, type: 'variable.predefined.wgsl' }, + { startIndex: 17, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias b=atomic;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'operator.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 14, type: 'operator.wgsl' }, + { startIndex: 15, type: 'variable.predefined.wgsl' }, + { startIndex: 18, type: 'delimiter.wgsl' } + ] + }, + { + line: 'alias c=ptr;', + tokens: [ + { startIndex: 0, type: 'keyword.wgsl' }, + { startIndex: 5, type: 'white.wgsl' }, + { startIndex: 6, type: 'identifier.wgsl' }, + { startIndex: 7, type: 'operator.wgsl' }, + { startIndex: 8, type: 'variable.predefined.wgsl' }, + { startIndex: 11, type: 'operator.wgsl' }, + { startIndex: 12, type: 'variable.predefined.wgsl' }, + { startIndex: 20, type: 'delimiter.wgsl' }, + { startIndex: 21, type: 'variable.predefined.wgsl' }, + { startIndex: 24, type: 'delimiter.wgsl' } + ] + } + ] +]; +testTokenization('wgsl', cases); diff --git a/src/basic-languages/wgsl/wgsl.ts b/src/basic-languages/wgsl/wgsl.ts new file mode 100644 index 00000000..ab3a4822 --- /dev/null +++ b/src/basic-languages/wgsl/wgsl.ts @@ -0,0 +1,485 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation, Google LLC. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import type { languages } from '../../fillers/monaco-editor-core'; + +export const conf: languages.LanguageConfiguration = { + comments: { + lineComment: '//', + blockComment: ['/*', '*/'] + }, + brackets: [ + ['{', '}'], + ['[', ']'], + ['(', ')'] + ], + autoClosingPairs: [ + { open: '[', close: ']' }, + { open: '{', close: '}' }, + { open: '(', close: ')' } + ], + surroundingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '(', close: ')' } + ] +}; + +// Returns a list of empty strings, from a possibly multi-line string, +// stripping blanks and line endings. Emulates Perls 'qw' function. +function qw(str: string): string[] { + let result: string[] = []; + const words = str.split(/\t+|\r+|\n+| +/); + for (let i = 0; i < words.length; ++i) { + if (words[i].length > 0) { + result.push(words[i]); + } + } + return result; +} +const atoms = qw('true false'); + +const keywords = qw(` + alias + break + case + const + const_assert + continue + continuing + default + diagnostic + discard + else + enable + fn + for + if + let + loop + override + requires + return + struct + switch + var + while + `); + +const reserved = qw(` + NULL + Self + abstract + active + alignas + alignof + as + asm + asm_fragment + async + attribute + auto + await + become + binding_array + cast + catch + class + co_await + co_return + co_yield + coherent + column_major + common + compile + compile_fragment + concept + const_cast + consteval + constexpr + constinit + crate + debugger + decltype + delete + demote + demote_to_helper + do + dynamic_cast + enum + explicit + export + extends + extern + external + fallthrough + filter + final + finally + friend + from + fxgroup + get + goto + groupshared + highp + impl + implements + import + inline + instanceof + interface + layout + lowp + macro + macro_rules + match + mediump + meta + mod + module + move + mut + mutable + namespace + new + nil + noexcept + noinline + nointerpolation + noperspective + null + nullptr + of + operator + package + packoffset + partition + pass + patch + pixelfragment + precise + precision + premerge + priv + protected + pub + public + readonly + ref + regardless + register + reinterpret_cast + require + resource + restrict + self + set + shared + sizeof + smooth + snorm + static + static_assert + static_cast + std + subroutine + super + target + template + this + thread_local + throw + trait + try + type + typedef + typeid + typename + typeof + union + unless + unorm + unsafe + unsized + use + using + varying + virtual + volatile + wgsl + where + with + writeonly + yield + `); + +const predeclared_enums = qw(` + read write read_write + function private workgroup uniform storage + perspective linear flat + center centroid sample + vertex_index instance_index position front_facing frag_depth + local_invocation_id local_invocation_index + global_invocation_id workgroup_id num_workgroups + sample_index sample_mask + rgba8unorm + rgba8snorm + rgba8uint + rgba8sint + rgba16uint + rgba16sint + rgba16float + r32uint + r32sint + r32float + rg32uint + rg32sint + rg32float + rgba32uint + rgba32sint + rgba32float + bgra8unorm +`); + +const predeclared_types = qw(` + bool + f16 + f32 + i32 + sampler sampler_comparison + texture_depth_2d + texture_depth_2d_array + texture_depth_cube + texture_depth_cube_array + texture_depth_multisampled_2d + texture_external + texture_external + u32 + `); + +const predeclared_type_generators = qw(` + array + atomic + mat2x2 + mat2x3 + mat2x4 + mat3x2 + mat3x3 + mat3x4 + mat4x2 + mat4x3 + mat4x4 + ptr + texture_1d + texture_2d + texture_2d_array + texture_3d + texture_cube + texture_cube_array + texture_multisampled_2d + texture_storage_1d + texture_storage_2d + texture_storage_2d_array + texture_storage_3d + vec2 + vec3 + vec4 + `); + +const predeclared_type_aliases = qw(` + vec2i vec3i vec4i + vec2u vec3u vec4u + vec2f vec3f vec4f + vec2h vec3h vec4h + mat2x2f mat2x3f mat2x4f + mat3x2f mat3x3f mat3x4f + mat4x2f mat4x3f mat4x4f + mat2x2h mat2x3h mat2x4h + mat3x2h mat3x3h mat3x4h + mat4x2h mat4x3h mat4x4h + `); + +const predeclared_intrinsics = qw(` + bitcast all any select arrayLength abs acos acosh asin asinh atan atanh atan2 + ceil clamp cos cosh countLeadingZeros countOneBits countTrailingZeros cross + degrees determinant distance dot exp exp2 extractBits faceForward firstLeadingBit + firstTrailingBit floor fma fract frexp inverseBits inverseSqrt ldexp length + log log2 max min mix modf normalize pow quantizeToF16 radians reflect refract + reverseBits round saturate sign sin sinh smoothstep sqrt step tan tanh transpose + trunc dpdx dpdxCoarse dpdxFine dpdy dpdyCoarse dpdyFine fwidth fwidthCoarse fwidthFine + textureDimensions textureGather textureGatherCompare textureLoad textureNumLayers + textureNumLevels textureNumSamples textureSample textureSampleBias textureSampleCompare + textureSampleCompareLevel textureSampleGrad textureSampleLevel textureSampleBaseClampToEdge + textureStore atomicLoad atomicStore atomicAdd atomicSub atomicMax atomicMin + atomicAnd atomicOr atomicXor atomicExchange atomicCompareExchangeWeak pack4x8snorm + pack4x8unorm pack2x16snorm pack2x16unorm pack2x16float unpack4x8snorm unpack4x8unorm + unpack2x16snorm unpack2x16unorm unpack2x16float storageBarrier workgroupBarrier + workgroupUniformLoad +`); + +// https://gpuweb.github.io/gpuweb/wgsl/#syntactic-token +// But skip bracket-like things, comma, colon, semicolon, underscore, at. +const operators = qw(` + & + && + -> + / + = + == + != + > + >= + < + <= + % + - + -- + + + ++ + | + || + * + << + >> + += + -= + *= + /= + %= + &= + |= + ^= + >>= + <<= + `); + +const directive_re = /enable|requires|diagnostic/; + +const ident_re = /[_\p{XID_Start}]\p{XID_Continue}*/u; + +const predefined_token = 'variable.predefined'; + +export const language = { + tokenPostfix: '.wgsl', + defaultToken: 'invalid', + unicode: true, + + atoms, + keywords, + reserved, + predeclared_enums, + predeclared_types, + predeclared_type_generators, + predeclared_type_aliases, + predeclared_intrinsics, + operators, + + symbols: /[!%&*+\-\.\/:;<=>^|_~,]+/, + + tokenizer: { + root: [ + [directive_re, 'keyword', '@directive'], + [ + // Identifier-like things, but also include '_' + ident_re, + { + cases: { + '@atoms': predefined_token, + '@keywords': 'keyword', + '@reserved': 'invalid', + '@predeclared_enums': predefined_token, + '@predeclared_types': predefined_token, + '@predeclared_type_generators': predefined_token, + '@predeclared_type_aliases': predefined_token, + '@predeclared_intrinsics': predefined_token, + '@default': 'identifier' + } + } + ], + { include: '@commentOrSpace' }, + { include: '@numbers' }, + + [/[{}()\[\]]/, '@brackets'], + ['@', 'annotation', '@attribute'], + [ + /@symbols/, + { + cases: { + '@operators': 'operator', + '@default': 'delimiter' + } + } + ], + [/./, 'invalid'] + ], + + commentOrSpace: [ + [/\s+/, 'white'], + [/\/\*/, 'comment', '@blockComment'], + [/\/\/.*$/, 'comment'] + ], + + blockComment: [ + // Soak up uninteresting text: anything except * or / + [/[^\/*]+/, 'comment'], + // Recognize the start of a nested block comment. + [/\/\*/, 'comment', '@push'], + // Recognize the end of a nested block comment. + [/\*\//, 'comment', '@pop'], + // Recognize insignificant * and / + [/[\/*]/, 'comment'] + ], + + attribute: [ + // For things like '@fragment' both '@' and 'fragment' + // are marked as annotations. This should work even if + // there are spaces or comments between the two tokens. + { include: '@commentOrSpace' }, + [/\w+/, 'annotation', '@pop'] + ], + + directive: [ + // For things like 'enable f16;', 'enable' maps to 'meta' + // and 'f16' maps to 'meta.tag'. + { include: '@commentOrSpace' }, + [/[()]/, '@brackets'], + [/,/, 'delimiter'], + [ident_re, 'meta.content'], + [/;/, 'delimiter', '@pop'] + ], + + numbers: [ + // Decimal float literals + // https://www.w3.org/TR/WGSL/#syntax-decimal_float_literal + // 0, with type-specifying suffix. + [/0[fh]/, 'number.float'], + // Other decimal integer, with type-specifying suffix. + [/[1-9][0-9]*[fh]/, 'number.float'], + // Has decimal point, at least one digit after decimal. + [/[0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[fh]?/, 'number.float'], + // Has decimal point, at least one digit before decimal. + [/[0-9]+\.[0-9]*([eE][+-]?[0-9]+)?[fh]?/, 'number.float'], + // Has at least one digit, and has an exponent. + [/[0-9]+[eE][+-]?[0-9]+[fh]?/, 'number.float'], + + // Hex float literals + // https://www.w3.org/TR/WGSL/#syntax-hex_float_literal + [/0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+(?:[pP][+-]?[0-9]+[fh]?)?/, 'number.hex'], + [/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*(?:[pP][+-]?[0-9]+[fh]?)?/, 'number.hex'], + [/0[xX][0-9a-fA-F]+[pP][+-]?[0-9]+[fh]?/, 'number.hex'], + + // Hexadecimal integer literals + // https://www.w3.org/TR/WGSL/#syntax-hex_int_literal + [/0[xX][0-9a-fA-F]+[iu]?/, 'number.hex'], + + // Decimal integer literals + // https://www.w3.org/TR/WGSL/#syntax-decimal_int_literal + // We need two rules here because 01 is not valid. + [/[1-9][0-9]*[iu]?/, 'number'], + [/0[iu]?/, 'number'] // Must match last + ] + } +}; diff --git a/src/basic-languages/xml/xml.contribution.ts b/src/basic-languages/xml/xml.contribution.ts index e274e640..1a58c066 100644 --- a/src/basic-languages/xml/xml.contribution.ts +++ b/src/basic-languages/xml/xml.contribution.ts @@ -12,10 +12,13 @@ registerLanguage({ id: 'xml', extensions: [ '.xml', + '.xsd', '.dtd', '.ascx', '.csproj', '.config', + '.props', + '.targets', '.wxi', '.wxl', '.wxs', @@ -23,6 +26,7 @@ registerLanguage({ '.svg', '.svgz', '.opf', + '.xslt', '.xsl' ], firstLine: '(\\<\\?xml.*)|(\\{ [/@numberDate(?![ \t]*\S+)/, 'number.date'], // Key:Value pair - [/(".*?"|'.*?'|.*?)([ \t]*)(:)( |$)/, ['type', 'white', 'operators', 'white']], + [/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/, ['type', 'white', 'operators', 'white']], { include: '@flowScalars' }, // String nodes [ - /[^#]+/, + /.+?(?=(\s+#|$))/, { cases: { '@keywords': 'keyword', diff --git a/src/language/common/lspLanguageFeatures.ts b/src/language/common/lspLanguageFeatures.ts index ac98a59b..48982daf 100644 --- a/src/language/common/lspLanguageFeatures.ts +++ b/src/language/common/lspLanguageFeatures.ts @@ -803,6 +803,8 @@ export class DocumentFormattingEditProvider export class DocumentRangeFormattingEditProvider implements languages.DocumentRangeFormattingEditProvider { + readonly canFormatMultipleRanges = false; + constructor(private _worker: WorkerAccessor) {} public provideDocumentRangeFormattingEdits( diff --git a/src/language/typescript/languageFeatures.ts b/src/language/typescript/languageFeatures.ts index 49c25207..ca111417 100644 --- a/src/language/typescript/languageFeatures.ts +++ b/src/language/typescript/languageFeatures.ts @@ -474,7 +474,7 @@ export class SuggestAdapter extends Adapter implements languages.CompletionItemP } const tags: languages.CompletionItemTag[] = []; - if (entry.kindModifiers?.indexOf('deprecated') !== -1) { + if (entry.kindModifiers !== undefined && entry.kindModifiers.indexOf('deprecated') !== -1) { tags.push(languages.CompletionItemTag.Deprecated); } @@ -715,7 +715,10 @@ export class QuickInfoAdapter extends Adapter implements languages.HoverProvider // --- occurrences ------ -export class OccurrencesAdapter extends Adapter implements languages.DocumentHighlightProvider { +export class DocumentHighlightAdapter + extends Adapter + implements languages.DocumentHighlightProvider +{ public async provideDocumentHighlights( model: editor.ITextModel, position: Position, @@ -729,19 +732,24 @@ export class OccurrencesAdapter extends Adapter implements languages.DocumentHig return; } - const entries = await worker.getOccurrencesAtPosition(resource.toString(), offset); + const entries = await worker.getDocumentHighlights(resource.toString(), offset, [ + resource.toString() + ]); if (!entries || model.isDisposed()) { return; } - return entries.map((entry) => { - return { - range: this._textSpanToRange(model, entry.textSpan), - kind: entry.isWriteAccess - ? languages.DocumentHighlightKind.Write - : languages.DocumentHighlightKind.Text - }; + return entries.flatMap((entry) => { + return entry.highlightSpans.map((highlightSpans) => { + return { + range: this._textSpanToRange(model, highlightSpans.textSpan), + kind: + highlightSpans.kind === 'writtenReference' + ? languages.DocumentHighlightKind.Write + : languages.DocumentHighlightKind.Text + }; + }); }); } } @@ -865,39 +873,31 @@ export class OutlineAdapter extends Adapter implements languages.DocumentSymbolP return; } - const items = await worker.getNavigationBarItems(resource.toString()); + const root = await worker.getNavigationTree(resource.toString()); - if (!items || model.isDisposed()) { + if (!root || model.isDisposed()) { return; } const convert = ( - bucket: languages.DocumentSymbol[], - item: ts.NavigationBarItem, + item: ts.NavigationTree, containerLabel?: string - ): void => { - let result: languages.DocumentSymbol = { + ): languages.DocumentSymbol => { + const result: languages.DocumentSymbol = { name: item.text, detail: '', kind: (outlineTypeTable[item.kind] || languages.SymbolKind.Variable), range: this._textSpanToRange(model, item.spans[0]), selectionRange: this._textSpanToRange(model, item.spans[0]), - tags: [] + tags: [], + children: item.childItems?.map((child) => convert(child, item.text)), + containerName: containerLabel }; - - if (containerLabel) result.containerName = containerLabel; - - if (item.childItems && item.childItems.length > 0) { - for (let child of item.childItems) { - convert(bucket, child, result.name); - } - } - - bucket.push(result); + return result; }; - let result: languages.DocumentSymbol[] = []; - items.forEach((item) => convert(result, item)); + // Exclude the root node, as it alwas spans the entire document. + const result = root.childItems ? root.childItems.map((item) => convert(item)) : []; return result; } } @@ -989,6 +989,8 @@ export class FormatAdapter extends FormatHelper implements languages.DocumentRangeFormattingEditProvider { + readonly canFormatMultipleRanges = false; + public async provideDocumentRangeFormattingEdits( model: editor.ITextModel, range: Range, diff --git a/src/language/typescript/lib/lib.index.ts b/src/language/typescript/lib/lib.index.ts index 1cc87ced..0da2dddf 100644 --- a/src/language/typescript/lib/lib.index.ts +++ b/src/language/typescript/lib/lib.index.ts @@ -10,6 +10,8 @@ /** Contains all the lib files */ export const libFileSet: Record = {} libFileSet['lib.d.ts'] = true; +libFileSet['lib.decorators.d.ts'] = true; +libFileSet['lib.decorators.legacy.d.ts'] = true; libFileSet['lib.dom.d.ts'] = true; libFileSet['lib.dom.iterable.d.ts'] = true; libFileSet['lib.es2015.collection.d.ts'] = true; @@ -42,13 +44,16 @@ libFileSet['lib.es2018.regexp.d.ts'] = true; libFileSet['lib.es2019.array.d.ts'] = true; libFileSet['lib.es2019.d.ts'] = true; libFileSet['lib.es2019.full.d.ts'] = true; +libFileSet['lib.es2019.intl.d.ts'] = true; libFileSet['lib.es2019.object.d.ts'] = true; libFileSet['lib.es2019.string.d.ts'] = true; libFileSet['lib.es2019.symbol.d.ts'] = true; libFileSet['lib.es2020.bigint.d.ts'] = true; libFileSet['lib.es2020.d.ts'] = true; +libFileSet['lib.es2020.date.d.ts'] = true; libFileSet['lib.es2020.full.d.ts'] = true; libFileSet['lib.es2020.intl.d.ts'] = true; +libFileSet['lib.es2020.number.d.ts'] = true; libFileSet['lib.es2020.promise.d.ts'] = true; libFileSet['lib.es2020.sharedmemory.d.ts'] = true; libFileSet['lib.es2020.string.d.ts'] = true; @@ -59,14 +64,23 @@ libFileSet['lib.es2021.intl.d.ts'] = true; libFileSet['lib.es2021.promise.d.ts'] = true; libFileSet['lib.es2021.string.d.ts'] = true; libFileSet['lib.es2021.weakref.d.ts'] = true; +libFileSet['lib.es2022.array.d.ts'] = true; +libFileSet['lib.es2022.d.ts'] = true; +libFileSet['lib.es2022.error.d.ts'] = true; +libFileSet['lib.es2022.full.d.ts'] = true; +libFileSet['lib.es2022.intl.d.ts'] = true; +libFileSet['lib.es2022.object.d.ts'] = true; +libFileSet['lib.es2022.regexp.d.ts'] = true; +libFileSet['lib.es2022.sharedmemory.d.ts'] = true; +libFileSet['lib.es2022.string.d.ts'] = true; +libFileSet['lib.es2023.array.d.ts'] = true; +libFileSet['lib.es2023.d.ts'] = true; +libFileSet['lib.es2023.full.d.ts'] = true; libFileSet['lib.es5.d.ts'] = true; libFileSet['lib.es6.d.ts'] = true; libFileSet['lib.esnext.d.ts'] = true; libFileSet['lib.esnext.full.d.ts'] = true; libFileSet['lib.esnext.intl.d.ts'] = true; -libFileSet['lib.esnext.promise.d.ts'] = true; -libFileSet['lib.esnext.string.d.ts'] = true; -libFileSet['lib.esnext.weakref.d.ts'] = true; libFileSet['lib.scripthost.d.ts'] = true; libFileSet['lib.webworker.d.ts'] = true; libFileSet['lib.webworker.importscripts.d.ts'] = true; diff --git a/src/language/typescript/lib/lib.ts b/src/language/typescript/lib/lib.ts index 712c37f2..8a6fba9d 100644 --- a/src/language/typescript/lib/lib.ts +++ b/src/language/typescript/lib/lib.ts @@ -9,65 +9,79 @@ /** Contains all the lib files */ export const libFileMap: Record = {} -libFileMap['lib.d.ts'] = "/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n\n/// \n\n\n/// \n/// \n/// \n/// \n"; -libFileMap['lib.dom.d.ts'] = "/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n\n/// \n\n\n/////////////////////////////\n/// Window APIs\n/////////////////////////////\n\ninterface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n signal?: AbortSignal;\n}\n\ninterface AesCbcParams extends Algorithm {\n iv: BufferSource;\n}\n\ninterface AesCtrParams extends Algorithm {\n counter: BufferSource;\n length: number;\n}\n\ninterface AesDerivedKeyParams extends Algorithm {\n length: number;\n}\n\ninterface AesGcmParams extends Algorithm {\n additionalData?: BufferSource;\n iv: BufferSource;\n tagLength?: number;\n}\n\ninterface AesKeyAlgorithm extends KeyAlgorithm {\n length: number;\n}\n\ninterface AesKeyGenParams extends Algorithm {\n length: number;\n}\n\ninterface Algorithm {\n name: string;\n}\n\ninterface AnalyserOptions extends AudioNodeOptions {\n fftSize?: number;\n maxDecibels?: number;\n minDecibels?: number;\n smoothingTimeConstant?: number;\n}\n\ninterface AnimationEventInit extends EventInit {\n animationName?: string;\n elapsedTime?: number;\n pseudoElement?: string;\n}\n\ninterface AnimationPlaybackEventInit extends EventInit {\n currentTime?: CSSNumberish | null;\n timelineTime?: CSSNumberish | null;\n}\n\ninterface AssignedNodesOptions {\n flatten?: boolean;\n}\n\ninterface AudioBufferOptions {\n length: number;\n numberOfChannels?: number;\n sampleRate: number;\n}\n\ninterface AudioBufferSourceOptions {\n buffer?: AudioBuffer | null;\n detune?: number;\n loop?: boolean;\n loopEnd?: number;\n loopStart?: number;\n playbackRate?: number;\n}\n\ninterface AudioConfiguration {\n bitrate?: number;\n channels?: string;\n contentType: string;\n samplerate?: number;\n spatialRendering?: boolean;\n}\n\ninterface AudioContextOptions {\n latencyHint?: AudioContextLatencyCategory | number;\n sampleRate?: number;\n}\n\ninterface AudioNodeOptions {\n channelCount?: number;\n channelCountMode?: ChannelCountMode;\n channelInterpretation?: ChannelInterpretation;\n}\n\ninterface AudioProcessingEventInit extends EventInit {\n inputBuffer: AudioBuffer;\n outputBuffer: AudioBuffer;\n playbackTime: number;\n}\n\ninterface AudioTimestamp {\n contextTime?: number;\n performanceTime?: DOMHighResTimeStamp;\n}\n\ninterface AudioWorkletNodeOptions extends AudioNodeOptions {\n numberOfInputs?: number;\n numberOfOutputs?: number;\n outputChannelCount?: number[];\n parameterData?: Record;\n processorOptions?: any;\n}\n\ninterface AuthenticationExtensionsClientInputs {\n appid?: string;\n appidExclude?: string;\n credProps?: boolean;\n uvm?: boolean;\n}\n\ninterface AuthenticationExtensionsClientOutputs {\n appid?: boolean;\n credProps?: CredentialPropertiesOutput;\n uvm?: UvmEntries;\n}\n\ninterface AuthenticatorSelectionCriteria {\n authenticatorAttachment?: AuthenticatorAttachment;\n requireResidentKey?: boolean;\n residentKey?: ResidentKeyRequirement;\n userVerification?: UserVerificationRequirement;\n}\n\ninterface BiquadFilterOptions extends AudioNodeOptions {\n Q?: number;\n detune?: number;\n frequency?: number;\n gain?: number;\n type?: BiquadFilterType;\n}\n\ninterface BlobEventInit {\n data: Blob;\n timecode?: DOMHighResTimeStamp;\n}\n\ninterface BlobPropertyBag {\n endings?: EndingType;\n type?: string;\n}\n\ninterface CSSStyleSheetInit {\n baseURL?: string;\n disabled?: boolean;\n media?: MediaList | string;\n}\n\ninterface CacheQueryOptions {\n ignoreMethod?: boolean;\n ignoreSearch?: boolean;\n ignoreVary?: boolean;\n}\n\ninterface CanvasRenderingContext2DSettings {\n alpha?: boolean;\n colorSpace?: PredefinedColorSpace;\n desynchronized?: boolean;\n willReadFrequently?: boolean;\n}\n\ninterface ChannelMergerOptions extends AudioNodeOptions {\n numberOfInputs?: number;\n}\n\ninterface ChannelSplitterOptions extends AudioNodeOptions {\n numberOfOutputs?: number;\n}\n\ninterface ClientQueryOptions {\n includeUncontrolled?: boolean;\n type?: ClientTypes;\n}\n\ninterface ClipboardEventInit extends EventInit {\n clipboardData?: DataTransfer | null;\n}\n\ninterface ClipboardItemOptions {\n presentationStyle?: PresentationStyle;\n}\n\ninterface CloseEventInit extends EventInit {\n code?: number;\n reason?: string;\n wasClean?: boolean;\n}\n\ninterface CompositionEventInit extends UIEventInit {\n data?: string;\n}\n\ninterface ComputedEffectTiming extends EffectTiming {\n activeDuration?: CSSNumberish;\n currentIteration?: number | null;\n endTime?: CSSNumberish;\n localTime?: CSSNumberish | null;\n progress?: CSSNumberish | null;\n startTime?: CSSNumberish;\n}\n\ninterface ComputedKeyframe {\n composite: CompositeOperationOrAuto;\n computedOffset: number;\n easing: string;\n offset: number | null;\n [property: string]: string | number | null | undefined;\n}\n\ninterface ConstantSourceOptions {\n offset?: number;\n}\n\ninterface ConstrainBooleanParameters {\n exact?: boolean;\n ideal?: boolean;\n}\n\ninterface ConstrainDOMStringParameters {\n exact?: string | string[];\n ideal?: string | string[];\n}\n\ninterface ConstrainDoubleRange extends DoubleRange {\n exact?: number;\n ideal?: number;\n}\n\ninterface ConstrainULongRange extends ULongRange {\n exact?: number;\n ideal?: number;\n}\n\ninterface ConvolverOptions extends AudioNodeOptions {\n buffer?: AudioBuffer | null;\n disableNormalization?: boolean;\n}\n\ninterface CredentialCreationOptions {\n publicKey?: PublicKeyCredentialCreationOptions;\n signal?: AbortSignal;\n}\n\ninterface CredentialPropertiesOutput {\n rk?: boolean;\n}\n\ninterface CredentialRequestOptions {\n mediation?: CredentialMediationRequirement;\n publicKey?: PublicKeyCredentialRequestOptions;\n signal?: AbortSignal;\n}\n\ninterface CryptoKeyPair {\n privateKey?: CryptoKey;\n publicKey?: CryptoKey;\n}\n\ninterface CustomEventInit extends EventInit {\n detail?: T;\n}\n\ninterface DOMMatrix2DInit {\n a?: number;\n b?: number;\n c?: number;\n d?: number;\n e?: number;\n f?: number;\n m11?: number;\n m12?: number;\n m21?: number;\n m22?: number;\n m41?: number;\n m42?: number;\n}\n\ninterface DOMMatrixInit extends DOMMatrix2DInit {\n is2D?: boolean;\n m13?: number;\n m14?: number;\n m23?: number;\n m24?: number;\n m31?: number;\n m32?: number;\n m33?: number;\n m34?: number;\n m43?: number;\n m44?: number;\n}\n\ninterface DOMPointInit {\n w?: number;\n x?: number;\n y?: number;\n z?: number;\n}\n\ninterface DOMQuadInit {\n p1?: DOMPointInit;\n p2?: DOMPointInit;\n p3?: DOMPointInit;\n p4?: DOMPointInit;\n}\n\ninterface DOMRectInit {\n height?: number;\n width?: number;\n x?: number;\n y?: number;\n}\n\ninterface DelayOptions extends AudioNodeOptions {\n delayTime?: number;\n maxDelayTime?: number;\n}\n\ninterface DeviceMotionEventAccelerationInit {\n x?: number | null;\n y?: number | null;\n z?: number | null;\n}\n\ninterface DeviceMotionEventInit extends EventInit {\n acceleration?: DeviceMotionEventAccelerationInit;\n accelerationIncludingGravity?: DeviceMotionEventAccelerationInit;\n interval?: number;\n rotationRate?: DeviceMotionEventRotationRateInit;\n}\n\ninterface DeviceMotionEventRotationRateInit {\n alpha?: number | null;\n beta?: number | null;\n gamma?: number | null;\n}\n\ninterface DeviceOrientationEventInit extends EventInit {\n absolute?: boolean;\n alpha?: number | null;\n beta?: number | null;\n gamma?: number | null;\n}\n\ninterface DisplayMediaStreamConstraints {\n audio?: boolean | MediaTrackConstraints;\n video?: boolean | MediaTrackConstraints;\n}\n\ninterface DocumentTimelineOptions {\n originTime?: DOMHighResTimeStamp;\n}\n\ninterface DoubleRange {\n max?: number;\n min?: number;\n}\n\ninterface DragEventInit extends MouseEventInit {\n dataTransfer?: DataTransfer | null;\n}\n\ninterface DynamicsCompressorOptions extends AudioNodeOptions {\n attack?: number;\n knee?: number;\n ratio?: number;\n release?: number;\n threshold?: number;\n}\n\ninterface EcKeyAlgorithm extends KeyAlgorithm {\n namedCurve: NamedCurve;\n}\n\ninterface EcKeyGenParams extends Algorithm {\n namedCurve: NamedCurve;\n}\n\ninterface EcKeyImportParams extends Algorithm {\n namedCurve: NamedCurve;\n}\n\ninterface EcdhKeyDeriveParams extends Algorithm {\n public: CryptoKey;\n}\n\ninterface EcdsaParams extends Algorithm {\n hash: HashAlgorithmIdentifier;\n}\n\ninterface EffectTiming {\n delay?: number;\n direction?: PlaybackDirection;\n duration?: number | string;\n easing?: string;\n endDelay?: number;\n fill?: FillMode;\n iterationStart?: number;\n iterations?: number;\n playbackRate?: number;\n}\n\ninterface ElementCreationOptions {\n is?: string;\n}\n\ninterface ElementDefinitionOptions {\n extends?: string;\n}\n\ninterface ErrorEventInit extends EventInit {\n colno?: number;\n error?: any;\n filename?: string;\n lineno?: number;\n message?: string;\n}\n\ninterface EventInit {\n bubbles?: boolean;\n cancelable?: boolean;\n composed?: boolean;\n}\n\ninterface EventListenerOptions {\n capture?: boolean;\n}\n\ninterface EventModifierInit extends UIEventInit {\n altKey?: boolean;\n ctrlKey?: boolean;\n metaKey?: boolean;\n modifierAltGraph?: boolean;\n modifierCapsLock?: boolean;\n modifierFn?: boolean;\n modifierFnLock?: boolean;\n modifierHyper?: boolean;\n modifierNumLock?: boolean;\n modifierScrollLock?: boolean;\n modifierSuper?: boolean;\n modifierSymbol?: boolean;\n modifierSymbolLock?: boolean;\n shiftKey?: boolean;\n}\n\ninterface EventSourceInit {\n withCredentials?: boolean;\n}\n\ninterface FilePropertyBag extends BlobPropertyBag {\n lastModified?: number;\n}\n\ninterface FileSystemFlags {\n create?: boolean;\n exclusive?: boolean;\n}\n\ninterface FocusEventInit extends UIEventInit {\n relatedTarget?: EventTarget | null;\n}\n\ninterface FocusOptions {\n preventScroll?: boolean;\n}\n\ninterface FontFaceDescriptors {\n display?: string;\n featureSettings?: string;\n stretch?: string;\n style?: string;\n unicodeRange?: string;\n variant?: string;\n weight?: string;\n}\n\ninterface FontFaceSetLoadEventInit extends EventInit {\n fontfaces?: FontFace[];\n}\n\ninterface FormDataEventInit extends EventInit {\n formData: FormData;\n}\n\ninterface FullscreenOptions {\n navigationUI?: FullscreenNavigationUI;\n}\n\ninterface GainOptions extends AudioNodeOptions {\n gain?: number;\n}\n\ninterface GamepadEventInit extends EventInit {\n gamepad: Gamepad;\n}\n\ninterface GetAnimationsOptions {\n subtree?: boolean;\n}\n\ninterface GetNotificationOptions {\n tag?: string;\n}\n\ninterface GetRootNodeOptions {\n composed?: boolean;\n}\n\ninterface HashChangeEventInit extends EventInit {\n newURL?: string;\n oldURL?: string;\n}\n\ninterface HkdfParams extends Algorithm {\n hash: HashAlgorithmIdentifier;\n info: BufferSource;\n salt: BufferSource;\n}\n\ninterface HmacImportParams extends Algorithm {\n hash: HashAlgorithmIdentifier;\n length?: number;\n}\n\ninterface HmacKeyAlgorithm extends KeyAlgorithm {\n hash: KeyAlgorithm;\n length: number;\n}\n\ninterface HmacKeyGenParams extends Algorithm {\n hash: HashAlgorithmIdentifier;\n length?: number;\n}\n\ninterface IDBDatabaseInfo {\n name?: string;\n version?: number;\n}\n\ninterface IDBIndexParameters {\n multiEntry?: boolean;\n unique?: boolean;\n}\n\ninterface IDBObjectStoreParameters {\n autoIncrement?: boolean;\n keyPath?: string | string[] | null;\n}\n\ninterface IDBVersionChangeEventInit extends EventInit {\n newVersion?: number | null;\n oldVersion?: number;\n}\n\ninterface IIRFilterOptions extends AudioNodeOptions {\n feedback: number[];\n feedforward: number[];\n}\n\ninterface IdleRequestOptions {\n timeout?: number;\n}\n\ninterface ImageBitmapOptions {\n colorSpaceConversion?: ColorSpaceConversion;\n imageOrientation?: ImageOrientation;\n premultiplyAlpha?: PremultiplyAlpha;\n resizeHeight?: number;\n resizeQuality?: ResizeQuality;\n resizeWidth?: number;\n}\n\ninterface ImageBitmapRenderingContextSettings {\n alpha?: boolean;\n}\n\ninterface ImageDataSettings {\n colorSpace?: PredefinedColorSpace;\n}\n\ninterface ImportMeta {\n url: string;\n}\n\ninterface InputEventInit extends UIEventInit {\n data?: string | null;\n dataTransfer?: DataTransfer | null;\n inputType?: string;\n isComposing?: boolean;\n targetRanges?: StaticRange[];\n}\n\ninterface IntersectionObserverEntryInit {\n boundingClientRect: DOMRectInit;\n intersectionRatio: number;\n intersectionRect: DOMRectInit;\n isIntersecting: boolean;\n rootBounds: DOMRectInit | null;\n target: Element;\n time: DOMHighResTimeStamp;\n}\n\ninterface IntersectionObserverInit {\n root?: Element | Document | null;\n rootMargin?: string;\n threshold?: number | number[];\n}\n\ninterface JsonWebKey {\n alg?: string;\n crv?: string;\n d?: string;\n dp?: string;\n dq?: string;\n e?: string;\n ext?: boolean;\n k?: string;\n key_ops?: string[];\n kty?: string;\n n?: string;\n oth?: RsaOtherPrimesInfo[];\n p?: string;\n q?: string;\n qi?: string;\n use?: string;\n x?: string;\n y?: string;\n}\n\ninterface KeyAlgorithm {\n name: string;\n}\n\ninterface KeyboardEventInit extends EventModifierInit {\n /** @deprecated */\n charCode?: number;\n code?: string;\n isComposing?: boolean;\n key?: string;\n /** @deprecated */\n keyCode?: number;\n location?: number;\n repeat?: boolean;\n}\n\ninterface Keyframe {\n composite?: CompositeOperationOrAuto;\n easing?: string;\n offset?: number | null;\n [property: string]: string | number | null | undefined;\n}\n\ninterface KeyframeAnimationOptions extends KeyframeEffectOptions {\n id?: string;\n}\n\ninterface KeyframeEffectOptions extends EffectTiming {\n composite?: CompositeOperation;\n iterationComposite?: IterationCompositeOperation;\n pseudoElement?: string | null;\n}\n\ninterface MediaCapabilitiesDecodingInfo extends MediaCapabilitiesInfo {\n configuration?: MediaDecodingConfiguration;\n}\n\ninterface MediaCapabilitiesEncodingInfo extends MediaCapabilitiesInfo {\n configuration?: MediaEncodingConfiguration;\n}\n\ninterface MediaCapabilitiesInfo {\n powerEfficient: boolean;\n smooth: boolean;\n supported: boolean;\n}\n\ninterface MediaConfiguration {\n audio?: AudioConfiguration;\n video?: VideoConfiguration;\n}\n\ninterface MediaDecodingConfiguration extends MediaConfiguration {\n type: MediaDecodingType;\n}\n\ninterface MediaElementAudioSourceOptions {\n mediaElement: HTMLMediaElement;\n}\n\ninterface MediaEncodingConfiguration extends MediaConfiguration {\n type: MediaEncodingType;\n}\n\ninterface MediaEncryptedEventInit extends EventInit {\n initData?: ArrayBuffer | null;\n initDataType?: string;\n}\n\ninterface MediaImage {\n sizes?: string;\n src: string;\n type?: string;\n}\n\ninterface MediaKeyMessageEventInit extends EventInit {\n message: ArrayBuffer;\n messageType: MediaKeyMessageType;\n}\n\ninterface MediaKeySystemConfiguration {\n audioCapabilities?: MediaKeySystemMediaCapability[];\n distinctiveIdentifier?: MediaKeysRequirement;\n initDataTypes?: string[];\n label?: string;\n persistentState?: MediaKeysRequirement;\n sessionTypes?: string[];\n videoCapabilities?: MediaKeySystemMediaCapability[];\n}\n\ninterface MediaKeySystemMediaCapability {\n contentType?: string;\n encryptionScheme?: string | null;\n robustness?: string;\n}\n\ninterface MediaMetadataInit {\n album?: string;\n artist?: string;\n artwork?: MediaImage[];\n title?: string;\n}\n\ninterface MediaPositionState {\n duration?: number;\n playbackRate?: number;\n position?: number;\n}\n\ninterface MediaQueryListEventInit extends EventInit {\n matches?: boolean;\n media?: string;\n}\n\ninterface MediaRecorderErrorEventInit extends EventInit {\n error: DOMException;\n}\n\ninterface MediaRecorderOptions {\n audioBitsPerSecond?: number;\n bitsPerSecond?: number;\n mimeType?: string;\n videoBitsPerSecond?: number;\n}\n\ninterface MediaSessionActionDetails {\n action: MediaSessionAction;\n fastSeek?: boolean | null;\n seekOffset?: number | null;\n seekTime?: number | null;\n}\n\ninterface MediaStreamAudioSourceOptions {\n mediaStream: MediaStream;\n}\n\ninterface MediaStreamConstraints {\n audio?: boolean | MediaTrackConstraints;\n peerIdentity?: string;\n preferCurrentTab?: boolean;\n video?: boolean | MediaTrackConstraints;\n}\n\ninterface MediaStreamTrackEventInit extends EventInit {\n track: MediaStreamTrack;\n}\n\ninterface MediaTrackCapabilities {\n aspectRatio?: DoubleRange;\n autoGainControl?: boolean[];\n channelCount?: ULongRange;\n cursor?: string[];\n deviceId?: string;\n displaySurface?: string;\n echoCancellation?: boolean[];\n facingMode?: string[];\n frameRate?: DoubleRange;\n groupId?: string;\n height?: ULongRange;\n latency?: DoubleRange;\n logicalSurface?: boolean;\n noiseSuppression?: boolean[];\n resizeMode?: string[];\n sampleRate?: ULongRange;\n sampleSize?: ULongRange;\n width?: ULongRange;\n}\n\ninterface MediaTrackConstraintSet {\n aspectRatio?: ConstrainDouble;\n autoGainControl?: ConstrainBoolean;\n channelCount?: ConstrainULong;\n deviceId?: ConstrainDOMString;\n echoCancellation?: ConstrainBoolean;\n facingMode?: ConstrainDOMString;\n frameRate?: ConstrainDouble;\n groupId?: ConstrainDOMString;\n height?: ConstrainULong;\n latency?: ConstrainDouble;\n noiseSuppression?: ConstrainBoolean;\n sampleRate?: ConstrainULong;\n sampleSize?: ConstrainULong;\n suppressLocalAudioPlayback?: ConstrainBoolean;\n width?: ConstrainULong;\n}\n\ninterface MediaTrackConstraints extends MediaTrackConstraintSet {\n advanced?: MediaTrackConstraintSet[];\n}\n\ninterface MediaTrackSettings {\n aspectRatio?: number;\n autoGainControl?: boolean;\n deviceId?: string;\n echoCancellation?: boolean;\n facingMode?: string;\n frameRate?: number;\n groupId?: string;\n height?: number;\n noiseSuppression?: boolean;\n restrictOwnAudio?: boolean;\n sampleRate?: number;\n sampleSize?: number;\n width?: number;\n}\n\ninterface MediaTrackSupportedConstraints {\n aspectRatio?: boolean;\n autoGainControl?: boolean;\n deviceId?: boolean;\n echoCancellation?: boolean;\n facingMode?: boolean;\n frameRate?: boolean;\n groupId?: boolean;\n height?: boolean;\n noiseSuppression?: boolean;\n sampleRate?: boolean;\n sampleSize?: boolean;\n suppressLocalAudioPlayback?: boolean;\n width?: boolean;\n}\n\ninterface MessageEventInit extends EventInit {\n data?: T;\n lastEventId?: string;\n origin?: string;\n ports?: MessagePort[];\n source?: MessageEventSource | null;\n}\n\ninterface MouseEventInit extends EventModifierInit {\n button?: number;\n buttons?: number;\n clientX?: number;\n clientY?: number;\n movementX?: number;\n movementY?: number;\n relatedTarget?: EventTarget | null;\n screenX?: number;\n screenY?: number;\n}\n\ninterface MultiCacheQueryOptions extends CacheQueryOptions {\n cacheName?: string;\n}\n\ninterface MutationObserverInit {\n /** Set to a list of attribute local names (without namespace) if not all attribute mutations need to be observed and attributes is true or omitted. */\n attributeFilter?: string[];\n /** Set to true if attributes is true or omitted and target's attribute value before the mutation needs to be recorded. */\n attributeOldValue?: boolean;\n /** Set to true if mutations to target's attributes are to be observed. Can be omitted if attributeOldValue or attributeFilter is specified. */\n attributes?: boolean;\n /** Set to true if mutations to target's data are to be observed. Can be omitted if characterDataOldValue is specified. */\n characterData?: boolean;\n /** Set to true if characterData is set to true or omitted and target's data before the mutation needs to be recorded. */\n characterDataOldValue?: boolean;\n /** Set to true if mutations to target's children are to be observed. */\n childList?: boolean;\n /** Set to true if mutations to not just target, but also target's descendants are to be observed. */\n subtree?: boolean;\n}\n\ninterface NotificationAction {\n action: string;\n icon?: string;\n title: string;\n}\n\ninterface NotificationOptions {\n actions?: NotificationAction[];\n badge?: string;\n body?: string;\n data?: any;\n dir?: NotificationDirection;\n icon?: string;\n image?: string;\n lang?: string;\n renotify?: boolean;\n requireInteraction?: boolean;\n silent?: boolean;\n tag?: string;\n timestamp?: DOMTimeStamp;\n vibrate?: VibratePattern;\n}\n\ninterface OfflineAudioCompletionEventInit extends EventInit {\n renderedBuffer: AudioBuffer;\n}\n\ninterface OfflineAudioContextOptions {\n length: number;\n numberOfChannels?: number;\n sampleRate: number;\n}\n\ninterface OptionalEffectTiming {\n delay?: number;\n direction?: PlaybackDirection;\n duration?: number | string;\n easing?: string;\n endDelay?: number;\n fill?: FillMode;\n iterationStart?: number;\n iterations?: number;\n playbackRate?: number;\n}\n\ninterface OscillatorOptions extends AudioNodeOptions {\n detune?: number;\n frequency?: number;\n periodicWave?: PeriodicWave;\n type?: OscillatorType;\n}\n\ninterface PageTransitionEventInit extends EventInit {\n persisted?: boolean;\n}\n\ninterface PannerOptions extends AudioNodeOptions {\n coneInnerAngle?: number;\n coneOuterAngle?: number;\n coneOuterGain?: number;\n distanceModel?: DistanceModelType;\n maxDistance?: number;\n orientationX?: number;\n orientationY?: number;\n orientationZ?: number;\n panningModel?: PanningModelType;\n positionX?: number;\n positionY?: number;\n positionZ?: number;\n refDistance?: number;\n rolloffFactor?: number;\n}\n\ninterface PaymentCurrencyAmount {\n currency: string;\n value: string;\n}\n\ninterface PaymentDetailsBase {\n displayItems?: PaymentItem[];\n modifiers?: PaymentDetailsModifier[];\n}\n\ninterface PaymentDetailsInit extends PaymentDetailsBase {\n id?: string;\n total: PaymentItem;\n}\n\ninterface PaymentDetailsModifier {\n additionalDisplayItems?: PaymentItem[];\n data?: any;\n supportedMethods: string;\n total?: PaymentItem;\n}\n\ninterface PaymentDetailsUpdate extends PaymentDetailsBase {\n paymentMethodErrors?: any;\n total?: PaymentItem;\n}\n\ninterface PaymentItem {\n amount: PaymentCurrencyAmount;\n label: string;\n pending?: boolean;\n}\n\ninterface PaymentMethodChangeEventInit extends PaymentRequestUpdateEventInit {\n methodDetails?: any;\n methodName?: string;\n}\n\ninterface PaymentMethodData {\n data?: any;\n supportedMethods: string;\n}\n\ninterface PaymentRequestUpdateEventInit extends EventInit {\n}\n\ninterface PaymentValidationErrors {\n error?: string;\n paymentMethod?: any;\n}\n\ninterface Pbkdf2Params extends Algorithm {\n hash: HashAlgorithmIdentifier;\n iterations: number;\n salt: BufferSource;\n}\n\ninterface PerformanceMarkOptions {\n detail?: any;\n startTime?: DOMHighResTimeStamp;\n}\n\ninterface PerformanceMeasureOptions {\n detail?: any;\n duration?: DOMHighResTimeStamp;\n end?: string | DOMHighResTimeStamp;\n start?: string | DOMHighResTimeStamp;\n}\n\ninterface PerformanceObserverInit {\n buffered?: boolean;\n entryTypes?: string[];\n type?: string;\n}\n\ninterface PeriodicWaveConstraints {\n disableNormalization?: boolean;\n}\n\ninterface PeriodicWaveOptions extends PeriodicWaveConstraints {\n imag?: number[] | Float32Array;\n real?: number[] | Float32Array;\n}\n\ninterface PermissionDescriptor {\n name: PermissionName;\n}\n\ninterface PointerEventInit extends MouseEventInit {\n coalescedEvents?: PointerEvent[];\n height?: number;\n isPrimary?: boolean;\n pointerId?: number;\n pointerType?: string;\n predictedEvents?: PointerEvent[];\n pressure?: number;\n tangentialPressure?: number;\n tiltX?: number;\n tiltY?: number;\n twist?: number;\n width?: number;\n}\n\ninterface PopStateEventInit extends EventInit {\n state?: any;\n}\n\ninterface PositionOptions {\n enableHighAccuracy?: boolean;\n maximumAge?: number;\n timeout?: number;\n}\n\ninterface ProgressEventInit extends EventInit {\n lengthComputable?: boolean;\n loaded?: number;\n total?: number;\n}\n\ninterface PromiseRejectionEventInit extends EventInit {\n promise: Promise;\n reason?: any;\n}\n\ninterface PropertyIndexedKeyframes {\n composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[];\n easing?: string | string[];\n offset?: number | (number | null)[];\n [property: string]: string | string[] | number | null | (number | null)[] | undefined;\n}\n\ninterface PublicKeyCredentialCreationOptions {\n attestation?: AttestationConveyancePreference;\n authenticatorSelection?: AuthenticatorSelectionCriteria;\n challenge: BufferSource;\n excludeCredentials?: PublicKeyCredentialDescriptor[];\n extensions?: AuthenticationExtensionsClientInputs;\n pubKeyCredParams: PublicKeyCredentialParameters[];\n rp: PublicKeyCredentialRpEntity;\n timeout?: number;\n user: PublicKeyCredentialUserEntity;\n}\n\ninterface PublicKeyCredentialDescriptor {\n id: BufferSource;\n transports?: AuthenticatorTransport[];\n type: PublicKeyCredentialType;\n}\n\ninterface PublicKeyCredentialEntity {\n name: string;\n}\n\ninterface PublicKeyCredentialParameters {\n alg: COSEAlgorithmIdentifier;\n type: PublicKeyCredentialType;\n}\n\ninterface PublicKeyCredentialRequestOptions {\n allowCredentials?: PublicKeyCredentialDescriptor[];\n challenge: BufferSource;\n extensions?: AuthenticationExtensionsClientInputs;\n rpId?: string;\n timeout?: number;\n userVerification?: UserVerificationRequirement;\n}\n\ninterface PublicKeyCredentialRpEntity extends PublicKeyCredentialEntity {\n id?: string;\n}\n\ninterface PublicKeyCredentialUserEntity extends PublicKeyCredentialEntity {\n displayName: string;\n id: BufferSource;\n}\n\ninterface PushSubscriptionJSON {\n endpoint?: string;\n expirationTime?: DOMTimeStamp | null;\n keys?: Record;\n}\n\ninterface PushSubscriptionOptionsInit {\n applicationServerKey?: BufferSource | string | null;\n userVisibleOnly?: boolean;\n}\n\ninterface QueuingStrategy {\n highWaterMark?: number;\n size?: QueuingStrategySize;\n}\n\ninterface QueuingStrategyInit {\n /**\n * Creates a new ByteLengthQueuingStrategy with the provided high water mark.\n *\n * Note that the provided high water mark will not be validated ahead of time. Instead, if it is negative, NaN, or not a number, the resulting ByteLengthQueuingStrategy will cause the corresponding stream constructor to throw.\n */\n highWaterMark: number;\n}\n\ninterface RTCAnswerOptions extends RTCOfferAnswerOptions {\n}\n\ninterface RTCCertificateExpiration {\n expires?: DOMTimeStamp;\n}\n\ninterface RTCConfiguration {\n bundlePolicy?: RTCBundlePolicy;\n certificates?: RTCCertificate[];\n iceCandidatePoolSize?: number;\n iceServers?: RTCIceServer[];\n iceTransportPolicy?: RTCIceTransportPolicy;\n rtcpMuxPolicy?: RTCRtcpMuxPolicy;\n}\n\ninterface RTCDTMFToneChangeEventInit extends EventInit {\n tone?: string;\n}\n\ninterface RTCDataChannelEventInit extends EventInit {\n channel: RTCDataChannel;\n}\n\ninterface RTCDataChannelInit {\n id?: number;\n maxPacketLifeTime?: number;\n maxRetransmits?: number;\n negotiated?: boolean;\n ordered?: boolean;\n protocol?: string;\n}\n\ninterface RTCDtlsFingerprint {\n algorithm?: string;\n value?: string;\n}\n\ninterface RTCIceCandidateInit {\n candidate?: string;\n sdpMLineIndex?: number | null;\n sdpMid?: string | null;\n usernameFragment?: string | null;\n}\n\ninterface RTCIceCandidatePairStats extends RTCStats {\n availableIncomingBitrate?: number;\n availableOutgoingBitrate?: number;\n bytesReceived?: number;\n bytesSent?: number;\n currentRoundTripTime?: number;\n localCandidateId: string;\n nominated?: boolean;\n remoteCandidateId: string;\n requestsReceived?: number;\n requestsSent?: number;\n responsesReceived?: number;\n responsesSent?: number;\n state: RTCStatsIceCandidatePairState;\n totalRoundTripTime?: number;\n transportId: string;\n}\n\ninterface RTCIceServer {\n credential?: string;\n credentialType?: RTCIceCredentialType;\n urls: string | string[];\n username?: string;\n}\n\ninterface RTCInboundRtpStreamStats extends RTCReceivedRtpStreamStats {\n firCount?: number;\n framesDecoded?: number;\n nackCount?: number;\n pliCount?: number;\n qpSum?: number;\n remoteId?: string;\n}\n\ninterface RTCLocalSessionDescriptionInit {\n sdp?: string;\n type?: RTCSdpType;\n}\n\ninterface RTCOfferAnswerOptions {\n}\n\ninterface RTCOfferOptions extends RTCOfferAnswerOptions {\n iceRestart?: boolean;\n offerToReceiveAudio?: boolean;\n offerToReceiveVideo?: boolean;\n}\n\ninterface RTCOutboundRtpStreamStats extends RTCSentRtpStreamStats {\n firCount?: number;\n framesEncoded?: number;\n nackCount?: number;\n pliCount?: number;\n qpSum?: number;\n remoteId?: string;\n}\n\ninterface RTCPeerConnectionIceErrorEventInit extends EventInit {\n address?: string | null;\n errorCode: number;\n errorText?: string;\n port?: number | null;\n url?: string;\n}\n\ninterface RTCPeerConnectionIceEventInit extends EventInit {\n candidate?: RTCIceCandidate | null;\n url?: string | null;\n}\n\ninterface RTCReceivedRtpStreamStats extends RTCRtpStreamStats {\n jitter?: number;\n packetsDiscarded?: number;\n packetsLost?: number;\n packetsReceived?: number;\n}\n\ninterface RTCRtcpParameters {\n cname?: string;\n reducedSize?: boolean;\n}\n\ninterface RTCRtpCapabilities {\n codecs: RTCRtpCodecCapability[];\n headerExtensions: RTCRtpHeaderExtensionCapability[];\n}\n\ninterface RTCRtpCodecCapability {\n channels?: number;\n clockRate: number;\n mimeType: string;\n sdpFmtpLine?: string;\n}\n\ninterface RTCRtpCodecParameters {\n channels?: number;\n clockRate: number;\n mimeType: string;\n payloadType: number;\n sdpFmtpLine?: string;\n}\n\ninterface RTCRtpCodingParameters {\n rid?: string;\n}\n\ninterface RTCRtpContributingSource {\n audioLevel?: number;\n rtpTimestamp: number;\n source: number;\n timestamp: DOMHighResTimeStamp;\n}\n\ninterface RTCRtpEncodingParameters extends RTCRtpCodingParameters {\n active?: boolean;\n maxBitrate?: number;\n priority?: RTCPriorityType;\n scaleResolutionDownBy?: number;\n}\n\ninterface RTCRtpHeaderExtensionCapability {\n uri?: string;\n}\n\ninterface RTCRtpHeaderExtensionParameters {\n encrypted?: boolean;\n id: number;\n uri: string;\n}\n\ninterface RTCRtpParameters {\n codecs: RTCRtpCodecParameters[];\n headerExtensions: RTCRtpHeaderExtensionParameters[];\n rtcp: RTCRtcpParameters;\n}\n\ninterface RTCRtpReceiveParameters extends RTCRtpParameters {\n}\n\ninterface RTCRtpSendParameters extends RTCRtpParameters {\n degradationPreference?: RTCDegradationPreference;\n encodings: RTCRtpEncodingParameters[];\n transactionId: string;\n}\n\ninterface RTCRtpStreamStats extends RTCStats {\n codecId?: string;\n kind: string;\n ssrc: number;\n transportId?: string;\n}\n\ninterface RTCRtpSynchronizationSource extends RTCRtpContributingSource {\n}\n\ninterface RTCRtpTransceiverInit {\n direction?: RTCRtpTransceiverDirection;\n sendEncodings?: RTCRtpEncodingParameters[];\n streams?: MediaStream[];\n}\n\ninterface RTCSentRtpStreamStats extends RTCRtpStreamStats {\n bytesSent?: number;\n packetsSent?: number;\n}\n\ninterface RTCSessionDescriptionInit {\n sdp?: string;\n type: RTCSdpType;\n}\n\ninterface RTCStats {\n id: string;\n timestamp: DOMHighResTimeStamp;\n type: RTCStatsType;\n}\n\ninterface RTCTrackEventInit extends EventInit {\n receiver: RTCRtpReceiver;\n streams?: MediaStream[];\n track: MediaStreamTrack;\n transceiver: RTCRtpTransceiver;\n}\n\ninterface RTCTransportStats extends RTCStats {\n bytesReceived?: number;\n bytesSent?: number;\n dtlsCipher?: string;\n dtlsState: RTCDtlsTransportState;\n localCertificateId?: string;\n remoteCertificateId?: string;\n rtcpTransportStatsId?: string;\n selectedCandidatePairId?: string;\n srtpCipher?: string;\n tlsVersion?: string;\n}\n\ninterface ReadableStreamDefaultReadDoneResult {\n done: true;\n value?: undefined;\n}\n\ninterface ReadableStreamDefaultReadValueResult {\n done: false;\n value: T;\n}\n\ninterface ReadableWritablePair {\n readable: ReadableStream;\n /**\n * Provides a convenient, chainable way of piping this readable stream through a transform stream (or any other { writable, readable } pair). It simply pipes the stream into the writable side of the supplied pair, and returns the readable side for further use.\n *\n * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n */\n writable: WritableStream;\n}\n\ninterface RegistrationOptions {\n scope?: string;\n type?: WorkerType;\n updateViaCache?: ServiceWorkerUpdateViaCache;\n}\n\ninterface RequestInit {\n /** A BodyInit object or null to set request's body. */\n body?: BodyInit | null;\n /** A string indicating how the request will interact with the browser's cache to set request's cache. */\n cache?: RequestCache;\n /** A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials. */\n credentials?: RequestCredentials;\n /** A Headers object, an object literal, or an array of two-item arrays to set request's headers. */\n headers?: HeadersInit;\n /** A cryptographic hash of the resource to be fetched by request. Sets request's integrity. */\n integrity?: string;\n /** A boolean to set request's keepalive. */\n keepalive?: boolean;\n /** A string to set request's method. */\n method?: string;\n /** A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode. */\n mode?: RequestMode;\n /** A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */\n redirect?: RequestRedirect;\n /** A string whose value is a same-origin URL, \"about:client\", or the empty string, to set request's referrer. */\n referrer?: string;\n /** A referrer policy to set request's referrerPolicy. */\n referrerPolicy?: ReferrerPolicy;\n /** An AbortSignal to set request's signal. */\n signal?: AbortSignal | null;\n /** Can only be null. Used to disassociate request from any Window. */\n window?: null;\n}\n\ninterface ResizeObserverOptions {\n box?: ResizeObserverBoxOptions;\n}\n\ninterface ResponseInit {\n headers?: HeadersInit;\n status?: number;\n statusText?: string;\n}\n\ninterface RsaHashedImportParams extends Algorithm {\n hash: HashAlgorithmIdentifier;\n}\n\ninterface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm {\n hash: KeyAlgorithm;\n}\n\ninterface RsaHashedKeyGenParams extends RsaKeyGenParams {\n hash: HashAlgorithmIdentifier;\n}\n\ninterface RsaKeyAlgorithm extends KeyAlgorithm {\n modulusLength: number;\n publicExponent: BigInteger;\n}\n\ninterface RsaKeyGenParams extends Algorithm {\n modulusLength: number;\n publicExponent: BigInteger;\n}\n\ninterface RsaOaepParams extends Algorithm {\n label?: BufferSource;\n}\n\ninterface RsaOtherPrimesInfo {\n d?: string;\n r?: string;\n t?: string;\n}\n\ninterface RsaPssParams extends Algorithm {\n saltLength: number;\n}\n\ninterface SVGBoundingBoxOptions {\n clipped?: boolean;\n fill?: boolean;\n markers?: boolean;\n stroke?: boolean;\n}\n\ninterface ScrollIntoViewOptions extends ScrollOptions {\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n}\n\ninterface ScrollOptions {\n behavior?: ScrollBehavior;\n}\n\ninterface ScrollToOptions extends ScrollOptions {\n left?: number;\n top?: number;\n}\n\ninterface SecurityPolicyViolationEventInit extends EventInit {\n blockedURI?: string;\n columnNumber?: number;\n disposition: SecurityPolicyViolationEventDisposition;\n documentURI: string;\n effectiveDirective: string;\n lineNumber?: number;\n originalPolicy: string;\n referrer?: string;\n sample?: string;\n sourceFile?: string;\n statusCode: number;\n violatedDirective: string;\n}\n\ninterface ShadowRootInit {\n delegatesFocus?: boolean;\n mode: ShadowRootMode;\n slotAssignment?: SlotAssignmentMode;\n}\n\ninterface ShareData {\n files?: File[];\n text?: string;\n title?: string;\n url?: string;\n}\n\ninterface SpeechSynthesisErrorEventInit extends SpeechSynthesisEventInit {\n error: SpeechSynthesisErrorCode;\n}\n\ninterface SpeechSynthesisEventInit extends EventInit {\n charIndex?: number;\n charLength?: number;\n elapsedTime?: number;\n name?: string;\n utterance: SpeechSynthesisUtterance;\n}\n\ninterface StaticRangeInit {\n endContainer: Node;\n endOffset: number;\n startContainer: Node;\n startOffset: number;\n}\n\ninterface StereoPannerOptions extends AudioNodeOptions {\n pan?: number;\n}\n\ninterface StorageEstimate {\n quota?: number;\n usage?: number;\n}\n\ninterface StorageEventInit extends EventInit {\n key?: string | null;\n newValue?: string | null;\n oldValue?: string | null;\n storageArea?: Storage | null;\n url?: string;\n}\n\ninterface StreamPipeOptions {\n preventAbort?: boolean;\n preventCancel?: boolean;\n /**\n * Pipes this readable stream to a given writable stream destination. The way in which the piping process behaves under various error conditions can be customized with a number of passed options. It returns a promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered.\n *\n * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n *\n * Errors and closures of the source and destination streams propagate as follows:\n *\n * An error in this source readable stream will abort destination, unless preventAbort is truthy. The returned promise will be rejected with the source's error, or with any error that occurs during aborting the destination.\n *\n * An error in destination will cancel this source readable stream, unless preventCancel is truthy. The returned promise will be rejected with the destination's error, or with any error that occurs during canceling the source.\n *\n * When this source readable stream closes, destination will be closed, unless preventClose is truthy. The returned promise will be fulfilled once this process completes, unless an error is encountered while closing the destination, in which case it will be rejected with that error.\n *\n * If destination starts out closed or closing, this source readable stream will be canceled, unless preventCancel is true. The returned promise will be rejected with an error indicating piping to a closed stream failed, or with any error that occurs during canceling the source.\n *\n * The signal option can be set to an AbortSignal to allow aborting an ongoing pipe operation via the corresponding AbortController. In this case, this source readable stream will be canceled, and destination aborted, unless the respective options preventCancel or preventAbort are set.\n */\n preventClose?: boolean;\n signal?: AbortSignal;\n}\n\ninterface StructuredSerializeOptions {\n transfer?: any[];\n}\n\ninterface SubmitEventInit extends EventInit {\n submitter?: HTMLElement | null;\n}\n\ninterface TextDecodeOptions {\n stream?: boolean;\n}\n\ninterface TextDecoderOptions {\n fatal?: boolean;\n ignoreBOM?: boolean;\n}\n\ninterface TextEncoderEncodeIntoResult {\n read?: number;\n written?: number;\n}\n\ninterface TouchEventInit extends EventModifierInit {\n changedTouches?: Touch[];\n targetTouches?: Touch[];\n touches?: Touch[];\n}\n\ninterface TouchInit {\n altitudeAngle?: number;\n azimuthAngle?: number;\n clientX?: number;\n clientY?: number;\n force?: number;\n identifier: number;\n pageX?: number;\n pageY?: number;\n radiusX?: number;\n radiusY?: number;\n rotationAngle?: number;\n screenX?: number;\n screenY?: number;\n target: EventTarget;\n touchType?: TouchType;\n}\n\ninterface TrackEventInit extends EventInit {\n track?: TextTrack | null;\n}\n\ninterface Transformer {\n flush?: TransformerFlushCallback;\n readableType?: undefined;\n start?: TransformerStartCallback;\n transform?: TransformerTransformCallback;\n writableType?: undefined;\n}\n\ninterface TransitionEventInit extends EventInit {\n elapsedTime?: number;\n propertyName?: string;\n pseudoElement?: string;\n}\n\ninterface UIEventInit extends EventInit {\n detail?: number;\n view?: Window | null;\n /** @deprecated */\n which?: number;\n}\n\ninterface ULongRange {\n max?: number;\n min?: number;\n}\n\ninterface UnderlyingSink {\n abort?: UnderlyingSinkAbortCallback;\n close?: UnderlyingSinkCloseCallback;\n start?: UnderlyingSinkStartCallback;\n type?: undefined;\n write?: UnderlyingSinkWriteCallback;\n}\n\ninterface UnderlyingSource {\n cancel?: UnderlyingSourceCancelCallback;\n pull?: UnderlyingSourcePullCallback;\n start?: UnderlyingSourceStartCallback;\n type?: undefined;\n}\n\ninterface VideoConfiguration {\n bitrate: number;\n colorGamut?: ColorGamut;\n contentType: string;\n framerate: number;\n hdrMetadataType?: HdrMetadataType;\n height: number;\n scalabilityMode?: string;\n transferFunction?: TransferFunction;\n width: number;\n}\n\ninterface WaveShaperOptions extends AudioNodeOptions {\n curve?: number[] | Float32Array;\n oversample?: OverSampleType;\n}\n\ninterface WebGLContextAttributes {\n alpha?: boolean;\n antialias?: boolean;\n depth?: boolean;\n desynchronized?: boolean;\n failIfMajorPerformanceCaveat?: boolean;\n powerPreference?: WebGLPowerPreference;\n premultipliedAlpha?: boolean;\n preserveDrawingBuffer?: boolean;\n stencil?: boolean;\n}\n\ninterface WebGLContextEventInit extends EventInit {\n statusMessage?: string;\n}\n\ninterface WheelEventInit extends MouseEventInit {\n deltaMode?: number;\n deltaX?: number;\n deltaY?: number;\n deltaZ?: number;\n}\n\ninterface WindowPostMessageOptions extends StructuredSerializeOptions {\n targetOrigin?: string;\n}\n\ninterface WorkerOptions {\n credentials?: RequestCredentials;\n name?: string;\n type?: WorkerType;\n}\n\ninterface WorkletOptions {\n credentials?: RequestCredentials;\n}\n\ntype NodeFilter = ((node: Node) => number) | { acceptNode(node: Node): number; };\n\ndeclare var NodeFilter: {\n readonly FILTER_ACCEPT: number;\n readonly FILTER_REJECT: number;\n readonly FILTER_SKIP: number;\n readonly SHOW_ALL: number;\n readonly SHOW_ATTRIBUTE: number;\n readonly SHOW_CDATA_SECTION: number;\n readonly SHOW_COMMENT: number;\n readonly SHOW_DOCUMENT: number;\n readonly SHOW_DOCUMENT_FRAGMENT: number;\n readonly SHOW_DOCUMENT_TYPE: number;\n readonly SHOW_ELEMENT: number;\n readonly SHOW_ENTITY: number;\n readonly SHOW_ENTITY_REFERENCE: number;\n readonly SHOW_NOTATION: number;\n readonly SHOW_PROCESSING_INSTRUCTION: number;\n readonly SHOW_TEXT: number;\n};\n\ntype XPathNSResolver = ((prefix: string | null) => string | null) | { lookupNamespaceURI(prefix: string | null): string | null; };\n\n/** The ANGLE_instanced_arrays extension is part of the WebGL API and allows to draw the same object, or groups of similar objects multiple times, if they share the same vertex data, primitive count and type. */\ninterface ANGLE_instanced_arrays {\n drawArraysInstancedANGLE(mode: GLenum, first: GLint, count: GLsizei, primcount: GLsizei): void;\n drawElementsInstancedANGLE(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, primcount: GLsizei): void;\n vertexAttribDivisorANGLE(index: GLuint, divisor: GLuint): void;\n readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: GLenum;\n}\n\ninterface ARIAMixin {\n ariaAtomic: string;\n ariaAutoComplete: string;\n ariaBusy: string;\n ariaChecked: string;\n ariaColCount: string;\n ariaColIndex: string;\n ariaColSpan: string;\n ariaCurrent: string;\n ariaDisabled: string;\n ariaExpanded: string;\n ariaHasPopup: string;\n ariaHidden: string;\n ariaKeyShortcuts: string;\n ariaLabel: string;\n ariaLevel: string;\n ariaLive: string;\n ariaModal: string;\n ariaMultiLine: string;\n ariaMultiSelectable: string;\n ariaOrientation: string;\n ariaPlaceholder: string;\n ariaPosInSet: string;\n ariaPressed: string;\n ariaReadOnly: string;\n ariaRequired: string;\n ariaRoleDescription: string;\n ariaRowCount: string;\n ariaRowIndex: string;\n ariaRowSpan: string;\n ariaSelected: string;\n ariaSetSize: string;\n ariaSort: string;\n ariaValueMax: string;\n ariaValueMin: string;\n ariaValueNow: string;\n ariaValueText: string;\n}\n\n/** A controller object that allows you to abort one or more DOM requests as and when desired. */\ninterface AbortController {\n /** Returns the AbortSignal object associated with this object. */\n readonly signal: AbortSignal;\n /** Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted. */\n abort(): void;\n}\n\ndeclare var AbortController: {\n prototype: AbortController;\n new(): AbortController;\n};\n\ninterface AbortSignalEventMap {\n \"abort\": Event;\n}\n\n/** A signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object. */\ninterface AbortSignal extends EventTarget {\n /** Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise. */\n readonly aborted: boolean;\n onabort: ((this: AbortSignal, ev: Event) => any) | null;\n addEventListener(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AbortSignal: {\n prototype: AbortSignal;\n new(): AbortSignal;\n // abort(): AbortSignal; - To be re-added in the future\n};\n\ninterface AbstractRange {\n /** Returns true if range is collapsed, and false otherwise. */\n readonly collapsed: boolean;\n /** Returns range's end node. */\n readonly endContainer: Node;\n /** Returns range's end offset. */\n readonly endOffset: number;\n /** Returns range's start node. */\n readonly startContainer: Node;\n /** Returns range's start offset. */\n readonly startOffset: number;\n}\n\ndeclare var AbstractRange: {\n prototype: AbstractRange;\n new(): AbstractRange;\n};\n\ninterface AbstractWorkerEventMap {\n \"error\": ErrorEvent;\n}\n\ninterface AbstractWorker {\n onerror: ((this: AbstractWorker, ev: ErrorEvent) => any) | null;\n addEventListener(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** A node able to provide real-time frequency and time-domain analysis information. It is an AudioNode that passes the audio stream unchanged from the input to the output, but allows you to take the generated data, process it, and create audio visualizations. */\ninterface AnalyserNode extends AudioNode {\n fftSize: number;\n readonly frequencyBinCount: number;\n maxDecibels: number;\n minDecibels: number;\n smoothingTimeConstant: number;\n getByteFrequencyData(array: Uint8Array): void;\n getByteTimeDomainData(array: Uint8Array): void;\n getFloatFrequencyData(array: Float32Array): void;\n getFloatTimeDomainData(array: Float32Array): void;\n}\n\ndeclare var AnalyserNode: {\n prototype: AnalyserNode;\n new(context: BaseAudioContext, options?: AnalyserOptions): AnalyserNode;\n};\n\ninterface Animatable {\n animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions): Animation;\n getAnimations(options?: GetAnimationsOptions): Animation[];\n}\n\ninterface AnimationEventMap {\n \"cancel\": AnimationPlaybackEvent;\n \"finish\": AnimationPlaybackEvent;\n \"remove\": Event;\n}\n\ninterface Animation extends EventTarget {\n currentTime: CSSNumberish | null;\n effect: AnimationEffect | null;\n readonly finished: Promise;\n id: string;\n oncancel: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;\n onfinish: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;\n onremove: ((this: Animation, ev: Event) => any) | null;\n readonly pending: boolean;\n readonly playState: AnimationPlayState;\n playbackRate: number;\n readonly ready: Promise;\n readonly replaceState: AnimationReplaceState;\n startTime: CSSNumberish | null;\n timeline: AnimationTimeline | null;\n cancel(): void;\n commitStyles(): void;\n finish(): void;\n pause(): void;\n persist(): void;\n play(): void;\n reverse(): void;\n updatePlaybackRate(playbackRate: number): void;\n addEventListener(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Animation: {\n prototype: Animation;\n new(effect?: AnimationEffect | null, timeline?: AnimationTimeline | null): Animation;\n};\n\ninterface AnimationEffect {\n getComputedTiming(): ComputedEffectTiming;\n getTiming(): EffectTiming;\n updateTiming(timing?: OptionalEffectTiming): void;\n}\n\ndeclare var AnimationEffect: {\n prototype: AnimationEffect;\n new(): AnimationEffect;\n};\n\n/** Events providing information related to animations. */\ninterface AnimationEvent extends Event {\n readonly animationName: string;\n readonly elapsedTime: number;\n readonly pseudoElement: string;\n}\n\ndeclare var AnimationEvent: {\n prototype: AnimationEvent;\n new(type: string, animationEventInitDict?: AnimationEventInit): AnimationEvent;\n};\n\ninterface AnimationFrameProvider {\n cancelAnimationFrame(handle: number): void;\n requestAnimationFrame(callback: FrameRequestCallback): number;\n}\n\ninterface AnimationPlaybackEvent extends Event {\n readonly currentTime: CSSNumberish | null;\n readonly timelineTime: CSSNumberish | null;\n}\n\ndeclare var AnimationPlaybackEvent: {\n prototype: AnimationPlaybackEvent;\n new(type: string, eventInitDict?: AnimationPlaybackEventInit): AnimationPlaybackEvent;\n};\n\ninterface AnimationTimeline {\n readonly currentTime: number | null;\n}\n\ndeclare var AnimationTimeline: {\n prototype: AnimationTimeline;\n new(): AnimationTimeline;\n};\n\n/** A DOM element's attribute as an object. In most DOM methods, you will probably directly retrieve the attribute as a string (e.g., Element.getAttribute(), but certain functions (e.g., Element.getAttributeNode()) or means of iterating give Attr types. */\ninterface Attr extends Node {\n readonly localName: string;\n readonly name: string;\n readonly namespaceURI: string | null;\n readonly ownerDocument: Document;\n readonly ownerElement: Element | null;\n readonly prefix: string | null;\n readonly specified: boolean;\n value: string;\n}\n\ndeclare var Attr: {\n prototype: Attr;\n new(): Attr;\n};\n\n/** A short audio asset residing in memory, created from an audio file using the AudioContext.decodeAudioData() method, or from raw data using AudioContext.createBuffer(). Once put into an AudioBuffer, the audio can then be played by being passed into an AudioBufferSourceNode. */\ninterface AudioBuffer {\n readonly duration: number;\n readonly length: number;\n readonly numberOfChannels: number;\n readonly sampleRate: number;\n copyFromChannel(destination: Float32Array, channelNumber: number, bufferOffset?: number): void;\n copyToChannel(source: Float32Array, channelNumber: number, bufferOffset?: number): void;\n getChannelData(channel: number): Float32Array;\n}\n\ndeclare var AudioBuffer: {\n prototype: AudioBuffer;\n new(options: AudioBufferOptions): AudioBuffer;\n};\n\n/** An AudioScheduledSourceNode which represents an audio source consisting of in-memory audio data, stored in an AudioBuffer. It's especially useful for playing back audio which has particularly stringent timing accuracy requirements, such as for sounds that must match a specific rhythm and can be kept in memory rather than being played from disk or the network. */\ninterface AudioBufferSourceNode extends AudioScheduledSourceNode {\n buffer: AudioBuffer | null;\n readonly detune: AudioParam;\n loop: boolean;\n loopEnd: number;\n loopStart: number;\n readonly playbackRate: AudioParam;\n start(when?: number, offset?: number, duration?: number): void;\n addEventListener(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioBufferSourceNode: {\n prototype: AudioBufferSourceNode;\n new(context: BaseAudioContext, options?: AudioBufferSourceOptions): AudioBufferSourceNode;\n};\n\n/** An audio-processing graph built from audio modules linked together, each represented by an AudioNode. */\ninterface AudioContext extends BaseAudioContext {\n readonly baseLatency: number;\n close(): Promise;\n createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode;\n createMediaStreamDestination(): MediaStreamAudioDestinationNode;\n createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode;\n getOutputTimestamp(): AudioTimestamp;\n resume(): Promise;\n suspend(): Promise;\n addEventListener(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioContext: {\n prototype: AudioContext;\n new(contextOptions?: AudioContextOptions): AudioContext;\n};\n\n/** AudioDestinationNode has no output (as it is the output, no more AudioNode can be linked after it in the audio graph) and one input. The number of channels in the input must be between 0 and the maxChannelCount value or an exception is raised. */\ninterface AudioDestinationNode extends AudioNode {\n readonly maxChannelCount: number;\n}\n\ndeclare var AudioDestinationNode: {\n prototype: AudioDestinationNode;\n new(): AudioDestinationNode;\n};\n\n/** The position and orientation of the unique person listening to the audio scene, and is used in audio spatialization. All PannerNodes spatialize in relation to the AudioListener stored in the BaseAudioContext.listener attribute. */\ninterface AudioListener {\n readonly forwardX: AudioParam;\n readonly forwardY: AudioParam;\n readonly forwardZ: AudioParam;\n readonly positionX: AudioParam;\n readonly positionY: AudioParam;\n readonly positionZ: AudioParam;\n readonly upX: AudioParam;\n readonly upY: AudioParam;\n readonly upZ: AudioParam;\n /** @deprecated */\n setOrientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): void;\n /** @deprecated */\n setPosition(x: number, y: number, z: number): void;\n}\n\ndeclare var AudioListener: {\n prototype: AudioListener;\n new(): AudioListener;\n};\n\n/** A generic interface for representing an audio processing module. Examples include: */\ninterface AudioNode extends EventTarget {\n channelCount: number;\n channelCountMode: ChannelCountMode;\n channelInterpretation: ChannelInterpretation;\n readonly context: BaseAudioContext;\n readonly numberOfInputs: number;\n readonly numberOfOutputs: number;\n connect(destinationNode: AudioNode, output?: number, input?: number): AudioNode;\n connect(destinationParam: AudioParam, output?: number): void;\n disconnect(): void;\n disconnect(output: number): void;\n disconnect(destinationNode: AudioNode): void;\n disconnect(destinationNode: AudioNode, output: number): void;\n disconnect(destinationNode: AudioNode, output: number, input: number): void;\n disconnect(destinationParam: AudioParam): void;\n disconnect(destinationParam: AudioParam, output: number): void;\n}\n\ndeclare var AudioNode: {\n prototype: AudioNode;\n new(): AudioNode;\n};\n\n/** The Web Audio API's AudioParam interface represents an audio-related parameter, usually a parameter of an AudioNode (such as GainNode.gain). */\ninterface AudioParam {\n automationRate: AutomationRate;\n readonly defaultValue: number;\n readonly maxValue: number;\n readonly minValue: number;\n value: number;\n cancelAndHoldAtTime(cancelTime: number): AudioParam;\n cancelScheduledValues(cancelTime: number): AudioParam;\n exponentialRampToValueAtTime(value: number, endTime: number): AudioParam;\n linearRampToValueAtTime(value: number, endTime: number): AudioParam;\n setTargetAtTime(target: number, startTime: number, timeConstant: number): AudioParam;\n setValueAtTime(value: number, startTime: number): AudioParam;\n setValueCurveAtTime(values: number[] | Float32Array, startTime: number, duration: number): AudioParam;\n}\n\ndeclare var AudioParam: {\n prototype: AudioParam;\n new(): AudioParam;\n};\n\ninterface AudioParamMap {\n forEach(callbackfn: (value: AudioParam, key: string, parent: AudioParamMap) => void, thisArg?: any): void;\n}\n\ndeclare var AudioParamMap: {\n prototype: AudioParamMap;\n new(): AudioParamMap;\n};\n\n/**\n * The Web Audio API events that occur when a ScriptProcessorNode input buffer is ready to be processed.\n * @deprecated As of the August 29 2014 Web Audio API spec publication, this feature has been marked as deprecated, and is soon to be replaced by AudioWorklet.\n */\ninterface AudioProcessingEvent extends Event {\n /** @deprecated */\n readonly inputBuffer: AudioBuffer;\n /** @deprecated */\n readonly outputBuffer: AudioBuffer;\n /** @deprecated */\n readonly playbackTime: number;\n}\n\n/** @deprecated */\ndeclare var AudioProcessingEvent: {\n prototype: AudioProcessingEvent;\n new(type: string, eventInitDict: AudioProcessingEventInit): AudioProcessingEvent;\n};\n\ninterface AudioScheduledSourceNodeEventMap {\n \"ended\": Event;\n}\n\ninterface AudioScheduledSourceNode extends AudioNode {\n onended: ((this: AudioScheduledSourceNode, ev: Event) => any) | null;\n start(when?: number): void;\n stop(when?: number): void;\n addEventListener(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioScheduledSourceNode: {\n prototype: AudioScheduledSourceNode;\n new(): AudioScheduledSourceNode;\n};\n\n/** Available only in secure contexts. */\ninterface AudioWorklet extends Worklet {\n}\n\ndeclare var AudioWorklet: {\n prototype: AudioWorklet;\n new(): AudioWorklet;\n};\n\ninterface AudioWorkletNodeEventMap {\n \"processorerror\": Event;\n}\n\n/** Available only in secure contexts. */\ninterface AudioWorkletNode extends AudioNode {\n onprocessorerror: ((this: AudioWorkletNode, ev: Event) => any) | null;\n readonly parameters: AudioParamMap;\n readonly port: MessagePort;\n addEventListener(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioWorkletNode: {\n prototype: AudioWorkletNode;\n new(context: BaseAudioContext, name: string, options?: AudioWorkletNodeOptions): AudioWorkletNode;\n};\n\n/** Available only in secure contexts. */\ninterface AuthenticatorAssertionResponse extends AuthenticatorResponse {\n readonly authenticatorData: ArrayBuffer;\n readonly signature: ArrayBuffer;\n readonly userHandle: ArrayBuffer | null;\n}\n\ndeclare var AuthenticatorAssertionResponse: {\n prototype: AuthenticatorAssertionResponse;\n new(): AuthenticatorAssertionResponse;\n};\n\n/** Available only in secure contexts. */\ninterface AuthenticatorAttestationResponse extends AuthenticatorResponse {\n readonly attestationObject: ArrayBuffer;\n}\n\ndeclare var AuthenticatorAttestationResponse: {\n prototype: AuthenticatorAttestationResponse;\n new(): AuthenticatorAttestationResponse;\n};\n\n/** Available only in secure contexts. */\ninterface AuthenticatorResponse {\n readonly clientDataJSON: ArrayBuffer;\n}\n\ndeclare var AuthenticatorResponse: {\n prototype: AuthenticatorResponse;\n new(): AuthenticatorResponse;\n};\n\ninterface BarProp {\n readonly visible: boolean;\n}\n\ndeclare var BarProp: {\n prototype: BarProp;\n new(): BarProp;\n};\n\ninterface BaseAudioContextEventMap {\n \"statechange\": Event;\n}\n\ninterface BaseAudioContext extends EventTarget {\n /** Available only in secure contexts. */\n readonly audioWorklet: AudioWorklet;\n readonly currentTime: number;\n readonly destination: AudioDestinationNode;\n readonly listener: AudioListener;\n onstatechange: ((this: BaseAudioContext, ev: Event) => any) | null;\n readonly sampleRate: number;\n readonly state: AudioContextState;\n createAnalyser(): AnalyserNode;\n createBiquadFilter(): BiquadFilterNode;\n createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer;\n createBufferSource(): AudioBufferSourceNode;\n createChannelMerger(numberOfInputs?: number): ChannelMergerNode;\n createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode;\n createConstantSource(): ConstantSourceNode;\n createConvolver(): ConvolverNode;\n createDelay(maxDelayTime?: number): DelayNode;\n createDynamicsCompressor(): DynamicsCompressorNode;\n createGain(): GainNode;\n createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode;\n createOscillator(): OscillatorNode;\n createPanner(): PannerNode;\n createPeriodicWave(real: number[] | Float32Array, imag: number[] | Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;\n /** @deprecated */\n createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode;\n createStereoPanner(): StereoPannerNode;\n createWaveShaper(): WaveShaperNode;\n decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback | null, errorCallback?: DecodeErrorCallback | null): Promise;\n addEventListener(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var BaseAudioContext: {\n prototype: BaseAudioContext;\n new(): BaseAudioContext;\n};\n\n/** The beforeunload event is fired when the window, the document and its resources are about to be unloaded. */\ninterface BeforeUnloadEvent extends Event {\n returnValue: any;\n}\n\ndeclare var BeforeUnloadEvent: {\n prototype: BeforeUnloadEvent;\n new(): BeforeUnloadEvent;\n};\n\n/** A simple low-order filter, and is created using the AudioContext.createBiquadFilter() method. It is an AudioNode that can represent different kinds of filters, tone control devices, and graphic equalizers. */\ninterface BiquadFilterNode extends AudioNode {\n readonly Q: AudioParam;\n readonly detune: AudioParam;\n readonly frequency: AudioParam;\n readonly gain: AudioParam;\n type: BiquadFilterType;\n getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;\n}\n\ndeclare var BiquadFilterNode: {\n prototype: BiquadFilterNode;\n new(context: BaseAudioContext, options?: BiquadFilterOptions): BiquadFilterNode;\n};\n\n/** A file-like object of immutable, raw data. Blobs represent data that isn't necessarily in a JavaScript-native format. The File interface is based on Blob, inheriting blob functionality and expanding it to support files on the user's system. */\ninterface Blob {\n readonly size: number;\n readonly type: string;\n arrayBuffer(): Promise;\n slice(start?: number, end?: number, contentType?: string): Blob;\n stream(): ReadableStream;\n text(): Promise;\n}\n\ndeclare var Blob: {\n prototype: Blob;\n new(blobParts?: BlobPart[], options?: BlobPropertyBag): Blob;\n};\n\ninterface BlobEvent extends Event {\n readonly data: Blob;\n readonly timecode: DOMHighResTimeStamp;\n}\n\ndeclare var BlobEvent: {\n prototype: BlobEvent;\n new(type: string, eventInitDict: BlobEventInit): BlobEvent;\n};\n\ninterface Body {\n readonly body: ReadableStream | null;\n readonly bodyUsed: boolean;\n arrayBuffer(): Promise;\n blob(): Promise;\n formData(): Promise;\n json(): Promise;\n text(): Promise;\n}\n\ninterface BroadcastChannelEventMap {\n \"message\": MessageEvent;\n \"messageerror\": MessageEvent;\n}\n\ninterface BroadcastChannel extends EventTarget {\n /** Returns the channel name (as passed to the constructor). */\n readonly name: string;\n onmessage: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;\n onmessageerror: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;\n /** Closes the BroadcastChannel object, opening it up to garbage collection. */\n close(): void;\n /** Sends the given message to other BroadcastChannel objects set up for this channel. Messages can be structured objects, e.g. nested objects and arrays. */\n postMessage(message: any): void;\n addEventListener(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var BroadcastChannel: {\n prototype: BroadcastChannel;\n new(name: string): BroadcastChannel;\n};\n\n/** This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. */\ninterface ByteLengthQueuingStrategy extends QueuingStrategy {\n readonly highWaterMark: number;\n readonly size: QueuingStrategySize;\n}\n\ndeclare var ByteLengthQueuingStrategy: {\n prototype: ByteLengthQueuingStrategy;\n new(init: QueuingStrategyInit): ByteLengthQueuingStrategy;\n};\n\n/** A CDATA section that can be used within XML to include extended portions of unescaped text. The symbols < and & don’t need escaping as they normally do when inside a CDATA section. */\ninterface CDATASection extends Text {\n}\n\ndeclare var CDATASection: {\n prototype: CDATASection;\n new(): CDATASection;\n};\n\ninterface CSSAnimation extends Animation {\n readonly animationName: string;\n addEventListener(type: K, listener: (this: CSSAnimation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: CSSAnimation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var CSSAnimation: {\n prototype: CSSAnimation;\n new(): CSSAnimation;\n};\n\n/** A single condition CSS at-rule, which consists of a condition and a statement block. It is a child of CSSGroupingRule. */\ninterface CSSConditionRule extends CSSGroupingRule {\n conditionText: string;\n}\n\ndeclare var CSSConditionRule: {\n prototype: CSSConditionRule;\n new(): CSSConditionRule;\n};\n\ninterface CSSCounterStyleRule extends CSSRule {\n additiveSymbols: string;\n fallback: string;\n name: string;\n negative: string;\n pad: string;\n prefix: string;\n range: string;\n speakAs: string;\n suffix: string;\n symbols: string;\n system: string;\n}\n\ndeclare var CSSCounterStyleRule: {\n prototype: CSSCounterStyleRule;\n new(): CSSCounterStyleRule;\n};\n\ninterface CSSFontFaceRule extends CSSRule {\n readonly style: CSSStyleDeclaration;\n}\n\ndeclare var CSSFontFaceRule: {\n prototype: CSSFontFaceRule;\n new(): CSSFontFaceRule;\n};\n\n/** Any CSS at-rule that contains other rules nested within it. */\ninterface CSSGroupingRule extends CSSRule {\n readonly cssRules: CSSRuleList;\n deleteRule(index: number): void;\n insertRule(rule: string, index?: number): number;\n}\n\ndeclare var CSSGroupingRule: {\n prototype: CSSGroupingRule;\n new(): CSSGroupingRule;\n};\n\ninterface CSSImportRule extends CSSRule {\n readonly href: string;\n readonly media: MediaList;\n readonly styleSheet: CSSStyleSheet;\n}\n\ndeclare var CSSImportRule: {\n prototype: CSSImportRule;\n new(): CSSImportRule;\n};\n\n/** An object representing a set of style for a given keyframe. It corresponds to the contains of a single keyframe of a @keyframes at-rule. It implements the CSSRule interface with a type value of 8 (CSSRule.KEYFRAME_RULE). */\ninterface CSSKeyframeRule extends CSSRule {\n keyText: string;\n readonly style: CSSStyleDeclaration;\n}\n\ndeclare var CSSKeyframeRule: {\n prototype: CSSKeyframeRule;\n new(): CSSKeyframeRule;\n};\n\n/** An object representing a complete set of keyframes for a CSS animation. It corresponds to the contains of a whole @keyframes at-rule. It implements the CSSRule interface with a type value of 7 (CSSRule.KEYFRAMES_RULE). */\ninterface CSSKeyframesRule extends CSSRule {\n readonly cssRules: CSSRuleList;\n name: string;\n appendRule(rule: string): void;\n deleteRule(select: string): void;\n findRule(select: string): CSSKeyframeRule | null;\n}\n\ndeclare var CSSKeyframesRule: {\n prototype: CSSKeyframesRule;\n new(): CSSKeyframesRule;\n};\n\n/** A single CSS @media rule. It implements the CSSConditionRule interface, and therefore the CSSGroupingRule and the CSSRule interface with a type value of 4 (CSSRule.MEDIA_RULE). */\ninterface CSSMediaRule extends CSSConditionRule {\n readonly media: MediaList;\n}\n\ndeclare var CSSMediaRule: {\n prototype: CSSMediaRule;\n new(): CSSMediaRule;\n};\n\n/** An object representing a single CSS @namespace at-rule. It implements the CSSRule interface, with a type value of 10 (CSSRule.NAMESPACE_RULE). */\ninterface CSSNamespaceRule extends CSSRule {\n readonly namespaceURI: string;\n readonly prefix: string;\n}\n\ndeclare var CSSNamespaceRule: {\n prototype: CSSNamespaceRule;\n new(): CSSNamespaceRule;\n};\n\n/** CSSPageRule is an interface representing a single CSS @page rule. It implements the CSSRule interface with a type value of 6 (CSSRule.PAGE_RULE). */\ninterface CSSPageRule extends CSSGroupingRule {\n selectorText: string;\n readonly style: CSSStyleDeclaration;\n}\n\ndeclare var CSSPageRule: {\n prototype: CSSPageRule;\n new(): CSSPageRule;\n};\n\n/** A single CSS rule. There are several types of rules, listed in the Type constants section below. */\ninterface CSSRule {\n cssText: string;\n readonly parentRule: CSSRule | null;\n readonly parentStyleSheet: CSSStyleSheet | null;\n /** @deprecated */\n readonly type: number;\n readonly CHARSET_RULE: number;\n readonly FONT_FACE_RULE: number;\n readonly IMPORT_RULE: number;\n readonly KEYFRAMES_RULE: number;\n readonly KEYFRAME_RULE: number;\n readonly MEDIA_RULE: number;\n readonly NAMESPACE_RULE: number;\n readonly PAGE_RULE: number;\n readonly STYLE_RULE: number;\n readonly SUPPORTS_RULE: number;\n}\n\ndeclare var CSSRule: {\n prototype: CSSRule;\n new(): CSSRule;\n readonly CHARSET_RULE: number;\n readonly FONT_FACE_RULE: number;\n readonly IMPORT_RULE: number;\n readonly KEYFRAMES_RULE: number;\n readonly KEYFRAME_RULE: number;\n readonly MEDIA_RULE: number;\n readonly NAMESPACE_RULE: number;\n readonly PAGE_RULE: number;\n readonly STYLE_RULE: number;\n readonly SUPPORTS_RULE: number;\n};\n\n/** A CSSRuleList is an (indirect-modify only) array-like object containing an ordered collection of CSSRule objects. */\ninterface CSSRuleList {\n readonly length: number;\n item(index: number): CSSRule | null;\n [index: number]: CSSRule;\n}\n\ndeclare var CSSRuleList: {\n prototype: CSSRuleList;\n new(): CSSRuleList;\n};\n\n/** An object that is a CSS declaration block, and exposes style information and various style-related methods and properties. */\ninterface CSSStyleDeclaration {\n accentColor: string;\n alignContent: string;\n alignItems: string;\n alignSelf: string;\n alignmentBaseline: string;\n all: string;\n animation: string;\n animationDelay: string;\n animationDirection: string;\n animationDuration: string;\n animationFillMode: string;\n animationIterationCount: string;\n animationName: string;\n animationPlayState: string;\n animationTimingFunction: string;\n appearance: string;\n aspectRatio: string;\n backfaceVisibility: string;\n background: string;\n backgroundAttachment: string;\n backgroundBlendMode: string;\n backgroundClip: string;\n backgroundColor: string;\n backgroundImage: string;\n backgroundOrigin: string;\n backgroundPosition: string;\n backgroundPositionX: string;\n backgroundPositionY: string;\n backgroundRepeat: string;\n backgroundSize: string;\n baselineShift: string;\n blockSize: string;\n border: string;\n borderBlock: string;\n borderBlockColor: string;\n borderBlockEnd: string;\n borderBlockEndColor: string;\n borderBlockEndStyle: string;\n borderBlockEndWidth: string;\n borderBlockStart: string;\n borderBlockStartColor: string;\n borderBlockStartStyle: string;\n borderBlockStartWidth: string;\n borderBlockStyle: string;\n borderBlockWidth: string;\n borderBottom: string;\n borderBottomColor: string;\n borderBottomLeftRadius: string;\n borderBottomRightRadius: string;\n borderBottomStyle: string;\n borderBottomWidth: string;\n borderCollapse: string;\n borderColor: string;\n borderEndEndRadius: string;\n borderEndStartRadius: string;\n borderImage: string;\n borderImageOutset: string;\n borderImageRepeat: string;\n borderImageSlice: string;\n borderImageSource: string;\n borderImageWidth: string;\n borderInline: string;\n borderInlineColor: string;\n borderInlineEnd: string;\n borderInlineEndColor: string;\n borderInlineEndStyle: string;\n borderInlineEndWidth: string;\n borderInlineStart: string;\n borderInlineStartColor: string;\n borderInlineStartStyle: string;\n borderInlineStartWidth: string;\n borderInlineStyle: string;\n borderInlineWidth: string;\n borderLeft: string;\n borderLeftColor: string;\n borderLeftStyle: string;\n borderLeftWidth: string;\n borderRadius: string;\n borderRight: string;\n borderRightColor: string;\n borderRightStyle: string;\n borderRightWidth: string;\n borderSpacing: string;\n borderStartEndRadius: string;\n borderStartStartRadius: string;\n borderStyle: string;\n borderTop: string;\n borderTopColor: string;\n borderTopLeftRadius: string;\n borderTopRightRadius: string;\n borderTopStyle: string;\n borderTopWidth: string;\n borderWidth: string;\n bottom: string;\n boxShadow: string;\n boxSizing: string;\n breakAfter: string;\n breakBefore: string;\n breakInside: string;\n captionSide: string;\n caretColor: string;\n clear: string;\n /** @deprecated */\n clip: string;\n clipPath: string;\n clipRule: string;\n color: string;\n colorInterpolation: string;\n colorInterpolationFilters: string;\n colorScheme: string;\n columnCount: string;\n columnFill: string;\n columnGap: string;\n columnRule: string;\n columnRuleColor: string;\n columnRuleStyle: string;\n columnRuleWidth: string;\n columnSpan: string;\n columnWidth: string;\n columns: string;\n contain: string;\n content: string;\n counterIncrement: string;\n counterReset: string;\n counterSet: string;\n cssFloat: string;\n cssText: string;\n cursor: string;\n direction: string;\n display: string;\n dominantBaseline: string;\n emptyCells: string;\n fill: string;\n fillOpacity: string;\n fillRule: string;\n filter: string;\n flex: string;\n flexBasis: string;\n flexDirection: string;\n flexFlow: string;\n flexGrow: string;\n flexShrink: string;\n flexWrap: string;\n float: string;\n floodColor: string;\n floodOpacity: string;\n font: string;\n fontFamily: string;\n fontFeatureSettings: string;\n fontKerning: string;\n fontOpticalSizing: string;\n fontSize: string;\n fontSizeAdjust: string;\n fontStretch: string;\n fontStyle: string;\n fontSynthesis: string;\n fontVariant: string;\n /** @deprecated */\n fontVariantAlternates: string;\n fontVariantCaps: string;\n fontVariantEastAsian: string;\n fontVariantLigatures: string;\n fontVariantNumeric: string;\n fontVariantPosition: string;\n fontVariationSettings: string;\n fontWeight: string;\n gap: string;\n grid: string;\n gridArea: string;\n gridAutoColumns: string;\n gridAutoFlow: string;\n gridAutoRows: string;\n gridColumn: string;\n gridColumnEnd: string;\n /** @deprecated This is a legacy alias of `columnGap`. */\n gridColumnGap: string;\n gridColumnStart: string;\n /** @deprecated This is a legacy alias of `gap`. */\n gridGap: string;\n gridRow: string;\n gridRowEnd: string;\n /** @deprecated This is a legacy alias of `rowGap`. */\n gridRowGap: string;\n gridRowStart: string;\n gridTemplate: string;\n gridTemplateAreas: string;\n gridTemplateColumns: string;\n gridTemplateRows: string;\n height: string;\n hyphens: string;\n /** @deprecated */\n imageOrientation: string;\n imageRendering: string;\n inlineSize: string;\n inset: string;\n insetBlock: string;\n insetBlockEnd: string;\n insetBlockStart: string;\n insetInline: string;\n insetInlineEnd: string;\n insetInlineStart: string;\n isolation: string;\n justifyContent: string;\n justifyItems: string;\n justifySelf: string;\n left: string;\n readonly length: number;\n letterSpacing: string;\n lightingColor: string;\n lineBreak: string;\n lineHeight: string;\n listStyle: string;\n listStyleImage: string;\n listStylePosition: string;\n listStyleType: string;\n margin: string;\n marginBlock: string;\n marginBlockEnd: string;\n marginBlockStart: string;\n marginBottom: string;\n marginInline: string;\n marginInlineEnd: string;\n marginInlineStart: string;\n marginLeft: string;\n marginRight: string;\n marginTop: string;\n marker: string;\n markerEnd: string;\n markerMid: string;\n markerStart: string;\n mask: string;\n maskType: string;\n maxBlockSize: string;\n maxHeight: string;\n maxInlineSize: string;\n maxWidth: string;\n minBlockSize: string;\n minHeight: string;\n minInlineSize: string;\n minWidth: string;\n mixBlendMode: string;\n objectFit: string;\n objectPosition: string;\n offset: string;\n offsetAnchor: string;\n offsetDistance: string;\n offsetPath: string;\n offsetRotate: string;\n opacity: string;\n order: string;\n orphans: string;\n outline: string;\n outlineColor: string;\n outlineOffset: string;\n outlineStyle: string;\n outlineWidth: string;\n overflow: string;\n overflowAnchor: string;\n overflowWrap: string;\n overflowX: string;\n overflowY: string;\n overscrollBehavior: string;\n overscrollBehaviorBlock: string;\n overscrollBehaviorInline: string;\n overscrollBehaviorX: string;\n overscrollBehaviorY: string;\n padding: string;\n paddingBlock: string;\n paddingBlockEnd: string;\n paddingBlockStart: string;\n paddingBottom: string;\n paddingInline: string;\n paddingInlineEnd: string;\n paddingInlineStart: string;\n paddingLeft: string;\n paddingRight: string;\n paddingTop: string;\n pageBreakAfter: string;\n pageBreakBefore: string;\n pageBreakInside: string;\n paintOrder: string;\n readonly parentRule: CSSRule | null;\n perspective: string;\n perspectiveOrigin: string;\n placeContent: string;\n placeItems: string;\n placeSelf: string;\n pointerEvents: string;\n position: string;\n quotes: string;\n resize: string;\n right: string;\n rotate: string;\n rowGap: string;\n rubyPosition: string;\n scale: string;\n scrollBehavior: string;\n scrollMargin: string;\n scrollMarginBlock: string;\n scrollMarginBlockEnd: string;\n scrollMarginBlockStart: string;\n scrollMarginBottom: string;\n scrollMarginInline: string;\n scrollMarginInlineEnd: string;\n scrollMarginInlineStart: string;\n scrollMarginLeft: string;\n scrollMarginRight: string;\n scrollMarginTop: string;\n scrollPadding: string;\n scrollPaddingBlock: string;\n scrollPaddingBlockEnd: string;\n scrollPaddingBlockStart: string;\n scrollPaddingBottom: string;\n scrollPaddingInline: string;\n scrollPaddingInlineEnd: string;\n scrollPaddingInlineStart: string;\n scrollPaddingLeft: string;\n scrollPaddingRight: string;\n scrollPaddingTop: string;\n scrollSnapAlign: string;\n scrollSnapStop: string;\n scrollSnapType: string;\n shapeImageThreshold: string;\n shapeMargin: string;\n shapeOutside: string;\n shapeRendering: string;\n stopColor: string;\n stopOpacity: string;\n stroke: string;\n strokeDasharray: string;\n strokeDashoffset: string;\n strokeLinecap: string;\n strokeLinejoin: string;\n strokeMiterlimit: string;\n strokeOpacity: string;\n strokeWidth: string;\n tabSize: string;\n tableLayout: string;\n textAlign: string;\n textAlignLast: string;\n textAnchor: string;\n textCombineUpright: string;\n textDecoration: string;\n textDecorationColor: string;\n textDecorationLine: string;\n textDecorationSkipInk: string;\n textDecorationStyle: string;\n textDecorationThickness: string;\n textEmphasis: string;\n textEmphasisColor: string;\n textEmphasisPosition: string;\n textEmphasisStyle: string;\n textIndent: string;\n textOrientation: string;\n textOverflow: string;\n textRendering: string;\n textShadow: string;\n textTransform: string;\n textUnderlineOffset: string;\n textUnderlinePosition: string;\n top: string;\n touchAction: string;\n transform: string;\n transformBox: string;\n transformOrigin: string;\n transformStyle: string;\n transition: string;\n transitionDelay: string;\n transitionDuration: string;\n transitionProperty: string;\n transitionTimingFunction: string;\n translate: string;\n unicodeBidi: string;\n userSelect: string;\n verticalAlign: string;\n visibility: string;\n /** @deprecated This is a legacy alias of `alignContent`. */\n webkitAlignContent: string;\n /** @deprecated This is a legacy alias of `alignItems`. */\n webkitAlignItems: string;\n /** @deprecated This is a legacy alias of `alignSelf`. */\n webkitAlignSelf: string;\n /** @deprecated This is a legacy alias of `animation`. */\n webkitAnimation: string;\n /** @deprecated This is a legacy alias of `animationDelay`. */\n webkitAnimationDelay: string;\n /** @deprecated This is a legacy alias of `animationDirection`. */\n webkitAnimationDirection: string;\n /** @deprecated This is a legacy alias of `animationDuration`. */\n webkitAnimationDuration: string;\n /** @deprecated This is a legacy alias of `animationFillMode`. */\n webkitAnimationFillMode: string;\n /** @deprecated This is a legacy alias of `animationIterationCount`. */\n webkitAnimationIterationCount: string;\n /** @deprecated This is a legacy alias of `animationName`. */\n webkitAnimationName: string;\n /** @deprecated This is a legacy alias of `animationPlayState`. */\n webkitAnimationPlayState: string;\n /** @deprecated This is a legacy alias of `animationTimingFunction`. */\n webkitAnimationTimingFunction: string;\n /** @deprecated This is a legacy alias of `appearance`. */\n webkitAppearance: string;\n /** @deprecated This is a legacy alias of `backfaceVisibility`. */\n webkitBackfaceVisibility: string;\n /** @deprecated This is a legacy alias of `backgroundClip`. */\n webkitBackgroundClip: string;\n /** @deprecated This is a legacy alias of `backgroundOrigin`. */\n webkitBackgroundOrigin: string;\n /** @deprecated This is a legacy alias of `backgroundSize`. */\n webkitBackgroundSize: string;\n /** @deprecated This is a legacy alias of `borderBottomLeftRadius`. */\n webkitBorderBottomLeftRadius: string;\n /** @deprecated This is a legacy alias of `borderBottomRightRadius`. */\n webkitBorderBottomRightRadius: string;\n /** @deprecated This is a legacy alias of `borderRadius`. */\n webkitBorderRadius: string;\n /** @deprecated This is a legacy alias of `borderTopLeftRadius`. */\n webkitBorderTopLeftRadius: string;\n /** @deprecated This is a legacy alias of `borderTopRightRadius`. */\n webkitBorderTopRightRadius: string;\n /** @deprecated This is a legacy alias of `boxAlign`. */\n webkitBoxAlign: string;\n /** @deprecated This is a legacy alias of `boxFlex`. */\n webkitBoxFlex: string;\n /** @deprecated This is a legacy alias of `boxOrdinalGroup`. */\n webkitBoxOrdinalGroup: string;\n /** @deprecated This is a legacy alias of `boxOrient`. */\n webkitBoxOrient: string;\n /** @deprecated This is a legacy alias of `boxPack`. */\n webkitBoxPack: string;\n /** @deprecated This is a legacy alias of `boxShadow`. */\n webkitBoxShadow: string;\n /** @deprecated This is a legacy alias of `boxSizing`. */\n webkitBoxSizing: string;\n /** @deprecated This is a legacy alias of `filter`. */\n webkitFilter: string;\n /** @deprecated This is a legacy alias of `flex`. */\n webkitFlex: string;\n /** @deprecated This is a legacy alias of `flexBasis`. */\n webkitFlexBasis: string;\n /** @deprecated This is a legacy alias of `flexDirection`. */\n webkitFlexDirection: string;\n /** @deprecated This is a legacy alias of `flexFlow`. */\n webkitFlexFlow: string;\n /** @deprecated This is a legacy alias of `flexGrow`. */\n webkitFlexGrow: string;\n /** @deprecated This is a legacy alias of `flexShrink`. */\n webkitFlexShrink: string;\n /** @deprecated This is a legacy alias of `flexWrap`. */\n webkitFlexWrap: string;\n /** @deprecated This is a legacy alias of `justifyContent`. */\n webkitJustifyContent: string;\n webkitLineClamp: string;\n /** @deprecated This is a legacy alias of `mask`. */\n webkitMask: string;\n /** @deprecated This is a legacy alias of `maskBorder`. */\n webkitMaskBoxImage: string;\n /** @deprecated This is a legacy alias of `maskBorderOutset`. */\n webkitMaskBoxImageOutset: string;\n /** @deprecated This is a legacy alias of `maskBorderRepeat`. */\n webkitMaskBoxImageRepeat: string;\n /** @deprecated This is a legacy alias of `maskBorderSlice`. */\n webkitMaskBoxImageSlice: string;\n /** @deprecated This is a legacy alias of `maskBorderSource`. */\n webkitMaskBoxImageSource: string;\n /** @deprecated This is a legacy alias of `maskBorderWidth`. */\n webkitMaskBoxImageWidth: string;\n /** @deprecated This is a legacy alias of `maskClip`. */\n webkitMaskClip: string;\n webkitMaskComposite: string;\n /** @deprecated This is a legacy alias of `maskImage`. */\n webkitMaskImage: string;\n /** @deprecated This is a legacy alias of `maskOrigin`. */\n webkitMaskOrigin: string;\n /** @deprecated This is a legacy alias of `maskPosition`. */\n webkitMaskPosition: string;\n /** @deprecated This is a legacy alias of `maskRepeat`. */\n webkitMaskRepeat: string;\n /** @deprecated This is a legacy alias of `maskSize`. */\n webkitMaskSize: string;\n /** @deprecated This is a legacy alias of `order`. */\n webkitOrder: string;\n /** @deprecated This is a legacy alias of `perspective`. */\n webkitPerspective: string;\n /** @deprecated This is a legacy alias of `perspectiveOrigin`. */\n webkitPerspectiveOrigin: string;\n webkitTextFillColor: string;\n webkitTextStroke: string;\n webkitTextStrokeColor: string;\n webkitTextStrokeWidth: string;\n /** @deprecated This is a legacy alias of `transform`. */\n webkitTransform: string;\n /** @deprecated This is a legacy alias of `transformOrigin`. */\n webkitTransformOrigin: string;\n /** @deprecated This is a legacy alias of `transformStyle`. */\n webkitTransformStyle: string;\n /** @deprecated This is a legacy alias of `transition`. */\n webkitTransition: string;\n /** @deprecated This is a legacy alias of `transitionDelay`. */\n webkitTransitionDelay: string;\n /** @deprecated This is a legacy alias of `transitionDuration`. */\n webkitTransitionDuration: string;\n /** @deprecated This is a legacy alias of `transitionProperty`. */\n webkitTransitionProperty: string;\n /** @deprecated This is a legacy alias of `transitionTimingFunction`. */\n webkitTransitionTimingFunction: string;\n /** @deprecated This is a legacy alias of `userSelect`. */\n webkitUserSelect: string;\n whiteSpace: string;\n widows: string;\n width: string;\n willChange: string;\n wordBreak: string;\n wordSpacing: string;\n /** @deprecated */\n wordWrap: string;\n writingMode: string;\n zIndex: string;\n getPropertyPriority(property: string): string;\n getPropertyValue(property: string): string;\n item(index: number): string;\n removeProperty(property: string): string;\n setProperty(property: string, value: string | null, priority?: string): void;\n [index: number]: string;\n}\n\ndeclare var CSSStyleDeclaration: {\n prototype: CSSStyleDeclaration;\n new(): CSSStyleDeclaration;\n};\n\n/** CSSStyleRule represents a single CSS style rule. It implements the CSSRule interface with a type value of 1 (CSSRule.STYLE_RULE). */\ninterface CSSStyleRule extends CSSRule {\n selectorText: string;\n readonly style: CSSStyleDeclaration;\n}\n\ndeclare var CSSStyleRule: {\n prototype: CSSStyleRule;\n new(): CSSStyleRule;\n};\n\n/** A single CSS style sheet. It inherits properties and methods from its parent, StyleSheet. */\ninterface CSSStyleSheet extends StyleSheet {\n readonly cssRules: CSSRuleList;\n readonly ownerRule: CSSRule | null;\n /** @deprecated */\n readonly rules: CSSRuleList;\n /** @deprecated */\n addRule(selector?: string, style?: string, index?: number): number;\n deleteRule(index: number): void;\n insertRule(rule: string, index?: number): number;\n /** @deprecated */\n removeRule(index?: number): void;\n}\n\ndeclare var CSSStyleSheet: {\n prototype: CSSStyleSheet;\n new(options?: CSSStyleSheetInit): CSSStyleSheet;\n};\n\n/** An object representing a single CSS @supports at-rule. It implements the CSSConditionRule interface, and therefore the CSSRule and CSSGroupingRule interfaces with a type value of 12 (CSSRule.SUPPORTS_RULE). */\ninterface CSSSupportsRule extends CSSConditionRule {\n}\n\ndeclare var CSSSupportsRule: {\n prototype: CSSSupportsRule;\n new(): CSSSupportsRule;\n};\n\ninterface CSSTransition extends Animation {\n readonly transitionProperty: string;\n addEventListener(type: K, listener: (this: CSSTransition, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: CSSTransition, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var CSSTransition: {\n prototype: CSSTransition;\n new(): CSSTransition;\n};\n\n/**\n * Provides a storage mechanism for Request / Response object pairs that are cached, for example as part of the ServiceWorker life cycle. Note that the Cache interface is exposed to windowed scopes as well as workers. You don't have to use it in conjunction with service workers, even though it is defined in the service worker spec.\n * Available only in secure contexts.\n */\ninterface Cache {\n add(request: RequestInfo): Promise;\n addAll(requests: RequestInfo[]): Promise;\n delete(request: RequestInfo, options?: CacheQueryOptions): Promise;\n keys(request?: RequestInfo, options?: CacheQueryOptions): Promise>;\n match(request: RequestInfo, options?: CacheQueryOptions): Promise;\n matchAll(request?: RequestInfo, options?: CacheQueryOptions): Promise>;\n put(request: RequestInfo, response: Response): Promise;\n}\n\ndeclare var Cache: {\n prototype: Cache;\n new(): Cache;\n};\n\n/**\n * The storage for Cache objects.\n * Available only in secure contexts.\n */\ninterface CacheStorage {\n delete(cacheName: string): Promise;\n has(cacheName: string): Promise;\n keys(): Promise;\n match(request: RequestInfo, options?: MultiCacheQueryOptions): Promise;\n open(cacheName: string): Promise;\n}\n\ndeclare var CacheStorage: {\n prototype: CacheStorage;\n new(): CacheStorage;\n};\n\ninterface CanvasCompositing {\n globalAlpha: number;\n globalCompositeOperation: string;\n}\n\ninterface CanvasDrawImage {\n drawImage(image: CanvasImageSource, dx: number, dy: number): void;\n drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void;\n drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;\n}\n\ninterface CanvasDrawPath {\n beginPath(): void;\n clip(fillRule?: CanvasFillRule): void;\n clip(path: Path2D, fillRule?: CanvasFillRule): void;\n fill(fillRule?: CanvasFillRule): void;\n fill(path: Path2D, fillRule?: CanvasFillRule): void;\n isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean;\n isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean;\n isPointInStroke(x: number, y: number): boolean;\n isPointInStroke(path: Path2D, x: number, y: number): boolean;\n stroke(): void;\n stroke(path: Path2D): void;\n}\n\ninterface CanvasFillStrokeStyles {\n fillStyle: string | CanvasGradient | CanvasPattern;\n strokeStyle: string | CanvasGradient | CanvasPattern;\n createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;\n createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null;\n createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;\n}\n\ninterface CanvasFilters {\n filter: string;\n}\n\n/** An opaque object describing a gradient. It is returned by the methods CanvasRenderingContext2D.createLinearGradient() or CanvasRenderingContext2D.createRadialGradient(). */\ninterface CanvasGradient {\n /**\n * Adds a color stop with the given color to the gradient at the given offset. 0.0 is the offset at one end of the gradient, 1.0 is the offset at the other end.\n *\n * Throws an \"IndexSizeError\" DOMException if the offset is out of range. Throws a \"SyntaxError\" DOMException if the color cannot be parsed.\n */\n addColorStop(offset: number, color: string): void;\n}\n\ndeclare var CanvasGradient: {\n prototype: CanvasGradient;\n new(): CanvasGradient;\n};\n\ninterface CanvasImageData {\n createImageData(sw: number, sh: number, settings?: ImageDataSettings): ImageData;\n createImageData(imagedata: ImageData): ImageData;\n getImageData(sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings): ImageData;\n putImageData(imagedata: ImageData, dx: number, dy: number): void;\n putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void;\n}\n\ninterface CanvasImageSmoothing {\n imageSmoothingEnabled: boolean;\n imageSmoothingQuality: ImageSmoothingQuality;\n}\n\ninterface CanvasPath {\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;\n closePath(): void;\n ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;\n lineTo(x: number, y: number): void;\n moveTo(x: number, y: number): void;\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;\n rect(x: number, y: number, w: number, h: number): void;\n}\n\ninterface CanvasPathDrawingStyles {\n lineCap: CanvasLineCap;\n lineDashOffset: number;\n lineJoin: CanvasLineJoin;\n lineWidth: number;\n miterLimit: number;\n getLineDash(): number[];\n setLineDash(segments: number[]): void;\n}\n\n/** An opaque object describing a pattern, based on an image, a canvas, or a video, created by the CanvasRenderingContext2D.createPattern() method. */\ninterface CanvasPattern {\n /** Sets the transformation matrix that will be used when rendering the pattern during a fill or stroke painting operation. */\n setTransform(transform?: DOMMatrix2DInit): void;\n}\n\ndeclare var CanvasPattern: {\n prototype: CanvasPattern;\n new(): CanvasPattern;\n};\n\ninterface CanvasRect {\n clearRect(x: number, y: number, w: number, h: number): void;\n fillRect(x: number, y: number, w: number, h: number): void;\n strokeRect(x: number, y: number, w: number, h: number): void;\n}\n\n/** The CanvasRenderingContext2D interface, part of the Canvas API, provides the 2D rendering context for the drawing surface of a element. It is used for drawing shapes, text, images, and other objects. */\ninterface CanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform, CanvasUserInterface {\n readonly canvas: HTMLCanvasElement;\n getContextAttributes(): CanvasRenderingContext2DSettings;\n}\n\ndeclare var CanvasRenderingContext2D: {\n prototype: CanvasRenderingContext2D;\n new(): CanvasRenderingContext2D;\n};\n\ninterface CanvasShadowStyles {\n shadowBlur: number;\n shadowColor: string;\n shadowOffsetX: number;\n shadowOffsetY: number;\n}\n\ninterface CanvasState {\n restore(): void;\n save(): void;\n}\n\ninterface CanvasText {\n fillText(text: string, x: number, y: number, maxWidth?: number): void;\n measureText(text: string): TextMetrics;\n strokeText(text: string, x: number, y: number, maxWidth?: number): void;\n}\n\ninterface CanvasTextDrawingStyles {\n direction: CanvasDirection;\n font: string;\n textAlign: CanvasTextAlign;\n textBaseline: CanvasTextBaseline;\n}\n\ninterface CanvasTransform {\n getTransform(): DOMMatrix;\n resetTransform(): void;\n rotate(angle: number): void;\n scale(x: number, y: number): void;\n setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;\n setTransform(transform?: DOMMatrix2DInit): void;\n transform(a: number, b: number, c: number, d: number, e: number, f: number): void;\n translate(x: number, y: number): void;\n}\n\ninterface CanvasUserInterface {\n drawFocusIfNeeded(element: Element): void;\n drawFocusIfNeeded(path: Path2D, element: Element): void;\n}\n\n/** The ChannelMergerNode interface, often used in conjunction with its opposite, ChannelSplitterNode, reunites different mono inputs into a single output. Each input is used to fill a channel of the output. This is useful for accessing each channels separately, e.g. for performing channel mixing where gain must be separately controlled on each channel. */\ninterface ChannelMergerNode extends AudioNode {\n}\n\ndeclare var ChannelMergerNode: {\n prototype: ChannelMergerNode;\n new(context: BaseAudioContext, options?: ChannelMergerOptions): ChannelMergerNode;\n};\n\n/** The ChannelSplitterNode interface, often used in conjunction with its opposite, ChannelMergerNode, separates the different channels of an audio source into a set of mono outputs. This is useful for accessing each channel separately, e.g. for performing channel mixing where gain must be separately controlled on each channel. */\ninterface ChannelSplitterNode extends AudioNode {\n}\n\ndeclare var ChannelSplitterNode: {\n prototype: ChannelSplitterNode;\n new(context: BaseAudioContext, options?: ChannelSplitterOptions): ChannelSplitterNode;\n};\n\n/** The CharacterData abstract interface represents a Node object that contains characters. This is an abstract interface, meaning there aren't any object of type CharacterData: it is implemented by other interfaces, like Text, Comment, or ProcessingInstruction which aren't abstract. */\ninterface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode {\n data: string;\n readonly length: number;\n readonly ownerDocument: Document;\n appendData(data: string): void;\n deleteData(offset: number, count: number): void;\n insertData(offset: number, data: string): void;\n replaceData(offset: number, count: number, data: string): void;\n substringData(offset: number, count: number): string;\n}\n\ndeclare var CharacterData: {\n prototype: CharacterData;\n new(): CharacterData;\n};\n\ninterface ChildNode extends Node {\n /**\n * Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes.\n *\n * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n */\n after(...nodes: (Node | string)[]): void;\n /**\n * Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes.\n *\n * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n */\n before(...nodes: (Node | string)[]): void;\n /** Removes node. */\n remove(): void;\n /**\n * Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes.\n *\n * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n */\n replaceWith(...nodes: (Node | string)[]): void;\n}\n\n/** @deprecated */\ninterface ClientRect extends DOMRect {\n}\n\n/** Available only in secure contexts. */\ninterface Clipboard extends EventTarget {\n read(): Promise;\n readText(): Promise;\n write(data: ClipboardItems): Promise;\n writeText(data: string): Promise;\n}\n\ndeclare var Clipboard: {\n prototype: Clipboard;\n new(): Clipboard;\n};\n\n/** Events providing information related to modification of the clipboard, that is cut, copy, and paste events. */\ninterface ClipboardEvent extends Event {\n readonly clipboardData: DataTransfer | null;\n}\n\ndeclare var ClipboardEvent: {\n prototype: ClipboardEvent;\n new(type: string, eventInitDict?: ClipboardEventInit): ClipboardEvent;\n};\n\ninterface ClipboardItem {\n readonly types: ReadonlyArray;\n getType(type: string): Promise;\n}\n\ndeclare var ClipboardItem: {\n prototype: ClipboardItem;\n new(items: Record>, options?: ClipboardItemOptions): ClipboardItem;\n};\n\n/** A CloseEvent is sent to clients using WebSockets when the connection is closed. This is delivered to the listener indicated by the WebSocket object's onclose attribute. */\ninterface CloseEvent extends Event {\n /** Returns the WebSocket connection close code provided by the server. */\n readonly code: number;\n /** Returns the WebSocket connection close reason provided by the server. */\n readonly reason: string;\n /** Returns true if the connection closed cleanly; false otherwise. */\n readonly wasClean: boolean;\n}\n\ndeclare var CloseEvent: {\n prototype: CloseEvent;\n new(type: string, eventInitDict?: CloseEventInit): CloseEvent;\n};\n\n/** Textual notations within markup; although it is generally not visually shown, such comments are available to be read in the source view. */\ninterface Comment extends CharacterData {\n}\n\ndeclare var Comment: {\n prototype: Comment;\n new(data?: string): Comment;\n};\n\n/** The DOM CompositionEvent represents events that occur due to the user indirectly entering text. */\ninterface CompositionEvent extends UIEvent {\n readonly data: string;\n /** @deprecated */\n initCompositionEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: WindowProxy | null, dataArg?: string): void;\n}\n\ndeclare var CompositionEvent: {\n prototype: CompositionEvent;\n new(type: string, eventInitDict?: CompositionEventInit): CompositionEvent;\n};\n\ninterface ConstantSourceNode extends AudioScheduledSourceNode {\n readonly offset: AudioParam;\n addEventListener(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ConstantSourceNode: {\n prototype: ConstantSourceNode;\n new(context: BaseAudioContext, options?: ConstantSourceOptions): ConstantSourceNode;\n};\n\n/** An AudioNode that performs a Linear Convolution on a given AudioBuffer, often used to achieve a reverb effect. A ConvolverNode always has exactly one input and one output. */\ninterface ConvolverNode extends AudioNode {\n buffer: AudioBuffer | null;\n normalize: boolean;\n}\n\ndeclare var ConvolverNode: {\n prototype: ConvolverNode;\n new(context: BaseAudioContext, options?: ConvolverOptions): ConvolverNode;\n};\n\n/** This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. */\ninterface CountQueuingStrategy extends QueuingStrategy {\n readonly highWaterMark: number;\n readonly size: QueuingStrategySize;\n}\n\ndeclare var CountQueuingStrategy: {\n prototype: CountQueuingStrategy;\n new(init: QueuingStrategyInit): CountQueuingStrategy;\n};\n\n/** Available only in secure contexts. */\ninterface Credential {\n readonly id: string;\n readonly type: string;\n}\n\ndeclare var Credential: {\n prototype: Credential;\n new(): Credential;\n};\n\n/** Available only in secure contexts. */\ninterface CredentialsContainer {\n create(options?: CredentialCreationOptions): Promise;\n get(options?: CredentialRequestOptions): Promise;\n preventSilentAccess(): Promise;\n store(credential: Credential): Promise;\n}\n\ndeclare var CredentialsContainer: {\n prototype: CredentialsContainer;\n new(): CredentialsContainer;\n};\n\n/** Basic cryptography features available in the current context. It allows access to a cryptographically strong random number generator and to cryptographic primitives. */\ninterface Crypto {\n /** Available only in secure contexts. */\n readonly subtle: SubtleCrypto;\n getRandomValues(array: T): T;\n}\n\ndeclare var Crypto: {\n prototype: Crypto;\n new(): Crypto;\n};\n\n/**\n * The CryptoKey dictionary of the Web Crypto API represents a cryptographic key.\n * Available only in secure contexts.\n */\ninterface CryptoKey {\n readonly algorithm: KeyAlgorithm;\n readonly extractable: boolean;\n readonly type: KeyType;\n readonly usages: KeyUsage[];\n}\n\ndeclare var CryptoKey: {\n prototype: CryptoKey;\n new(): CryptoKey;\n};\n\ninterface CustomElementRegistry {\n define(name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions): void;\n get(name: string): CustomElementConstructor | undefined;\n upgrade(root: Node): void;\n whenDefined(name: string): Promise;\n}\n\ndeclare var CustomElementRegistry: {\n prototype: CustomElementRegistry;\n new(): CustomElementRegistry;\n};\n\ninterface CustomEvent extends Event {\n /** Returns any custom data event was created with. Typically used for synthetic events. */\n readonly detail: T;\n /** @deprecated */\n initCustomEvent(type: string, bubbles?: boolean, cancelable?: boolean, detail?: T): void;\n}\n\ndeclare var CustomEvent: {\n prototype: CustomEvent;\n new(type: string, eventInitDict?: CustomEventInit): CustomEvent;\n};\n\n/** An abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API. */\ninterface DOMException extends Error {\n readonly code: number;\n readonly message: string;\n readonly name: string;\n readonly ABORT_ERR: number;\n readonly DATA_CLONE_ERR: number;\n readonly DOMSTRING_SIZE_ERR: number;\n readonly HIERARCHY_REQUEST_ERR: number;\n readonly INDEX_SIZE_ERR: number;\n readonly INUSE_ATTRIBUTE_ERR: number;\n readonly INVALID_ACCESS_ERR: number;\n readonly INVALID_CHARACTER_ERR: number;\n readonly INVALID_MODIFICATION_ERR: number;\n readonly INVALID_NODE_TYPE_ERR: number;\n readonly INVALID_STATE_ERR: number;\n readonly NAMESPACE_ERR: number;\n readonly NETWORK_ERR: number;\n readonly NOT_FOUND_ERR: number;\n readonly NOT_SUPPORTED_ERR: number;\n readonly NO_DATA_ALLOWED_ERR: number;\n readonly NO_MODIFICATION_ALLOWED_ERR: number;\n readonly QUOTA_EXCEEDED_ERR: number;\n readonly SECURITY_ERR: number;\n readonly SYNTAX_ERR: number;\n readonly TIMEOUT_ERR: number;\n readonly TYPE_MISMATCH_ERR: number;\n readonly URL_MISMATCH_ERR: number;\n readonly VALIDATION_ERR: number;\n readonly WRONG_DOCUMENT_ERR: number;\n}\n\ndeclare var DOMException: {\n prototype: DOMException;\n new(message?: string, name?: string): DOMException;\n readonly ABORT_ERR: number;\n readonly DATA_CLONE_ERR: number;\n readonly DOMSTRING_SIZE_ERR: number;\n readonly HIERARCHY_REQUEST_ERR: number;\n readonly INDEX_SIZE_ERR: number;\n readonly INUSE_ATTRIBUTE_ERR: number;\n readonly INVALID_ACCESS_ERR: number;\n readonly INVALID_CHARACTER_ERR: number;\n readonly INVALID_MODIFICATION_ERR: number;\n readonly INVALID_NODE_TYPE_ERR: number;\n readonly INVALID_STATE_ERR: number;\n readonly NAMESPACE_ERR: number;\n readonly NETWORK_ERR: number;\n readonly NOT_FOUND_ERR: number;\n readonly NOT_SUPPORTED_ERR: number;\n readonly NO_DATA_ALLOWED_ERR: number;\n readonly NO_MODIFICATION_ALLOWED_ERR: number;\n readonly QUOTA_EXCEEDED_ERR: number;\n readonly SECURITY_ERR: number;\n readonly SYNTAX_ERR: number;\n readonly TIMEOUT_ERR: number;\n readonly TYPE_MISMATCH_ERR: number;\n readonly URL_MISMATCH_ERR: number;\n readonly VALIDATION_ERR: number;\n readonly WRONG_DOCUMENT_ERR: number;\n};\n\n/** An object providing methods which are not dependent on any particular document. Such an object is returned by the Document.implementation property. */\ninterface DOMImplementation {\n createDocument(namespace: string | null, qualifiedName: string | null, doctype?: DocumentType | null): XMLDocument;\n createDocumentType(qualifiedName: string, publicId: string, systemId: string): DocumentType;\n createHTMLDocument(title?: string): Document;\n /** @deprecated */\n hasFeature(...args: any[]): true;\n}\n\ndeclare var DOMImplementation: {\n prototype: DOMImplementation;\n new(): DOMImplementation;\n};\n\ninterface DOMMatrix extends DOMMatrixReadOnly {\n a: number;\n b: number;\n c: number;\n d: number;\n e: number;\n f: number;\n m11: number;\n m12: number;\n m13: number;\n m14: number;\n m21: number;\n m22: number;\n m23: number;\n m24: number;\n m31: number;\n m32: number;\n m33: number;\n m34: number;\n m41: number;\n m42: number;\n m43: number;\n m44: number;\n invertSelf(): DOMMatrix;\n multiplySelf(other?: DOMMatrixInit): DOMMatrix;\n preMultiplySelf(other?: DOMMatrixInit): DOMMatrix;\n rotateAxisAngleSelf(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;\n rotateFromVectorSelf(x?: number, y?: number): DOMMatrix;\n rotateSelf(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;\n scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n setMatrixValue(transformList: string): DOMMatrix;\n skewXSelf(sx?: number): DOMMatrix;\n skewYSelf(sy?: number): DOMMatrix;\n translateSelf(tx?: number, ty?: number, tz?: number): DOMMatrix;\n}\n\ndeclare var DOMMatrix: {\n prototype: DOMMatrix;\n new(init?: string | number[]): DOMMatrix;\n fromFloat32Array(array32: Float32Array): DOMMatrix;\n fromFloat64Array(array64: Float64Array): DOMMatrix;\n fromMatrix(other?: DOMMatrixInit): DOMMatrix;\n};\n\ntype SVGMatrix = DOMMatrix;\ndeclare var SVGMatrix: typeof DOMMatrix;\n\ntype WebKitCSSMatrix = DOMMatrix;\ndeclare var WebKitCSSMatrix: typeof DOMMatrix;\n\ninterface DOMMatrixReadOnly {\n readonly a: number;\n readonly b: number;\n readonly c: number;\n readonly d: number;\n readonly e: number;\n readonly f: number;\n readonly is2D: boolean;\n readonly isIdentity: boolean;\n readonly m11: number;\n readonly m12: number;\n readonly m13: number;\n readonly m14: number;\n readonly m21: number;\n readonly m22: number;\n readonly m23: number;\n readonly m24: number;\n readonly m31: number;\n readonly m32: number;\n readonly m33: number;\n readonly m34: number;\n readonly m41: number;\n readonly m42: number;\n readonly m43: number;\n readonly m44: number;\n flipX(): DOMMatrix;\n flipY(): DOMMatrix;\n inverse(): DOMMatrix;\n multiply(other?: DOMMatrixInit): DOMMatrix;\n rotate(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;\n rotateAxisAngle(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;\n rotateFromVector(x?: number, y?: number): DOMMatrix;\n scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n scale3d(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n /** @deprecated */\n scaleNonUniform(scaleX?: number, scaleY?: number): DOMMatrix;\n skewX(sx?: number): DOMMatrix;\n skewY(sy?: number): DOMMatrix;\n toFloat32Array(): Float32Array;\n toFloat64Array(): Float64Array;\n toJSON(): any;\n transformPoint(point?: DOMPointInit): DOMPoint;\n translate(tx?: number, ty?: number, tz?: number): DOMMatrix;\n toString(): string;\n}\n\ndeclare var DOMMatrixReadOnly: {\n prototype: DOMMatrixReadOnly;\n new(init?: string | number[]): DOMMatrixReadOnly;\n fromFloat32Array(array32: Float32Array): DOMMatrixReadOnly;\n fromFloat64Array(array64: Float64Array): DOMMatrixReadOnly;\n fromMatrix(other?: DOMMatrixInit): DOMMatrixReadOnly;\n toString(): string;\n};\n\n/** Provides the ability to parse XML or HTML source code from a string into a DOM Document. */\ninterface DOMParser {\n /**\n * Parses string using either the HTML or XML parser, according to type, and returns the resulting Document. type can be \"text/html\" (which will invoke the HTML parser), or any of \"text/xml\", \"application/xml\", \"application/xhtml+xml\", or \"image/svg+xml\" (which will invoke the XML parser).\n *\n * For the XML parser, if string cannot be parsed, then the returned Document will contain elements describing the resulting error.\n *\n * Note that script elements are not evaluated during parsing, and the resulting document's encoding will always be UTF-8.\n *\n * Values other than the above for type will cause a TypeError exception to be thrown.\n */\n parseFromString(string: string, type: DOMParserSupportedType): Document;\n}\n\ndeclare var DOMParser: {\n prototype: DOMParser;\n new(): DOMParser;\n};\n\ninterface DOMPoint extends DOMPointReadOnly {\n w: number;\n x: number;\n y: number;\n z: number;\n}\n\ndeclare var DOMPoint: {\n prototype: DOMPoint;\n new(x?: number, y?: number, z?: number, w?: number): DOMPoint;\n fromPoint(other?: DOMPointInit): DOMPoint;\n};\n\ntype SVGPoint = DOMPoint;\ndeclare var SVGPoint: typeof DOMPoint;\n\ninterface DOMPointReadOnly {\n readonly w: number;\n readonly x: number;\n readonly y: number;\n readonly z: number;\n matrixTransform(matrix?: DOMMatrixInit): DOMPoint;\n toJSON(): any;\n}\n\ndeclare var DOMPointReadOnly: {\n prototype: DOMPointReadOnly;\n new(x?: number, y?: number, z?: number, w?: number): DOMPointReadOnly;\n fromPoint(other?: DOMPointInit): DOMPointReadOnly;\n};\n\ninterface DOMQuad {\n readonly p1: DOMPoint;\n readonly p2: DOMPoint;\n readonly p3: DOMPoint;\n readonly p4: DOMPoint;\n getBounds(): DOMRect;\n toJSON(): any;\n}\n\ndeclare var DOMQuad: {\n prototype: DOMQuad;\n new(p1?: DOMPointInit, p2?: DOMPointInit, p3?: DOMPointInit, p4?: DOMPointInit): DOMQuad;\n fromQuad(other?: DOMQuadInit): DOMQuad;\n fromRect(other?: DOMRectInit): DOMQuad;\n};\n\ninterface DOMRect extends DOMRectReadOnly {\n height: number;\n width: number;\n x: number;\n y: number;\n}\n\ndeclare var DOMRect: {\n prototype: DOMRect;\n new(x?: number, y?: number, width?: number, height?: number): DOMRect;\n fromRect(other?: DOMRectInit): DOMRect;\n};\n\ntype SVGRect = DOMRect;\ndeclare var SVGRect: typeof DOMRect;\n\ninterface DOMRectList {\n readonly length: number;\n item(index: number): DOMRect | null;\n [index: number]: DOMRect;\n}\n\ndeclare var DOMRectList: {\n prototype: DOMRectList;\n new(): DOMRectList;\n};\n\ninterface DOMRectReadOnly {\n readonly bottom: number;\n readonly height: number;\n readonly left: number;\n readonly right: number;\n readonly top: number;\n readonly width: number;\n readonly x: number;\n readonly y: number;\n toJSON(): any;\n}\n\ndeclare var DOMRectReadOnly: {\n prototype: DOMRectReadOnly;\n new(x?: number, y?: number, width?: number, height?: number): DOMRectReadOnly;\n fromRect(other?: DOMRectInit): DOMRectReadOnly;\n};\n\n/** A type returned by some APIs which contains a list of DOMString (strings). */\ninterface DOMStringList {\n /** Returns the number of strings in strings. */\n readonly length: number;\n /** Returns true if strings contains string, and false otherwise. */\n contains(string: string): boolean;\n /** Returns the string with index index from strings. */\n item(index: number): string | null;\n [index: number]: string;\n}\n\ndeclare var DOMStringList: {\n prototype: DOMStringList;\n new(): DOMStringList;\n};\n\n/** Used by the dataset HTML attribute to represent data for custom attributes added to elements. */\ninterface DOMStringMap {\n [name: string]: string | undefined;\n}\n\ndeclare var DOMStringMap: {\n prototype: DOMStringMap;\n new(): DOMStringMap;\n};\n\n/** A set of space-separated tokens. Such a set is returned by Element.classList, HTMLLinkElement.relList, HTMLAnchorElement.relList, HTMLAreaElement.relList, HTMLIframeElement.sandbox, or HTMLOutputElement.htmlFor. It is indexed beginning with 0 as with JavaScript Array objects. DOMTokenList is always case-sensitive. */\ninterface DOMTokenList {\n /** Returns the number of tokens. */\n readonly length: number;\n /**\n * Returns the associated set as string.\n *\n * Can be set, to change the associated attribute.\n */\n value: string;\n toString(): string;\n /**\n * Adds all arguments passed, except those already present.\n *\n * Throws a \"SyntaxError\" DOMException if one of the arguments is the empty string.\n *\n * Throws an \"InvalidCharacterError\" DOMException if one of the arguments contains any ASCII whitespace.\n */\n add(...tokens: string[]): void;\n /** Returns true if token is present, and false otherwise. */\n contains(token: string): boolean;\n /** Returns the token with index index. */\n item(index: number): string | null;\n /**\n * Removes arguments passed, if they are present.\n *\n * Throws a \"SyntaxError\" DOMException if one of the arguments is the empty string.\n *\n * Throws an \"InvalidCharacterError\" DOMException if one of the arguments contains any ASCII whitespace.\n */\n remove(...tokens: string[]): void;\n /**\n * Replaces token with newToken.\n *\n * Returns true if token was replaced with newToken, and false otherwise.\n *\n * Throws a \"SyntaxError\" DOMException if one of the arguments is the empty string.\n *\n * Throws an \"InvalidCharacterError\" DOMException if one of the arguments contains any ASCII whitespace.\n */\n replace(token: string, newToken: string): boolean;\n /**\n * Returns true if token is in the associated attribute's supported tokens. Returns false otherwise.\n *\n * Throws a TypeError if the associated attribute has no supported tokens defined.\n */\n supports(token: string): boolean;\n /**\n * If force is not given, \"toggles\" token, removing it if it's present and adding it if it's not present. If force is true, adds token (same as add()). If force is false, removes token (same as remove()).\n *\n * Returns true if token is now present, and false otherwise.\n *\n * Throws a \"SyntaxError\" DOMException if token is empty.\n *\n * Throws an \"InvalidCharacterError\" DOMException if token contains any spaces.\n */\n toggle(token: string, force?: boolean): boolean;\n forEach(callbackfn: (value: string, key: number, parent: DOMTokenList) => void, thisArg?: any): void;\n [index: number]: string;\n}\n\ndeclare var DOMTokenList: {\n prototype: DOMTokenList;\n new(): DOMTokenList;\n};\n\n/** Used to hold the data that is being dragged during a drag and drop operation. It may hold one or more data items, each of one or more data types. For more information about drag and drop, see HTML Drag and Drop API. */\ninterface DataTransfer {\n /**\n * Returns the kind of operation that is currently selected. If the kind of operation isn't one of those that is allowed by the effectAllowed attribute, then the operation will fail.\n *\n * Can be set, to change the selected operation.\n *\n * The possible values are \"none\", \"copy\", \"link\", and \"move\".\n */\n dropEffect: \"none\" | \"copy\" | \"link\" | \"move\";\n /**\n * Returns the kinds of operations that are to be allowed.\n *\n * Can be set (during the dragstart event), to change the allowed operations.\n *\n * The possible values are \"none\", \"copy\", \"copyLink\", \"copyMove\", \"link\", \"linkMove\", \"move\", \"all\", and \"uninitialized\",\n */\n effectAllowed: \"none\" | \"copy\" | \"copyLink\" | \"copyMove\" | \"link\" | \"linkMove\" | \"move\" | \"all\" | \"uninitialized\";\n /** Returns a FileList of the files being dragged, if any. */\n readonly files: FileList;\n /** Returns a DataTransferItemList object, with the drag data. */\n readonly items: DataTransferItemList;\n /** Returns a frozen array listing the formats that were set in the dragstart event. In addition, if any files are being dragged, then one of the types will be the string \"Files\". */\n readonly types: ReadonlyArray;\n /** Removes the data of the specified formats. Removes all data if the argument is omitted. */\n clearData(format?: string): void;\n /** Returns the specified data. If there is no such data, returns the empty string. */\n getData(format: string): string;\n /** Adds the specified data. */\n setData(format: string, data: string): void;\n /** Uses the given element to update the drag feedback, replacing any previously specified feedback. */\n setDragImage(image: Element, x: number, y: number): void;\n}\n\ndeclare var DataTransfer: {\n prototype: DataTransfer;\n new(): DataTransfer;\n};\n\n/** One drag data item. During a drag operation, each drag event has a dataTransfer property which contains a list of drag data items. Each item in the list is a DataTransferItem object. */\ninterface DataTransferItem {\n /** Returns the drag data item kind, one of: \"string\", \"file\". */\n readonly kind: string;\n /** Returns the drag data item type string. */\n readonly type: string;\n /** Returns a File object, if the drag data item kind is File. */\n getAsFile(): File | null;\n /** Invokes the callback with the string data as the argument, if the drag data item kind is text. */\n getAsString(callback: FunctionStringCallback | null): void;\n webkitGetAsEntry(): FileSystemEntry | null;\n}\n\ndeclare var DataTransferItem: {\n prototype: DataTransferItem;\n new(): DataTransferItem;\n};\n\n/** A list of DataTransferItem objects representing items being dragged. During a drag operation, each DragEvent has a dataTransfer property and that property is a DataTransferItemList. */\ninterface DataTransferItemList {\n /** Returns the number of items in the drag data store. */\n readonly length: number;\n /** Adds a new entry for the given data to the drag data store. If the data is plain text then a type string has to be provided also. */\n add(data: string, type: string): DataTransferItem | null;\n add(data: File): DataTransferItem | null;\n /** Removes all the entries in the drag data store. */\n clear(): void;\n /** Removes the indexth entry in the drag data store. */\n remove(index: number): void;\n [index: number]: DataTransferItem;\n}\n\ndeclare var DataTransferItemList: {\n prototype: DataTransferItemList;\n new(): DataTransferItemList;\n};\n\n/** A delay-line; an AudioNode audio-processing module that causes a delay between the arrival of an input data and its propagation to the output. */\ninterface DelayNode extends AudioNode {\n readonly delayTime: AudioParam;\n}\n\ndeclare var DelayNode: {\n prototype: DelayNode;\n new(context: BaseAudioContext, options?: DelayOptions): DelayNode;\n};\n\n/**\n * The DeviceMotionEvent provides web developers with information about the speed of changes for the device's position and orientation.\n * Available only in secure contexts.\n */\ninterface DeviceMotionEvent extends Event {\n readonly acceleration: DeviceMotionEventAcceleration | null;\n readonly accelerationIncludingGravity: DeviceMotionEventAcceleration | null;\n readonly interval: number;\n readonly rotationRate: DeviceMotionEventRotationRate | null;\n}\n\ndeclare var DeviceMotionEvent: {\n prototype: DeviceMotionEvent;\n new(type: string, eventInitDict?: DeviceMotionEventInit): DeviceMotionEvent;\n};\n\n/** Available only in secure contexts. */\ninterface DeviceMotionEventAcceleration {\n readonly x: number | null;\n readonly y: number | null;\n readonly z: number | null;\n}\n\n/** Available only in secure contexts. */\ninterface DeviceMotionEventRotationRate {\n readonly alpha: number | null;\n readonly beta: number | null;\n readonly gamma: number | null;\n}\n\n/**\n * The DeviceOrientationEvent provides web developers with information from the physical orientation of the device running the web page.\n * Available only in secure contexts.\n */\ninterface DeviceOrientationEvent extends Event {\n readonly absolute: boolean;\n readonly alpha: number | null;\n readonly beta: number | null;\n readonly gamma: number | null;\n}\n\ndeclare var DeviceOrientationEvent: {\n prototype: DeviceOrientationEvent;\n new(type: string, eventInitDict?: DeviceOrientationEventInit): DeviceOrientationEvent;\n};\n\ninterface DocumentEventMap extends DocumentAndElementEventHandlersEventMap, GlobalEventHandlersEventMap {\n \"fullscreenchange\": Event;\n \"fullscreenerror\": Event;\n \"pointerlockchange\": Event;\n \"pointerlockerror\": Event;\n \"readystatechange\": Event;\n \"visibilitychange\": Event;\n}\n\n/** Any web page loaded in the browser and serves as an entry point into the web page's content, which is the DOM tree. */\ninterface Document extends Node, DocumentAndElementEventHandlers, DocumentOrShadowRoot, FontFaceSource, GlobalEventHandlers, NonElementParentNode, ParentNode, XPathEvaluatorBase {\n /** Sets or gets the URL for the current document. */\n readonly URL: string;\n /**\n * Sets or gets the color of all active links in the document.\n * @deprecated\n */\n alinkColor: string;\n /**\n * Returns a reference to the collection of elements contained by the object.\n * @deprecated\n */\n readonly all: HTMLAllCollection;\n /**\n * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order.\n * @deprecated\n */\n readonly anchors: HTMLCollectionOf;\n /**\n * Retrieves a collection of all applet objects in the document.\n * @deprecated\n */\n readonly applets: HTMLCollection;\n /**\n * Deprecated. Sets or retrieves a value that indicates the background color behind the object.\n * @deprecated\n */\n bgColor: string;\n /** Specifies the beginning and end of the document body. */\n body: HTMLElement;\n /** Returns document's encoding. */\n readonly characterSet: string;\n /**\n * Gets or sets the character set used to encode the object.\n * @deprecated This is a legacy alias of `characterSet`.\n */\n readonly charset: string;\n /** Gets a value that indicates whether standards-compliant mode is switched on for the object. */\n readonly compatMode: string;\n /** Returns document's content type. */\n readonly contentType: string;\n /**\n * Returns the HTTP cookies that apply to the Document. If there are no cookies or cookies can't be applied to this resource, the empty string will be returned.\n *\n * Can be set, to add a new cookie to the element's set of HTTP cookies.\n *\n * If the contents are sandboxed into a unique origin (e.g. in an iframe with the sandbox attribute), a \"SecurityError\" DOMException will be thrown on getting and setting.\n */\n cookie: string;\n /**\n * Returns the script element, or the SVG script element, that is currently executing, as long as the element represents a classic script. In the case of reentrant script execution, returns the one that most recently started executing amongst those that have not yet finished executing.\n *\n * Returns null if the Document is not currently executing a script or SVG script element (e.g., because the running script is an event handler, or a timeout), or if the currently executing script or SVG script element represents a module script.\n */\n readonly currentScript: HTMLOrSVGScriptElement | null;\n /** Returns the Window object of the active document. */\n readonly defaultView: (WindowProxy & typeof globalThis) | null;\n /** Sets or gets a value that indicates whether the document can be edited. */\n designMode: string;\n /** Sets or retrieves a value that indicates the reading order of the object. */\n dir: string;\n /** Gets an object representing the document type declaration associated with the current document. */\n readonly doctype: DocumentType | null;\n /** Gets a reference to the root node of the document. */\n readonly documentElement: HTMLElement;\n /** Returns document's URL. */\n readonly documentURI: string;\n /** Sets or gets the security domain of the document. */\n domain: string;\n /** Retrieves a collection of all embed objects in the document. */\n readonly embeds: HTMLCollectionOf;\n /**\n * Sets or gets the foreground (text) color of the document.\n * @deprecated\n */\n fgColor: string;\n /** Retrieves a collection, in source order, of all form objects in the document. */\n readonly forms: HTMLCollectionOf;\n /** @deprecated */\n readonly fullscreen: boolean;\n /** Returns true if document has the ability to display elements fullscreen and fullscreen is supported, or false otherwise. */\n readonly fullscreenEnabled: boolean;\n /** Returns the head element. */\n readonly head: HTMLHeadElement;\n readonly hidden: boolean;\n /** Retrieves a collection, in source order, of img objects in the document. */\n readonly images: HTMLCollectionOf;\n /** Gets the implementation object of the current document. */\n readonly implementation: DOMImplementation;\n /**\n * Returns the character encoding used to create the webpage that is loaded into the document object.\n * @deprecated This is a legacy alias of `characterSet`.\n */\n readonly inputEncoding: string;\n /** Gets the date that the page was last modified, if the page supplies one. */\n readonly lastModified: string;\n /**\n * Sets or gets the color of the document links.\n * @deprecated\n */\n linkColor: string;\n /** Retrieves a collection of all a objects that specify the href property and all area objects in the document. */\n readonly links: HTMLCollectionOf;\n /** Contains information about the current URL. */\n get location(): Location;\n set location(href: string | Location);\n onfullscreenchange: ((this: Document, ev: Event) => any) | null;\n onfullscreenerror: ((this: Document, ev: Event) => any) | null;\n onpointerlockchange: ((this: Document, ev: Event) => any) | null;\n onpointerlockerror: ((this: Document, ev: Event) => any) | null;\n /**\n * Fires when the state of the object has changed.\n * @param ev The event\n */\n onreadystatechange: ((this: Document, ev: Event) => any) | null;\n onvisibilitychange: ((this: Document, ev: Event) => any) | null;\n readonly ownerDocument: null;\n readonly pictureInPictureEnabled: boolean;\n /** Return an HTMLCollection of the embed elements in the Document. */\n readonly plugins: HTMLCollectionOf;\n /** Retrieves a value that indicates the current state of the object. */\n readonly readyState: DocumentReadyState;\n /** Gets the URL of the location that referred the user to the current page. */\n readonly referrer: string;\n /** @deprecated */\n readonly rootElement: SVGSVGElement | null;\n /** Retrieves a collection of all script objects in the document. */\n readonly scripts: HTMLCollectionOf;\n readonly scrollingElement: Element | null;\n readonly timeline: DocumentTimeline;\n /** Contains the title of the document. */\n title: string;\n readonly visibilityState: VisibilityState;\n /**\n * Sets or gets the color of the links that the user has visited.\n * @deprecated\n */\n vlinkColor: string;\n /**\n * Moves node from another document and returns it.\n *\n * If node is a document, throws a \"NotSupportedError\" DOMException or, if node is a shadow root, throws a \"HierarchyRequestError\" DOMException.\n */\n adoptNode(node: T): T;\n /** @deprecated */\n captureEvents(): void;\n /** @deprecated */\n caretRangeFromPoint(x: number, y: number): Range | null;\n /** @deprecated */\n clear(): void;\n /** Closes an output stream and forces the sent data to display. */\n close(): void;\n /**\n * Creates an attribute object with a specified name.\n * @param name String that sets the attribute object's name.\n */\n createAttribute(localName: string): Attr;\n createAttributeNS(namespace: string | null, qualifiedName: string): Attr;\n /** Returns a CDATASection node whose data is data. */\n createCDATASection(data: string): CDATASection;\n /**\n * Creates a comment object with the specified data.\n * @param data Sets the comment object's data.\n */\n createComment(data: string): Comment;\n /** Creates a new document. */\n createDocumentFragment(): DocumentFragment;\n /**\n * Creates an instance of the element for the specified tag.\n * @param tagName The name of an element.\n */\n createElement(tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K];\n /** @deprecated */\n createElement(tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K];\n createElement(tagName: string, options?: ElementCreationOptions): HTMLElement;\n /**\n * Returns an element with namespace namespace. Its namespace prefix will be everything before \":\" (U+003E) in qualifiedName or null. Its local name will be everything after \":\" (U+003E) in qualifiedName or qualifiedName.\n *\n * If localName does not match the Name production an \"InvalidCharacterError\" DOMException will be thrown.\n *\n * If one of the following conditions is true a \"NamespaceError\" DOMException will be thrown:\n *\n * localName does not match the QName production.\n * Namespace prefix is not null and namespace is the empty string.\n * Namespace prefix is \"xml\" and namespace is not the XML namespace.\n * qualifiedName or namespace prefix is \"xmlns\" and namespace is not the XMLNS namespace.\n * namespace is the XMLNS namespace and neither qualifiedName nor namespace prefix is \"xmlns\".\n *\n * When supplied, options's is can be used to create a customized built-in element.\n */\n createElementNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", qualifiedName: string): HTMLElement;\n createElementNS(namespaceURI: \"http://www.w3.org/2000/svg\", qualifiedName: K): SVGElementTagNameMap[K];\n createElementNS(namespaceURI: \"http://www.w3.org/2000/svg\", qualifiedName: string): SVGElement;\n createElementNS(namespaceURI: string | null, qualifiedName: string, options?: ElementCreationOptions): Element;\n createElementNS(namespace: string | null, qualifiedName: string, options?: string | ElementCreationOptions): Element;\n createEvent(eventInterface: \"AnimationEvent\"): AnimationEvent;\n createEvent(eventInterface: \"AnimationPlaybackEvent\"): AnimationPlaybackEvent;\n createEvent(eventInterface: \"AudioProcessingEvent\"): AudioProcessingEvent;\n createEvent(eventInterface: \"BeforeUnloadEvent\"): BeforeUnloadEvent;\n createEvent(eventInterface: \"BlobEvent\"): BlobEvent;\n createEvent(eventInterface: \"ClipboardEvent\"): ClipboardEvent;\n createEvent(eventInterface: \"CloseEvent\"): CloseEvent;\n createEvent(eventInterface: \"CompositionEvent\"): CompositionEvent;\n createEvent(eventInterface: \"CustomEvent\"): CustomEvent;\n createEvent(eventInterface: \"DeviceMotionEvent\"): DeviceMotionEvent;\n createEvent(eventInterface: \"DeviceOrientationEvent\"): DeviceOrientationEvent;\n createEvent(eventInterface: \"DragEvent\"): DragEvent;\n createEvent(eventInterface: \"ErrorEvent\"): ErrorEvent;\n createEvent(eventInterface: \"FocusEvent\"): FocusEvent;\n createEvent(eventInterface: \"FontFaceSetLoadEvent\"): FontFaceSetLoadEvent;\n createEvent(eventInterface: \"FormDataEvent\"): FormDataEvent;\n createEvent(eventInterface: \"GamepadEvent\"): GamepadEvent;\n createEvent(eventInterface: \"HashChangeEvent\"): HashChangeEvent;\n createEvent(eventInterface: \"IDBVersionChangeEvent\"): IDBVersionChangeEvent;\n createEvent(eventInterface: \"InputEvent\"): InputEvent;\n createEvent(eventInterface: \"KeyboardEvent\"): KeyboardEvent;\n createEvent(eventInterface: \"MediaEncryptedEvent\"): MediaEncryptedEvent;\n createEvent(eventInterface: \"MediaKeyMessageEvent\"): MediaKeyMessageEvent;\n createEvent(eventInterface: \"MediaQueryListEvent\"): MediaQueryListEvent;\n createEvent(eventInterface: \"MediaRecorderErrorEvent\"): MediaRecorderErrorEvent;\n createEvent(eventInterface: \"MediaStreamTrackEvent\"): MediaStreamTrackEvent;\n createEvent(eventInterface: \"MessageEvent\"): MessageEvent;\n createEvent(eventInterface: \"MouseEvent\"): MouseEvent;\n createEvent(eventInterface: \"MouseEvents\"): MouseEvent;\n createEvent(eventInterface: \"MutationEvent\"): MutationEvent;\n createEvent(eventInterface: \"MutationEvents\"): MutationEvent;\n createEvent(eventInterface: \"OfflineAudioCompletionEvent\"): OfflineAudioCompletionEvent;\n createEvent(eventInterface: \"PageTransitionEvent\"): PageTransitionEvent;\n createEvent(eventInterface: \"PaymentMethodChangeEvent\"): PaymentMethodChangeEvent;\n createEvent(eventInterface: \"PaymentRequestUpdateEvent\"): PaymentRequestUpdateEvent;\n createEvent(eventInterface: \"PointerEvent\"): PointerEvent;\n createEvent(eventInterface: \"PopStateEvent\"): PopStateEvent;\n createEvent(eventInterface: \"ProgressEvent\"): ProgressEvent;\n createEvent(eventInterface: \"PromiseRejectionEvent\"): PromiseRejectionEvent;\n createEvent(eventInterface: \"RTCDTMFToneChangeEvent\"): RTCDTMFToneChangeEvent;\n createEvent(eventInterface: \"RTCDataChannelEvent\"): RTCDataChannelEvent;\n createEvent(eventInterface: \"RTCPeerConnectionIceErrorEvent\"): RTCPeerConnectionIceErrorEvent;\n createEvent(eventInterface: \"RTCPeerConnectionIceEvent\"): RTCPeerConnectionIceEvent;\n createEvent(eventInterface: \"RTCTrackEvent\"): RTCTrackEvent;\n createEvent(eventInterface: \"SecurityPolicyViolationEvent\"): SecurityPolicyViolationEvent;\n createEvent(eventInterface: \"SpeechSynthesisErrorEvent\"): SpeechSynthesisErrorEvent;\n createEvent(eventInterface: \"SpeechSynthesisEvent\"): SpeechSynthesisEvent;\n createEvent(eventInterface: \"StorageEvent\"): StorageEvent;\n createEvent(eventInterface: \"SubmitEvent\"): SubmitEvent;\n createEvent(eventInterface: \"TouchEvent\"): TouchEvent;\n createEvent(eventInterface: \"TrackEvent\"): TrackEvent;\n createEvent(eventInterface: \"TransitionEvent\"): TransitionEvent;\n createEvent(eventInterface: \"UIEvent\"): UIEvent;\n createEvent(eventInterface: \"UIEvents\"): UIEvent;\n createEvent(eventInterface: \"WebGLContextEvent\"): WebGLContextEvent;\n createEvent(eventInterface: \"WheelEvent\"): WheelEvent;\n createEvent(eventInterface: string): Event;\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n * @param root The root element or node to start traversing on.\n * @param whatToShow The type of nodes or elements to appear in the node list\n * @param filter A custom NodeFilter function to use. For more information, see filter. Use null for no filter.\n */\n createNodeIterator(root: Node, whatToShow?: number, filter?: NodeFilter | null): NodeIterator;\n /** Returns a ProcessingInstruction node whose target is target and data is data. If target does not match the Name production an \"InvalidCharacterError\" DOMException will be thrown. If data contains \"?>\" an \"InvalidCharacterError\" DOMException will be thrown. */\n createProcessingInstruction(target: string, data: string): ProcessingInstruction;\n /** Returns an empty range object that has both of its boundary points positioned at the beginning of the document. */\n createRange(): Range;\n /**\n * Creates a text string from the specified value.\n * @param data String that specifies the nodeValue property of the text node.\n */\n createTextNode(data: string): Text;\n /**\n * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document.\n * @param root The root element or node to start traversing on.\n * @param whatToShow The type of nodes or elements to appear in the node list. For more information, see whatToShow.\n * @param filter A custom NodeFilter function to use.\n */\n createTreeWalker(root: Node, whatToShow?: number, filter?: NodeFilter | null): TreeWalker;\n /**\n * Executes a command on the current document, current selection, or the given range.\n * @param commandId String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.\n * @param showUI Display the user interface, defaults to false.\n * @param value Value to assign.\n * @deprecated\n */\n execCommand(commandId: string, showUI?: boolean, value?: string): boolean;\n /** Stops document's fullscreen element from being displayed fullscreen and resolves promise when done. */\n exitFullscreen(): Promise;\n exitPictureInPicture(): Promise;\n exitPointerLock(): void;\n /**\n * Returns a reference to the first object with the specified value of the ID attribute.\n * @param elementId String that specifies the ID value.\n */\n getElementById(elementId: string): HTMLElement | null;\n /** Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes. */\n getElementsByClassName(classNames: string): HTMLCollectionOf;\n /**\n * Gets a collection of objects based on the value of the NAME or ID attribute.\n * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute.\n */\n getElementsByName(elementName: string): NodeListOf;\n /**\n * Retrieves a collection of objects based on the specified element name.\n * @param name Specifies the name of an element.\n */\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n getElementsByTagName(qualifiedName: string): HTMLCollectionOf;\n /**\n * If namespace and localName are \"*\" returns a HTMLCollection of all descendant elements.\n *\n * If only namespace is \"*\" returns a HTMLCollection of all descendant elements whose local name is localName.\n *\n * If only localName is \"*\" returns a HTMLCollection of all descendant elements whose namespace is namespace.\n *\n * Otherwise, returns a HTMLCollection of all descendant elements whose namespace is namespace and local name is localName.\n */\n getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", localName: string): HTMLCollectionOf;\n getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/2000/svg\", localName: string): HTMLCollectionOf;\n getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf;\n /** Returns an object representing the current selection of the document that is loaded into the object displaying a webpage. */\n getSelection(): Selection | null;\n /** Gets a value indicating whether the object currently has focus. */\n hasFocus(): boolean;\n hasStorageAccess(): Promise;\n /**\n * Returns a copy of node. If deep is true, the copy also includes the node's descendants.\n *\n * If node is a document or a shadow root, throws a \"NotSupportedError\" DOMException.\n */\n importNode(node: T, deep?: boolean): T;\n /**\n * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method.\n * @param url Specifies a MIME type for the document.\n * @param name Specifies the name of the window. This name is used as the value for the TARGET attribute on a form or an anchor element.\n * @param features Contains a list of items separated by commas. Each item consists of an option and a value, separated by an equals sign (for example, \"fullscreen=yes, toolbar=yes\"). The following values are supported.\n * @param replace Specifies whether the existing entry for the document is replaced in the history list.\n */\n open(unused1?: string, unused2?: string): Document;\n open(url: string | URL, name: string, features: string): WindowProxy | null;\n /**\n * Returns a Boolean value that indicates whether a specified command can be successfully executed using execCommand, given the current state of the document.\n * @param commandId Specifies a command identifier.\n * @deprecated\n */\n queryCommandEnabled(commandId: string): boolean;\n /**\n * Returns a Boolean value that indicates whether the specified command is in the indeterminate state.\n * @param commandId String that specifies a command identifier.\n */\n queryCommandIndeterm(commandId: string): boolean;\n /**\n * Returns a Boolean value that indicates the current state of the command.\n * @param commandId String that specifies a command identifier.\n * @deprecated\n */\n queryCommandState(commandId: string): boolean;\n /**\n * Returns a Boolean value that indicates whether the current command is supported on the current range.\n * @param commandId Specifies a command identifier.\n * @deprecated\n */\n queryCommandSupported(commandId: string): boolean;\n /**\n * Returns the current value of the document, range, or current selection for the given command.\n * @param commandId String that specifies a command identifier.\n */\n queryCommandValue(commandId: string): string;\n /** @deprecated */\n releaseEvents(): void;\n requestStorageAccess(): Promise;\n /**\n * Writes one or more HTML expressions to a document in the specified window.\n * @param content Specifies the text and HTML tags to write.\n */\n write(...text: string[]): void;\n /**\n * Writes one or more HTML expressions, followed by a carriage return, to a document in the specified window.\n * @param content The text and HTML tags to write.\n */\n writeln(...text: string[]): void;\n addEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Document: {\n prototype: Document;\n new(): Document;\n};\n\ninterface DocumentAndElementEventHandlersEventMap {\n \"copy\": ClipboardEvent;\n \"cut\": ClipboardEvent;\n \"paste\": ClipboardEvent;\n}\n\ninterface DocumentAndElementEventHandlers {\n oncopy: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;\n oncut: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;\n onpaste: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;\n addEventListener(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** A minimal document object that has no parent. It is used as a lightweight version of Document that stores a segment of a document structure comprised of nodes just like a standard document. The key difference is that because the document fragment isn't part of the active document tree structure, changes made to the fragment don't affect the document, cause reflow, or incur any performance impact that can occur when changes are made. */\ninterface DocumentFragment extends Node, NonElementParentNode, ParentNode {\n readonly ownerDocument: Document;\n getElementById(elementId: string): HTMLElement | null;\n}\n\ndeclare var DocumentFragment: {\n prototype: DocumentFragment;\n new(): DocumentFragment;\n};\n\ninterface DocumentOrShadowRoot {\n /**\n * Returns the deepest element in the document through which or to which key events are being routed. This is, roughly speaking, the focused element in the document.\n *\n * For the purposes of this API, when a child browsing context is focused, its container is focused in the parent browsing context. For example, if the user moves the focus to a text control in an iframe, the iframe is the element returned by the activeElement API in the iframe's node document.\n *\n * Similarly, when the focused element is in a different node tree than documentOrShadowRoot, the element returned will be the host that's located in the same node tree as documentOrShadowRoot if documentOrShadowRoot is a shadow-including inclusive ancestor of the focused element, and null if not.\n */\n readonly activeElement: Element | null;\n /** Returns document's fullscreen element. */\n readonly fullscreenElement: Element | null;\n readonly pictureInPictureElement: Element | null;\n readonly pointerLockElement: Element | null;\n /** Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document. */\n readonly styleSheets: StyleSheetList;\n /**\n * Returns the element for the specified x coordinate and the specified y coordinate.\n * @param x The x-offset\n * @param y The y-offset\n */\n elementFromPoint(x: number, y: number): Element | null;\n elementsFromPoint(x: number, y: number): Element[];\n getAnimations(): Animation[];\n}\n\ninterface DocumentTimeline extends AnimationTimeline {\n}\n\ndeclare var DocumentTimeline: {\n prototype: DocumentTimeline;\n new(options?: DocumentTimelineOptions): DocumentTimeline;\n};\n\n/** A Node containing a doctype. */\ninterface DocumentType extends Node, ChildNode {\n readonly name: string;\n readonly ownerDocument: Document;\n readonly publicId: string;\n readonly systemId: string;\n}\n\ndeclare var DocumentType: {\n prototype: DocumentType;\n new(): DocumentType;\n};\n\n/** A DOM event that represents a drag and drop interaction. The user initiates a drag by placing a pointer device (such as a mouse) on the touch surface and then dragging the pointer to a new location (such as another DOM element). Applications are free to interpret a drag and drop interaction in an application-specific way. */\ninterface DragEvent extends MouseEvent {\n /** Returns the DataTransfer object for the event. */\n readonly dataTransfer: DataTransfer | null;\n}\n\ndeclare var DragEvent: {\n prototype: DragEvent;\n new(type: string, eventInitDict?: DragEventInit): DragEvent;\n};\n\n/** Inherits properties from its parent, AudioNode. */\ninterface DynamicsCompressorNode extends AudioNode {\n readonly attack: AudioParam;\n readonly knee: AudioParam;\n readonly ratio: AudioParam;\n readonly reduction: number;\n readonly release: AudioParam;\n readonly threshold: AudioParam;\n}\n\ndeclare var DynamicsCompressorNode: {\n prototype: DynamicsCompressorNode;\n new(context: BaseAudioContext, options?: DynamicsCompressorOptions): DynamicsCompressorNode;\n};\n\ninterface EXT_blend_minmax {\n readonly MAX_EXT: GLenum;\n readonly MIN_EXT: GLenum;\n}\n\ninterface EXT_color_buffer_float {\n}\n\ninterface EXT_color_buffer_half_float {\n readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: GLenum;\n readonly RGB16F_EXT: GLenum;\n readonly RGBA16F_EXT: GLenum;\n readonly UNSIGNED_NORMALIZED_EXT: GLenum;\n}\n\ninterface EXT_float_blend {\n}\n\n/** The EXT_frag_depth extension is part of the WebGL API and enables to set a depth value of a fragment from within the fragment shader. */\ninterface EXT_frag_depth {\n}\n\ninterface EXT_sRGB {\n readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: GLenum;\n readonly SRGB8_ALPHA8_EXT: GLenum;\n readonly SRGB_ALPHA_EXT: GLenum;\n readonly SRGB_EXT: GLenum;\n}\n\ninterface EXT_shader_texture_lod {\n}\n\ninterface EXT_texture_compression_rgtc {\n readonly COMPRESSED_RED_GREEN_RGTC2_EXT: GLenum;\n readonly COMPRESSED_RED_RGTC1_EXT: GLenum;\n readonly COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: GLenum;\n readonly COMPRESSED_SIGNED_RED_RGTC1_EXT: GLenum;\n}\n\n/** The EXT_texture_filter_anisotropic extension is part of the WebGL API and exposes two constants for anisotropic filtering (AF). */\ninterface EXT_texture_filter_anisotropic {\n readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum;\n readonly TEXTURE_MAX_ANISOTROPY_EXT: GLenum;\n}\n\ninterface ElementEventMap {\n \"fullscreenchange\": Event;\n \"fullscreenerror\": Event;\n}\n\n/** Element is the most general base class from which all objects in a Document inherit. It only has methods and properties common to all kinds of elements. More specific classes inherit from Element. */\ninterface Element extends Node, ARIAMixin, Animatable, ChildNode, InnerHTML, NonDocumentTypeChildNode, ParentNode, Slottable {\n readonly attributes: NamedNodeMap;\n /** Allows for manipulation of element's class content attribute as a set of whitespace-separated tokens through a DOMTokenList object. */\n readonly classList: DOMTokenList;\n /** Returns the value of element's class content attribute. Can be set to change it. */\n className: string;\n readonly clientHeight: number;\n readonly clientLeft: number;\n readonly clientTop: number;\n readonly clientWidth: number;\n /** Returns the value of element's id content attribute. Can be set to change it. */\n id: string;\n /** Returns the local name. */\n readonly localName: string;\n /** Returns the namespace. */\n readonly namespaceURI: string | null;\n onfullscreenchange: ((this: Element, ev: Event) => any) | null;\n onfullscreenerror: ((this: Element, ev: Event) => any) | null;\n outerHTML: string;\n readonly ownerDocument: Document;\n readonly part: DOMTokenList;\n /** Returns the namespace prefix. */\n readonly prefix: string | null;\n readonly scrollHeight: number;\n scrollLeft: number;\n scrollTop: number;\n readonly scrollWidth: number;\n /** Returns element's shadow root, if any, and if shadow root's mode is \"open\", and null otherwise. */\n readonly shadowRoot: ShadowRoot | null;\n /** Returns the value of element's slot content attribute. Can be set to change it. */\n slot: string;\n /** Returns the HTML-uppercased qualified name. */\n readonly tagName: string;\n /** Creates a shadow root for element and returns it. */\n attachShadow(init: ShadowRootInit): ShadowRoot;\n /** Returns the first (starting at element) inclusive ancestor that matches selectors, and null otherwise. */\n closest(selector: K): HTMLElementTagNameMap[K] | null;\n closest(selector: K): SVGElementTagNameMap[K] | null;\n closest(selectors: string): E | null;\n /** Returns element's first attribute whose qualified name is qualifiedName, and null if there is no such attribute otherwise. */\n getAttribute(qualifiedName: string): string | null;\n /** Returns element's attribute whose namespace is namespace and local name is localName, and null if there is no such attribute otherwise. */\n getAttributeNS(namespace: string | null, localName: string): string | null;\n /** Returns the qualified names of all element's attributes. Can contain duplicates. */\n getAttributeNames(): string[];\n getAttributeNode(qualifiedName: string): Attr | null;\n getAttributeNodeNS(namespace: string | null, localName: string): Attr | null;\n getBoundingClientRect(): DOMRect;\n getClientRects(): DOMRectList;\n /** Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes. */\n getElementsByClassName(classNames: string): HTMLCollectionOf;\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n getElementsByTagName(qualifiedName: string): HTMLCollectionOf;\n getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", localName: string): HTMLCollectionOf;\n getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/2000/svg\", localName: string): HTMLCollectionOf;\n getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf;\n /** Returns true if element has an attribute whose qualified name is qualifiedName, and false otherwise. */\n hasAttribute(qualifiedName: string): boolean;\n /** Returns true if element has an attribute whose namespace is namespace and local name is localName. */\n hasAttributeNS(namespace: string | null, localName: string): boolean;\n /** Returns true if element has attributes, and false otherwise. */\n hasAttributes(): boolean;\n hasPointerCapture(pointerId: number): boolean;\n insertAdjacentElement(where: InsertPosition, element: Element): Element | null;\n insertAdjacentHTML(position: InsertPosition, text: string): void;\n insertAdjacentText(where: InsertPosition, data: string): void;\n /** Returns true if matching selectors against element's root yields element, and false otherwise. */\n matches(selectors: string): boolean;\n releasePointerCapture(pointerId: number): void;\n /** Removes element's first attribute whose qualified name is qualifiedName. */\n removeAttribute(qualifiedName: string): void;\n /** Removes element's attribute whose namespace is namespace and local name is localName. */\n removeAttributeNS(namespace: string | null, localName: string): void;\n removeAttributeNode(attr: Attr): Attr;\n /**\n * Displays element fullscreen and resolves promise when done.\n *\n * When supplied, options's navigationUI member indicates whether showing navigation UI while in fullscreen is preferred or not. If set to \"show\", navigation simplicity is preferred over screen space, and if set to \"hide\", more screen space is preferred. User agents are always free to honor user preference over the application's. The default value \"auto\" indicates no application preference.\n */\n requestFullscreen(options?: FullscreenOptions): Promise;\n requestPointerLock(): void;\n scroll(options?: ScrollToOptions): void;\n scroll(x: number, y: number): void;\n scrollBy(options?: ScrollToOptions): void;\n scrollBy(x: number, y: number): void;\n scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;\n scrollTo(options?: ScrollToOptions): void;\n scrollTo(x: number, y: number): void;\n /** Sets the value of element's first attribute whose qualified name is qualifiedName to value. */\n setAttribute(qualifiedName: string, value: string): void;\n /** Sets the value of element's attribute whose namespace is namespace and local name is localName to value. */\n setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;\n setAttributeNode(attr: Attr): Attr | null;\n setAttributeNodeNS(attr: Attr): Attr | null;\n setPointerCapture(pointerId: number): void;\n /**\n * If force is not given, \"toggles\" qualifiedName, removing it if it is present and adding it if it is not present. If force is true, adds qualifiedName. If force is false, removes qualifiedName.\n *\n * Returns true if qualifiedName is now present, and false otherwise.\n */\n toggleAttribute(qualifiedName: string, force?: boolean): boolean;\n /** @deprecated This is a legacy alias of `matches`. */\n webkitMatchesSelector(selectors: string): boolean;\n addEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Element: {\n prototype: Element;\n new(): Element;\n};\n\ninterface ElementCSSInlineStyle {\n readonly style: CSSStyleDeclaration;\n}\n\ninterface ElementContentEditable {\n contentEditable: string;\n enterKeyHint: string;\n inputMode: string;\n readonly isContentEditable: boolean;\n}\n\ninterface ElementInternals extends ARIAMixin {\n /** Returns the ShadowRoot for internals's target element, if the target element is a shadow host, or null otherwise. */\n readonly shadowRoot: ShadowRoot | null;\n}\n\ndeclare var ElementInternals: {\n prototype: ElementInternals;\n new(): ElementInternals;\n};\n\n/** Events providing information related to errors in scripts or in files. */\ninterface ErrorEvent extends Event {\n readonly colno: number;\n readonly error: any;\n readonly filename: string;\n readonly lineno: number;\n readonly message: string;\n}\n\ndeclare var ErrorEvent: {\n prototype: ErrorEvent;\n new(type: string, eventInitDict?: ErrorEventInit): ErrorEvent;\n};\n\n/** An event which takes place in the DOM. */\ninterface Event {\n /** Returns true or false depending on how event was initialized. True if event goes through its target's ancestors in reverse tree order, and false otherwise. */\n readonly bubbles: boolean;\n cancelBubble: boolean;\n /** Returns true or false depending on how event was initialized. Its return value does not always carry meaning, but true can indicate that part of the operation during which event was dispatched, can be canceled by invoking the preventDefault() method. */\n readonly cancelable: boolean;\n /** Returns true or false depending on how event was initialized. True if event invokes listeners past a ShadowRoot node that is the root of its target, and false otherwise. */\n readonly composed: boolean;\n /** Returns the object whose event listener's callback is currently being invoked. */\n readonly currentTarget: EventTarget | null;\n /** Returns true if preventDefault() was invoked successfully to indicate cancelation, and false otherwise. */\n readonly defaultPrevented: boolean;\n /** Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, and BUBBLING_PHASE. */\n readonly eventPhase: number;\n /** Returns true if event was dispatched by the user agent, and false otherwise. */\n readonly isTrusted: boolean;\n /** @deprecated */\n returnValue: boolean;\n /** @deprecated */\n readonly srcElement: EventTarget | null;\n /** Returns the object to which event is dispatched (its target). */\n readonly target: EventTarget | null;\n /** Returns the event's timestamp as the number of milliseconds measured relative to the time origin. */\n readonly timeStamp: DOMHighResTimeStamp;\n /** Returns the type of event, e.g. \"click\", \"hashchange\", or \"submit\". */\n readonly type: string;\n /** Returns the invocation target objects of event's path (objects on which listeners will be invoked), except for any nodes in shadow trees of which the shadow root's mode is \"closed\" that are not reachable from event's currentTarget. */\n composedPath(): EventTarget[];\n /** @deprecated */\n initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;\n /** If invoked when the cancelable attribute value is true, and while executing a listener for the event with passive set to false, signals to the operation that caused event to be dispatched that it needs to be canceled. */\n preventDefault(): void;\n /** Invoking this method prevents event from reaching any registered event listeners after the current one finishes running and, when dispatched in a tree, also prevents event from reaching any other objects. */\n stopImmediatePropagation(): void;\n /** When dispatched in a tree, invoking this method prevents event from reaching any objects other than the current object. */\n stopPropagation(): void;\n readonly AT_TARGET: number;\n readonly BUBBLING_PHASE: number;\n readonly CAPTURING_PHASE: number;\n readonly NONE: number;\n}\n\ndeclare var Event: {\n prototype: Event;\n new(type: string, eventInitDict?: EventInit): Event;\n readonly AT_TARGET: number;\n readonly BUBBLING_PHASE: number;\n readonly CAPTURING_PHASE: number;\n readonly NONE: number;\n};\n\ninterface EventListener {\n (evt: Event): void;\n}\n\ninterface EventListenerObject {\n handleEvent(object: Event): void;\n}\n\ninterface EventSourceEventMap {\n \"error\": Event;\n \"message\": MessageEvent;\n \"open\": Event;\n}\n\ninterface EventSource extends EventTarget {\n onerror: ((this: EventSource, ev: Event) => any) | null;\n onmessage: ((this: EventSource, ev: MessageEvent) => any) | null;\n onopen: ((this: EventSource, ev: Event) => any) | null;\n /** Returns the state of this EventSource object's connection. It can have the values described below. */\n readonly readyState: number;\n /** Returns the URL providing the event stream. */\n readonly url: string;\n /** Returns true if the credentials mode for connection requests to the URL providing the event stream is set to \"include\", and false otherwise. */\n readonly withCredentials: boolean;\n /** Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. */\n close(): void;\n readonly CLOSED: number;\n readonly CONNECTING: number;\n readonly OPEN: number;\n addEventListener(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var EventSource: {\n prototype: EventSource;\n new(url: string | URL, eventSourceInitDict?: EventSourceInit): EventSource;\n readonly CLOSED: number;\n readonly CONNECTING: number;\n readonly OPEN: number;\n};\n\n/** EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them. */\ninterface EventTarget {\n /**\n * Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.\n *\n * The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.\n *\n * When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.\n *\n * When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.\n *\n * When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.\n *\n * If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.\n *\n * The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.\n */\n addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: AddEventListenerOptions | boolean): void;\n /** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. */\n dispatchEvent(event: Event): boolean;\n /** Removes the event listener in target's event listener list with the same type, callback, and options. */\n removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;\n}\n\ndeclare var EventTarget: {\n prototype: EventTarget;\n new(): EventTarget;\n};\n\n/** @deprecated */\ninterface External {\n /** @deprecated */\n AddSearchProvider(): void;\n /** @deprecated */\n IsSearchProviderInstalled(): void;\n}\n\n/** @deprecated */\ndeclare var External: {\n prototype: External;\n new(): External;\n};\n\n/** Provides information about files and allows JavaScript in a web page to access their content. */\ninterface File extends Blob {\n readonly lastModified: number;\n readonly name: string;\n readonly webkitRelativePath: string;\n}\n\ndeclare var File: {\n prototype: File;\n new(fileBits: BlobPart[], fileName: string, options?: FilePropertyBag): File;\n};\n\n/** An object of this type is returned by the files property of the HTML element; this lets you access the list of files selected with the element. It's also used for a list of files dropped into web content when using the drag and drop API; see the DataTransfer object for details on this usage. */\ninterface FileList {\n readonly length: number;\n item(index: number): File | null;\n [index: number]: File;\n}\n\ndeclare var FileList: {\n prototype: FileList;\n new(): FileList;\n};\n\ninterface FileReaderEventMap {\n \"abort\": ProgressEvent;\n \"error\": ProgressEvent;\n \"load\": ProgressEvent;\n \"loadend\": ProgressEvent;\n \"loadstart\": ProgressEvent;\n \"progress\": ProgressEvent;\n}\n\n/** Lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer, using File or Blob objects to specify the file or data to read. */\ninterface FileReader extends EventTarget {\n readonly error: DOMException | null;\n onabort: ((this: FileReader, ev: ProgressEvent) => any) | null;\n onerror: ((this: FileReader, ev: ProgressEvent) => any) | null;\n onload: ((this: FileReader, ev: ProgressEvent) => any) | null;\n onloadend: ((this: FileReader, ev: ProgressEvent) => any) | null;\n onloadstart: ((this: FileReader, ev: ProgressEvent) => any) | null;\n onprogress: ((this: FileReader, ev: ProgressEvent) => any) | null;\n readonly readyState: number;\n readonly result: string | ArrayBuffer | null;\n abort(): void;\n readAsArrayBuffer(blob: Blob): void;\n readAsBinaryString(blob: Blob): void;\n readAsDataURL(blob: Blob): void;\n readAsText(blob: Blob, encoding?: string): void;\n readonly DONE: number;\n readonly EMPTY: number;\n readonly LOADING: number;\n addEventListener(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var FileReader: {\n prototype: FileReader;\n new(): FileReader;\n readonly DONE: number;\n readonly EMPTY: number;\n readonly LOADING: number;\n};\n\ninterface FileSystem {\n readonly name: string;\n readonly root: FileSystemDirectoryEntry;\n}\n\ndeclare var FileSystem: {\n prototype: FileSystem;\n new(): FileSystem;\n};\n\ninterface FileSystemDirectoryEntry extends FileSystemEntry {\n createReader(): FileSystemDirectoryReader;\n getDirectory(path?: string | null, options?: FileSystemFlags, successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;\n getFile(path?: string | null, options?: FileSystemFlags, successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemDirectoryEntry: {\n prototype: FileSystemDirectoryEntry;\n new(): FileSystemDirectoryEntry;\n};\n\ninterface FileSystemDirectoryReader {\n readEntries(successCallback: FileSystemEntriesCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemDirectoryReader: {\n prototype: FileSystemDirectoryReader;\n new(): FileSystemDirectoryReader;\n};\n\ninterface FileSystemEntry {\n readonly filesystem: FileSystem;\n readonly fullPath: string;\n readonly isDirectory: boolean;\n readonly isFile: boolean;\n readonly name: string;\n getParent(successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemEntry: {\n prototype: FileSystemEntry;\n new(): FileSystemEntry;\n};\n\ninterface FileSystemFileEntry extends FileSystemEntry {\n file(successCallback: FileCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemFileEntry: {\n prototype: FileSystemFileEntry;\n new(): FileSystemFileEntry;\n};\n\n/** Focus-related events like focus, blur, focusin, or focusout. */\ninterface FocusEvent extends UIEvent {\n readonly relatedTarget: EventTarget | null;\n}\n\ndeclare var FocusEvent: {\n prototype: FocusEvent;\n new(type: string, eventInitDict?: FocusEventInit): FocusEvent;\n};\n\ninterface FontFace {\n ascentOverride: string;\n descentOverride: string;\n display: string;\n family: string;\n featureSettings: string;\n lineGapOverride: string;\n readonly loaded: Promise;\n readonly status: FontFaceLoadStatus;\n stretch: string;\n style: string;\n unicodeRange: string;\n variant: string;\n variationSettings: string;\n weight: string;\n load(): Promise;\n}\n\ndeclare var FontFace: {\n prototype: FontFace;\n new(family: string, source: string | BinaryData, descriptors?: FontFaceDescriptors): FontFace;\n};\n\ninterface FontFaceSetEventMap {\n \"loading\": Event;\n \"loadingdone\": Event;\n \"loadingerror\": Event;\n}\n\ninterface FontFaceSet extends EventTarget {\n onloading: ((this: FontFaceSet, ev: Event) => any) | null;\n onloadingdone: ((this: FontFaceSet, ev: Event) => any) | null;\n onloadingerror: ((this: FontFaceSet, ev: Event) => any) | null;\n readonly ready: Promise;\n readonly status: FontFaceSetLoadStatus;\n check(font: string, text?: string): boolean;\n load(font: string, text?: string): Promise;\n forEach(callbackfn: (value: FontFace, key: FontFace, parent: FontFaceSet) => void, thisArg?: any): void;\n addEventListener(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var FontFaceSet: {\n prototype: FontFaceSet;\n new(initialFaces: FontFace[]): FontFaceSet;\n};\n\ninterface FontFaceSetLoadEvent extends Event {\n readonly fontfaces: ReadonlyArray;\n}\n\ndeclare var FontFaceSetLoadEvent: {\n prototype: FontFaceSetLoadEvent;\n new(type: string, eventInitDict?: FontFaceSetLoadEventInit): FontFaceSetLoadEvent;\n};\n\ninterface FontFaceSource {\n readonly fonts: FontFaceSet;\n}\n\n/** Provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using the XMLHttpRequest.send() method. It uses the same format a form would use if the encoding type were set to \"multipart/form-data\". */\ninterface FormData {\n append(name: string, value: string | Blob, fileName?: string): void;\n delete(name: string): void;\n get(name: string): FormDataEntryValue | null;\n getAll(name: string): FormDataEntryValue[];\n has(name: string): boolean;\n set(name: string, value: string | Blob, fileName?: string): void;\n forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;\n}\n\ndeclare var FormData: {\n prototype: FormData;\n new(form?: HTMLFormElement): FormData;\n};\n\ninterface FormDataEvent extends Event {\n /** Returns a FormData object representing names and values of elements associated to the target form. Operations on the FormData object will affect form data to be submitted. */\n readonly formData: FormData;\n}\n\ndeclare var FormDataEvent: {\n prototype: FormDataEvent;\n new(type: string, eventInitDict: FormDataEventInit): FormDataEvent;\n};\n\n/** A change in volume. It is an AudioNode audio-processing module that causes a given gain to be applied to the input data before its propagation to the output. A GainNode always has exactly one input and one output, both with the same number of channels. */\ninterface GainNode extends AudioNode {\n readonly gain: AudioParam;\n}\n\ndeclare var GainNode: {\n prototype: GainNode;\n new(context: BaseAudioContext, options?: GainOptions): GainNode;\n};\n\n/**\n * This Gamepad API interface defines an individual gamepad or other controller, allowing access to information such as button presses, axis positions, and id.\n * Available only in secure contexts.\n */\ninterface Gamepad {\n readonly axes: ReadonlyArray;\n readonly buttons: ReadonlyArray;\n readonly connected: boolean;\n readonly hapticActuators: ReadonlyArray;\n readonly id: string;\n readonly index: number;\n readonly mapping: GamepadMappingType;\n readonly timestamp: DOMHighResTimeStamp;\n}\n\ndeclare var Gamepad: {\n prototype: Gamepad;\n new(): Gamepad;\n};\n\n/**\n * An individual button of a gamepad or other controller, allowing access to the current state of different types of buttons available on the control device.\n * Available only in secure contexts.\n */\ninterface GamepadButton {\n readonly pressed: boolean;\n readonly touched: boolean;\n readonly value: number;\n}\n\ndeclare var GamepadButton: {\n prototype: GamepadButton;\n new(): GamepadButton;\n};\n\n/**\n * This Gamepad API interface contains references to gamepads connected to the system, which is what the gamepad events Window.gamepadconnected and Window.gamepaddisconnected are fired in response to.\n * Available only in secure contexts.\n */\ninterface GamepadEvent extends Event {\n readonly gamepad: Gamepad;\n}\n\ndeclare var GamepadEvent: {\n prototype: GamepadEvent;\n new(type: string, eventInitDict: GamepadEventInit): GamepadEvent;\n};\n\n/** This Gamepad API interface represents hardware in the controller designed to provide haptic feedback to the user (if available), most commonly vibration hardware. */\ninterface GamepadHapticActuator {\n readonly type: GamepadHapticActuatorType;\n}\n\ndeclare var GamepadHapticActuator: {\n prototype: GamepadHapticActuator;\n new(): GamepadHapticActuator;\n};\n\ninterface GenericTransformStream {\n readonly readable: ReadableStream;\n readonly writable: WritableStream;\n}\n\n/** An object able to programmatically obtain the position of the device. It gives Web content access to the location of the device. This allows a Web site or app to offer customized results based on the user's location. */\ninterface Geolocation {\n clearWatch(watchId: number): void;\n getCurrentPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback | null, options?: PositionOptions): void;\n watchPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback | null, options?: PositionOptions): number;\n}\n\ndeclare var Geolocation: {\n prototype: Geolocation;\n new(): Geolocation;\n};\n\n/** Available only in secure contexts. */\ninterface GeolocationCoordinates {\n readonly accuracy: number;\n readonly altitude: number | null;\n readonly altitudeAccuracy: number | null;\n readonly heading: number | null;\n readonly latitude: number;\n readonly longitude: number;\n readonly speed: number | null;\n}\n\ndeclare var GeolocationCoordinates: {\n prototype: GeolocationCoordinates;\n new(): GeolocationCoordinates;\n};\n\n/** Available only in secure contexts. */\ninterface GeolocationPosition {\n readonly coords: GeolocationCoordinates;\n readonly timestamp: DOMTimeStamp;\n}\n\ndeclare var GeolocationPosition: {\n prototype: GeolocationPosition;\n new(): GeolocationPosition;\n};\n\ninterface GeolocationPositionError {\n readonly code: number;\n readonly message: string;\n readonly PERMISSION_DENIED: number;\n readonly POSITION_UNAVAILABLE: number;\n readonly TIMEOUT: number;\n}\n\ndeclare var GeolocationPositionError: {\n prototype: GeolocationPositionError;\n new(): GeolocationPositionError;\n readonly PERMISSION_DENIED: number;\n readonly POSITION_UNAVAILABLE: number;\n readonly TIMEOUT: number;\n};\n\ninterface GlobalEventHandlersEventMap {\n \"abort\": UIEvent;\n \"animationcancel\": AnimationEvent;\n \"animationend\": AnimationEvent;\n \"animationiteration\": AnimationEvent;\n \"animationstart\": AnimationEvent;\n \"auxclick\": MouseEvent;\n \"beforeinput\": InputEvent;\n \"blur\": FocusEvent;\n \"canplay\": Event;\n \"canplaythrough\": Event;\n \"change\": Event;\n \"click\": MouseEvent;\n \"close\": Event;\n \"compositionend\": CompositionEvent;\n \"compositionstart\": CompositionEvent;\n \"compositionupdate\": CompositionEvent;\n \"contextmenu\": MouseEvent;\n \"cuechange\": Event;\n \"dblclick\": MouseEvent;\n \"drag\": DragEvent;\n \"dragend\": DragEvent;\n \"dragenter\": DragEvent;\n \"dragleave\": DragEvent;\n \"dragover\": DragEvent;\n \"dragstart\": DragEvent;\n \"drop\": DragEvent;\n \"durationchange\": Event;\n \"emptied\": Event;\n \"ended\": Event;\n \"error\": ErrorEvent;\n \"focus\": FocusEvent;\n \"focusin\": FocusEvent;\n \"focusout\": FocusEvent;\n \"formdata\": FormDataEvent;\n \"gotpointercapture\": PointerEvent;\n \"input\": Event;\n \"invalid\": Event;\n \"keydown\": KeyboardEvent;\n \"keypress\": KeyboardEvent;\n \"keyup\": KeyboardEvent;\n \"load\": Event;\n \"loadeddata\": Event;\n \"loadedmetadata\": Event;\n \"loadstart\": Event;\n \"lostpointercapture\": PointerEvent;\n \"mousedown\": MouseEvent;\n \"mouseenter\": MouseEvent;\n \"mouseleave\": MouseEvent;\n \"mousemove\": MouseEvent;\n \"mouseout\": MouseEvent;\n \"mouseover\": MouseEvent;\n \"mouseup\": MouseEvent;\n \"pause\": Event;\n \"play\": Event;\n \"playing\": Event;\n \"pointercancel\": PointerEvent;\n \"pointerdown\": PointerEvent;\n \"pointerenter\": PointerEvent;\n \"pointerleave\": PointerEvent;\n \"pointermove\": PointerEvent;\n \"pointerout\": PointerEvent;\n \"pointerover\": PointerEvent;\n \"pointerup\": PointerEvent;\n \"progress\": ProgressEvent;\n \"ratechange\": Event;\n \"reset\": Event;\n \"resize\": UIEvent;\n \"scroll\": Event;\n \"securitypolicyviolation\": SecurityPolicyViolationEvent;\n \"seeked\": Event;\n \"seeking\": Event;\n \"select\": Event;\n \"selectionchange\": Event;\n \"selectstart\": Event;\n \"stalled\": Event;\n \"submit\": SubmitEvent;\n \"suspend\": Event;\n \"timeupdate\": Event;\n \"toggle\": Event;\n \"touchcancel\": TouchEvent;\n \"touchend\": TouchEvent;\n \"touchmove\": TouchEvent;\n \"touchstart\": TouchEvent;\n \"transitioncancel\": TransitionEvent;\n \"transitionend\": TransitionEvent;\n \"transitionrun\": TransitionEvent;\n \"transitionstart\": TransitionEvent;\n \"volumechange\": Event;\n \"waiting\": Event;\n \"webkitanimationend\": Event;\n \"webkitanimationiteration\": Event;\n \"webkitanimationstart\": Event;\n \"webkittransitionend\": Event;\n \"wheel\": WheelEvent;\n}\n\ninterface GlobalEventHandlers {\n /**\n * Fires when the user aborts the download.\n * @param ev The event.\n */\n onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;\n onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n onauxclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Fires when the object loses the input focus.\n * @param ev The focus event.\n */\n onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;\n /**\n * Occurs when playback is possible, but would require further buffering.\n * @param ev The event.\n */\n oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the contents of the object or selection have changed.\n * @param ev The event.\n */\n onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the user clicks the left mouse button on the object\n * @param ev The mouse event.\n */\n onclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the user clicks the right mouse button in the client area, opening the context menu.\n * @param ev The mouse event.\n */\n oncontextmenu: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the user double-clicks the object.\n * @param ev The mouse event.\n */\n ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Fires on the source object continuously during a drag operation.\n * @param ev The event.\n */\n ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Fires on the source object when the user releases the mouse at the close of a drag operation.\n * @param ev The event.\n */\n ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Fires on the target element when the user drags the object to a valid drop target.\n * @param ev The drag event.\n */\n ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.\n * @param ev The drag event.\n */\n ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Fires on the target element continuously while the user drags the object over a valid drop target.\n * @param ev The event.\n */\n ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Fires on the source object when the user starts to drag a text selection or selected object.\n * @param ev The event.\n */\n ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Occurs when the duration attribute is updated.\n * @param ev The event.\n */\n ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the media element is reset to its initial state.\n * @param ev The event.\n */\n onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the end of playback is reached.\n * @param ev The event\n */\n onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when an error occurs during object loading.\n * @param ev The event.\n */\n onerror: OnErrorEventHandler;\n /**\n * Fires when the object receives focus.\n * @param ev The event.\n */\n onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;\n onformdata: ((this: GlobalEventHandlers, ev: FormDataEvent) => any) | null;\n ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n oninput: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the user presses a key.\n * @param ev The keyboard event\n */\n onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\n /**\n * Fires when the user presses an alphanumeric key.\n * @param ev The event.\n * @deprecated\n */\n onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\n /**\n * Fires when the user releases a key.\n * @param ev The keyboard event\n */\n onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\n /**\n * Fires immediately after the browser loads the object.\n * @param ev The event.\n */\n onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when media data is loaded at the current playback position.\n * @param ev The event.\n */\n onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the duration and dimensions of the media have been determined.\n * @param ev The event.\n */\n onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when Internet Explorer begins looking for media data.\n * @param ev The event.\n */\n onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /**\n * Fires when the user clicks the object with either mouse button.\n * @param ev The mouse event.\n */\n onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Fires when the user moves the mouse over the object.\n * @param ev The mouse event.\n */\n onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Fires when the user moves the mouse pointer outside the boundaries of the object.\n * @param ev The mouse event.\n */\n onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Fires when the user moves the mouse pointer into the object.\n * @param ev The mouse event.\n */\n onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Fires when the user releases a mouse button while the mouse is over the object.\n * @param ev The mouse event.\n */\n onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Occurs when playback is paused.\n * @param ev The event.\n */\n onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the play method is requested.\n * @param ev The event.\n */\n onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the audio or video has started playing.\n * @param ev The event.\n */\n onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /**\n * Occurs to indicate progress while downloading media data.\n * @param ev The event.\n */\n onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent) => any) | null;\n /**\n * Occurs when the playback rate is increased or decreased.\n * @param ev The event.\n */\n onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the user resets a form.\n * @param ev The event.\n */\n onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;\n /**\n * Fires when the user repositions the scroll box in the scroll bar on the object.\n * @param ev The event.\n */\n onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the seek operation ends.\n * @param ev The event.\n */\n onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the current playback position is moved.\n * @param ev The event.\n */\n onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the current selection changes.\n * @param ev The event.\n */\n onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the download has stopped.\n * @param ev The event.\n */\n onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n onsubmit: ((this: GlobalEventHandlers, ev: SubmitEvent) => any) | null;\n /**\n * Occurs if the load operation has been intentionally halted.\n * @param ev The event.\n */\n onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs to indicate the current playback position.\n * @param ev The event.\n */\n ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n ontoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n /**\n * Occurs when the volume is changed, or playback is muted or unmuted.\n * @param ev The event.\n */\n onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when playback stops because the next frame of a video resource is not available.\n * @param ev The event.\n */\n onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** @deprecated This is a legacy alias of `onanimationend`. */\n onwebkitanimationend: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** @deprecated This is a legacy alias of `onanimationiteration`. */\n onwebkitanimationiteration: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** @deprecated This is a legacy alias of `onanimationstart`. */\n onwebkitanimationstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** @deprecated This is a legacy alias of `ontransitionend`. */\n onwebkittransitionend: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;\n addEventListener(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ninterface HTMLAllCollection {\n /** Returns the number of elements in the collection. */\n readonly length: number;\n /** Returns the item with index index from the collection (determined by tree order). */\n item(nameOrIndex?: string): HTMLCollection | Element | null;\n /**\n * Returns the item with ID or name name from the collection.\n *\n * If there are multiple matching items, then an HTMLCollection object containing all those elements is returned.\n *\n * Only button, form, iframe, input, map, meta, object, select, and textarea elements can have a name for the purpose of this method; their name is given by the value of their name attribute.\n */\n namedItem(name: string): HTMLCollection | Element | null;\n [index: number]: Element;\n}\n\ndeclare var HTMLAllCollection: {\n prototype: HTMLAllCollection;\n new(): HTMLAllCollection;\n};\n\n/** Hyperlink elements and provides special properties and methods (beyond those of the regular HTMLElement object interface that they inherit from) for manipulating the layout and presentation of such elements. */\ninterface HTMLAnchorElement extends HTMLElement, HTMLHyperlinkElementUtils {\n /**\n * Sets or retrieves the character set used to encode the object.\n * @deprecated\n */\n charset: string;\n /**\n * Sets or retrieves the coordinates of the object.\n * @deprecated\n */\n coords: string;\n download: string;\n /** Sets or retrieves the language code of the object. */\n hreflang: string;\n /**\n * Sets or retrieves the shape of the object.\n * @deprecated\n */\n name: string;\n ping: string;\n referrerPolicy: string;\n /** Sets or retrieves the relationship between the object and the destination of the link. */\n rel: string;\n readonly relList: DOMTokenList;\n /**\n * Sets or retrieves the relationship between the object and the destination of the link.\n * @deprecated\n */\n rev: string;\n /**\n * Sets or retrieves the shape of the object.\n * @deprecated\n */\n shape: string;\n /** Sets or retrieves the window or frame at which to target content. */\n target: string;\n /** Retrieves or sets the text of the object as a string. */\n text: string;\n type: string;\n addEventListener(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLAnchorElement: {\n prototype: HTMLAnchorElement;\n new(): HTMLAnchorElement;\n};\n\n/** Provides special properties and methods (beyond those of the regular object HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of elements. */\ninterface HTMLAreaElement extends HTMLElement, HTMLHyperlinkElementUtils {\n /** Sets or retrieves a text alternative to the graphic. */\n alt: string;\n /** Sets or retrieves the coordinates of the object. */\n coords: string;\n download: string;\n /**\n * Sets or gets whether clicks in this region cause action.\n * @deprecated\n */\n noHref: boolean;\n ping: string;\n referrerPolicy: string;\n rel: string;\n readonly relList: DOMTokenList;\n /** Sets or retrieves the shape of the object. */\n shape: string;\n /** Sets or retrieves the window or frame at which to target content. */\n target: string;\n addEventListener(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLAreaElement: {\n prototype: HTMLAreaElement;\n new(): HTMLAreaElement;\n};\n\n/** Provides access to the properties of