diff options
author | partouf <partouf@gmail.com> | 2021-12-28 17:22:35 +0000 |
---|---|---|
committer | partouf <partouf@gmail.com> | 2021-12-28 17:22:35 +0000 |
commit | 193e207ae9098ce57c65caec1a6b26efecf5fc43 (patch) | |
tree | 5f69a62d352ba7b67376277a22b78a0086e93822 | |
parent | c750f3c71c0497fc080dadd03590a660c4eee522 (diff) | |
parent | d7157c47e617b3c2a8e4956d559fb61cc34b88df (diff) | |
download | compiler-explorer-gh-1479.tar.gz compiler-explorer-gh-1479.zip |
Merge remote-tracking branch 'origin/main' into frontendtestinggh-1479
120 files changed, 9886 insertions, 10853 deletions
diff --git a/.eslintignore b/.eslintignore index 720a35e63..f924bb187 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,7 +7,5 @@ out views # Autogenerated files -lib/handlers/asm-docs-amd64.js -lib/handlers/asm-docs-arm32.js -lib/handlers/asm-docs-java.js +lib/handlers/asm-docs-*.js etc/scripts/vendor/jvms.html diff --git a/.eslintrc.yml b/.eslintrc.yml index c65dcbb91..6f9cd59a5 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -7,6 +7,7 @@ plugins: - promise - sonarjs - unicorn + - '@typescript-eslint' extends: - ./.eslint-license-header.yml - eslint:recommended @@ -14,6 +15,9 @@ extends: - plugin:node/recommended - plugin:unicorn/recommended - prettier + - plugin:@typescript-eslint/eslint-recommended + - plugin:@typescript-eslint/recommended + - plugin:import/typescript env: mocha: true node: true @@ -28,6 +32,7 @@ rules: eqeqeq: - error - smart + import/default: off # fs-extra trips this. the ts compiler catches actual errors import/extensions: error import/first: error import/newline-after-import: error @@ -36,6 +41,7 @@ rules: import/no-default-export: warn import/no-deprecated: warn import/no-mutable-exports: error + import/no-named-as-default-member: off # Far too many things (express, morgan, fs) trip this import/no-self-import: error import/no-useless-path-segments: error import/no-webpack-loader-syntax: error @@ -138,8 +144,17 @@ rules: unicorn/no-array-callback-reference: off unicorn/prefer-switch: off unicorn/no-static-only-class: off + unicorn/no-process-exit: off + '@typescript-eslint/no-empty-function': off + '@typescript-eslint/no-unused-vars': off parserOptions: sourceType: module ecmaVersion: 2020 globals: BigInt: true +settings: + node: + tryExtensions: [ .js, .ts ] + import/parsers: + "@typescript-eslint/parser": [ .ts, .tsx ] + import/resolver: "typescript" diff --git a/.github/workflows/test-and-deploy.yml b/.github/workflows/test-and-deploy.yml index e5c5f8194..a94273506 100644 --- a/.github/workflows/test-and-deploy.yml +++ b/.github/workflows/test-and-deploy.yml @@ -1,6 +1,6 @@ name: Compiler Explorer -on: [ push ] +on: [push, pull_request] jobs: build-and-test: diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 797acea53..000000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="RunConfigurationProducerService"> - <option name="ignoredProducers"> - <set> - <option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" /> - </set> - </option> - </component> -</project>
\ No newline at end of file diff --git a/.mocharc.yml b/.mocharc.yml new file mode 100644 index 000000000..0fe58d691 --- /dev/null +++ b/.mocharc.yml @@ -0,0 +1,5 @@ +recursive: true +require: + - esm + - ts-node/register + - source-map-support/register diff --git a/.nycrc.yml b/.nycrc.yml index e0174ab1d..46786c3ee 100644 --- a/.nycrc.yml +++ b/.nycrc.yml @@ -1,13 +1,14 @@ all: true include: - lib/**/*.js + - lib/**/*.ts exclude: - - lib/handlers/asm-docs-amd64.js - - lib/handlers/asm-docs-arm32.js - - lib/handlers/asm-docs-java.js + - lib/handlers/asm-docs-*.js - lib/compilers/fake-for-test.js report-dir: ./out/coverage reporter: - lcov require: - esm + - source-map-support/register + - ts-node/register diff --git a/.prettierignore b/.prettierignore index 5523acc1a..0e8ce4d9f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -40,8 +40,7 @@ out views # Autogenerated files -lib/handlers/asm-docs-amd64.js -lib/handlers/asm-docs-arm32.js +lib/handlers/asm-docs-*.js ######################### diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 706caba41..101866095 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -105,3 +105,5 @@ From oldest to newest contributor, we would like to thank: - [Quinton Miller](https://github.com/HertzDevil) - [Kevin Adler](https://github.com/kadler) - [Björn Gustavsson](https://github.com/bjorng) +- [Gregory Anders](https://github.com/gpanders) +- [Marcus Geelnard](https://github.com/mbitsnbites) @@ -43,7 +43,7 @@ $(NODE_MODULES): package.json | node-installed WEBPACK:=./node_modules/webpack-cli/bin/cli.js $(WEBPACK): $(NODE_MODULES) -lint: $(NODE_MODULES) ## Checks if the source currently matches code conventions +lint: $(NODE_MODULES) ts-compile ## Checks if the source currently matches code conventions $(NPM) run lint lint-fix: $(NODE_MODULES) ## Checks if everything matches code conventions & fixes those which are trivial to do so @@ -70,22 +70,27 @@ clean: ## Cleans up everything # Don't use $(NODE) ./node_modules/<path to node_module> as sometimes that's not actually a node script. Instead, rely # on PATH ensuring "node" is found in our distribution first. run: export NODE_ENV=production -run: export WEBPACK_ARGS="-p" +run: export WEBPACK_ARGS="--node-env=production" run: prereqs webpack ## Runs the site normally - ./node_modules/.bin/supervisor -w app.js,lib,etc/config,static/tsconfig.json -e 'js|ts|node|properties|yaml' --exec $(NODE) $(NODE_ARGS) -- -r esm ./app.js $(EXTRA_ARGS) + ./node_modules/.bin/supervisor -w app.js,lib,etc/config,static/tsconfig.json -e 'js|ts|node|properties|yaml' --exec $(NODE) $(NODE_ARGS) -- -r esm -r ts-node/register ./app.js $(EXTRA_ARGS) dev: export NODE_ENV=development dev: prereqs ## Runs the site as a developer; including live reload support and installation of git hooks - ./node_modules/.bin/supervisor -w app.js,lib,etc/config,static/tsconfig.json -e 'js|ts|node|properties|yaml' -n exit --exec $(NODE) $(NODE_ARGS) -- -r esm ./app.js $(EXTRA_ARGS) + ./node_modules/.bin/supervisor -w app.js,lib,etc/config,static/tsconfig.json -e 'js|ts|node|properties|yaml' -n exit --exec $(NODE) $(NODE_ARGS) -- -r esm -r ts-node/register ./app.js $(EXTRA_ARGS) debug: export NODE_ENV=development debug: prereqs ## Runs the site as a developer with full debugging; including live reload support and installation of git hooks - ./node_modules/.bin/supervisor -w app.js,lib,etc/config,static/tsconfig.json -e 'js|ts|node|properties|yaml' -n exit --inspect 9229 --exec $(NODE) $(NODE_ARGS) -- -r esm ./app.js --debug $(EXTRA_ARGS) + ./node_modules/.bin/supervisor -w app.js,lib,etc/config,static/tsconfig.json -e 'js|ts|node|properties|yaml' -n exit --inspect 9229 --exec $(NODE) $(NODE_ARGS) -- -r esm -r ts-node/register ./app.js --debug $(EXTRA_ARGS) + +.PHONY: ts-compile +# one day we'll put `--strict` in this +ts-compile: prereqs + ./node_modules/.bin/tsc HASH := $(shell git rev-parse HEAD) dist: export NODE_ENV=production -dist: export WEBPACK_ARGS=-p -dist: prereqs webpack ## Creates a distribution +dist: export WEBPACK_ARGS="--node-env=production" +dist: prereqs webpack ts-compile ## Creates a distribution echo $(HASH) > out/dist/git_hash RELEASE_FILE_NAME=$(GITHUB_RUN_NUMBER) @@ -39,6 +39,7 @@ There are a number of videos that showcase some features of Compiler Explorer: * [Presentation for CppCon 2019 about the project](https://www.youtube.com/watch?v=kIoZDUd5DKw) * [Older 2 part series of videos](https://www.youtube.com/watch?v=4_HL3PH4wDg) which go into a bit more detail into the more obscure features. +* [Just Enough Assembly for Compiler Explorer](https://youtu.be/QLolzolunJ4): Practical introduction to Assembly with a focus on usage on Compiler Explorer, from CppCon 2021. * [Playlist: Compiler Explorer](https://www.youtube.com/playlist?list=PL2HVqYf7If8dNYVN6ayjB06FPyhHCcnhG): A collection of videos discussing Compiler Explorer; using it, installing it, what it's for, etc. A [Road map](docs/Roadmap.md) is available which gives a little insight into @@ -1,7 +1,3 @@ -#!/usr/bin/env node -// shebang interferes with license header plugin -/* eslint-disable header/header */ - // Copyright (c) 2012, Compiler Explorer Authors // All rights reserved. // @@ -286,16 +282,15 @@ let pugRequireHandler = () => { async function setupWebPackDevMiddleware(router) { logger.info(' using webpack dev middleware'); - /* eslint-disable node/no-unpublished-import,import/extensions */ - const webpackDevMiddleware = (await import('webpack-dev-middleware')).default; - const webpackConfig = (await import('./webpack.config.esm.js')).default; - const webpack = (await import('webpack')).default; + /* eslint-disable node/no-unpublished-import,import/extensions, */ + const {default: webpackDevMiddleware} = await import('webpack-dev-middleware'); + const {default: webpackConfig} = await import('./webpack.config.esm.js'); + const {default: webpack} = await import('webpack'); /* eslint-enable */ const webpackCompiler = webpack(webpackConfig); router.use(webpackDevMiddleware(webpackCompiler, { publicPath: '/static', - logger: logger, stats: 'errors-only', })); @@ -557,7 +552,7 @@ async function main() { metricsServer.get('/metrics', async (req, res) => { try { res.set('Content-Type', PromClient.register.contentType); - res.end(PromClient.register.metrics()); + res.end(await PromClient.register.metrics()); } catch (ex) { res.status(500).end(ex); } diff --git a/docs/API.md b/docs/API.md index a3eb36474..faa764b83 100644 --- a/docs/API.md +++ b/docs/API.md @@ -121,9 +121,9 @@ Execution Only request example: ``` The filters are a JSON object with `true`/`false` values. If not supplied, - defaults are used. If supplied, the filters are used as-is. - The `compilerOptions` is used to pass extra arguments to the back end, and is - probably not useful for most REST users. + defaults are used. If supplied, the provided filters override their default + values. The `compilerOptions` is used to pass extra arguments to the back end, + and is probably not useful for most REST users. To force a cache bypass, set `bypassCache` in the root of the request to `true`. diff --git a/docs/AddingAssemblyDocumentation.md b/docs/AddingAssemblyDocumentation.md new file mode 100644 index 000000000..62862db04 --- /dev/null +++ b/docs/AddingAssemblyDocumentation.md @@ -0,0 +1,81 @@ +# Adding Assembly Documentation for a new instruction set + +This document explains how to add assembly documentation for a new instruction set to Compiler Explorer +("CE" from here on). + +If you were not already aware, CE has both quick-tip and more thorough assembly instruction documentation available for +a couple instruction sets (currently JVM bytecode, amd64 and arm32). The feature is demonstrated in the gif below. + + + +To add a new assembly documentation handler, you need to perform the following steps: + +## 1. Find a data source + +First of all you need to find a data source to get our instruction info from. While it is possible to write down +information about every single instruction for an instruction set, it's far from maintainable and it is a lot of work. + +Existing assembly documentation handlers use some sort of established documentation. The arm32 handler uses the +developer.arm.com website and the JVM bytecode handler uses Oracle's documentation. + +## 2. Create a tool for collecting the data + +Since we want to go through the automated route, you should write a script or a piece of code to automatically gather the +data for us and store it in a nice format that CE expects. The output of the script should be a generated .js file +with a single exported function containing a gigantic switch for the instruction opcode. Examples of this generated file +can be found in `/lib/handlers/asm-docs-amd64.js`. + +How you generate this file is completely up to you, just make sure it's easy for others to run the script if needed as +well. If you need inspiration on how to write this tool, you can look at the `docenizer-*` scripts found in +`/etc/scripts` in the source control tree. + +CE expects the tool to output the file into the `/lib/handlers/` folder with a name following the existing convention. +Each case in the switch should return a piece of formatted HTML to insert into the popup, a tooltip text for the +on-hover tooltip and a URL to external documentation. + +```js +case "CALL": + return { + "html": "[html to embed into the popup]", + "tooltip": "[text to show in the hover tooltip]", + "url": "http://www.felixcloutier.com/x86/CALL.html" + }; +``` + +## 3. Connect your tool output to CE + +Once your tool has generated the JavaScript file, you want to connect it to CE. This is done by editing the files found +in `/lib/handlers/assembly-documentation`. You'll want to add a new file named after your instruction set which contains +a class extending `BaseAssemblyDocumentationHandler`. The class should implement the `getInstructionInformation` method. + +This method is expected to take the instruction opcode in full uppercase and either return the associated data or null +if not found. + +```js +import { getAsmOpcode } from '../asm-docs-java'; +import { BaseAssemblyDocumentationHandler } from '../base-assembly-documentation-handler'; + +export class JavaDocumentationHandler extends BaseAssemblyDocumentationHandler { + getInstructionInformation(instruction) { + return getAsmOpcode(instruction) || null; + } +} +``` + +The last thing to do is to associate your instruction set in the CE API with this handler. This is done by modifying the +`/lib/handlers/assembly-documentation/router.js` file. Simply add your instruction set name and associate it with a +new instance of your class in the mapping object. + +```js +const ASSEMBLY_DOCUMENTATION_HANDLERS = { + amd64: new Amd64DocumentationHandler(), + arm32: new Arm32DocumentationHandler(), + java: new JavaDocumentationHandler(), +}; +``` + +## 4. Testing + +You can ensure your API handler is working as expected by writing a test case for it in the +`/test/handlers/assembly-documentation` directory. Simply copy over one of the existing files and modify it to work +with the new slug you created in the step above. diff --git a/docs/images/show_assembly_documentation.gif b/docs/images/show_assembly_documentation.gif Binary files differnew file mode 100644 index 000000000..15dc022b6 --- /dev/null +++ b/docs/images/show_assembly_documentation.gif diff --git a/etc/config/assembly.amazon.properties b/etc/config/assembly.amazon.properties index fe060514e..d6be18a07 100644 --- a/etc/config/assembly.amazon.properties +++ b/etc/config/assembly.amazon.properties @@ -22,130 +22,74 @@ compiler.nasm21402.semver=2.14.02 compiler.nasm21402.exe=/opt/compiler-explorer/nasm-2.14.02/nasm -group.gnuas.compilers=gnuas510:gnuas520:gnuas530:gnuas540:gnuas6:gnuas62:gnuas63:gnuas71:gnuas72:gnuas73:gnuas81:gnuas82:gnuas83:gnuas84:gnuas85:gnuas91:gnuas92:gnuas93:gnuas94:gnuas101:gnuas102:gnuas103:gnuas111:gnuas112:gnuassnapshot +group.gnuas.compilers=gnuas72:gnuas73:gnuas92:gnuas103:gnuas112:gnuassnapshot group.gnuas.versionFlag=--version group.gnuas.options=-g group.gnuas.isSemVer=true -group.gnuas.baseName=x86-64 gcc -compiler.gnuas510.exe=/opt/compiler-explorer/gcc-5.1.0/bin/as -compiler.gnuas510.semver=5.1 -compiler.gnuas520.exe=/opt/compiler-explorer/gcc-5.2.0/bin/as -compiler.gnuas520.semver=5.2 -compiler.gnuas530.exe=/opt/compiler-explorer/gcc-5.3.0/bin/as -compiler.gnuas530.semver=5.3 -compiler.gnuas540.exe=/opt/compiler-explorer/gcc-5.4.0/bin/as -compiler.gnuas540.semver=5.4 -compiler.gnuas6.exe=/opt/compiler-explorer/gcc-6.1.0/bin/as -compiler.gnuas6.semver=6.1 -compiler.gnuas62.exe=/opt/compiler-explorer/gcc-6.2.0/bin/as -compiler.gnuas62.semver=6.2 -compiler.gnuas63.exe=/opt/compiler-explorer/gcc-6.3.0/bin/as -compiler.gnuas63.semver=6.3 -compiler.gnuas71.exe=/opt/compiler-explorer/gcc-7.1.0/bin/as -compiler.gnuas71.semver=7.1 +group.gnuas.baseName=x86-64 binutils compiler.gnuas72.exe=/opt/compiler-explorer/gcc-7.2.0/bin/as -compiler.gnuas72.semver=7.2 +compiler.gnuas72.semver=2.27 compiler.gnuas73.exe=/opt/compiler-explorer/gcc-7.3.0/bin/as -compiler.gnuas73.semver=7.3 -compiler.gnuas81.exe=/opt/compiler-explorer/gcc-8.1.0/bin/as -compiler.gnuas81.semver=8.1 -compiler.gnuas82.exe=/opt/compiler-explorer/gcc-8.2.0/bin/as -compiler.gnuas82.semver=8.2 -compiler.gnuas83.exe=/opt/compiler-explorer/gcc-8.3.0/bin/as -compiler.gnuas83.semver=8.3 -compiler.gnuas84.exe=/opt/compiler-explorer/gcc-8.4.0/bin/as -compiler.gnuas84.semver=8.4 -compiler.gnuas85.exe=/opt/compiler-explorer/gcc-8.5.0/bin/as -compiler.gnuas85.semver=8.5 -compiler.gnuas91.exe=/opt/compiler-explorer/gcc-9.1.0/bin/as -compiler.gnuas91.semver=9.1 +compiler.gnuas73.semver=2.28 compiler.gnuas92.exe=/opt/compiler-explorer/gcc-9.2.0/bin/as -compiler.gnuas92.semver=9.2 -compiler.gnuas93.exe=/opt/compiler-explorer/gcc-9.3.0/bin/as -compiler.gnuas93.semver=9.3 -compiler.gnuas94.exe=/opt/compiler-explorer/gcc-9.4.0/bin/as -compiler.gnuas94.semver=9.4 -compiler.gnuas101.exe=/opt/compiler-explorer/gcc-10.1.0/bin/as -compiler.gnuas101.semver=10.1 -compiler.gnuas102.exe=/opt/compiler-explorer/gcc-10.2.0/bin/as -compiler.gnuas102.semver=10.2 +compiler.gnuas92.semver=2.29.1 compiler.gnuas103.exe=/opt/compiler-explorer/gcc-10.3.0/bin/as -compiler.gnuas103.semver=10.3 -compiler.gnuas111.exe=/opt/compiler-explorer/gcc-11.1.0/bin/as -compiler.gnuas111.semver=11.1 +compiler.gnuas103.semver=2.34 compiler.gnuas112.exe=/opt/compiler-explorer/gcc-11.2.0/bin/as -compiler.gnuas112.semver=11.2 +compiler.gnuas112.semver=2.36.1 compiler.gnuassnapshot.exe=/opt/compiler-explorer/gcc-snapshot/bin/as compiler.gnuassnapshot.objdumper=/opt/compiler-explorer/gcc-snapshot/bin/objdump compiler.gnuassnapshot.semver=(trunk) -group.gnuasarm.compilers=gnuasarmhfg54:gnuasarmg454:gnuasarmg464:gnuasarmg630:gnuasarmg640:gnuasarmg730:gnuasarmg820:gnuasarm930:gnuasarm1020 +group.gnuasarm.compilers=gnuasarmhfg54:gnuasarmg464:gnuasarmg630:gnuasarmg820:gnuasarm930:gnuasarm1020 group.gnuasarm.versionFlag=--version group.gnuasarm.options=-g group.gnuasarm.isSemVer=true -group.gnuasarm.baseName=ARM gcc +group.gnuasarm.baseName=ARM binutils group.gnuasarm.supportsExecute=false group.gnuasarm.objdumper=/opt/compiler-explorer/arm/gcc-10.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump compiler.gnuasarmhfg54.exe=/opt/compiler-explorer/arm/gcc-5.4.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-as -compiler.gnuasarmhfg54.name=ARM gcc 5.4 (linux) -compiler.gnuasarmhfg54.semver=5.4 -compiler.gnuasarmg454.exe=/opt/compiler-explorer/arm/gcc-4.5.4/bin/arm-unknown-linux-gnueabi-as -compiler.gnuasarmg454.name=ARM gcc 4.5.4 (linux) -compiler.gnuasarmg454.semver=4.5.4 +compiler.gnuasarmhfg54.name=ARMhf binutils 2.28 +compiler.gnuasarmhfg54.semver=2.28-hf compiler.gnuasarmg464.exe=/opt/compiler-explorer/arm/gcc-4.6.4/bin/arm-unknown-linux-gnueabi-as -compiler.gnuasarmg464.name=ARM gcc 4.6.4 (linux) -compiler.gnuasarmg464.semver=4.6.4 +compiler.gnuasarmg464.name=ARM binutils 2.25 +compiler.gnuasarmg464.semver=2.25 compiler.gnuasarmg630.exe=/opt/compiler-explorer/arm/gcc-6.3.0/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-as -compiler.gnuasarmg630.name=ARM gcc 6.3.0 (linux) -compiler.gnuasarmg630.semver=6.3.0 -compiler.gnuasarmg640.exe=/opt/compiler-explorer/arm/gcc-6.4.0/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-as -compiler.gnuasarmg640.name=ARM gcc 6.4 (linux) -compiler.gnuasarmg640.semver=6.4.0 -compiler.gnuasarmg730.exe=/opt/compiler-explorer/arm/gcc-7.3.0/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-as -compiler.gnuasarmg730.name=ARM gcc 7.3 (linux) -compiler.gnuasarmg730.semver=7.3.0 +compiler.gnuasarmg630.name=ARM binutils 2.28 +compiler.gnuasarmg630.semver=2.28 compiler.gnuasarmg820.exe=/opt/compiler-explorer/arm/gcc-8.2.0/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-as -compiler.gnuasarmg820.name=ARM gcc 8.2 (linux) -compiler.gnuasarmg820.semver=8.2.0 +compiler.gnuasarmg820.name=ARM binutils 2.31.1 +compiler.gnuasarmg820.semver=2.31.1 compiler.gnuasarm930.exe=/opt/compiler-explorer/arm/gcc-9.3.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-as compiler.gnuasarm930.name=ARM gcc 9.3 (linux) -compiler.gnuasarm930.semver=9.3.0 +compiler.gnuasarm930.semver=ARM binutils 2.33.1 compiler.gnuasarm1020.exe=/opt/compiler-explorer/arm/gcc-10.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-as compiler.gnuasarm1020.name=ARM gcc 10.2 (linux) -compiler.gnuasarm1020.semver=10.2.0 +compiler.gnuasarm1020.semver=ARM binutils 2.35.1 -group.gnuasarm64.compilers=gnuasarm6454:gnuasarm64g630:gnuasarm64g640:gnuasarm64g730:gnuasarm64g820:gnuasarm64g930:gnuasarm64g1020 +group.gnuasarm64.compilers=gnuasarm64g630:gnuasarm64g820:gnuasarm64g930:gnuasarm64g1020 group.gnuasarm64.versionFlag=--version group.gnuasarm64.options=-g group.gnuasarm64.isSemVer=true -group.gnuasarm64.baseName=AARCH64 gcc +group.gnuasarm64.baseName=AArch64 binutils group.gnuasarm64.supportsExecute=false group.gnuasarm64.objdumper=/opt/compiler-explorer/arm64/gcc-10.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/bin/objdump -compiler.gnuasarm6454.exe=/opt/compiler-explorer/arm64/gcc-5.4.0/aarch64-unknown-linux-gnueabi/bin/aarch64-unknown-linux-gnueabi-as -compiler.gnuasarm6454.name=ARM64 gcc 5.4 -compiler.gnuasarm6454.semver=5.4 compiler.gnuasarm64g630.exe=/opt/compiler-explorer/arm64/gcc-6.3.0/aarch64-unknown-linux-gnueabi/bin/aarch64-unknown-linux-gnueabi-as -compiler.gnuasarm64g630.name=ARM64 gcc 6.3 -compiler.gnuasarm64g630.semver=6.3 -compiler.gnuasarm64g640.exe=/opt/compiler-explorer/arm64/gcc-6.4.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-as -compiler.gnuasarm64g640.name=ARM64 gcc 6.4 -compiler.gnuasarm64g640.semver=6.4.0 -compiler.gnuasarm64g730.exe=/opt/compiler-explorer/arm64/gcc-7.3.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-as -compiler.gnuasarm64g730.name=ARM64 gcc 7.3 -compiler.gnuasarm64g730.semver=7.3.0 +compiler.gnuasarm64g630.name=AArch64 binutils 2.28 +compiler.gnuasarm64g630.semver=2.28 compiler.gnuasarm64g820.exe=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-as -compiler.gnuasarm64g820.name=ARM64 gcc 8.2 -compiler.gnuasarm64g820.semver=8.2.0 +compiler.gnuasarm64g820.name=AArch64 binutils 2.31.1 +compiler.gnuasarm64g820.semver=2.31.1 compiler.gnuasarm64g930.exe=/opt/compiler-explorer/arm64/gcc-9.3.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-as -compiler.gnuasarm64g930.name=ARM64 gcc 9.3 -compiler.gnuasarm64g930.semver=9.3.0 +compiler.gnuasarm64g930.name=AArch64 binutils 2.33.1 +compiler.gnuasarm64g930.semver=2.33.1 compiler.gnuasarm64g1020.exe=/opt/compiler-explorer/arm64/gcc-10.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-as -compiler.gnuasarm64g1020.name=ARM64 gcc 10.2 -compiler.gnuasarm64g1020.semver=10.2.0 +compiler.gnuasarm64g1020.name=AArch64 binutils 2.35.1 +compiler.gnuasarm64g1020.semver=2.35.1 group.llvmas.compilers=llvmas30:llvmas31:llvmas32:llvmas33:llvmas341:llvmas350:llvmas351:llvmas37x:llvmas36x:llvmas371:llvmas380:llvmas381:llvmas390:llvmas391:llvmas400:llvmas401:llvmas500:llvmas600:llvmas700:llvmas800:llvmas900:llvmas1000:llvmas1001:llvmas1100:llvmas1101:llvmas1200:llvmas1201:llvmas1300:llvmas_trunk:llvmas_assertions_trunk diff --git a/etc/config/c++.amazon.properties b/etc/config/c++.amazon.properties index 7ead1b65f..6fb2c7f77 100644 --- a/etc/config/c++.amazon.properties +++ b/etc/config/c++.amazon.properties @@ -540,7 +540,7 @@ compiler.wasm32clang.options=-target wasm32 ################################ # icc for x86 -group.icc.compilers=icc1301:icc16:icc17:icc18:icc19:icc191:icc202112:icc202120:icc202130 +group.icc.compilers=icc1301:icc16:icc17:icc18:icc19:icc191:icc202112:icc202120:icc202130:icc202140:icc202150 group.icc.intelAsm=-masm=intel group.icc.options=-gxx-name=/opt/compiler-explorer/gcc-4.7.1/bin/g++ group.icc.groupName=ICC x86-64 @@ -584,15 +584,28 @@ compiler.icc202120.ldPath=/opt/compiler-explorer/intel-cpp-2021.2.0.118/compiler compiler.icc202120.libPath=/opt/compiler-explorer/intel-cpp-2021.2.0.118/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2021.2.0.118/compiler/latest/linux/compiler/lib/ia32_lin compiler.icc202120.semver=2021.2.0 compiler.icc202120.options=-gxx-name=/opt/compiler-explorer/gcc-10.1.0/bin/g++ + compiler.icc202130.exe=/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/bin/intel64/icc compiler.icc202130.ldPath=/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/compiler/lib/intel64_lin compiler.icc202130.libPath=/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/compiler/lib/ia32_lin compiler.icc202130.semver=2021.3.0 compiler.icc202130.options=-gxx-name=/opt/compiler-explorer/gcc-10.1.0/bin/g++ +compiler.icc202140.exe=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/bin/intel64/icc +compiler.icc202140.ldPath=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/intel64_lin +compiler.icc202140.libPath=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/ia32_lin +compiler.icc202140.semver=2021.4.0 +compiler.icc202140.options=-gxx-name=/opt/compiler-explorer/gcc-10.1.0/bin/g++ + +compiler.icc202150.exe=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/bin/intel64/icc +compiler.icc202150.ldPath=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/intel64_lin +compiler.icc202150.libPath=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/ia32_lin +compiler.icc202150.semver=2021.5.0 +compiler.icc202150.options=-gxx-name=/opt/compiler-explorer/gcc-10.1.0/bin/g++ + ################################ # icx for x86 -group.icx.compilers=icx202112:icx202120:icx202130 +group.icx.compilers=icx202112:icx202120:icx202130:icx202140:icx202200 group.icx.intelAsm=-masm=intel group.icx.options= group.icx.groupName=ICX x86-64 @@ -617,6 +630,18 @@ compiler.icx202130.libPath=/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compil compiler.icx202130.semver=2021.3.0 compiler.icx202130.options=--gcc-toolchain=/opt/compiler-explorer/gcc-10.1.0 +compiler.icx202140.exe=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/bin/icpx +compiler.icx202140.ldPath=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/intel64_lin +compiler.icx202140.libPath=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/ia32_lin +compiler.icx202140.semver=2021.4.0 +compiler.icx202140.options=--gcc-toolchain=/opt/compiler-explorer/gcc-10.1.0 + +compiler.icx202200.exe=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/bin/icpx +compiler.icx202200.ldPath=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/intel64_lin +compiler.icx202200.libPath=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/ia32_lin +compiler.icx202200.semver=2022.0.0 +compiler.icx202200.options=--gcc-toolchain=/opt/compiler-explorer/gcc-10.1.0 + ################################ # zapcc group.zapcc.compilers=zapcc190308 @@ -628,7 +653,7 @@ compiler.zapcc190308.name=x86-64 Zapcc 190308 ############################### # Cross GCC -group.cross.compilers=&ppc:&mips:&msp:&gccarm:&avr:&rvgcc:&platspec:&kalray +group.cross.compilers=&ppc:&mips:&mrisc32:&msp:&gccarm:&avr:&rvgcc:&xtensaesp32:&xtensaesp32s2:&xtensaesp32s3:&platspec:&kalray group.cross.supportsBinary=true group.cross.groupName=Cross GCC group.cross.supportsExecute=false @@ -947,6 +972,17 @@ compiler.mips564el.semver=5.4 compiler.mips564el.objdumper=/opt/compiler-explorer/mips64el/gcc-5.4.0/mips64el-unknown-linux-gnu/bin/mips64el-unknown-linux-gnu-objdump ############################### +# GCC for MRISC32 +group.mrisc32.compilers=mrisc32-gcc-trunk +group.mrisc32.groupName=MRISC32 GCC +group.mrisc32.isSemVer=true + +compiler.mrisc32-gcc-trunk.exe=/opt/compiler-explorer/mrisc32-trunk/mrisc32-gnu-toolchain/bin/mrisc32-elf-g++ +compiler.mrisc32-gcc-trunk.name=MRISC32 gcc (trunk) +compiler.mrisc32-gcc-trunk.semver=(trunk) +compiler.mrisc32-gcc-trunk.objdumper=/opt/compiler-explorer/mrisc32-trunk/mrisc32-gnu-toolchain/bin/mrisc32-elf-objdump + +############################### # GCC for RISC-V group.rvgcc.compilers=rv64-gcc1020:rv64-gcc820:rv32-gcc1020:rv32-gcc820 group.rvgcc.groupName=RISC-V GCC @@ -975,6 +1011,57 @@ compiler.rv32-gcc1020.semver=10.2.0 compiler.rv32-gcc1020.objdumper=/opt/compiler-explorer/riscv32/gcc-10.2.0/riscv32-unknown-elf/bin/riscv32-unknown-elf-objdump ################################ +# GCC for Xtensa ESP32 +group.xtensaesp32.compilers=esp32g2019r2:esp32g2020r1:esp32g2020r2:esp32g2020r3:esp32g2021r1:esp32g2021r2 +group.xtensaesp32.groupName=Xtensa ESP32 GCC +group.xtensaesp32.supportsBinary=false + +compiler.esp32g2019r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_2_0-esp-2019r2/bin/xtensa-esp32-elf-g++ +compiler.esp32g2019r2.name=Xtensa ESP32 gcc 8.2.0 (2019r2) +compiler.esp32g2020r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_2_0-esp-2020r1/bin/xtensa-esp32-elf-g++ +compiler.esp32g2020r1.name=Xtensa ESP32 gcc 8.2.0 (2020r1) +compiler.esp32g2020r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_2_0-esp-2020r2/bin/xtensa-esp32-elf-g++ +compiler.esp32g2020r2.name=Xtensa ESP32 gcc 8.2.0 (2020r2) +compiler.esp32g2020r3.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_4_0-esp-2020r3/bin/xtensa-esp32-elf-g++ +compiler.esp32g2020r3.name=Xtensa ESP32 gcc 8.4.0 (2020r3) +compiler.esp32g2021r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_4_0-esp-2021r1/bin/xtensa-esp32-elf-g++ +compiler.esp32g2021r1.name=Xtensa ESP32 gcc 8.4.0 (2021r1) +compiler.esp32g2021r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_4_0-esp-2021r2/bin/xtensa-esp32-elf-g++ +compiler.esp32g2021r2.name=Xtensa ESP32 gcc 8.4.0 (2021r2) + +################################ +# GCC for Xtensa ESP32-S2 +group.xtensaesp32s2.compilers=esp32s2g2019r2:esp32s2g2020r1:esp32s2g2020r2:esp32s2g2020r3:esp32s2g2021r1:esp32s2g2021r2 +group.xtensaesp32s2.groupName=Xtensa ESP32-S2 GCC +group.xtensaesp32s2.supportsBinary=false + +compiler.esp32s2g2019r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_2_0-esp-2019r2/bin/xtensa-esp32s2-elf-g++ +compiler.esp32s2g2019r2.name=Xtensa ESP32-S2 gcc 8.2.0 (2019r2) +compiler.esp32s2g2020r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_2_0-esp-2020r1/bin/xtensa-esp32s2-elf-g++ +compiler.esp32s2g2020r1.name=Xtensa ESP32-S2 gcc 8.2.0 (2020r1) +compiler.esp32s2g2020r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_2_0-esp-2020r2/bin/xtensa-esp32s2-elf-g++ +compiler.esp32s2g2020r2.name=Xtensa ESP32-S2 gcc 8.2.0 (2020r2) +compiler.esp32s2g2020r3.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3/bin/xtensa-esp32s2-elf-g++ +compiler.esp32s2g2020r3.name=Xtensa ESP32-S2 gcc 8.4.0 (2020r3) +compiler.esp32s2g2021r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1/bin/xtensa-esp32s2-elf-g++ +compiler.esp32s2g2021r1.name=Xtensa ESP32-S2 gcc 8.4.0 (2021r1) +compiler.esp32s2g2021r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2/bin/xtensa-esp32s2-elf-g++ +compiler.esp32s2g2021r2.name=Xtensa ESP32-S2 gcc 8.4.0 (2021r2) + +################################ +# GCC for Xtensa ESP32-S3 +group.xtensaesp32s3.compilers=esp32s3g2020r3:esp32s3g2021r1:esp32s3g2021r2 +group.xtensaesp32s3.groupName=Xtensa ESP32-S3 GCC +group.xtensaesp32s3.supportsBinary=false + +compiler.esp32s3g2020r3.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-gcc8_4_0-esp-2020r3/bin/xtensa-esp32s3-elf-g++ +compiler.esp32s3g2020r3.name=Xtensa ESP32-S3 gcc 8.4.0 (2020r3) +compiler.esp32s3g2021r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r1/bin/xtensa-esp32s3-elf-g++ +compiler.esp32s3g2021r1.name=Xtensa ESP32-S3 gcc 8.4.0 (2021r1) +compiler.esp32s3g2021r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2/bin/xtensa-esp32s3-elf-g++ +compiler.esp32s3g2021r2.name=Xtensa ESP32-S3 gcc 8.4.0 (2021r2) + +################################ # Windows Compilers group.cl.compilers=&cl19:&cl19_2015_u3:&cl_new group.cl.compilerType=wine-vc @@ -1101,7 +1188,7 @@ compiler.zcxxtrunk.semver=trunk ################################# ################################# # Installed libs -libs=abseil:benchmark:benri:blaze:boost:brigand:catch2:cctz:cmcstl2:cnl:cppcoro:cppitertools:crosscables:ctbignum:ctre:date:dawjson:dlib:doctest:eastl:eigen:enoki:entt:etl:eve:expected_lite:fastor:fmt:glm:gnufs:googletest:gsl:hedley:hfsm:highway:hotels-template-library:immer:jsoncpp:kiwaku:kumi:kvasir:lager:lexy:libguarded:libsimdpp:libuv:llvm:llvmfs:lua:magic_enum:mp-units:namedtype:nanorange:nlohmann_json:nsimd:ofw:openssl:outcome:pegtl:pipes:pugixml:python:rangesv3:scnlib:seastar:simde:sol2:spdlog:spy:taojson:tbb:tomlplusplus:trompeloeil:tts:type_safe:unifex:vcl:xercesc:xsimd:xtensor:xtl:ztdtext:zug:cli11 +libs=abseil:benchmark:benri:blaze:boost:brigand:catch2:cctz:cmcstl2:cnl:cppcoro:cppitertools:crosscables:ctbignum:ctre:date:dawjson:dlib:doctest:eastl:eigen:enoki:entt:etl:eve:expected_lite:fastor:fmt:glm:gnufs:googletest:gsl:hedley:hfsm:highway:hotels-template-library:immer:jsoncpp:kiwaku:kumi:kvasir:lager:lagom:lexy:libguarded:libsimdpp:libuv:llvm:llvmfs:lua:magic_enum:mp-coro:mp-units:namedtype:nanorange:nlohmann_json:nsimd:ofw:openssl:outcome:pegtl:pipes:pugixml:python:rangesv3:raberu:scnlib:seastar:simde:sol2:spdlog:spy:taojson:tbb:tomlplusplus:trompeloeil:tts:type_safe:unifex:vcl:xercesc:xsimd:xtensor:xtl:ztdtext:zug:cli11 libs.abseil.name=Abseil libs.abseil.versions=trunk @@ -1157,7 +1244,7 @@ libs.blaze.versions.38.version=3.8 libs.blaze.versions.38.path=/opt/compiler-explorer/libs/blaze/v3.8 libs.boost.name=Boost -libs.boost.versions=164:165:166:167:168:169:170:171:172:173:174:175:176:177 +libs.boost.versions=164:165:166:167:168:169:170:171:172:173:174:175:176:177:178 libs.boost.url=https://www.boost.org libs.boost.versions.164.version=1.64.0 libs.boost.versions.164.path=/opt/compiler-explorer/libs/boost_1_64_0 @@ -1187,6 +1274,8 @@ libs.boost.versions.176.version=1.76.0 libs.boost.versions.176.path=/opt/compiler-explorer/libs/boost_1_76_0 libs.boost.versions.177.version=1.77.0 libs.boost.versions.177.path=/opt/compiler-explorer/libs/boost_1_77_0 +libs.boost.versions.178.version=1.78.0 +libs.boost.versions.178.path=/opt/compiler-explorer/libs/boost_1_78_0 libs.brigand.name=Brigand libs.brigand.versions=trunk:130 @@ -1695,6 +1784,14 @@ libs.lager.versions=trunk libs.lager.versions.trunk.version=trunk libs.lager.versions.trunk.path=/opt/compiler-explorer/libs/lager/trunk +libs.lagom.name=Lagom +libs.lagom.url=https://github.com/serenityos/serenity +libs.lagom.description=C++ Development libraries for SerenityOS +libs.lagom.versions=trunk +libs.lagom.versions.trunk.version=trunk +libs.lagom.versions.trunk.path=/opt/compiler-explorer/libs/lagom/trunk:/opt/compiler-explorer/libs/lagom/trunk/Userland/Libraries +libs.lagom.liblink=lagom-core + libs.lexy.name=lexy libs.lexy.url=https://github.com/foonathan/lexy libs.lexy.description=C++ parser combinator library @@ -1810,6 +1907,13 @@ libs.mp-units.versions.040.path=/opt/compiler-explorer/libs/mp-units/v0.4.0/src/ libs.mp-units.versions.031.version=0.3.1 libs.mp-units.versions.031.path=/opt/compiler-explorer/libs/mp-units/v0.3.1/src/include:/opt/compiler-explorer/libs/rangesv3/0.9.1/include +libs.mp-coro.name=mp-coro +libs.mp-coro.versions=trunk +libs.mp-coro.url=https://github.com/mpusz/mp-coro +libs.mp-coro.description=A C++20 coroutine support library +libs.mp-coro.versions.trunk.version=trunk +libs.mp-coro.versions.trunk.path=/opt/compiler-explorer/libs/mp-coro/trunk/src/include + libs.namedtype.name=NamedType libs.namedtype.versions=trunk libs.namedtype.url=https://github.com/joboccara/NamedType @@ -1945,6 +2049,14 @@ libs.rangesv3.versions.0100.path=/opt/compiler-explorer/libs/rangesv3/0.10.0/inc libs.rangesv3.versions.0110.version=0.11.0 libs.rangesv3.versions.0110.path=/opt/compiler-explorer/libs/rangesv3/0.11.0/include +libs.raberu.name=Raberu +libs.raberu.description=C++20 Named Parameters Library +libs.raberu.examples=a8cG4vMqE +libs.raberu.versions=trunk +libs.raberu.url=https://github.com/jfalcou/raberu +libs.raberu.versions.trunk.version=trunk +libs.raberu.versions.trunk.path=/opt/compiler-explorer/libs/raberu/trunk/include + libs.scnlib.name=scnlib libs.scnlib.versions=04 libs.scnlib.url=https://scnlib.readthedocs.io/en/latest/ @@ -2010,14 +2122,17 @@ libs.taojson.versions.trunk.version=trunk libs.taojson.versions.trunk.path=/opt/compiler-explorer/libs/taojson/trunk/include libs.tbb.name=Intel TBB -libs.tbb.versions=20202:20203 +libs.tbb.versions=20202:20203:20214 libs.tbb.liblink=tbb +libs.tbb.examples=xaGa4P8cn libs.tbb.url=https://www.threadingbuildingblocks.org/ libs.tbb.versions.20202.version=2020.2 libs.tbb.versions.20202.path=/opt/compiler-explorer/libs/tbb/2020.2/include libs.tbb.versions.20203.version=2020.3 libs.tbb.versions.20203.path=/opt/compiler-explorer/libs/tbb/2020.3/include -libs.tbb.versions.20203.alias=trunk +libs.tbb.versions.20214.version=2021.4.0 +libs.tbb.versions.20214.path=/opt/compiler-explorer/libs/tbb/2021.4.0/include +libs.tbb.versions.20214.liblink=tbb_debug:tbbmalloc_debug:tbbmalloc_proxy_debug libs.tomlplusplus.name=toml++ libs.tomlplusplus.versions=trunk:133:124 diff --git a/etc/config/c.amazon.properties b/etc/config/c.amazon.properties index bc0dd110d..423535b92 100644 --- a/etc/config/c.amazon.properties +++ b/etc/config/c.amazon.properties @@ -467,7 +467,7 @@ compiler.ppci055.semver=0.5.5 compiler.ppci055.exe=/opt/compiler-explorer/ppci-0.5.5/ppci/cli/cc.py # icc for x86 -group.cicc.compilers=cicc1301:cicc16:cicc17:cicc18:cicc19:cicc191:cicc202112 +group.cicc.compilers=cicc1301:cicc16:cicc17:cicc18:cicc19:cicc191:cicc202112:cicc202120:cicc202130:cicc202140:cicc202150 group.cicc.intelAsm=-masm=intel group.cicc.options=-x c -gcc-name=/opt/compiler-explorer/gcc-4.7.1/bin/gcc group.cicc.groupName=ICC x86-64 @@ -499,8 +499,32 @@ compiler.cicc202112.libPath=/opt/compiler-explorer/intel-cpp-2021.1.2.63/compile compiler.cicc202112.semver=2021.1.2 compiler.cicc202112.options=-gcc-name=/opt/compiler-explorer/gcc-10.1.0/bin/gcc +compiler.cicc202120.exe=/opt/compiler-explorer/intel-cpp-2021.2.0.118/compiler/latest/linux/bin/intel64/icc +compiler.cicc202120.ldPath=/opt/compiler-explorer/intel-cpp-2021.2.0.118/compiler/latest/linux/compiler/lib/intel64_lin +compiler.cicc202120.libPath=/opt/compiler-explorer/intel-cpp-2021.2.0.118/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2021.2.0.118/compiler/latest/linux/compiler/lib/ia32_lin +compiler.cicc202120.semver=2021.2.0 +compiler.cicc202120.options=-gxx-name=/opt/compiler-explorer/gcc-10.1.0/bin/g++ + +compiler.cicc202130.exe=/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/bin/intel64/icc +compiler.cicc202130.ldPath=/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/compiler/lib/intel64_lin +compiler.cicc202130.libPath=/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/compiler/lib/ia32_lin +compiler.cicc202130.semver=2021.3.0 +compiler.cicc202130.options=-gxx-name=/opt/compiler-explorer/gcc-10.1.0/bin/g++ + +compiler.cicc202140.exe=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/bin/intel64/icc +compiler.cicc202140.ldPath=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/intel64_lin +compiler.cicc202140.libPath=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/ia32_lin +compiler.cicc202140.semver=2021.4.0 +compiler.cicc202140.options=-gxx-name=/opt/compiler-explorer/gcc-10.1.0/bin/g++ + +compiler.cicc202150.exe=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/bin/intel64/icc +compiler.cicc202150.ldPath=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/intel64_lin +compiler.cicc202150.libPath=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/ia32_lin +compiler.cicc202150.semver=2021.5.0 +compiler.cicc202150.options=-gxx-name=/opt/compiler-explorer/gcc-10.1.0/bin/g++ + # icx for x86 -group.cicx.compilers=cicx202112 +group.cicx.compilers=cicx202112:cicx202120:cicx202130:cicx202140:cicx202200 group.cicx.intelAsm=-masm=intel group.cicx.options= group.cicx.groupName=ICX x86-64 @@ -513,9 +537,33 @@ compiler.cicx202112.libPath=/opt/compiler-explorer/intel-cpp-2021.1.2.63/compile compiler.cicx202112.semver=2021.1.2 compiler.cicx202112.options=--gcc-toolchain=/opt/compiler-explorer/gcc-10.1.0 +compiler.cicx202120.exe=/opt/compiler-explorer/intel-cpp-2021.2.0.118/compiler/latest/linux/bin/icx +compiler.cicx202120.ldPath=/opt/compiler-explorer/intel-cpp-2021.2.0.118/compiler/latest/linux/compiler/lib/intel64_lin +compiler.cicx202120.libPath=/opt/compiler-explorer/intel-cpp-2021.2.0.118/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2021.2.0.118/compiler/latest/linux/compiler/lib/ia32_lin +compiler.cicx202120.semver=2021.2.0 +compiler.cicx202120.options=--gcc-toolchain=/opt/compiler-explorer/gcc-10.1.0 + +compiler.cicx202130.exe=/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/bin/icx +compiler.cicx202130.ldPath=/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/compiler/lib/intel64_lin +compiler.cicx202130.libPath=/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2021.3.0.3168/compiler/latest/linux/compiler/lib/ia32_lin +compiler.cicx202130.semver=2021.3.0 +compiler.cicx202130.options=--gcc-toolchain=/opt/compiler-explorer/gcc-10.1.0 + +compiler.cicx202140.exe=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/bin/icx +compiler.cicx202140.ldPath=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/intel64_lin +compiler.cicx202140.libPath=/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2021.4.0.3201/compiler/latest/linux/compiler/lib/ia32_lin +compiler.cicx202140.semver=2021.4.0 +compiler.cicx202140.options=--gcc-toolchain=/opt/compiler-explorer/gcc-10.1.0 + +compiler.cicx202200.exe=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/bin/icx +compiler.cicx202200.ldPath=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/intel64_lin +compiler.cicx202200.libPath=/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-cpp-2022.0.1.71/compiler/latest/linux/compiler/lib/ia32_lin +compiler.cicx202200.semver=2022.0.0 +compiler.cicx202200.options=--gcc-toolchain=/opt/compiler-explorer/gcc-10.1.0 + ############################### # Cross GCC -group.ccross.compilers=&cppc:&cmips:&cmsp:&cgccarm:&cavr:&rvcgcc:&cplatspec:&ckalray +group.ccross.compilers=&cppc:&cmips:&cmrisc32:&cmsp:&cgccarm:&cavr:&rvcgcc:&cxtensaesp32:&cxtensaesp32s2:&cxtensaesp32s3:&cplatspec:&ckalray group.ccross.supportsBinary=false group.ccross.groupName=Cross GCC @@ -818,6 +866,18 @@ compiler.cmips564el.name=MIPS64 gcc 5.4 (el) compiler.cmips564el.semver=5.4 ############################### +# GCC for MRISC32 +group.cmrisc32.compilers=cmrisc32-gcc-trunk +group.cmrisc32.groupName=MRISC32 GCC +group.cmrisc32.isSemVer=true +group.cmrisc32.supportsBinary=true + +compiler.cmrisc32-gcc-trunk.exe=/opt/compiler-explorer/mrisc32-trunk/mrisc32-gnu-toolchain/bin/mrisc32-elf-gcc +compiler.cmrisc32-gcc-trunk.name=MRISC32 gcc (trunk) +compiler.cmrisc32-gcc-trunk.semver=(trunk) +compiler.cmrisc32-gcc-trunk.objdumper=/opt/compiler-explorer/mrisc32-trunk/mrisc32-gnu-toolchain/bin/mrisc32-elf-objdump + +############################### # GCC for RISC-V group.rvcgcc.compilers=rv64-cgcc1020:rv64-cgcc820:rv32-cgcc1020:rv32-cgcc820 group.rvcgcc.groupName=RISC-V GCC @@ -848,6 +908,71 @@ compiler.rv32-cgcc1020.semver=10.2.0 compiler.rv32-cgcc1020.objdumper=/opt/compiler-explorer/riscv32/gcc-10.2.0/riscv32-unknown-elf/bin/riscv32-unknown-elf-objdump compiler.rv32-cgcc1020.supportsBinary=true +################################ +# GCC for Xtensa ESP32 +group.cxtensaesp32.compilers=cesp32g2019r2:cesp32g2020r1:cesp32g2020r2:cesp32g2020r3:cesp32g2021r1:cesp32g2021r2 +group.cxtensaesp32.groupName=Xtensa ESP32 GCC +group.cxtensaesp32.supportsBinary=false + +compiler.cesp32g2019r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_2_0-esp-2019r2/bin/xtensa-esp32-elf-gcc +compiler.cesp32g2019r2.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_2_0-esp-2019r2/bin/xtensa-esp32-elf-objdump +compiler.cesp32g2019r2.name=Xtensa ESP32 gcc 8.2.0 (2019r2) +compiler.cesp32g2020r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_2_0-esp-2020r1/bin/xtensa-esp32-elf-gcc +compiler.cesp32g2020r1.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_2_0-esp-2020r1/bin/xtensa-esp32-elf-objdump +compiler.cesp32g2020r1.name=Xtensa ESP32 gcc 8.2.0 (2020r1) +compiler.cesp32g2020r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_2_0-esp-2020r2/bin/xtensa-esp32-elf-gcc +compiler.cesp32g2020r2.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_2_0-esp-2020r2/bin/xtensa-esp32-elf-objdump +compiler.cesp32g2020r2.name=Xtensa ESP32 gcc 8.2.0 (2020r2) +compiler.cesp32g2020r3.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_4_0-esp-2020r3/bin/xtensa-esp32-elf-gcc +compiler.cesp32g2020r3.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_4_0-esp-2020r3/bin/xtensa-esp32-elf-objdump +compiler.cesp32g2020r3.name=Xtensa ESP32 gcc 8.4.0 (2020r3) +compiler.cesp32g2021r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_4_0-esp-2021r1/bin/xtensa-esp32-elf-gcc +compiler.cesp32g2021r1.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_4_0-esp-2021r1/bin/xtensa-esp32-elf-objdump +compiler.cesp32g2021r1.name=Xtensa ESP32 gcc 8.4.0 (2021r1) +compiler.cesp32g2021r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_4_0-esp-2021r2/bin/xtensa-esp32-elf-gcc +compiler.cesp32g2021r2.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc8_4_0-esp-2021r2/bin/xtensa-esp32-elf-objdump +compiler.cesp32g2021r2.name=Xtensa ESP32 gcc 8.4.0 (2021r2) + +################################ +# GCC for Xtensa ESP32-S2 +group.cxtensaesp32s2.compilers=cesp32s2g2019r2:cesp32s2g2020r1:cesp32s2g2020r2:cesp32s2g2020r3:cesp32s2g2021r1:cesp32s2g2021r2 +group.cxtensaesp32s2.groupName=Xtensa ESP32-S2 GCC +group.cxtensaesp32s2.supportsBinary=false + +compiler.cesp32s2g2019r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_2_0-esp-2019r2/bin/xtensa-esp32s2-elf-gcc +compiler.cesp32s2g2019r2.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_2_0-esp-2019r2/bin/xtensa-esp32s2-elf-objdump +compiler.cesp32s2g2019r2.name=Xtensa ESP32-S2 gcc 8.2.0 (2019r2) +compiler.cesp32s2g2020r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_2_0-esp-2020r1/bin/xtensa-esp32s2-elf-gcc +compiler.cesp32s2g2020r1.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_2_0-esp-2020r1/bin/xtensa-esp32s2-elf-objdump +compiler.cesp32s2g2020r1.name=Xtensa ESP32-S2 gcc 8.2.0 (2020r1) +compiler.cesp32s2g2020r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_2_0-esp-2020r2/bin/xtensa-esp32s2-elf-gcc +compiler.cesp32s2g2020r2.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_2_0-esp-2020r2/bin/xtensa-esp32s2-elf-objdump +compiler.cesp32s2g2020r2.name=Xtensa ESP32-S2 gcc 8.2.0 (2020r2) +compiler.cesp32s2g2020r3.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3/bin/xtensa-esp32s2-elf-gcc +compiler.cesp32s2g2020r3.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3/bin/xtensa-esp32s2-elf-objdump +compiler.cesp32s2g2020r3.name=Xtensa ESP32-S2 gcc 8.4.0 (2020r3) +compiler.cesp32s2g2021r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1/bin/xtensa-esp32s2-elf-gcc +compiler.cesp32s2g2021r1.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1/bin/xtensa-esp32s2-elf-objdump +compiler.cesp32s2g2021r1.name=Xtensa ESP32-S2 gcc 8.4.0 (2021r1) +compiler.cesp32s2g2021r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2/bin/xtensa-esp32s2-elf-gcc +compiler.cesp32s2g2021r2.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2/bin/xtensa-esp32s2-elf-objdump +compiler.cesp32s2g2021r2.name=Xtensa ESP32-S2 gcc 8.4.0 (2021r2) + +################################ +# GCC for Xtensa ESP32-S3 +group.cxtensaesp32s3.compilers=cesp32s3g2020r3:cesp32s3g2021r1:cesp32s3g2021r2 +group.cxtensaesp32s3.groupName=Xtensa ESP32-S3 GCC +group.cxtensaesp32s3.supportsBinary=false + +compiler.cesp32s3g2020r3.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-gcc8_4_0-esp-2020r3/bin/xtensa-esp32s3-elf-gcc +compiler.cesp32s3g2020r3.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-gcc8_4_0-esp-2020r3/bin/xtensa-esp32s3-elf-objdump +compiler.cesp32s3g2020r3.name=Xtensa ESP32-S3 gcc 8.4.0 (2020r3) +compiler.cesp32s3g2021r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r1/bin/xtensa-esp32s3-elf-gcc +compiler.cesp32s3g2021r1.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r1/bin/xtensa-esp32s3-elf-objdump +compiler.cesp32s3g2021r1.name=Xtensa ESP32-S3 gcc 8.4.0 (2021r1) +compiler.cesp32s3g2021r2.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2/bin/xtensa-esp32s3-elf-gcc +compiler.cesp32s3g2021r2.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2/bin/xtensa-esp32s3-elf-objdump +compiler.cesp32s3g2021r2.name=Xtensa ESP32-S3 gcc 8.4.0 (2021r2) ############################### # ARM HPC (disabled) diff --git a/etc/config/circle.amazon.properties b/etc/config/circle.amazon.properties index e85813d06..bb2a5eaf3 100644 --- a/etc/config/circle.amazon.properties +++ b/etc/config/circle.amazon.properties @@ -26,7 +26,7 @@ compiler.circle128.intelAsm= ################################# ################################# # Installed libs (See c++.amazon.properties for a scheme of libs group) -libs=abseil:benchmark:benri:blaze:boost:brigand:catch2:cctz:cmcstl2:cnl:cppcoro:cppitertools:crosscables:ctbignum:ctre:date:dlib:doctest:eastl:eigen:enoki:entt:etl:eve:expected_lite:fastor:fmt:glm:gnufs:googletest:gsl:hedley:hfsm:highway:immer:jsoncpp:kiwaku:kumi:kvasir:lager:lexy:libguarded:libuv:llvm:llvmfs:lua:mp-units:namedtype:nanorange:nlohmann_json:nsimd:ofw:openssl:outcome:pegtl:pipes:pugixml:python:rangesv3:seastar:simde:sol2:spdlog:spy:taojson:tbb:tomlplusplus:trompeloeil:tts:type_safe:unifex:vcl:xsimd:xtensor:xtl:ztdtext:zug +libs=abseil:benchmark:benri:blaze:boost:brigand:catch2:cctz:cmcstl2:cnl:cppcoro:cppitertools:crosscables:ctbignum:ctre:date:dlib:doctest:eastl:eigen:enoki:entt:etl:eve:expected_lite:fastor:fmt:glm:gnufs:googletest:gsl:hedley:hfsm:highway:immer:jsoncpp:kiwaku:kumi:kvasir:lager:lexy:libguarded:libuv:llvm:llvmfs:lua:mp-coro:mp-units:namedtype:nanorange:nlohmann_json:nsimd:ofw:openssl:outcome:pegtl:pipes:pugixml:python:rangesv3:raberu:seastar:simde:sol2:spdlog:spy:taojson:tbb:tomlplusplus:trompeloeil:tts:type_safe:unifex:vcl:xsimd:xtensor:xtl:ztdtext:zug libs.abseil.name=Abseil libs.abseil.versions=trunk @@ -700,6 +700,13 @@ libs.mp-units.versions.040.path=/opt/compiler-explorer/libs/mp-units/v0.4.0/src/ libs.mp-units.versions.031.version=0.3.1 libs.mp-units.versions.031.path=/opt/compiler-explorer/libs/mp-units/v0.3.1/src/include:/opt/compiler-explorer/libs/rangesv3/0.9.1/include +libs.mp-coro.name=mp-coro +libs.mp-coro.versions=trunk +libs.mp-coro.url=https://github.com/mpusz/mp-coro +libs.mp-coro.description=A C++20 coroutine support library +libs.mp-coro.versions.trunk.version=trunk +libs.mp-coro.versions.trunk.path=/opt/compiler-explorer/libs/mp-coro/trunk/src/include + libs.namedtype.name=NamedType libs.namedtype.versions=trunk libs.namedtype.url=https://github.com/joboccara/NamedType @@ -826,6 +833,13 @@ libs.rangesv3.versions.0100.path=/opt/compiler-explorer/libs/rangesv3/0.10.0/inc libs.rangesv3.versions.0110.version=0.11.0 libs.rangesv3.versions.0110.path=/opt/compiler-explorer/libs/rangesv3/0.11.0/include +libs.raberu.name=Raberu +libs.raberu.description=C++20 Named Parameters Library +libs.raberu.versions=trunk +libs.raberu.url=https://github.com/jfalcou/raberu +libs.raberu.versions.trunk.version=trunk +libs.raberu.versions.trunk.path=/opt/compiler-explorer/libs/raberu/trunk/include + libs.seastar.name=Seastar libs.seastar.description=SeaStar is an event-driven framework allowing you to write non-blocking, asynchronous code in a relatively straightforward manner. libs.seastar.versions=180 diff --git a/etc/config/cpp_for_opencl.amazon.properties b/etc/config/cpp_for_opencl.amazon.properties index 49744dfc7..cdbb3ca10 100644 --- a/etc/config/cpp_for_opencl.amazon.properties +++ b/etc/config/cpp_for_opencl.amazon.properties @@ -9,9 +9,9 @@ translatorPath=/opt/compiler-explorer/llvm-spirv-trunk/bin/llvm-spirv disassemblerPath=/opt/compiler-explorer/SPIRV-Tools-master/build/tools/spirv-dis # Clang for Arm -# Provides 32- and 64-bit menu items for clang-10, clang-11, clang-12 and trunk +# Provides 32- and 64-bit menu items for clang-10, clang-11, clang-12, clang-13 and trunk group.armcpp4oclclang32.groupName=Arm 32-bit clang -group.armcpp4oclclang32.compilers=armv7-cpp4oclclang1000:armv7-cpp4oclclang1001:armv7-cpp4oclclang1100:armv7-cpp4oclclang1101:armv7-cpp4oclclang1200:armv7-cpp4oclclang-trunk:armv7-cpp4oclclang-trunk-assertions +group.armcpp4oclclang32.compilers=armv7-cpp4oclclang1000:armv7-cpp4oclclang1001:armv7-cpp4oclclang1100:armv7-cpp4oclclang1101:armv7-cpp4oclclang1200:armv7-cpp4oclclang1300:armv7-cpp4oclclang-trunk:armv7-cpp4oclclang-trunk-assertions group.armcpp4oclclang32.isSemVer=true group.armcpp4oclclang32.compilerType=clang group.armcpp4oclclang32.supportsExecute=false @@ -20,7 +20,7 @@ group.armcpp4oclclang32.instructionSet=arm32 group.armcpp4oclclang32.baseOptions=-Dkernel= -D__kernel= group.armcpp4oclclang64.groupName=Arm 64-bit clang -group.armcpp4oclclang64.compilers=armv8-cpp4oclclang1000:armv8-cpp4oclclang1001:armv8-cpp4oclclang1100:armv8-cpp4oclclang1101:armv8-cpp4oclclang1200:armv8-cpp4oclclang-trunk:armv8-cpp4oclclang-trunk-assertions:armv8-full-cpp4oclclang-trunk +group.armcpp4oclclang64.compilers=armv8-cpp4oclclang1000:armv8-cpp4oclclang1001:armv8-cpp4oclclang1100:armv8-cpp4oclclang1101:armv8-cpp4oclclang1200:armv8-cpp4oclclang1300:armv8-cpp4oclclang-trunk:armv8-cpp4oclclang-trunk-assertions:armv8-full-cpp4oclclang-trunk group.armcpp4oclclang64.isSemVer=true group.armcpp4oclclang64.compilerType=clang group.armcpp4oclclang64.supportsExecute=false @@ -28,6 +28,22 @@ group.armcpp4oclclang64.instructionSet=aarch64 # The -Dkernel= -D__kernel= workaround is required to prevent the Clang crash reported in https://llvm.org/PR50841 group.armcpp4oclclang64.baseOptions=-Dkernel= -D__kernel= +# Specify each Clang version + +# version 13 +compiler.armv7-cpp4oclclang1300.name=armv7-a clang 13.0.0 +compiler.armv7-cpp4oclclang1300.exe=/opt/compiler-explorer/clang-13.0.0/bin/clang +compiler.armv7-cpp4oclclang1300.semver=13.0.0 +# Arm v7-a with Neon and VFPv3 +compiler.armv7-cpp4oclclang1300.options=-cl-std=clc++ -x cl -target arm-linux-gnueabi --gcc-toolchain=/opt/compiler-explorer/arm/gcc-8.2.0/arm-unknown-linux-gnueabi --sysroot=/opt/compiler-explorer/arm/gcc-8.2.0/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot + +compiler.armv8-cpp4oclclang1300.name=armv8-a clang 13.0.0 +compiler.armv8-cpp4oclclang1300.exe=/opt/compiler-explorer/clang-13.0.0/bin/clang +compiler.armv8-cpp4oclclang1300.semver=13.0.0 +# Arm v8-a +compiler.armv8-cpp4oclclang1300.options=-cl-std=clc++ -x cl -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot + +#version 12 compiler.armv7-cpp4oclclang1200.name=armv7-a clang 12.0.0 compiler.armv7-cpp4oclclang1200.exe=/opt/compiler-explorer/clang-12.0.0/bin/clang compiler.armv7-cpp4oclclang1200.semver=12.0.0 @@ -40,6 +56,7 @@ compiler.armv8-cpp4oclclang1200.semver=12.0.0 # Arm v8-a compiler.armv8-cpp4oclclang1200.options=-cl-std=clc++ -x cl -Xclang -finclude-default-header -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot +#version 11.0.1 compiler.armv7-cpp4oclclang1101.name=armv7-a clang 11.0.1 compiler.armv7-cpp4oclclang1101.exe=/opt/compiler-explorer/clang-11.0.1/bin/clang compiler.armv7-cpp4oclclang1101.semver=11.0.1 @@ -52,6 +69,7 @@ compiler.armv8-cpp4oclclang1101.semver=11.0.1 # Arm v8-a compiler.armv8-cpp4oclclang1101.options=-cl-std=clc++ -x cl -Xclang -finclude-default-header -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot +#version 11 compiler.armv7-cpp4oclclang1100.name=armv7-a clang 11.0.0 compiler.armv7-cpp4oclclang1100.exe=/opt/compiler-explorer/clang-11.0.0/bin/clang compiler.armv7-cpp4oclclang1100.semver=11.0.0 @@ -64,6 +82,7 @@ compiler.armv8-cpp4oclclang1100.semver=11.0.0 # Arm v8-a compiler.armv8-cpp4oclclang1100.options=-cl-std=clc++ -x cl -Xclang -finclude-default-header -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot +#version 10.0.1 compiler.armv7-cpp4oclclang1001.name=armv7-a clang 10.0.1 compiler.armv7-cpp4oclclang1001.exe=/opt/compiler-explorer/clang-10.0.1/bin/clang compiler.armv7-cpp4oclclang1001.semver=10.0.1 @@ -76,6 +95,7 @@ compiler.armv8-cpp4oclclang1001.semver=10.0.1 # Arm v8-a compiler.armv8-cpp4oclclang1001.options=-cl-std=clc++ -x cl -Xclang -finclude-default-header -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot +#version 10 compiler.armv7-cpp4oclclang1000.name=armv7-a clang 10.0.0 compiler.armv7-cpp4oclclang1000.exe=/opt/compiler-explorer/clang-10.0.0/bin/clang compiler.armv7-cpp4oclclang1000.semver=10.0.0 @@ -88,6 +108,7 @@ compiler.armv8-cpp4oclclang1000.semver=10.0.0 # Arm v8-a compiler.armv8-cpp4oclclang1000.options=-cl-std=clc++ -x cl -Xclang -finclude-default-header -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot +#main dev version compiler.armv7-cpp4oclclang-trunk.name=armv7-a clang (trunk) compiler.armv7-cpp4oclclang-trunk.exe=/opt/compiler-explorer/clang-trunk/bin/clang compiler.armv7-cpp4oclclang-trunk.demangler=/opt/compiler-explorer/gcc-snapshot/bin/c++filt @@ -136,7 +157,7 @@ group.armcpp4oclclang32spir.compilerType=spirv group.armcpp4oclclang32spir.supportsExecute=false group.armcpp4oclclang32spir.instructionSet=arm32 # The -Dkernel= -D__kernel= workaround is required to prevent the Clang crash reported in https://llvm.org/PR50841 -group.armcpp4oclclang32spir.baseOptions=-Dkernel= -D__kernel= -finclude-default-header -triple spir-unknown-unknown +group.armcpp4oclclang32spir.baseOptions=-Dkernel= -D__kernel= -finclude-default-header -fdeclare-opencl-builtins -triple spir-unknown-unknown group.armcpp4oclclang64spir.groupName=Arm 64-bit clang (SPIR-V asm) group.armcpp4oclclang64spir.compilers=armv8-cpp4oclclang-trunk-spir64:armv8-cpp4oclclang-trunk-assertions-spir64 @@ -145,7 +166,7 @@ group.armcpp4oclclang64spir.compilerType=spirv group.armcpp4oclclang64spir.supportsExecute=false group.armcpp4oclclang64spir.instructionSet=aarch64 # The -Dkernel= -D__kernel= workaround is required to prevent the Clang crash reported in https://llvm.org/PR50841 -group.armcpp4oclclang64spir.baseOptions=-Dkernel= -D__kernel= -finclude-default-header -triple spir64-unknown-unknown +group.armcpp4oclclang64spir.baseOptions=-Dkernel= -D__kernel= -finclude-default-header -fdeclare-opencl-builtins -triple spir64-unknown-unknown # Arm v7-a with Neon and VFPv3 compiler.armv7-cpp4oclclang-trunk-spir.name=armv7-a clang (trunk, SPIR-V asm) diff --git a/etc/config/cpp_for_opencl.defaults.properties b/etc/config/cpp_for_opencl.defaults.properties index 41e916002..117b789d5 100644 --- a/etc/config/cpp_for_opencl.defaults.properties +++ b/etc/config/cpp_for_opencl.defaults.properties @@ -12,7 +12,7 @@ group.clang.compilers=cppforopenclclangdefault:cppforopenclclang10:cppforopenclc group.clang.compilerType=clang compiler.cppforopenclclangdefault.exe=/usr/bin/clang compiler.cppforopenclclangdefault.name=clang default -compiler.cppforopenclclangdefault.options=-cl-std=clc++ -x cl -Xclang -finclude-default-header +compiler.cppforopenclclangdefault.options=-cl-std=clc++ -x cl compiler.cppforopenclclang10.exe=/usr/bin/clang-10 compiler.cppforopenclclang10.name=clang 10 compiler.cppforopenclclang10.options=-cl-std=clc++ -x cl -Xclang -finclude-default-header @@ -29,16 +29,16 @@ group.spirv.compilers=spirvcppclang13spir:spirvcppclang13spir64:spirvcppclangdef group.spirv.compilerType=spirv compiler.spirvcppclangdefaultspir.exe=/usr/bin/clang compiler.spirvcppclangdefaultspir.name=clang default (SPIR-V asm, spir triple) -compiler.spirvcppclangdefaultspir.options=-cl-std=clc++ -x cl -finclude-default-header -triple spir-unknown-unknown +compiler.spirvcppclangdefaultspir.options=-cl-std=clc++ -x cl -finclude-default-header -fdeclare-opencl-builtins -triple spir-unknown-unknown compiler.spirvcppclangdefaultspir64.exe=/usr/bin/clang compiler.spirvcppclangdefaultspir64.name=clang default (SPIR-V asm, spir64 triple) -compiler.spirvcppclangdefaultspir64.options=-cl-std=clc++ -x cl -finclude-default-header -triple spir64-unknown-unknown +compiler.spirvcppclangdefaultspir64.options=-cl-std=clc++ -x cl -finclude-default-header -fdeclare-opencl-builtins -triple spir64-unknown-unknown compiler.spirvcppclang13spir.exe=/usr/bin/clang-13 compiler.spirvcppclang13spir.name=clang 13 (SPIR-V asm, spir triple) -compiler.spirvcppclang13spir.options=-cl-std=clc++ -finclude-default-header -triple spir-unknown-unknown +compiler.spirvcppclang13spir.options=-cl-std=clc++ -finclude-default-header -fdeclare-opencl-builtins -triple spir-unknown-unknown compiler.spirvcppclang13spir64.exe=/usr/bin/clang-13 compiler.spirvcppclang13spir64.name=clang 13 (SPIR-V asm, spir64 triple) -compiler.spirvcppclang13spir64.options=-cl-std=clc++ -finclude-default-header -triple spir64-unknown-unknown +compiler.spirvcppclang13spir64.options=-cl-std=clc++ -finclude-default-header -fdeclare-opencl-builtins -triple spir64-unknown-unknown diff --git a/etc/config/fortran.amazon.properties b/etc/config/fortran.amazon.properties index a50bc6fc0..50e5b72e5 100644 --- a/etc/config/fortran.amazon.properties +++ b/etc/config/fortran.amazon.properties @@ -57,7 +57,7 @@ compiler.gfortransnapshot.semver=(trunk) ############################### # Intel Parallel Studio XE for x86 -group.ifort.compilers=ifort19:ifort202112:ifort202120:ifort202130 +group.ifort.compilers=ifort19:ifort202112:ifort202120:ifort202130:ifort202140:ifort202150 group.ifort.intelAsm=-masm=intel group.ifort.groupName=IFORT x86-64 group.ifort.isSemVer=true @@ -90,9 +90,21 @@ compiler.ifort202130.libPath=/opt/compiler-explorer/intel-fortran-2021.3.0.3168/ compiler.ifort202130.semver=2021.3.0 compiler.ifort202130.options=-gxx-name=/opt/compiler-explorer/gcc-10.1.0/bin/g++ +compiler.ifort202140.exe=/opt/compiler-explorer/intel-fortran-2021.4.0.3224/compiler/latest/linux/bin/intel64/ifort +compiler.ifort202140.ldPath=/opt/compiler-explorer/intel-fortran-2021.4.0.3224/compiler/latest/linux/compiler/lib/intel64_lin +compiler.ifort202140.libPath=/opt/compiler-explorer/intel-fortran-2021.4.0.3224/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-fortran-2021.4.0.3224/compiler/latest/linux/compiler/lib/ia32_lin +compiler.ifort202140.semver=2021.4.0 +compiler.ifort202140.options=-gxx-name=/opt/compiler-explorer/gcc-10.1.0/bin/g++ + +compiler.ifort202150.exe=/opt/compiler-explorer/intel-fortran-2022.0.1.70/compiler/latest/linux/bin/intel64/ifort +compiler.ifort202150.ldPath=/opt/compiler-explorer/intel-fortran-2022.0.1.70/compiler/latest/linux/compiler/lib/intel64_lin +compiler.ifort202150.libPath=/opt/compiler-explorer/intel-fortran-2022.0.1.70/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-fortran-2022.0.1.70/compiler/latest/linux/compiler/lib/ia32_lin +compiler.ifort202150.semver=2021.5.0 +compiler.ifort202150.options=-gxx-name=/opt/compiler-explorer/gcc-10.1.0/bin/g++ + ############################### # Intel oneAPI for x86 -group.ifx.compilers=ifx202112:ifx202120:ifx202130 +group.ifx.compilers=ifx202112:ifx202120:ifx202130:ifx202140:ifx202200 group.ifx.intelAsm=-masm=intel group.ifx.groupName=IFX x86-64 group.ifx.isSemVer=true @@ -114,6 +126,16 @@ compiler.ifx202130.ldPath=/opt/compiler-explorer/intel-fortran-2021.3.0.3168/com compiler.ifx202130.libPath=/opt/compiler-explorer/intel-fortran-2021.3.0.3168/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-fortran-2021.3.0.3168/compiler/latest/linux/compiler/lib/ia32_lin compiler.ifx202130.semver=2021.3.0 +compiler.ifx202140.exe=/opt/compiler-explorer/intel-fortran-2021.4.0.3224/compiler/latest/linux/bin/ifx +compiler.ifx202140.ldPath=/opt/compiler-explorer/intel-fortran-2021.4.0.3224/compiler/latest/linux/compiler/lib/intel64_lin +compiler.ifx202140.libPath=/opt/compiler-explorer/intel-fortran-2021.4.0.3224/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-fortran-2021.4.0.3224/compiler/latest/linux/compiler/lib/ia32_lin +compiler.ifx202140.semver=2021.4.0 + +compiler.ifx202200.exe=/opt/compiler-explorer/intel-fortran-2022.0.1.70/compiler/latest/linux/bin/ifx +compiler.ifx202200.ldPath=/opt/compiler-explorer/intel-fortran-2022.0.1.70/compiler/latest/linux/compiler/lib/intel64_lin +compiler.ifx202200.libPath=/opt/compiler-explorer/intel-fortran-2022.0.1.70/compiler/latest/linux/compiler/lib/intel64_lin:/opt/compiler-explorer/intel-fortran-2022.0.1.70/compiler/latest/linux/compiler/lib/ia32_lin +compiler.ifx202200.semver=2022.0.0 + ############################### # GCC Cross-Compilers group.cross.compilers=&gccarm:&gccaarch64:&ppc diff --git a/etc/config/haskell.amazon.properties b/etc/config/haskell.amazon.properties index 562e04382..efad88725 100644 --- a/etc/config/haskell.amazon.properties +++ b/etc/config/haskell.amazon.properties @@ -1,13 +1,11 @@ compilers=&ghc -# TODO: the defaultCompiler was changed to 844 for now. See -# https://github.com/compiler-explorer/compiler-explorer/issues/1412 -defaultCompiler=ghc901 +defaultCompiler=ghc921 demangler=/opt/compiler-explorer/demanglers/haskell/demangle supportsBinary=true supportsExecute=true objdumper=/opt/compiler-explorer/gcc-snapshot/bin/objdump -group.ghc.compilers=ghc802:ghc841:ghc842:ghc843:ghc844:ghc861:ghc862:ghc8105:ghc901 +group.ghc.compilers=ghc802:ghc841:ghc842:ghc843:ghc844:ghc861:ghc862:ghc8105:ghc901:ghc921 group.ghc.isSemVer=true group.ghc.baseName=x86-64 ghc compiler.ghc802.exe=/opt/compiler-explorer/ghc-8.0.2/bin/ghc @@ -32,6 +30,8 @@ compiler.ghc8105.exe=/opt/compiler-explorer/ghc-8.10.5/bin/ghc compiler.ghc8105.semver=8.10.5 compiler.ghc901.exe=/opt/compiler-explorer/ghc-9.0.1/bin/ghc compiler.ghc901.semver=9.0.1 +compiler.ghc921.exe=/opt/compiler-explorer/ghc-9.2.1/bin/ghc +compiler.ghc921.semver=9.2.1 ################################# ################################# diff --git a/etc/config/kotlin.amazon.properties b/etc/config/kotlin.amazon.properties index 07728cfec..d3d6a2873 100644 --- a/etc/config/kotlin.amazon.properties +++ b/etc/config/kotlin.amazon.properties @@ -3,7 +3,7 @@ compilerType=kotlin versionFlag=-version objdumper=/opt/compiler-explorer/jdk-17.0.0/bin/javap instructionSet=java -defaultCompiler=kotlinc1600 +defaultCompiler=kotlinc1610 demangler= postProcess= options= @@ -12,7 +12,7 @@ needsMulti=false supportsExecute=true interpreted=true -group.kotlin.compilers=kotlinc1400:kotlinc1410:kotlinc1420:kotlinc1421:kotlinc1430:kotlinc1431:kotlinc1432:kotlinc1500:kotlinc1510:kotlinc1520:kotlinc1521:kotlinc1530:kotlinc1531:kotlinc1600 +group.kotlin.compilers=kotlinc1400:kotlinc1410:kotlinc1420:kotlinc1421:kotlinc1430:kotlinc1431:kotlinc1432:kotlinc1500:kotlinc1510:kotlinc1520:kotlinc1521:kotlinc1530:kotlinc1531:kotlinc1600:kotlinc1610 group.kotlin.groupName=Kotlin group.kotlin.baseName=kotlinc group.kotlin.isSemVer=true @@ -72,3 +72,7 @@ compiler.kotlinc1600.exe=/opt/compiler-explorer/kotlin-jvm-1.6.0/bin/kotlinc-jvm compiler.kotlinc1600.semver=1.6.0 compiler.kotlinc1600.java_home=/opt/compiler-explorer/jdk-16.0.1 compiler.kotlinc1600.runtime=/opt/compiler-explorer/jdk-16.0.1/bin/java +compiler.kotlinc1610.exe=/opt/compiler-explorer/kotlin-jvm-1.6.10/bin/kotlinc-jvm +compiler.kotlinc1610.semver=1.6.10 +compiler.kotlinc1610.java_home=/opt/compiler-explorer/jdk-16.0.1 +compiler.kotlinc1610.runtime=/opt/compiler-explorer/jdk-16.0.1/bin/java diff --git a/etc/config/openclc.amazon.properties b/etc/config/openclc.amazon.properties index d5a4ca2dc..056ae148a 100644 --- a/etc/config/openclc.amazon.properties +++ b/etc/config/openclc.amazon.properties @@ -9,9 +9,9 @@ translatorPath=/opt/compiler-explorer/llvm-spirv-trunk/bin/llvm-spirv disassemblerPath=/opt/compiler-explorer/SPIRV-Tools-master/build/tools/spirv-dis # Clang for Arm -# Provides 32- and 64-bit menu items for clang-9, clang-10, clang-11, clang-12 and trunk +# Provides 32- and 64-bit menu items for clang-9, clang-10, clang-11, clang-12, clang-13 and trunk group.armoclcclang32.groupName=Arm 32-bit clang -group.armoclcclang32.compilers=armv7-oclcclang900:armv7-oclcclang901:armv7-oclcclang1000:armv7-oclcclang1001:armv7-oclcclang1100:armv7-oclcclang1101:armv7-oclcclang1200:armv7-oclcclang-trunk:armv7-oclcclang-trunk-assertions +group.armoclcclang32.compilers=armv7-oclcclang900:armv7-oclcclang901:armv7-oclcclang1000:armv7-oclcclang1001:armv7-oclcclang1100:armv7-oclcclang1101:armv7-oclcclang1200:armv7-oclcclang1300:armv7-oclcclang-trunk:armv7-oclcclang-trunk-assertions group.armoclcclang32.isSemVer=true group.armoclcclang32.compilerType=clang group.armoclcclang32.supportsExecute=false @@ -20,7 +20,7 @@ group.armoclcclang32.instructionSet=arm32 group.armoclcclang32.baseOptions=-Dkernel= -D__kernel= group.armoclcclang64.groupName=Arm 64-bit clang -group.armoclcclang64.compilers=armv8-oclcclang900:armv8-oclcclang901:armv8-oclcclang1000:armv8-oclcclang1001:armv8-oclcclang1100:armv8-oclcclang1101:armv8-oclcclang1200:armv8-oclcclang-trunk:armv8-full-oclcclang-trunk:armv8-oclcclang-trunk-assertions +group.armoclcclang64.compilers=armv8-oclcclang900:armv8-oclcclang901:armv8-oclcclang1000:armv8-oclcclang1001:armv8-oclcclang1100:armv8-oclcclang1101:armv8-oclcclang1200:armv8-oclcclang1300:armv8-oclcclang-trunk:armv8-full-oclcclang-trunk:armv8-oclcclang-trunk-assertions group.armoclcclang64.isSemVer=true group.armoclcclang64.compilerType=clang group.armoclcclang64.supportsExecute=false @@ -28,6 +28,22 @@ group.armoclcclang64.instructionSet=aarch64 # The -Dkernel= -D__kernel= workaround is required to prevent the Clang crash reported in https://llvm.org/PR50841 group.armoclcclang64.baseOptions=-Dkernel= -D__kernel= +#Specify each Clang versions + +#version 13 +compiler.armv7-oclcclang1300.name=armv7-a clang 13.0.0 +compiler.armv7-oclcclang1300.exe=/opt/compiler-explorer/clang-13.0.0/bin/clang +compiler.armv7-oclcclang1300.semver=13.0.0 +# Arm v7-a with Neon and VFPv3 +compiler.armv7-oclcclang1300.options=-target arm-linux-gnueabi --gcc-toolchain=/opt/compiler-explorer/arm/gcc-8.2.0/arm-unknown-linux-gnueabi --sysroot=/opt/compiler-explorer/arm/gcc-8.2.0/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot + +compiler.armv8-oclcclang1300.name=armv8-a clang 13.0.0 +compiler.armv8-oclcclang1300.exe=/opt/compiler-explorer/clang-13.0.0/bin/clang +compiler.armv8-oclcclang1300.semver=13.0.0 +# Arm v8-a +compiler.armv8-oclcclang1300.options=-target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot + +#version 12 compiler.armv7-oclcclang1200.name=armv7-a clang 12.0.0 compiler.armv7-oclcclang1200.exe=/opt/compiler-explorer/clang-12.0.0/bin/clang compiler.armv7-oclcclang1200.semver=12.0.0 @@ -40,6 +56,7 @@ compiler.armv8-oclcclang1200.semver=12.0.0 # Arm v8-a compiler.armv8-oclcclang1200.options=-Xclang -finclude-default-header -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot +#version 11.0.1 compiler.armv7-oclcclang1101.name=armv7-a clang 11.0.1 compiler.armv7-oclcclang1101.exe=/opt/compiler-explorer/clang-11.0.1/bin/clang compiler.armv7-oclcclang1101.semver=11.0.1 @@ -52,6 +69,7 @@ compiler.armv8-oclcclang1101.semver=11.0.1 # Arm v8-a compiler.armv8-oclcclang1101.options=-Xclang -finclude-default-header -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot +#version 11 compiler.armv7-oclcclang1100.name=armv7-a clang 11.0.0 compiler.armv7-oclcclang1100.exe=/opt/compiler-explorer/clang-11.0.0/bin/clang compiler.armv7-oclcclang1100.semver=11.0.0 @@ -64,6 +82,7 @@ compiler.armv8-oclcclang1100.semver=11.0.0 # Arm v8-a compiler.armv8-oclcclang1100.options=-Xclang -finclude-default-header -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot +#version 10.0.1 compiler.armv7-oclcclang1001.name=armv7-a clang 10.0.1 compiler.armv7-oclcclang1001.exe=/opt/compiler-explorer/clang-10.0.1/bin/clang compiler.armv7-oclcclang1001.semver=10.0.1 @@ -76,6 +95,7 @@ compiler.armv8-oclcclang1001.semver=10.0.1 # Arm v8-a compiler.armv8-oclcclang1001.options=-Xclang -finclude-default-header -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot +#version 10 compiler.armv7-oclcclang1000.name=armv7-a clang 10.0.0 compiler.armv7-oclcclang1000.exe=/opt/compiler-explorer/clang-10.0.0/bin/clang compiler.armv7-oclcclang1000.semver=10.0.0 @@ -88,6 +108,7 @@ compiler.armv8-oclcclang1000.semver=10.0.0 # Arm v8-a compiler.armv8-oclcclang1000.options=-Xclang -finclude-default-header -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot +#version 9.0.1 compiler.armv7-oclcclang901.name=armv7-a clang 9.0.1 compiler.armv7-oclcclang901.exe=/opt/compiler-explorer/clang-9.0.1/bin/clang compiler.armv7-oclcclang901.semver=9.0.1 @@ -100,6 +121,7 @@ compiler.armv8-oclcclang901.semver=9.0.1 # Arm v8-a compiler.armv8-oclcclang901.options=-Xclang -finclude-default-header -target aarch64-linux-gnu --gcc-toolchain=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/arm64/gcc-8.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot +#version 9 compiler.armv7-oclcclang900.name=armv7-a clang 9.0.0 compiler.armv7-oclcclang900.exe=/opt/compiler-explorer/clang-9.0.0/bin/clang compiler.armv7-oclcclang900.semver=9.0.0 @@ -160,7 +182,7 @@ group.armoclcclang32spir.compilerType=spirv group.armoclcclang32spir.supportsExecute=false group.armoclcclang32spir.instructionSet=arm32 # The -Dkernel= -D__kernel= workaround is required to prevent the Clang crash reported in https://llvm.org/PR50841 -group.armoclcclang32spir.baseOptions=-Dkernel= -D__kernel= -finclude-default-header -triple spir-unknown-unknown +group.armoclcclang32spir.baseOptions=-Dkernel= -D__kernel= -finclude-default-header -fdeclare-opencl-builtins -triple spir-unknown-unknown group.armoclcclang64spir.groupName=Arm 64-bit clang (SPIR-V asm) group.armoclcclang64spir.compilers=armv8-oclcclang-trunk-spir64:armv8-oclcclang-trunk-assertions-spir64 @@ -169,7 +191,7 @@ group.armoclcclang64spir.compilerType=spirv group.armoclcclang64spir.supportsExecute=false group.armoclcclang64spir.instructionSet=aarch64 # The -Dkernel= -D__kernel= workaround is required to prevent the Clang crash reported in https://llvm.org/PR50841 -group.armoclcclang64spir.baseOptions=-Dkernel= -D__kernel= -finclude-default-header -triple spir64-unknown-unknown +group.armoclcclang64spir.baseOptions=-Dkernel= -D__kernel= -finclude-default-header -fdeclare-opencl-builtins -triple spir64-unknown-unknown # Arm v7-a with Neon and VFPv3 compiler.armv7-oclcclang-trunk-spir.name=armv7-a clang (trunk, SPIR-V asm) diff --git a/etc/config/openclc.defaults.properties b/etc/config/openclc.defaults.properties index 1974f783f..96740b00e 100644 --- a/etc/config/openclc.defaults.properties +++ b/etc/config/openclc.defaults.properties @@ -37,16 +37,16 @@ group.spirv.compilers=spirvclang13spir:spirvclang13spir64:spirvclangdefaultspir: group.spirv.compilerType=spirv compiler.spirvclang13spir.exe=/usr/bin/clang-13 compiler.spirvclang13spir.name=clang 13 (SPIR-V asm, spir triple) -compiler.spirvclang13spir.options=-finclude-default-header -triple spir-unknown-unknown +compiler.spirvclang13spir.options=-finclude-default-header -fdeclare-opencl-builtins -triple spir-unknown-unknown compiler.spirvclang13spir64.exe=/usr/bin/clang-13 compiler.spirvclang13spir64.name=clang 13 (SPIR-V asm, spir64 triple) -compiler.spirvclang13spir64.options=-finclude-default-header -triple spir64-unknown-unknown +compiler.spirvclang13spir64.options=-finclude-default-header -fdeclare-opencl-builtins -triple spir64-unknown-unknown compiler.spirvclangdefaultspir.exe=/usr/bin/clang compiler.spirvclangdefaultspir.name=clang default (SPIR-V asm, spir triple) -compiler.spirvclangdefaultspir.options=-finclude-default-header -triple spir-unknown-unknown +compiler.spirvclangdefaultspir.options=-finclude-default-header -fdeclare-opencl-builtins -triple spir-unknown-unknown compiler.spirvclangdefaultspir64.exe=/usr/bin/clang compiler.spirvclangdefaultspir64.name=clang default (SPIR-V asm, spir64 triple) -compiler.spirvclangdefaultspir64.options=-finclude-default-header -triple spir64-unknown-unknown +compiler.spirvclangdefaultspir64.options=-finclude-default-header -fdeclare-opencl-builtins -triple spir64-unknown-unknown diff --git a/etc/config/rust.amazon.properties b/etc/config/rust.amazon.properties index 9d25565e9..7b7777c21 100644 --- a/etc/config/rust.amazon.properties +++ b/etc/config/rust.amazon.properties @@ -1,12 +1,14 @@ compilers=&rust:&rustgcc:&mrustc:&rustccggcc objdumper=/opt/compiler-explorer/gcc-11.1.0/bin/objdump linker=/opt/compiler-explorer/gcc-11.1.0/bin/gcc -defaultCompiler=r1560 +defaultCompiler=r1570 demangler=/opt/compiler-explorer/demanglers/rust/bin/rustfilt -group.rust.compilers=r1560:r1550:r1540:r1530:r1520:r1510:r1500:r1490:r1480:r1470:r1460:r1452:r1450:r1440:r1430:r1420:r1410:r1400:r1390:r1380:r1370:r1360:r1350:r1340:r1330:r1320:r1310:r1300:r1290:r1280:r1271:r1270:r1260:r1250:r1240:r1230:r1220:r1210:r1200:r1190:r1180:r1170:r1160:r1151:r1140:r1130:r1120:r1110:r1100:r190:r180:r170:r160:r150:r140:r130:r120:r110:r100:nightly:beta +group.rust.compilers=r1570:r1560:r1550:r1540:r1530:r1520:r1510:r1500:r1490:r1480:r1470:r1460:r1452:r1450:r1440:r1430:r1420:r1410:r1400:r1390:r1380:r1370:r1360:r1350:r1340:r1330:r1320:r1310:r1300:r1290:r1280:r1271:r1270:r1260:r1250:r1240:r1230:r1220:r1210:r1200:r1190:r1180:r1170:r1160:r1151:r1140:r1130:r1120:r1110:r1100:r190:r180:r170:r160:r150:r140:r130:r120:r110:r100:nightly:beta group.rust.compilerType=rust group.rust.isSemVer=true group.rust.baseName=rustc +compiler.r1570.exe=/opt/compiler-explorer/rust-1.57.0/bin/rustc +compiler.r1570.semver=1.57.0 compiler.r1560.exe=/opt/compiler-explorer/rust-1.56.0/bin/rustc compiler.r1560.semver=1.56.0 compiler.r1550.exe=/opt/compiler-explorer/rust-1.55.0/bin/rustc diff --git a/etc/config/sponsors.yaml b/etc/config/sponsors.yaml index e9a292b78..028ba42b9 100644 --- a/etc/config/sponsors.yaml +++ b/etc/config/sponsors.yaml @@ -60,6 +60,7 @@ levels: url: https://www.embarcadero.com/products/cbuilder - Kade Phillips - Brendan Bellows + - Daniel Williams - name: Patreons description: 'Thanks to all my patrons:' sponsors: diff --git a/etc/scripts/docenizer6502.py b/etc/scripts/docenizer6502.py new file mode 100755 index 000000000..47816750e --- /dev/null +++ b/etc/scripts/docenizer6502.py @@ -0,0 +1,196 @@ +#!/usr/bin/env python3 +import argparse +import enum +import json +import os.path +import re +import urllib.request + + +DOC_URL_BASE = "https://raw.githubusercontent.com/mist64/c64ref/master/6502/" +doc_files = {f"{DOC_URL_BASE}{filename}":cpu_type for filename, cpu_type in { + "cpu_6502.txt" : "6502", + "cpu_65c02.txt" : "65c02", + }.items() +} +mode_change_regex = re.compile(r"\[(?P<mode_name>.*)\]") +comment_regex = re.compile(r"##") +mnemonic_regex = re.compile(r"(?P<mnemonic>\S+)\s+(?P<name>.*)") +description_start_regex = re.compile(r"(?P<mnemonic>\S+)\s+(?P<long_name>.*)") +description_continue_regex = re.compile(r"\s+(?P<description>.*)") + + +class ParseMode(enum.Enum): + IGNORE = enum.auto() + MNEMONICS = enum.auto() + DESCRIPTIONS = enum.auto() + + +class Instruction: + def __init__(self, mnemonic, cpu_type): + self.mnemonic = mnemonic + self.cpu_type = cpu_type + self.name = "" + self.long_name = "" + self.description = [] + + def html_description(self): + if self.description: + html = "" + for desc_line in self.description: + html += f"<p>{escape_quotes(desc_line)}</p>" + return html + elif self.long_name: + return f"<p>{escape_quotes(self.long_name)}</p>" + elif self.name: + return f"<p>{escape_quotes(self.name)}</p>" + else: + return f"<p>{self.mnemonic}</p>" + + +def get_instructions(): + """Gathers all instruction data and returns it in a dictionary.""" + instructions = {} + for f, t in doc_files.items(): + instructions_from_file(f, t, instructions) + return instructions + + +def instructions_from_file(filename, cpu_type, instructions): + """Gathers instruction data from a file and adds it to the dictionary.""" + with open_file(filename) as response: + print(f"Reading from {filename}...") + parse_mode = ParseMode.IGNORE + parse_funcs = {ParseMode.MNEMONICS: parse_mnemonics, + ParseMode.DESCRIPTIONS: parse_descriptions} + for line_num, line in enumerate(response_to_lines(response), start=1): + #print(str(line_num) + "\t" + str(line)) + line = remove_comments(line) + if not line or line.isspace(): + continue + regex_match = mode_change_regex.match(line) + if regex_match: + parse_mode = mode_change(regex_match.group("mode_name")) + continue + if parse_mode == ParseMode.IGNORE: + continue + parse_funcs[parse_mode](line, line_num, cpu_type, instructions) + + +def open_file(filename): + """Opens a documentation file from the internet.""" + return urllib.request.urlopen(filename) + + +def response_to_lines(response): + """Converts an HTTP response to a list containing each line of text.""" + return response.read().decode("utf-8").replace("\xad", "").split("\n") + + +def remove_comments(line): + """Removes comments from a line of a documentation file.""" + regex_match = comment_regex.search(line) + if regex_match: + return line[:regex_match.start()] + else: + return line + + +def mode_change(mode_name): + if mode_name == "mnemos": + return ParseMode.MNEMONICS + elif mode_name == "documentation-mnemos": + return ParseMode.DESCRIPTIONS + else: + return ParseMode.IGNORE + + +def parse_mnemonics(line, line_num, cpu_type, instructions): + regex_match = mnemonic_regex.match(line) + if regex_match: + mnemonic = regex_match.group("mnemonic") + name = regex_match.group("name") + if mnemonic not in instructions: + instructions[mnemonic] = Instruction(mnemonic, cpu_type) + instructions[mnemonic].name = name + else: + print(f"Mnemonic parsing: Match failure on line {str(line_num)}") + print(" " + line) + + +def parse_descriptions(line, line_num, cpu_type, instructions): + start_match = description_start_regex.match(line) + continue_match = description_continue_regex.match(line) + if start_match: + mnemonic = start_match.group("mnemonic") + parse_descriptions.last_mnemonic = mnemonic + long_name = start_match.group("long_name") + if mnemonic not in instructions: + instructions[mnemonic] = Instruction(mnemonic, cpu_type) + instructions[mnemonic].long_name = long_name + elif continue_match: + mnemonic = parse_descriptions.last_mnemonic + description = continue_match.group("description") + instructions[mnemonic].description.append(description) + + +def write_script(filename, instructions): + script = ["export function getAsmOpcode(opcode) {", + " if (!opcode) return;", + " switch (opcode.toUpperCase()) {"] + for inst in instructions.values(): + script.append(f" case \"{inst.mnemonic}\":") + script.append(" return {") + html = f"{16 * ' '}\"html\": \"" + html += inst.html_description() + html += "\"," + script.append(html) + if inst.long_name: + safe_ln = escape_quotes(inst.long_name) + script.append(f"{16 * ' '}\"tooltip\": \"{safe_ln}\",") + elif inst.name: + safe_n = escape_quotes(inst.name) + script.append(f"{16 * ' '}\"tooltip\": \"{safe_n}\",") + else: + script.append(f"{16 * ' '}\"tooltip\": \"{inst.mnemonic}\",") + # Will need to be replaced when other 65xx CPUs are added + s = "https://www.pagetable.com/c64ref/6502/?cpu=" + e = "&tab=2#" + t = inst.cpu_type + m = inst.mnemonic + script.append(f"{16 * ' '}\"url\": \"{s}{t}{e}{m}\",") + script.append(12 * " " + "};") + script.append("") + script.append(" }") + script.append("}") + with open(filename, "w") as f: + print(f"Writing output to {filename}...") + f.write("\n".join(script)) + #print("\n".join(script)) + + +def escape_quotes(string): + return string.replace("\"", "\\\"") + + +def get_arguments(): + parser = argparse.ArgumentParser() + help_text = "the location to which the script will be written" + relative_path = "/../../lib/handlers/asm-docs-6502.js" + script_path = os.path.realpath(__file__) + script_dir = os.path.dirname(script_path) + default_path = os.path.normpath(script_dir + relative_path) + parser.add_argument("-o", "--output", help=help_text, default=default_path) + return parser.parse_args() + + +def main(): + args = get_arguments() + instructions = get_instructions() + #for inst in instructions.values(): + #print(inst.__dict__) + write_script(args.output, instructions) + + +if __name__ == "__main__": + main() diff --git a/gh-dist-files.txt b/gh-dist-files.txt index aaf75c0cf..47bc9ccd3 100644 --- a/gh-dist-files.txt +++ b/gh-dist-files.txt @@ -10,6 +10,11 @@ node_modules/ static/policies/ static/favicon.ico views/ +types/ app.js package-lock.json package.json +tsconfig.json +tsconfig.backend.json +tsconfig.base.json +tsconfig.frontend.json diff --git a/lib/aws.js b/lib/aws.js index 0ee526523..c0b299ecd 100644 --- a/lib/aws.js +++ b/lib/aws.js @@ -36,7 +36,8 @@ export class InstanceFetcher { } async getInstances() { - return (await this.ec2.describeInstances().promise()).Reservations + const result = await this.ec2.describeInstances().promise(); + return result.Reservations .flatMap(r => r.Instances) .filter(reservation => { if (reservation.State.Name !== 'running') return false; diff --git a/lib/base-compiler.js b/lib/base-compiler.js index 0ebe7f005..059f5d0b0 100644 --- a/lib/base-compiler.js +++ b/lib/base-compiler.js @@ -725,13 +725,35 @@ export class BaseCompiler { }; } - async processRustMirOutput(outputFilename, output) { - const mirPath = this.getRustMirOutputFilename(outputFilename); + getRustMacroExpansionOutputFilename(inputFilename) { + return inputFilename.replace(path.extname(inputFilename), '.expanded.rs'); + } + + getRustHirOutputFilename(inputFilename) { + return inputFilename.replace(path.extname(inputFilename), '.hir'); + } + + getRustMirOutputFilename(outputFilename) { + return outputFilename.replace(path.extname(outputFilename), '.mir'); + } + + // Currently called for getting macro expansion and HIR. + // It returns the content of the output file created after using -Z unpretty=<unprettyOpt>. + // The outputFriendlyName is a free form string used in case of error. + async generateRustUnprettyOutput(inputFilename, options, unprettyOpt, outputFilename, outputFriendlyName){ + const execOptions = this.getDefaultExecOptions(); + + const rustcOptions = [...options]; + rustcOptions.splice(options.indexOf('-o', 2)); + rustcOptions.push(inputFilename, '-o', outputFilename, `-Zunpretty=${unprettyOpt}`); + + const output = await this.runCompiler(this.compiler.exe, rustcOptions, inputFilename, + execOptions); if (output.code !== 0) { - return [{text: 'Failed to run compiler to get Rust MIR'}]; + return [{text: `Failed to run compiler to get Rust ${outputFriendlyName}`}]; } - if (await fs.exists(mirPath)) { - const content = await fs.readFile(mirPath, 'utf-8'); + if (await fs.exists(outputFilename)) { + const content = await fs.readFile(outputFilename, 'utf-8'); return content.split('\n').map((line) => ({ text: line, })); @@ -739,25 +761,23 @@ export class BaseCompiler { return [{text: 'Internal error; unable to open output path'}]; } - async generateRustMacroExpansion(inputFilename) { - const execOptions = this.getDefaultExecOptions(); + async generateRustMacroExpansion(inputFilename, options) { const macroExpPath = this.getRustMacroExpansionOutputFilename(inputFilename); - const rustcOptions = [ - inputFilename, - '-o', - macroExpPath, - '-Zunpretty=expanded', - '--crate-type', - 'rlib', - ]; - - const output = await this.runCompiler(this.compiler.exe, rustcOptions, this.filename(inputFilename), - execOptions); + return this.generateRustUnprettyOutput(inputFilename, options, 'expanded', macroExpPath, 'Macro Expansion'); + } + + async generateRustHir(inputFilename, options) { + const hirPath = this.getRustHirOutputFilename(inputFilename); + return this.generateRustUnprettyOutput(inputFilename, options, 'hir-tree', hirPath, 'HIR'); + } + + async processRustMirOutput(outputFilename, output) { + const mirPath = this.getRustMirOutputFilename(outputFilename); if (output.code !== 0) { - return [{text: 'Failed to run compiler to get Rust Macro Expansion'}]; + return [{text: 'Failed to run compiler to get Rust MIR'}]; } - if (await fs.exists(macroExpPath)) { - const content = await fs.readFile(macroExpPath, 'utf-8'); + if (await fs.exists(mirPath)) { + const content = await fs.readFile(mirPath, 'utf-8'); return content.split('\n').map((line) => ({ text: line, })); @@ -769,14 +789,6 @@ export class BaseCompiler { return inputFilename.replace(path.extname(inputFilename), '.ll'); } - getGnatDebugOutputFilename(inputFilename) { - return inputFilename + '.dg'; - } - - getRustMacroExpansionOutputFilename(inputFilename) { - return inputFilename.replace(path.extname(inputFilename), '.expanded.rs'); - } - getOutputFilename(dirPath, outputFilebase, key) { let filename; if (key && key.backendOptions && key.backendOptions.customOutputFilename) { @@ -796,30 +808,80 @@ export class BaseCompiler { return this.getOutputFilename(dirPath, outputFilebase, key); } - async processGnatDebugOutput(inputFilename, output) { - const gnatDebugPath = this.getGnatDebugOutputFilename(inputFilename); + async processGnatDebugOutput(inputFilename, result) { + const contentDebugExpanded = []; + const contentDebugTree = []; + const keep_stdout = []; + + // stdout layout: + // + // ----- start + // everything here stays + // ... in stdout + // ... until : + // Source recreated from tree... <-\ + // everything here is | + // ... sent in expanded | this is optionnal + // ... pane... until : <-/ + // Tree created for ... <-\ + // everything after is | this is optionnal + // ... sent in Tree pane <-/ + // ----- EOF + const startOfExpandedCode = /^Source recreated from tree/; + const startOfTree = /^Tree created for/; + + let isInExpandedCode = false; + let isInTree = false; + + for (const obj of Object.values(result.stdout)) { + if (!isInExpandedCode && startOfExpandedCode.test(obj.text)) { + isInExpandedCode = true; + isInTree = false; + } + + if (!isInTree && startOfTree.test(obj.text)) { + isInExpandedCode = false; + isInTree = true; + } + + if (isInExpandedCode) { + contentDebugExpanded.push(obj); + } else if (isInTree){ + contentDebugTree.push(obj); + } else { + keep_stdout.push(obj); + } + } // Do not check compiler result before looking for expanded code. The - // compiler may exit with an error after the emission. This file is also + // compiler may exit with an error after the emission. This dump is also // very usefull to debug error message. - if (await fs.exists(gnatDebugPath)) { - const content = await fs.readFile(gnatDebugPath, 'utf-8'); - return content.split('\n').map((line) => ({ - text: line, - })); - } else { - // check for possible cause for missing file - if (output.code !== 0) { - return [{text: 'GNAT exited with an error and did not create the expanded code'}]; + + if (contentDebugExpanded.length === 0) + if (result.code !== 0) { + contentDebugExpanded.push({text: 'GNAT exited with an error and did not create the expanded code'}); } else { - return [{text: 'GNAT exited successfully but the expanded code is missing, something is wrong'}]; + contentDebugExpanded.push( + {text: 'GNAT exited successfully but the expanded code is missing, something is wrong'}); } - } + + if (contentDebugTree.length === 0) + if (result.code !== 0) { + contentDebugTree.push({text: 'GNAT exited with an error and did not create the Tree'}); + } else { + contentDebugTree.push({text: 'GNAT exited successfully but the Tree is missing, something is wrong'}); + } + + return { + stdout: keep_stdout, + tree: contentDebugTree, + expandedcode: contentDebugExpanded, + }; } /** * @returns {{filename_suffix: string, name: string, command_prefix: string}} - * `filename_suffix`: dump file name suffix if GCC default dump names is used + * `filename_suffix`: dump file name suffix if GCC default dump name is used * * `name`: the name to be displayed in the UI * @@ -899,6 +961,8 @@ export class BaseCompiler { const filesToWrite = []; for (let file of files) { + if (!file.filename) throw new Error('One of more files do not have a filename'); + const fullpath = this.getExtraFilepath(dirPath, file.filename); filesToWrite.push(fs.outputFile(fullpath, file.contents)); } @@ -907,6 +971,8 @@ export class BaseCompiler { } async writeAllFiles(dirPath, source, files, filters) { + if (!source) throw new Error(`File ${this.compileFilename} has no content or file is missing`); + const inputFilename = path.join(dirPath, this.compileFilename); await fs.writeFile(inputFilename, source); @@ -922,6 +988,8 @@ export class BaseCompiler { } async writeAllFilesCMake(dirPath, source, files, filters) { + if (!source) throw new Error('File CMakeLists.txt has no content or file is missing'); + const inputFilename = path.join(dirPath, 'CMakeLists.txt'); await fs.writeFile(inputFilename, source); @@ -973,9 +1041,14 @@ export class BaseCompiler { const buildResults = await this.loadPackageWithExecutable(key, dirPath); if (buildResults) return buildResults; - const compilationResult = await this.buildExecutableInFolder(key, dirPath); - if (compilationResult.code !== 0) { - return compilationResult; + let compilationResult; + try { + compilationResult = await this.buildExecutableInFolder(key, dirPath); + if (compilationResult.code !== 0) { + return compilationResult; + } + } catch (e) { + return this.handleUserError(e, dirPath); } await this.storePackageWithExecutable(key, dirPath, compilationResult); @@ -1178,10 +1251,12 @@ export class BaseCompiler { execOptions.ldPath = this.getSharedLibraryPathsAsLdLibraryPaths([]); const makeAst = backendOptions.produceAst && this.compiler.supportsAstView; - const makeGnatDebug = backendOptions.produceGnatDebug && this.compiler.supportsGnatDebugView; + const makeGnatDebug = backendOptions.produceGnatDebug && this.compiler.supportsGnatDebugViews; + const makeGnatDebugTree = backendOptions.produceGnatDebugTree && this.compiler.supportsGnatDebugViews; const makeIr = backendOptions.produceIr && this.compiler.supportsIrView; const makeRustMir = backendOptions.produceRustMir && this.compiler.supportsRustMirView; const makeRustMacroExp = backendOptions.produceRustMacroExp && this.compiler.supportsRustMacroExpView; + const makeRustHir = backendOptions.produceRustHir && this.compiler.supportsRustHirView; const makeGccDump = backendOptions.produceGccDump && backendOptions.produceGccDump.opened && this.compiler.supportsGccDump; @@ -1190,12 +1265,14 @@ export class BaseCompiler { asmResult, astResult, irResult, + rustHirResult, rustMacroExpResult, toolsResult, ] = await Promise.all([ this.runCompiler(this.compiler.exe, options, inputFilenameSafe, execOptions), (makeAst ? this.generateAST(inputFilename, options) : ''), (makeIr ? this.generateIR(inputFilename, options, filters) : ''), + (makeRustHir ? this.generateRustHir(inputFilename, options) : ''), (makeRustMacroExp ? this.generateRustMacroExpansion(inputFilename, options) : ''), Promise.all(this.runToolsOfType(tools, 'independent', this.getCompilationInfo(key, { inputFilename, @@ -1206,9 +1283,10 @@ export class BaseCompiler { // GNAT, GCC and rustc can produce their extra output files along // with the main compilation command. - const gnatDebugResult = (makeGnatDebug ? - await this.processGnatDebugOutput(inputFilenameSafe, asmResult) - : ''); + const gnatDebugResults = ((makeGnatDebug || makeGnatDebugTree)? + await this.processGnatDebugOutput(inputFilenameSafe, asmResult) + : ''); + const gccDumpResult = (makeGccDump ? await this.processGccDumpOutput(backendOptions.produceGccDump, asmResult, this.compiler.removeEmptyGccDump, @@ -1226,9 +1304,17 @@ export class BaseCompiler { asmResult.gccDumpOutput = gccDumpResult; } - if (this.compiler.supportsGnatDebugView && gnatDebugResult) { - asmResult.hasGnatDebugOutput = true; - asmResult.gnatDebugOutput = gnatDebugResult; + if (this.compiler.supportsGnatDebugViews && gnatDebugResults) { + asmResult.stdout = gnatDebugResults.stdout; + + if (makeGnatDebug && gnatDebugResults.expandedcode.length > 0) { + asmResult.hasGnatDebugOutput = true; + asmResult.gnatDebugOutput = gnatDebugResults.expandedcode; + } + if (makeGnatDebugTree && gnatDebugResults.tree.length > 0) { + asmResult.hasGnatDebugTreeOutput = true; + asmResult.gnatDebugTreeOutput = gnatDebugResults.tree; + } } asmResult.tools = toolsResult; @@ -1262,6 +1348,11 @@ export class BaseCompiler { asmResult.rustMacroExpOutput = rustMacroExpResult; } + if (rustHirResult) { + asmResult.hasRustHirOutput = true; + asmResult.rustHirOutput = rustHirResult; + } + return this.checkOutputFileAndDoPostProcess(asmResult, outputFilename, filters); } @@ -1289,6 +1380,17 @@ export class BaseCompiler { return result; } + handleUserError(error, dirPath) { + return { + dirPath, + okToCache: false, + code: -1, + asm: [{text: `<${error.message}>`}], + stdout: [], + stderr: [{text: `<${error.message}>` }], + }; + } + async doBuildstepAndAddToResult(result, name, command, args, execParams) { const stepResult = await this.doBuildstep(command, args, execParams); stepResult.step = name; @@ -1359,7 +1461,12 @@ export class BaseCompiler { let fullResult = await this.loadPackageWithExecutable(cacheKey, dirPath); if (!fullResult) { - const writeSummary = await this.writeAllFilesCMake(dirPath, cacheKey.source, files, cacheKey.filters); + let writeSummary; + try { + writeSummary = await this.writeAllFilesCMake(dirPath, cacheKey.source, files, cacheKey.filters); + } catch (e) { + return this.handleUserError(e, dirPath); + } const execParams = this.getDefaultExecOptions(); execParams.appHome = dirPath; @@ -1535,7 +1642,12 @@ export class BaseCompiler { const dirPath = await this.newTempDir(); - const writeSummary = await this.writeAllFiles(dirPath, source, files, filters); + let writeSummary; + try { + writeSummary = await this.writeAllFiles(dirPath, source, files, filters); + } catch (e) { + return this.handleUserError(e, dirPath); + } const inputFilename = writeSummary.inputFilename; const [result, optOutput] = await this.doCompilation( @@ -1679,24 +1791,55 @@ export class BaseCompiler { currentPassOutput: '<No pass selected>', syntaxHighlight: false, }; + const treeDumpsNotInPasses = []; + const selectedPasses = []; - if (opts.treeDump) selectedPasses.push('tree'); + if (opts.treeDump) { + selectedPasses.push('tree'); + + // Fake 2 lines as coming from -fdump-passes + // This allows the insertion of 'gimple' and 'original' + // tree dumps that are not really part of a tree pass. + treeDumpsNotInPasses.push ( + [ { text: 'tree-original: ON'}, + { + filename_suffix: 't.original', + name: 'original (tree)', + command_prefix: '-fdump-tree-original', + }, + ], + [ { text: 'tree-gimple: ON'}, + { + filename_suffix: 't.gimple', + name: 'gimple (tree)', + command_prefix: '-fdump-tree-gimple', + }, + ]); + } + if (opts.ipaDump) selectedPasses.push('ipa'); if (opts.rtlDump) selectedPasses.push('rtl'); + // Defaults to a custom file derived from output file name. Works when + // using the -fdump-tree-foo=FILE variant (!removeEmptyPasses). + // Will be overriden later if not. let dumpFileName = this.getGccDumpFileName(outputFilename); let passFound = false; const filtered_stderr = []; const toRemoveFromStderr = /^\s*((ipa|tree|rtl)-)|(\*)([\w-]+).*(ON|OFF)$/; - for (const obj of Object.values(result.stderr)) { - const selectizeObject = this.fromInternalGccDumpName(obj.text, selectedPasses); - if (selectizeObject){ + + const dumpPassesLines = treeDumpsNotInPasses.concat( + Object.values(result.stderr).map( + x => [x, this.fromInternalGccDumpName(x.text, selectedPasses)])); + + for (const [obj, selectizeObject] of dumpPassesLines) { + if (selectizeObject) { if (opts.pass && opts.pass.name === selectizeObject.name) passFound = true; - if (removeEmptyPasses){ + if (removeEmptyPasses) { const f = fs.readdirSync(rootDir).filter(fn => fn.endsWith(selectizeObject.filename_suffix)); // pass is enabled, but the dump hasn't produced anything: @@ -1711,7 +1854,7 @@ export class BaseCompiler { output.all.push(selectizeObject); } - if (!toRemoveFromStderr.test(obj.text)){ + if (!toRemoveFromStderr.test(obj.text)) { filtered_stderr.push(obj); } } diff --git a/lib/compiler-finder.js b/lib/compiler-finder.js index 414421a15..9729d8a2c 100644 --- a/lib/compiler-finder.js +++ b/lib/compiler-finder.js @@ -364,8 +364,9 @@ export class CompilerFinder { } async find() { - let compilers = (await this.getCompilers()).flat(Infinity); - compilers = await this.compileHandler.setCompilers(compilers, this.optionsHandler.get()); + const compilerList = await this.getCompilers(); + const compilers = await this.compileHandler.setCompilers( + compilerList.flat(Infinity), this.optionsHandler.get()); const result = this.ensureDistinct(_.compact(compilers)); return {foundClash: result.foundClash, compilers: _.sortBy(result.compilers, 'name')}; } diff --git a/lib/compilers/ada.js b/lib/compilers/ada.js index 6a93249de..daa6d538e 100644 --- a/lib/compilers/ada.js +++ b/lib/compilers/ada.js @@ -35,7 +35,9 @@ export class AdaCompiler extends BaseCompiler { this.compiler.supportsGccDump = true; this.compiler.removeEmptyGccDump = true; this.compiler.supportsIntel = true; - this.compiler.supportsGnatDebugView = true; + + // used for all GNAT related panes (Expanded code, Tree) + this.compiler.supportsGnatDebugViews = true; } getExecutableFilename(dirPath) { @@ -50,8 +52,13 @@ export class AdaCompiler extends BaseCompiler { // super is needed as it handles the GCC Dump files. const opts = super.optionsForBackend (backendOptions, outputFilename); - if (backendOptions.produceGnatDebug && this.compiler.supportsGnatDebugView) - opts.push('-gnatDGL'); + if (backendOptions.produceGnatDebug && this.compiler.supportsGnatDebugViews) + // This is using stdout + opts.push('-gnatGL'); + + if (backendOptions.produceGnatDebugTree && this.compiler.supportsGnatDebugViews) + // This is also using stdout + opts.push('-gnatdt'); return opts; } diff --git a/lib/compilers/fake-for-test.js b/lib/compilers/fake-for-test.js index a6ec6b46d..1aaf027f5 100644 --- a/lib/compilers/fake-for-test.js +++ b/lib/compilers/fake-for-test.js @@ -44,7 +44,7 @@ export class FakeCompiler { } getDefaultFilters() { - return []; + return {}; } getRemote() { diff --git a/lib/compilers/kotlin.js b/lib/compilers/kotlin.js index 6b95a4c7d..0871dfcab 100644 --- a/lib/compilers/kotlin.js +++ b/lib/compilers/kotlin.js @@ -54,9 +54,6 @@ export class KotlinCompiler extends JavaCompiler { option !== '-script' && option !== '-progressive' && !option.startsWith('-Xjavac')); const oneArgForbiddenList = new Set([ - // -d directory - // Destination for generated class files - '-d', // -jdk-home path // Include a custom JDK from the specified location // into the classpath instead of the default JAVA_HOME @@ -80,6 +77,44 @@ export class KotlinCompiler extends JavaCompiler { ]; } + /** + * Handle Kotlin execution. + * + * Kotlin execution differs in the way that Kotlin requires its standard + * standard library because that's where the runtime libraries such as + * kotlin.jvm.internal.Intrinsics is. + * + * Therefore, we append the -include-runtime and -d flags to specify where + * to output the jarfile which we will run using `java -jar` + * + * TODO(supergrecko): Find a better fix than this bandaid for execution + */ + async handleInterpreting(key, executeParameters) { + const alteredKey = { + ...key, + options: ['-include-runtime', '-d', 'example.jar'], + }; + const compileResult = await this.getOrBuildExecutable(alteredKey); + executeParameters.args = [ + '-Xss136K', // Reduce thread stack size + '-XX:CICompilerCount=2', // Reduce JIT compilation threads. 2 is minimum + '-XX:-UseDynamicNumberOfCompilerThreads', + '-XX:-UseDynamicNumberOfGCThreads', + '-XX:+UseSerialGC', // Disable parallell/concurrent garbage collector + '-cp', + compileResult.dirPath, + '-jar', + 'example.jar', + // -jar <jar> has to be the last java parameter, otherwise it will use + // our java parameters as program parameters + ...executeParameters.args, + ]; + const result = await this.runExecutable(this.javaRuntime, executeParameters, compileResult.dirPath); + result.didExecute = true; + result.buildResult = compileResult; + return result; + } + getArgumentParser() { return KotlinParser; } diff --git a/lib/compilers/rust.js b/lib/compilers/rust.js index 622d914b0..84d0b156c 100644 --- a/lib/compilers/rust.js +++ b/lib/compilers/rust.js @@ -39,16 +39,17 @@ export class RustCompiler extends BaseCompiler { this.compiler.supportsIntel = true; this.compiler.supportsIrView = true; this.compiler.supportsRustMirView = true; - // Macro expansion through -Zunpretty=expanded is only available for Nightly - this.compiler.supportsRustMacroExpView = info.name === 'nightly' || info.semver === 'nightly'; + + const isNightly = info.name === 'nightly' || info.semver === 'nightly'; + // Macro expansion (-Zunpretty=expanded) and HIR (-Zunpretty=hir-tree) + // are only available for Nightly + this.compiler.supportsRustMacroExpView = isNightly; + this.compiler.supportsRustHirView = isNightly; + this.compiler.irArg = ['--emit', 'llvm-ir']; this.linker = this.compilerProps('linker'); } - getRustMirOutputFilename(outputFilename) { - return outputFilename.replace(path.extname(outputFilename), '.mir'); - } - getSharedLibraryPathsAsArguments() { return []; } diff --git a/lib/demangler/base.js b/lib/demangler/base.js index 207d87af8..bd9ce2384 100644 --- a/lib/demangler/base.js +++ b/lib/demangler/base.js @@ -128,7 +128,7 @@ export class BaseDemangler extends AsmRegex { addTranslation(symbol, translation) { if (this.includeMetadata) { - translation += this.getMetadata(symbol).map((meta) => ' [' + meta.description + ']').join(); + translation += this.getMetadata(symbol).map((meta) => ' [' + meta.description + ']').join(','); } if (this.symbolstore.contains(symbol)) { diff --git a/lib/demangler/prefix-tree.js b/lib/demangler/prefix-tree.js index 75a938971..7295c5110 100644 --- a/lib/demangler/prefix-tree.js +++ b/lib/demangler/prefix-tree.js @@ -44,7 +44,7 @@ export class PrefixTree { add(from, to) { let node = this.root; for (let i = 0; i < from.length; ++i) { - const character = from.charCodeAt(i); + const character = from.codePointAt(i); if (!node[character]) node[character] = []; node = node[character]; @@ -59,7 +59,7 @@ export class PrefixTree { let node = this.root; let match = [null, null]; for (let i = 0; i < needle.length; ++i) { - const character = needle.charCodeAt(i); + const character = needle.codePointAt(i); node = node[character]; if (!node) break; @@ -72,7 +72,7 @@ export class PrefixTree { findExact(needle) { let node = this.root; for (let i = 0; i < needle.length; ++i) { - const character = needle.charCodeAt(i); + const character = needle.codePointAt(i); node = node[character]; if (!node) break; diff --git a/lib/handlers/api.js b/lib/handlers/api.js index c8237eb07..876420bbc 100644 --- a/lib/handlers/api.js +++ b/lib/handlers/api.js @@ -28,14 +28,10 @@ import _ from 'underscore'; import { ClientStateNormalizer } from '../clientstate-normalizer'; import { logger } from '../logger'; -import * as props from '../properties'; import { getShortenerTypeByKey } from '../shortener'; import * as utils from '../utils'; -import { AsmDocsHandler as AsmDocsHandlerAarch64 } from './asm-docs-api-aarch64'; -import { AsmDocsHandler as AsmDocsHandlerAmd64 } from './asm-docs-api-amd64'; -import { AsmDocsHandler as AsmDocsHandlerArm32 } from './asm-docs-api-arm32'; -import { AsmDocsHandler as AsmDocsHandlerJava } from './asm-docs-api-java'; +import * as assemblyDocumentation from './assembly-documentation/router'; import { FormattingHandler } from './formatting'; export class ApiHandler { @@ -45,6 +41,7 @@ export class ApiHandler { this.usedLangIds = []; this.options = null; this.storageHandler = storageHandler; + /** @type {e.Router} */ this.handle = express.Router(); const cacheHeader = `public, max-age=${ceProps('apiMaxAgeSecs', 24 * 60 * 60)}`; this.handle.use((req, res, next) => { @@ -63,20 +60,8 @@ export class ApiHandler { this.handle.get('/libraries/:language', this.handleLangLibraries.bind(this)); this.handle.get('/libraries', this.handleAllLibraries.bind(this)); - const asmStaticAge = props.propsFor('asm-docs')('staticMaxAgeSecs', 10); - const asmArch = { - amd64: new AsmDocsHandlerAmd64(), - arm32: new AsmDocsHandlerArm32(), - aarch64: new AsmDocsHandlerAarch64(), - java: new AsmDocsHandlerJava(), - }; - this.handle.get('/asm/:arch/:opcode', (req, res) => { - const handler = asmArch[req.params.arch]; - if (handler) - return handler.handle(req, res); - res.setHeader('Cache-Control', 'public, max-age=' + asmStaticAge); - res.send('Unknown architecture'); - }); + // Binding for assembly documentation + assemblyDocumentation.setup(this.handle); // Legacy binding for old clients. this.handle.get('/asm/:opcode', (req, res) => res.redirect(`amd64/${req.params.opcode}`), diff --git a/lib/handlers/asm-docs-6502.js b/lib/handlers/asm-docs-6502.js new file mode 100644 index 000000000..71865475c --- /dev/null +++ b/lib/handlers/asm-docs-6502.js @@ -0,0 +1,586 @@ +export function getAsmOpcode(opcode) { + if (!opcode) return; + switch (opcode.toUpperCase()) { + case "ADC": + return { + "html": "<p>This instruction adds the value of memory and carry from the previous operation to the value of the accumulator and stores the result in the accumulator.</p><p>This instruction affects the accumulator; sets the carry flag when the sum of a binary add exceeds 255 or when the sum of a decimal add exceeds 99, otherwise carry is reset. The overflow flag is set when the sign or bit 7 is changed due to the result exceeding +127 or -128, otherwise overflow is reset. The negative flag is set if the accumulator result contains bit 7 on, otherwise the negative flag is reset. The zero flag is set if the accumulator result is 0, otherwise the zero flag is reset.</p>", + "tooltip": "Add Memory to Accumulator with Carry", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#ADC", + }; + + case "AND": + return { + "html": "<p>The AND instruction transfer the accumulator and memory to the adder which performs a bit-by-bit AND operation and stores the result back in the accumulator.</p><p>This instruction affects the accumulator; sets the zero flag if the result in the accumulator is 0, otherwise resets the zero flag; sets the negative flag if the result in the accumulator has bit 7 on, otherwise resets the negative flag.</p>", + "tooltip": "\"AND\" Memory with Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#AND", + }; + + case "ASL": + return { + "html": "<p>The shift left instruction shifts either the accumulator or the address memory location 1 bit to the left, with the bit 0 always being set to 0 and the bit 7 output always being contained in the carry flag. ASL either shifts the accumulator left 1 bit or is a read/modify/write instruction that affects only memory.</p><p>The instruction does not affect the overflow bit, sets N equal to the result bit 7 (bit 6 in the input), sets Z flag if the result is equal to 0, otherwise resets Z and stores the input bit 7 in the carry flag.</p>", + "tooltip": "Arithmetic Shift Left", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#ASL", + }; + + case "BCC": + return { + "html": "<p>This instruction tests the state of the carry bit and takes a conditional branch if the carry bit is reset.</p><p>It affects no flags or registers other than the program counter and then only if the C flag is not on.</p>", + "tooltip": "Branch on Carry Clear", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#BCC", + }; + + case "BCS": + return { + "html": "<p>This instruction takes the conditional branch if the carry flag is on.</p><p>BCS does not affect any of the flags or registers except for the program counter and only then if the carry flag is on.</p>", + "tooltip": "Branch on Carry Set", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#BCS", + }; + + case "BEQ": + return { + "html": "<p>This instruction could also be called \"Branch on Equal.\"</p><p>It takes a conditional branch whenever the Z flag is on or the previ ous result is equal to 0.</p><p>BEQ does not affect any of the flags or registers other than the program counter and only then when the Z flag is set.</p>", + "tooltip": "Branch on Result Zero", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#BEQ", + }; + + case "BIT": + return { + "html": "<p>This instruction performs an AND between a memory location and the accumulator but does not store the result of the AND into the accumulator.</p><p>The bit instruction affects the N flag with N being set to the value of bit 7 of the memory being tested, the V flag with V being set equal to bit 6 of the memory being tested and Z being set by the result of the AND operation between the accumulator and the memory if the result is Zero, Z is reset otherwise. It does not affect the accumulator.</p>", + "tooltip": "Test Bits in Memory with Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#BIT", + }; + + case "BMI": + return { + "html": "<p>This instruction takes the conditional branch if the N bit is set.</p><p>BMI does not affect any of the flags or any other part of the machine other than the program counter and then only if the N bit is on.</p>", + "tooltip": "Branch on Result Minus", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#BMI", + }; + + case "BNE": + return { + "html": "<p>This instruction could also be called \"Branch on Not Equal.\" It tests the Z flag and takes the conditional branch if the Z flag is not on, indicating that the previous result was not zero.</p><p>BNE does not affect any of the flags or registers other than the program counter and only then if the Z flag is reset.</p>", + "tooltip": "Branch on Result Not Zero", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#BNE", + }; + + case "BPL": + return { + "html": "<p>This instruction is the complementary branch to branch on result minus. It is a conditional branch which takes the branch when the N bit is reset (0). BPL is used to test if the previous result bit 7 was off (0) and branch on result minus is used to determine if the previous result was minus or bit 7 was on (1).</p><p>The instruction affects no flags or other registers other than the P counter and only affects the P counter when the N bit is reset.</p>", + "tooltip": "Branch on Result Plus", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#BPL", + }; + + case "BRK": + return { + "html": "<p>The break command causes the microprocessor to go through an inter rupt sequence under program control. This means that the program counter of the second byte after the BRK. is automatically stored on the stack along with the processor status at the beginning of the break instruction. The microprocessor then transfers control to the interrupt vector.</p><p>Other than changing the program counter, the break instruction changes no values in either the registers or the flags.</p>", + "tooltip": "Break Command", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#BRK", + }; + + case "BVC": + return { + "html": "<p>This instruction tests the status of the V flag and takes the conditional branch if the flag is not set.</p><p>BVC does not affect any of the flags and registers other than the program counter and only when the overflow flag is reset.</p>", + "tooltip": "Branch on Overflow Clear", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#BVC", + }; + + case "BVS": + return { + "html": "<p>This instruction tests the V flag and takes the conditional branch if V is on.</p><p>BVS does not affect any flags or registers other than the program, counter and only when the overflow flag is set.</p>", + "tooltip": "Branch on Overflow Set", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#BVS", + }; + + case "CLC": + return { + "html": "<p>This instruction initializes the carry flag to a 0. This op eration should normally precede an ADC loop. It is also useful when used with a R0L instruction to clear a bit in memory.</p><p>This instruction affects no registers in the microprocessor and no flags other than the carry flag which is reset.</p>", + "tooltip": "Clear Carry Flag", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#CLC", + }; + + case "CLD": + return { + "html": "<p>This instruction sets the decimal mode flag to a 0. This all subsequent ADC and SBC instructions to operate as simple operations.</p><p>CLD affects no registers in the microprocessor and no flags other than the decimal mode flag which is set to a 0.</p>", + "tooltip": "Clear Decimal Mode", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#CLD", + }; + + case "CLI": + return { + "html": "<p>This instruction initializes the interrupt disable to a 0. This allows the microprocessor to receive interrupts.</p><p>It affects no registers in the microprocessor and no flags other than the interrupt disable which is cleared.</p>", + "tooltip": "Clear Interrupt Disable", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#CLI", + }; + + case "CLV": + return { + "html": "<p>This instruction clears the overflow flag to a 0. This com mand is used in conjunction with the set overflow pin which can change the state of the overflow flag with an external signal.</p><p>CLV affects no registers in the microprocessor and no flags other than the overflow flag which is set to a 0.</p>", + "tooltip": "Clear Overflow Flag", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#CLV", + }; + + case "CMP": + return { + "html": "<p>This instruction subtracts the contents of memory from the contents of the accumulator.</p><p>The use of the CMP affects the following flags: Z flag is set on an equal comparison, reset otherwise; the N flag is set or reset by the result bit 7, the carry flag is set when the value in memory is less than or equal to the accumulator, reset when it is greater than the accumulator. The accumulator is not affected.</p>", + "tooltip": "Compare Memory and Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#CMP", + }; + + case "CPX": + return { + "html": "<p>This instruction subtracts the value of the addressed memory location from the content of index register X using the adder but does not store the result; therefore, its only use is to set the N, Z and C flags to allow for comparison between the index register X and the value in memory.</p><p>The CPX instruction does not affect any register in the machine; it also does not affect the overflow flag. It causes the carry to be set on if the absolute value of the index register X is equal to or greater than the data from memory. If the value of the memory is greater than the content of the index register X, carry is reset. If the results of the subtraction contain a bit 7, then the N flag is set, if not, it is reset. If the value in memory is equal to the value in index register X, the Z flag is set, otherwise it is reset.</p>", + "tooltip": "Compare Index Register X To Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#CPX", + }; + + case "CPY": + return { + "html": "<p>This instruction performs a two's complement subtraction between the index register Y and the specified memory location. The results of the subtraction are not stored anywhere. The instruction is strictly used to set the flags.</p><p>CPY affects no registers in the microprocessor and also does not affect the overflow flag. If the value in the index register Y is equal to or greater than the value in the memory, the carry flag will be set, otherwise it will be cleared. If the results of the subtract- tion contain bit 7 on the N bit will be set, otherwise it will be cleared. If the value in the index register Y and the value in the memory are equal, the zero flag will be set, otherwise it will be cleared.</p>", + "tooltip": "Compare Index Register Y To Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#CPY", + }; + + case "DEC": + return { + "html": "<p>This instruction subtracts 1, in two's complement, from the contents of the addressed memory location.</p><p>The decrement instruction does not affect any internal register in the microprocessor. It does not affect the carry or overflow flags. If bit 7 is on as a result of the decrement, then the N flag is set, otherwise it is reset. If the result of the decrement is 0, the Z flag is set, otherwise it is reset.</p>", + "tooltip": "Decrement Memory By One", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#DEC", + }; + + case "DEX": + return { + "html": "<p>This instruction subtracts one from the current value of the index register X and stores the result in the index register X.</p><p>DEX does not affect the carry or overflow flag, it sets the N flag if it has bit 7 on as a result of the decrement, otherwise it resets the N flag; sets the Z flag if X is a 0 as a result of the decrement, otherwise it resets the Z flag.</p>", + "tooltip": "Decrement Index Register X By One", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#DEX", + }; + + case "DEY": + return { + "html": "<p>This instruction subtracts one from the current value in the in dex register Y and stores the result into the index register Y. The result does not affect or consider carry so that the value in the index register Y is decremented to 0 and then through 0 to FF.</p><p>Decrement Y does not affect the carry or overflow flags; if the Y register contains bit 7 on as a result of the decrement the N flag is set, otherwise the N flag is reset. If the Y register is 0 as a result of the decrement, the Z flag is set otherwise the Z flag is reset. This instruction only affects the index register Y.</p>", + "tooltip": "Decrement Index Register Y By One", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#DEY", + }; + + case "EOR": + return { + "html": "<p>The EOR instruction transfers the memory and the accumulator to the adder which performs a binary \"EXCLUSIVE OR\" on a bit-by-bit basis and stores the result in the accumulator.</p><p>This instruction affects the accumulator; sets the zero flag if the result in the accumulator is 0, otherwise resets the zero flag sets the negative flag if the result in the accumulator has bit 7 on, otherwise resets the negative flag.</p>", + "tooltip": "\"Exclusive OR\" Memory with Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#EOR", + }; + + case "INC": + return { + "html": "<p>This instruction adds 1 to the contents of the addressed memory location.</p><p>The increment memory instruction does not affect any internal registers and does not affect the carry or overflow flags. If bit 7 is on as the result of the increment,N is set, otherwise it is reset; if the increment causes the result to become 0, the Z flag is set on, otherwise it is reset.</p>", + "tooltip": "Increment Memory By One", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#INC", + }; + + case "INX": + return { + "html": "<p>Increment X adds 1 to the current value of the X register. This is an 8-bit increment which does not affect the carry operation, therefore, if the value of X before the increment was FF, the resulting value is 00.</p><p>INX does not affect the carry or overflow flags; it sets the N flag if the result of the increment has a one in bit 7, otherwise resets N; sets the Z flag if the result of the increment is 0, otherwise it resets the Z flag.</p><p>INX does not affect any other register other than the X register.</p>", + "tooltip": "Increment Index Register X By One", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#INX", + }; + + case "INY": + return { + "html": "<p>Increment Y increments or adds one to the current value in the Y register, storing the result in the Y register. As in the case of INX the primary application is to step thru a set of values using the Y register.</p><p>The INY does not affect the carry or overflow flags, sets the N flag if the result of the increment has a one in bit 7, otherwise resets N, sets Z if as a result of the increment the Y register is zero otherwise resets the Z flag.</p>", + "tooltip": "Increment Index Register Y By One", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#INY", + }; + + case "JMP": + return { + "html": "<p>In this instruction, the data from the memory location located in the program sequence after the OP CODE is loaded into the low order byte of the program counter (PCL) and the data from the next memory location after that is loaded into the high order byte of the program counter (PCH).</p><p>This instruction establishes a new valne for the program counter.</p><p>It affects only the program counter in the microprocessor and affects no flags in the status register.</p>", + "tooltip": "JMP Indirect", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#JMP", + }; + + case "JSR": + return { + "html": "<p>This instruction transfers control of the program counter to a subroutine location but leaves a return pointer on the stack to allow the user to return to perform the next instruction in the main program after the subroutine is complete. To accomplish this, JSR instruction stores the program counter address which points to the last byte of the jump instruc tion onto the stack using the stack pointer. The stack byte contains the program count high first, followed by program count low. The JSR then transfers the addresses following the jump instruction to the program counter low and the program counter high, thereby directing the program to begin at that new address.</p><p>The JSR instruction affects no flags, causes the stack pointer to be decremented by 2 and substitutes new values into the program counter low and the program counter high.</p>", + "tooltip": "Jump To Subroutine", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#JSR", + }; + + case "LDA": + return { + "html": "<p>When instruction LDA is executed by the microprocessor, data is transferred from memory to the accumulator and stored in the accumulator.</p><p>LDA affects the contents of the accumulator, does not affect the carry or overflow flags; sets the zero flag if the accumulator is zero as a result of the LDA, otherwise resets the zero flag; sets the negative flag if bit 7 of the accumulator is a 1, other wise resets the negative flag.</p>", + "tooltip": "Load Accumulator with Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#LDA", + }; + + case "LDX": + return { + "html": "<p>Load the index register X from memory.</p><p>LDX does not affect the C or V flags; sets Z if the value loaded was zero, otherwise resets it; sets N if the value loaded in bit 7 is a 1; otherwise N is reset, and affects only the X register.</p>", + "tooltip": "Load Index Register X From Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#LDX", + }; + + case "LDY": + return { + "html": "<p>Load the index register Y from memory.</p><p>LDY does not affect the C or V flags, sets the N flag if the value loaded in bit 7 is a 1, otherwise resets N, sets Z flag if the loaded value is zero otherwise resets Z and only affects the Y register.</p>", + "tooltip": "Load Index Register Y From Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#LDY", + }; + + case "LSR": + return { + "html": "<p>This instruction shifts either the accumulator or a specified memory location 1 bit to the right, with the higher bit of the result always being set to 0, and the low bit which is shifted out of the field being stored in the carry flag.</p><p>The shift right instruction either affects the accumulator by shifting it right 1 or is a read/modify/write instruction which changes a specified memory location but does not affect any internal registers. The shift right does not affect the overflow flag. The N flag is always reset. The Z flag is set if the result of the shift is 0 and reset otherwise. The carry is set equal to bit 0 of the input.</p>", + "tooltip": "Logical Shift Right", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#LSR", + }; + + case "NOP": + return { + "html": "<p>No Operation</p>", + "tooltip": "No Operation", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#NOP", + }; + + case "ORA": + return { + "html": "<p>The ORA instruction transfers the memory and the accumulator to the adder which performs a binary \"OR\" on a bit-by-bit basis and stores the result in the accumulator.</p><p>This instruction affects the accumulator; sets the zero flag if the result in the accumulator is 0, otherwise resets the zero flag; sets the negative flag if the result in the accumulator has bit 7 on, otherwise resets the negative flag.</p>", + "tooltip": "\"OR\" Memory with Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#ORA", + }; + + case "PHA": + return { + "html": "<p>This instruction transfers the current value of the accumulator to the next location on the stack, automatically decrementing the stack to point to the next empty location.</p><p>The Push A instruction only affects the stack pointer register which is decremented by 1 as a result of the operation. It affects no flags.</p>", + "tooltip": "Push Accumulator On Stack", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#PHA", + }; + + case "PHP": + return { + "html": "<p>This instruction transfers the contents of the processor status reg ister unchanged to the stack, as governed by the stack pointer.</p><p>The PHP instruction affects no registers or flags in the microprocessor.</p>", + "tooltip": "Push Processor Status On Stack", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#PHP", + }; + + case "PLA": + return { + "html": "<p>This instruction adds 1 to the current value of the stack pointer and uses it to address the stack and loads the contents of the stack into the A register.</p><p>The PLA instruction does not affect the carry or overflow flags. It sets N if the bit 7 is on in accumulator A as a result of instructions, otherwise it is reset. If accumulator A is zero as a result of the PLA, then the Z flag is set, otherwise it is reset. The PLA instruction changes content of the accumulator A to the contents of the memory location at stack register plus 1 and also increments the stack register.</p>", + "tooltip": "Pull Accumulator From Stack", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#PLA", + }; + + case "PLP": + return { + "html": "<p>This instruction transfers the next value on the stack to the Proces sor Status register, thereby changing all of the flags and setting the mode switches to the values from the stack.</p><p>The PLP instruction affects no registers in the processor other than the status register. This instruction could affect all flags in the status register.</p>", + "tooltip": "Pull Processor Status From Stack", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#PLP", + }; + + case "ROL": + return { + "html": "<p>The rotate left instruction shifts either the accumulator or addressed memory left 1 bit, with the input carry being stored in bit 0 and with the input bit 7 being stored in the carry flags.</p><p>The ROL instruction either shifts the accumulator left 1 bit and stores the carry in accumulator bit 0 or does not affect the internal registers at all. The ROL instruction sets carry equal to the input bit 7, sets N equal to the input bit 6 , sets the Z flag if the result of the ro tate is 0, otherwise it resets Z and does not affect the overflow flag at all.</p>", + "tooltip": "Rotate Left", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#ROL", + }; + + case "ROR": + return { + "html": "<p>The rotate right instruction shifts either the accumulator or addressed memory right 1 bit with bit 0 shifted into the carry and carry shifted into bit 7.</p><p>The ROR instruction either shifts the accumulator right 1 bit and stores the carry in accumulator bit 7 or does not affect the internal regis ters at all. The ROR instruction sets carry equal to input bit 0, sets N equal to the input carry and sets the Z flag if the result of the rotate is 0; otherwise it resets Z and does not affect the overflow flag at all.</p><p>(Available on Microprocessors after June, 1976)</p>", + "tooltip": "Rotate Right", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#ROR", + }; + + case "RTI": + return { + "html": "<p>This instruction transfers from the stack into the microprocessor the processor status and the program counter location for the instruction which was interrupted. By virtue of the interrupt having stored this data before executing the instruction and thei fact that the RTI reinitializes the microprocessor to the same state as when it was interrupted, the combination of interrupt plus RTI allows truly reentrant coding.</p><p>The RTI instruction reinitializes all flags to the position to the point they were at the time the interrupt was taken and sets the program counter back to its pre-interrupt state. It affects no other registers in the microprocessor.</p>", + "tooltip": "Return From Interrupt", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#RTI", + }; + + case "RTS": + return { + "html": "<p>This instruction loads the program count low and program count high from the stack into the program counter and increments the program counter so that it points to the instruction following the JSR. The stack pointer is adjusted by incrementing it twice.</p><p>The RTS instruction does not affect any flags and affects only PCL and PCH.</p>", + "tooltip": "Return From Subroutme", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#RTS", + }; + + case "SBC": + return { + "html": "<p>This instruction subtracts the value of memory and borrow from the value of the accumulator, using two's complement arithmetic, and stores the result in the accumulator. Borrow is defined as the carry flag complemented; therefore, a resultant carry flag indicates that a borrow has not occurred.</p><p>This instruction affects the accumulator. The carry flag is set if the result is greater than or equal to 0. The carry flag is reset when the result is less than 0, indicating a borrow. The overflow flag is set when the result exceeds +127 or -127, otherwise it is reset. The negative flag is set if the result in the accumulator has bit 7 on, otherwise it is reset. The Z flag is set if the result in the accumulator is 0, otherwise it is reset.</p>", + "tooltip": "Subtract Memory from Accumulator with Borrow", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SBC", + }; + + case "SEC": + return { + "html": "<p>This instruction initializes the carry flag to a 1. This op eration should normally precede a SBC loop. It is also useful when used with a ROL instruction to initialize a bit in memory to a 1.</p><p>This instruction affects no registers in the microprocessor and no flags other than the carry flag which is set.</p>", + "tooltip": "Set Carry Flag", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SEC", + }; + + case "SED": + return { + "html": "<p>This instruction sets the decimal mode flag D to a 1. This makes all subsequent ADC and SBC instructions operate as a decimal arithmetic operation.</p><p>SED affects no registers in the microprocessor and no flags other than the decimal mode which is set to a 1.</p>", + "tooltip": "Set Decimal Mode", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SED", + }; + + case "SEI": + return { + "html": "<p>This instruction initializes the interrupt disable to a 1. It is used to mask interrupt requests during system reset operations and during interrupt commands.</p><p>It affects no registers in the microprocessor and no flags other than the interrupt disable which is set.</p>", + "tooltip": "Set Interrupt Disable", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SEI", + }; + + case "STA": + return { + "html": "<p>This instruction transfers the contents of the accumulator to memory.</p><p>This instruction affects none of the flags in the processor status register and does not affect the accumulator.</p>", + "tooltip": "Store Accumulator in Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#STA", + }; + + case "STX": + return { + "html": "<p>Transfers value of X register to addressed memory location.</p><p>No flags or registers in the microprocessor are affected by the store operation.</p>", + "tooltip": "Store Index Register X In Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#STX", + }; + + case "STY": + return { + "html": "<p>Transfer the value of the Y register to the addressed memory location.</p><p>STY does not affect any flags or registers in the microprocessor.</p>", + "tooltip": "Store Index Register Y In Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#STY", + }; + + case "TAX": + return { + "html": "<p>This instruction takes the value from accumulator A and trans fers or loads it into the index register X without disturbing the content of the accumulator A.</p><p>TAX only affects the index register X, does not affect the carry or overflow flags. The N flag is set if the resultant value in the index register X has bit 7 on, otherwise N is reset. The Z bit is set if the content of the register X is 0 as aresult of theopera tion, otherwise it is reset.</p>", + "tooltip": "Transfer Accumulator To Index X", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#TAX", + }; + + case "TAY": + return { + "html": "<p>This instruction moves the value of the accumulator into index register Y without affecting the accumulator.</p><p>TAY instruction only affects the Y register and does not affect either the carry or overflow flags. If the index register Y has bit 7 on, then N is set, otherwise it is reset. If the content of the index register Y equals 0 as a result of the operation, Z is set on, otherwise it is reset.</p>", + "tooltip": "Transfer Accumula Tor To Index Y", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#TAY", + }; + + case "TSX": + return { + "html": "<p>This instruction transfers the value in the stack pointer to the index register X.</p><p>TSX does not affect the carry or overflow flags. It sets N if bit 7 is on in index X as a result of the instruction, otherwise it is reset. If index X is zero as a result of the TSX, the Z flag is set, other wise it is reset. TSX changes the value of index X, making it equal to the content of the stack pointer.</p>", + "tooltip": "Transfer Stack Pointer To Index X", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#TSX", + }; + + case "TXA": + return { + "html": "<p>This instruction moves the value that is in the index register X to the accumulator A without disturbing the content of the index register X.</p><p>TXA does not affect any register other than the accumulator and does not affect the carry or overflow flag. If the result in A has bit 7 on, then the N flag is set, otherwise it is reset. If the resultant value in the accumulator is 0, then the Z flag is set, other wise it is reset.</p>", + "tooltip": "Transfer Index X To Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#TXA", + }; + + case "TXS": + return { + "html": "<p>This instruction transfers the value in the index register X to the stack pointer.</p><p>TXS changes only the stack pointer, making it equal to the content of the index register X. It does not affect any of the flags.</p>", + "tooltip": "Transfer Index X To Stack Pointer", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#TXS", + }; + + case "TYA": + return { + "html": "<p>This instruction moves the value that is in the index register Y to accumulator A without disturbing the content of the register Y.</p><p>TYA does not affect any other register other than the accumula tor and does not affect the carry or overflow flag. If the result in the accumulator A has bit 7 on, the N flag is set, otherwise it is reset. If the resultant value in the accumulator A is 0, then the Z flag is set, otherwise it is reset.</p>", + "tooltip": "Transfer Index Y To Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#TYA", + }; + + case "SAX": + return { + "html": "<p>The undocumented SAX instruction performs a bit-by-bit AND operation of the accumulator and the X register and transfers the result to the addressed memory location.</p><p>No flags or registers in the microprocessor are affected by the store operation.</p><p>The undocumented SAX instruction performs a bit-by-bit AND operation of the value of the accumulator and the value of the index register X and stores the result in memory.</p><p>No flags or registers in the microprocessor are affected by the store operation.</p>", + "tooltip": "Store Accumulator \"AND\" Index Register X in Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SAX", + }; + + case "SHA": + return { + "html": "<p>The undocumented SHA instruction performs a bit-by-bit AND operation of the following three operands: The first two are the accumulator and the index register X.</p><p>The third operand depends on the addressing mode. In the zero page indirect Y-indexed case, the third operand is the data in memory at the given zero page address (ignoring the the addressing mode's Y offset) plus 1. In the Y-indexed absolute case, it is the upper 8 bits of the given address (ignoring the the addressing mode's Y offset), plus 1.</p><p>It then transfers the result to the addressed memory location.</p><p>No flags or registers in the microprocessor are affected by the store operation.</p>", + "tooltip": "Store Accumulator \"AND\" Index Register X \"AND\" Value", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SHA", + }; + + case "ASR": + return { + "html": "<p>The undocumented ASR instruction performs a bit-by-bit AND operation of the accumulator and memory, then shifts the accumulator 1 bit to the right, with the higher bit of the result always being set to 0, and the low bit which is shifted out of the field being stored in the carry flag.</p><p>This instruction affects the accumulator. It does not affect the overflow flag. The N flag is always reset. The Z flag is set if the result of the shift is 0 and reset otherwise. The carry is set equal to bit 0 of the result of the \"AND\" operation.</p>", + "tooltip": "\"AND\" then Logical Shift Right", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#ASR", + }; + + case "ANC": + return { + "html": "<p>The undocumented ANC instruction performs a bit-by-bit AND operation of the accumulator and memory and stores the result back in the accumulator.</p><p>This instruction affects the accumulator; sets the zero flag if the result in the accumulator is 0, otherwise resets the zero flag; sets the negative flag and the carry flag if the result in the accumulator has bit 7 on, otherwise resets the negative flag and the carry flag.</p>", + "tooltip": "\"AND\" Memory with Accumulator then Move Negative Flag to Carry Flag", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#ANC", + }; + + case "ARR": + return { + "html": "<p>The undocumented ARR instruction performs a bit-by-bit \"AND\" operation of the accumulator and memory, then shifts the result right 1 bit with bit 0 shifted into the carry and carry shifted into bit 7. It then stores the result back in the accumulator.</p><p>If bit 7 of the result is on, then the N flag is set, otherwise it is reset. The instruction sets the Z flag if the result is 0; otherwise it resets Z.</p><p>The V and C flags depends on the Decimal Mode Flag:</p><p>In decimal mode, the V flag is set if bit 6 is different than the original data's bit 6, otherwise the V flag is reset. The C flag is set if (operand & 0xF0) + (operand & 0x10) is greater than 0x50, otherwise the C flag is reset.</p><p>In binary mode, the V flag is set if bit 6 of the result is different than bit 5 of the result, otherwise the V flag is reset. The C flag is set if the result in the accumulator has bit 6 on, otherwise it is reset.</p>", + "tooltip": "\"AND\" Accumulator then Rotate Right", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#ARR", + }; + + case "SBX": + return { + "html": "<p>This undocumented instruction performs a bit-by-bit \"AND\" of the value of the accumulator and the index register X and subtracts the value of memory from this result, using two's complement arithmetic, and stores the result in the index register X.</p><p>This instruction affects the index register X. The carry flag is set if the result is greater than or equal to 0. The carry flag is reset when the result is less than 0, indicating a borrow. The negative flag is set if the result in index register X has bit 7 on, otherwise it is reset. The Z flag is set if the result in index register X is 0, otherwise it is reset. The overflow flag not affected at all.</p>", + "tooltip": "Subtract Memory from Accumulator \"AND\" Index Register X", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SBX", + }; + + case "DCP": + return { + "html": "<p>This undocumented instruction subtracts 1, in two's complement, from the contents of the addressed memory location. It then subtracts the contents of memory from the contents of the accumulator.</p><p>The DCP instruction does not affect any internal register in the microprocessor. It does not affect the overflow flag. Z flag is set on an equal comparison, reset otherwise; the N flag is set or reset by the result bit 7, the carry flag is set when the result in memory is less than or equal to the accumulator, reset when it is greater than the accumulator.</p>", + "tooltip": "Decrement Memory By One then Compare with Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#DCP", + }; + + case "ISC": + return { + "html": "<p>This undocumented instruction adds 1 to the contents of the addressed memory location. It then subtracts the value of the result in memory and borrow from the value of the accumulator, using two's complement arithmetic, and stores the result in the accumulator.</p><p>This instruction affects the accumulator. The carry flag is set if the result is greater than or equal to 0. The carry flag is reset when the result is less than 0, indicating a borrow. The overflow flag is set when the result exceeds +127 or -127, otherwise it is reset. The negative flag is set if the result in the accumulator has bit 7 on, otherwise it is reset. The Z flag is set if the result in the accumulator is 0, otherwise it is reset.</p>", + "tooltip": "Increment Memory By One then SBC then Subtract Memory from Accumulator with Borrow", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#ISC", + }; + + case "JAM": + return { + "html": "<p>This undocumented instruction stops execution. The microprocessor will not fetch further instructions, and will neither handle IRQs nor NMIs. It will handle a RESET though.</p>", + "tooltip": "Halt the CPU", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#JAM", + }; + + case "LAS": + return { + "html": "<p>This undocumented instruction performs a bit-by-bit \"AND\" operation of the stack pointer and memory and stores the result back in the accumulator, the index register X and the stack pointer.</p><p>The LAS instruction does not affect the carry or overflow flags. It sets N if the bit 7 of the result is on, otherwise it is reset. If the result is zero, then the Z flag is set, otherwise it is reset.</p>", + "tooltip": "\"AND\" Memory with Stack Pointer", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#LAS", + }; + + case "LAX": + return { + "html": "<p>The undocumented LAX instruction loads the accumulator and the index register X from memory.</p><p>LAX does not affect the C or V flags; sets Z if the value loaded was zero, otherwise resets it; sets N if the value loaded in bit 7 is a 1; otherwise N is reset, and affects only the X register.</p>", + "tooltip": "Load Accumulator and Index Register X From Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#LAX", + }; + + case "RLA": + return { + "html": "<p>The undocumented RLA instruction shifts the addressed memory left 1 bit, with the input carry being stored in bit 0 and with the input bit 7 being stored in the carry flags. It then performs a bit-by-bit AND operation of the result and the value of the accumulator and stores the result back in the accumulator.</p><p>This instruction affects the accumulator; sets the zero flag if the result in the accumulator is 0, otherwise resets the zero flag; sets the negative flag if the result in the accumulator has bit 7 on, otherwise resets the negative flag.</p>", + "tooltip": "Rotate Left then \"AND\" with Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#RLA", + }; + + case "RRA": + return { + "html": "<p>The undocumented RRA instruction shifts the addressed memory right 1 bit with bit 0 shifted into the carry and carry shifted into bit 7. It then adds the result and generated carry to the value of the accumulator and stores the result in the accumulator.</p><p>This instruction affects the accumulator; sets the carry flag when the sum of a binary add exceeds 255 or when the sum of a decimal add exceeds 99, otherwise carry is reset. The overflow flag is set when the sign or bit 7 is changed due to the result exceeding +127 or -128, otherwise overflow is reset. The negative flag is set if the accumulator result contains bit 7 on, otherwise the negative flag is reset. The zero flag is set if the accumulator result is 0, otherwise the zero flag is reset.</p>", + "tooltip": "Rotate Right and Add Memory to Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#RRA", + }; + + case "SHX": + return { + "html": "<p>The undocumented SHX instruction performs a bit-by-bit AND operation of the index register X and the upper 8 bits of the given address (ignoring the the addressing mode's Y offset), plus 1. It then transfers the result to the addressed memory location.</p><p>No flags or registers in the microprocessor are affected by the store operation.</p>", + "tooltip": "Store Index Register X \"AND\" Value", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SHX", + }; + + case "SHY": + return { + "html": "<p>The undocumented SHY instruction performs a bit-by-bit AND operation of the index register Y and the upper 8 bits of the given address (ignoring the the addressing mode's X offset), plus 1. It then transfers the result to the addressed memory location.</p><p>No flags or registers in the microprocessor are affected by the store operation.</p>", + "tooltip": "Store Index Register Y \"AND\" Value", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SHY", + }; + + case "SLO": + return { + "html": "<p>The undocumented SLO instruction shifts the address memory location 1 bit to the left, with the bit 0 always being set to 0 and the bit 7 output always being contained in the carry flag. It then performs a bit-by-bit \"OR\" operation on the result and the accumulator and stores the result in the accumulator.</p><p>The negative flag is set if the accumulator result contains bit 7 on, otherwise the negative flag is reset. It sets Z flag if the result is equal to 0, otherwise resets Z and stores the input bit 7 in the carry flag.</p>", + "tooltip": "Arithmetic Shift Left then \"OR\" Memory with Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SLO", + }; + + case "SRE": + return { + "html": "<p>The undocumented SRE instruction shifts the specified memory location 1 bit to the right, with the higher bit of the result always being set to 0, and the low bit which is shifted out of the field being stored in the carry flag. It then performs a bit-by-bit \"EXCLUSIVE OR\" of the result and the value of the accumulator and stores the result in the accumulator.</p><p>This instruction affects the accumulator. It does not affect the overflow flag. The negative flag is set if the accumulator result contains bit 7 on, otherwise the negative flag is reset. The Z flag is set if the result is 0 and reset otherwise. The carry is set equal to input bit 0.</p>", + "tooltip": "Logical Shift Right then \"Exclusive OR\" Memory with Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SRE", + }; + + case "SHS": + return { + "html": "<p>The undocumented SHS instruction performs a bit-by-bit AND operation of the value of the accumulator and the value of the index register X and stores the result in the stack pointer. It then performs a bit-by-bit AND operation of the resulting stack pointer and the upper 8 bits of the given address (ignoring the addressing mode's Y offset), plus 1, and transfers the result to the addressed memory location.</p><p>No flags or registers in the microprocessor are affected by the store operation.</p>", + "tooltip": "Transfer Accumulator \"AND\" Index Register X to Stack Pointer then Store Stack Pointer \"AND\" Hi-Byte In Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#SHS", + }; + + case "XAA": + return { + "html": "<p>The operation of the undocumented XAA instruction depends on the individual microprocessor. On most machines, it performs a bit-by-bit AND operation of the following three operands: The first two are the index register X and memory.</p><p>The third operand is the result of a bit-by-bit AND operation of the accumulator and a magic component. This magic component depends on the individual microprocessor and is usually one of $00, $EE, $EF, $FE and $FF, and may be influenced by the RDY pin, leftover contents of the data bus, the temperature of the microprocessor, the supplied voltage, and other factors.</p><p>On some machines, additional bits of the result may be set or reset depending on non-deterministic factors.</p><p>It then transfers the result to the accumulator.</p><p>XAA does not affect the C or V flags; sets Z if the value loaded was zero, otherwise resets it; sets N if the result in bit 7 is a 1; otherwise N is reset.</p>", + "tooltip": "Non-deterministic Operation of Accumulator, Index Register X, Memory and Bus Contents", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=6502&tab=2#XAA", + }; + + case "BRA": + return { + "html": "<p>This instruction takes an unconditional branch.</p><p>BRA does not affect any of the flags or any other part of the machine other than the program counter.</p>", + "tooltip": "Branch Always", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=65c02&tab=2#BRA", + }; + + case "PHX": + return { + "html": "<p>This instruction transfers the current value of the index register X to the next location on the stack, automatically decrementing the stack to point to the next empty location.</p><p>The Push X instruction only affects the stack pointer register which is decremented by 1 as a result of the operation. It affects no flags.</p>", + "tooltip": "Push Index Register X On Stack", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=65c02&tab=2#PHX", + }; + + case "PHY": + return { + "html": "<p>This instruction transfers the current value of the index register Y to the next location on the stack, automatically decrementing the stack to point to the next empty location.</p><p>The Push Y instruction only affects the stack pointer register which is decremented by 1 as a result of the operation. It affects no flags.</p>", + "tooltip": "Push Index Register Y On Stack", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=65c02&tab=2#PHY", + }; + + case "PLX": + return { + "html": "<p>This instruction adds 1 to the current value of the stack pointer and uses it to address the stack and loads the contents of the stack into the X register.</p><p>The PLX instruction does not affect the carry or overflow flags. It sets N if the bit 7 is on in index register X as a result of instructions, otherwise it is reset. If index register X is zero as a result of the PLA, then the Z flag is set, otherwise it is reset. The PLX instruction changes content of the index register X to the contents of the memory location at stack register plus 1 and also increments the stack register.</p>", + "tooltip": "Pull Index Register X From Stack", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=65c02&tab=2#PLX", + }; + + case "PLY": + return { + "html": "<p>This instruction adds 1 to the current value of the stack pointer and uses it to address the stack and loads the contents of the stack into the Y register.</p><p>The PLY instruction does not affect the carry or overflow flags. It sets N if the bit 7 is on in index register Y as a result of instructions, otherwise it is reset. If index register Y is zero as a result of the PLA, then the Z flag is set, otherwise it is reset. The PLY instruction changes content of the index register Y to the contents of the memory location at stack register plus 1 and also increments the stack register.</p>", + "tooltip": "Pull Index Register Y From Stack", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=65c02&tab=2#PLY", + }; + + case "STZ": + return { + "html": "<p>Transfers the value 0 to addressed memory location.</p><p>No flags or registers in the microprocessor are affected by the store operation.</p>", + "tooltip": "Store Zero In Memory", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=65c02&tab=2#STZ", + }; + + case "TRB": + return { + "html": "<p>This instruction tests and resets bits in memory, using the accumulator for both a test mask, and a reset mask. It performs a logical AND between the inverted bits of the accumulator and the bits in memory, storing the result back into memory.</p><p>The zero flag is set if all bits of the result of the AND are zero, otherwise it is reset.</p>", + "tooltip": "Test And Reset Memory Bits With Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=65c02&tab=2#TRB", + }; + + case "TSB": + return { + "html": "<p>This instruction tests and sets bits in memory, using the accumulator for both a test mask, and a set mask. It performs a logical OR between the bits of the accumulator and the bits in memory, storing the result back into memory.</p><p>The zero flag is set if all bits of the result of the OR are zero, otherwise it is reset.</p>", + "tooltip": "Test And Set Memory Bits With Accumulator", + "url": "https://www.pagetable.com/c64ref/6502/?cpu=65c02&tab=2#TSB", + }; + + } +}
\ No newline at end of file diff --git a/lib/handlers/asm-docs-api-java.js b/lib/handlers/assembly-documentation/amd64.js index 20d4816f9..5b2f6b7d6 100644 --- a/lib/handlers/asm-docs-api-java.js +++ b/lib/handlers/assembly-documentation/amd64.js @@ -22,29 +22,21 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -import * as props from '../properties'; +import { getAsmOpcode } from '../asm-docs-amd64'; +import { BaseAssemblyDocumentationHandler } from '../base-assembly-documentation-handler'; -import { getAsmOpcode } from './asm-docs-java'; +const ATT_SUFFIX_REMOVER = /^([a-z]+)[blqw]$/i; -export class AsmDocsHandler { - constructor() { - const asmProps = props.propsFor('asm-docs'); - this.staticMaxAgeSecs = asmProps('staticMaxAgeSecs', 10); - } - - handle(req, res) { - const info = getAsmOpcode(req.params.opcode); - if (this.staticMaxAgeSecs) { - res.setHeader('Cache-Control', `public, max-age=${this.staticMaxAgeSecs}`); - } - if (req.accepts(['text', 'json']) === 'json') { - res.send({found: !!info, result: info}); - } else { - if (info) { - res.send(info.html); - } else { - res.send('Unknown opcode'); +export class Amd64DocumentationHandler extends BaseAssemblyDocumentationHandler { + getInstructionInformation(instruction) { + // Try both default and with AT&T suffix removed + let info = getAsmOpcode(instruction); + if (!info) { + const alternativeInstruction = ATT_SUFFIX_REMOVER.exec(instruction); + if (alternativeInstruction) { + info = getAsmOpcode(alternativeInstruction[1]); } } + return info || null; } } diff --git a/lib/handlers/asm-docs-api-arm32.js b/lib/handlers/assembly-documentation/arm32.js index 303ab86a2..66c680409 100644 --- a/lib/handlers/asm-docs-api-arm32.js +++ b/lib/handlers/assembly-documentation/arm32.js @@ -22,18 +22,12 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -import * as props from '../properties'; +import { getAsmOpcode } from '../asm-docs-arm32'; +import { BaseAssemblyDocumentationHandler } from '../base-assembly-documentation-handler'; -import {getAsmOpcode} from './asm-docs-arm32'; - -const conditionalRe = /^([A-Za-z]+?)(EQ|NE|CS|CC|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)$/; - -export class AsmDocsHandler { - constructor() { - const asmProps = props.propsFor('asm-docs'); - this.staticMaxAgeSecs = asmProps('staticMaxAgeSecs', 10); - } +const CONDITIONAL_INSTRUCTION_REGEXP = /^([A-Za-z]+?)(EQ|NE|CS|CC|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)$/; +export class Arm32DocumentationHandler extends BaseAssemblyDocumentationHandler { // Notes for conditionals: // https://developer.arm.com/documentation/dui0473/m/condition-codes/condition-code-suffixes-and-related-flags getOpcodeConditional(opcode) { @@ -56,7 +50,7 @@ export class AsmDocsHandler { LE: 'If signed less than or equal, ', }; - const matches = opcode.match(conditionalRe); + const matches = opcode.match(CONDITIONAL_INSTRUCTION_REGEXP); if (matches) { const opcodeDescription = getAsmOpcode(matches[1]); if (!opcodeDescription) return; @@ -70,19 +64,8 @@ export class AsmDocsHandler { } } - handle(req, res) { - const opcode = req.params.opcode.toUpperCase(); - const info = getAsmOpcode(opcode) || this.getOpcodeConditional(opcode); - if (this.staticMaxAgeSecs) { - res.setHeader('Cache-Control', 'public, max-age=' + this.staticMaxAgeSecs); - } - if (req.accepts(['text', 'json']) === 'json') { - res.send({found: !!info, result: info}); - } else { - if (info) - res.send(info.html); - else - res.send('Unknown opcode'); - } + getInstructionInformation(instruction) { + const info = getAsmOpcode(instruction) || this.getOpcodeConditional(instruction); + return info || null; } } diff --git a/lib/handlers/asm-docs-api-aarch64.js b/lib/handlers/assembly-documentation/java.js index 4bcddd1ff..5578eecff 100644 --- a/lib/handlers/asm-docs-api-aarch64.js +++ b/lib/handlers/assembly-documentation/java.js @@ -22,19 +22,11 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -import * as props from '../properties'; +import { getAsmOpcode } from '../asm-docs-java'; +import { BaseAssemblyDocumentationHandler } from '../base-assembly-documentation-handler'; -export class AsmDocsHandler { - constructor() { - const asmProps = props.propsFor('asm-docs'); - this.staticMaxAgeSecs = asmProps('staticMaxAgeSecs', 10); - } - - handle(req, res) { - if (this.staticMaxAgeSecs) { - res.setHeader('Cache-Control', 'public, max-age=' + this.staticMaxAgeSecs); - } - - res.send('Unknown opcode'); +export class JavaDocumentationHandler extends BaseAssemblyDocumentationHandler { + getInstructionInformation(instruction) { + return getAsmOpcode(instruction) || null; } } diff --git a/lib/handlers/assembly-documentation/mos6502.js b/lib/handlers/assembly-documentation/mos6502.js new file mode 100644 index 000000000..79293b487 --- /dev/null +++ b/lib/handlers/assembly-documentation/mos6502.js @@ -0,0 +1,8 @@ +import { getAsmOpcode } from '../asm-docs-6502'; +import { BaseAssemblyDocumentationHandler } from '../base-assembly-documentation-handler'; + +export class Mos6502DocumentationHandler extends BaseAssemblyDocumentationHandler { + getInstructionInformation(instruction) { + return getAsmOpcode(instruction) || null; + } +} diff --git a/lib/handlers/asm-docs-api-amd64.js b/lib/handlers/assembly-documentation/router.js index e0db76077..2d35d084f 100644 --- a/lib/handlers/asm-docs-api-amd64.js +++ b/lib/handlers/assembly-documentation/router.js @@ -1,4 +1,4 @@ -// Copyright (c) 2017, Compiler Explorer Authors +// Copyright (c) 2021, Compiler Explorer Authors // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -22,37 +22,36 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -import * as props from '../properties'; +import { propsFor } from '../../properties'; -import { getAsmOpcode } from './asm-docs-amd64'; +import { Amd64DocumentationHandler } from './amd64'; +import { Arm32DocumentationHandler } from './arm32'; +import { JavaDocumentationHandler } from './java'; +import { Mos6502DocumentationHandler } from './mos6502'; -export class AsmDocsHandler { - constructor() { - const asmProps = props.propsFor('asm-docs'); - this.staticMaxAgeSecs = asmProps('staticMaxAgeSecs', 10); - this.atAndTSuffixRemover = /^([a-z]+)[blqw]$/i; - } +/** @type {Record.<string, BaseAssemblyDocumentationHandler>} */ +const ASSEMBLY_DOCUMENTATION_HANDLERS = { + amd64: new Amd64DocumentationHandler(), + arm32: new Arm32DocumentationHandler(), + java: new JavaDocumentationHandler(), + 6502: new Mos6502DocumentationHandler(), +}; + +const MAX_STATIC_AGE = propsFor('asm-docs')('staticMaxAgeSecs', 10); - handle(req, res) { - let info = getAsmOpcode(req.params.opcode); - if (!info) { - // If the opcode ends with an AT&T suffix, try removing that and giving it another go. - // Ideally, we'd be smarter here, but this is a quick win. - const suffixRemoved = this.atAndTSuffixRemover.exec(req.params.opcode); - if (suffixRemoved) { - info = getAsmOpcode(suffixRemoved[1]); - } - } - if (this.staticMaxAgeSecs) { - res.setHeader('Cache-Control', 'public, max-age=' + this.staticMaxAgeSecs); - } - if (req.accepts(['text', 'json']) === 'json') { - res.send({found: !!info, result: info}); - } else { - if (info) - res.send(info.html); - else - res.send('Unknown opcode'); - } +/** + * Initialize all Assembly Docs routes + * + * @param {e.Router} router + */ +export const setup = (router) => router.get('/asm/:arch/:opcode', (req, res) => { + if (MAX_STATIC_AGE > 0) { + res.setHeader('Cache-Control', `public, max-age=${MAX_STATIC_AGE}`); + } + const architecture = req.params.arch; + const handler = ASSEMBLY_DOCUMENTATION_HANDLERS[architecture]; + if (handler !== undefined) { + return handler.handle(req, res); } -} + res.status(404).json({ error: `No documentation for '${architecture}'` }).send(); +}); diff --git a/lib/handlers/base-assembly-documentation-handler.ts b/lib/handlers/base-assembly-documentation-handler.ts new file mode 100644 index 000000000..90efe15cc --- /dev/null +++ b/lib/handlers/base-assembly-documentation-handler.ts @@ -0,0 +1,61 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import express from 'express'; + +import { AssemblyDocumentationResponse } from '../../types/features/assembly-documentation.interfaces'; + +export class BaseAssemblyDocumentationHandler { + /** + * Gather the assembly instruction information by the instruction name. + * + * Implementors should return null if the instruction is not supported. + */ + // eslint-disable-next-line no-unused-vars + getInstructionInformation(instruction: string): AssemblyDocumentationResponse | null { + return null; + } + + /** + * Handle a request for assembly instruction documentation. + * + * Implementors should not have to override this. + */ + handle(request: express.Request, response: express.Response) { + // If the request had no opcode parameter, we should fail. This assumes + // no assembly language has a __unknown_opcode instruction. + const instruction = (request.params.opcode || '__UNKNOWN_OPCODE').toUpperCase(); + const information = this.getInstructionInformation(instruction); + if (information === null) { + return response.status(404).send({ error: `Unknown opcode '${instruction}'` }); + } + // Accept either JSON or Plaintext Content-Type + const requestedContentType = request.accepts(['text', 'json']); + switch (requestedContentType) { + case 'text': response.send(information.html); break; + case 'json': response.send(information); break; + default: response.status(406).send({ error: 'Not Acceptable' }); break; + } + } +} diff --git a/lib/handlers/compile.js b/lib/handlers/compile.js index e6dc7fceb..e540d00f6 100644 --- a/lib/handlers/compile.js +++ b/lib/handlers/compile.js @@ -282,7 +282,7 @@ export class CompileHandler { executionParameters.args = execParams.args; executionParameters.stdin = execParams.stdin; backendOptions = requestOptions.compilerOptions || {}; - filters = requestOptions.filters || compiler.getDefaultFilters(); + filters = {...(compiler.getDefaultFilters()), ...requestOptions.filters}; tools = requestOptions.tools; libraries = requestOptions.libraries || []; } else if (req.body && req.body.compiler) { diff --git a/lib/tooling/pvs-studio-tool.js b/lib/tooling/pvs-studio-tool.js index 0cc1d4add..d357509b4 100644 --- a/lib/tooling/pvs-studio-tool.js +++ b/lib/tooling/pvs-studio-tool.js @@ -27,10 +27,10 @@ import path from 'path'; import fs from 'fs-extra'; import * as exec from '../exec'; -import { logger } from '../logger'; +import {logger} from '../logger'; import * as utils from '../utils'; -import { BaseTool } from './base-tool'; +import {BaseTool} from './base-tool'; export class PvsStudioTool extends BaseTool { static get key() { @@ -121,13 +121,14 @@ export class PvsStudioTool extends BaseTool { logger.warn('plog-converter failed', plogConverterResult); return this.convertResult(plogConverterResult, inputFilepath); } - let plogConverterOutput = (await fs.readFile(plogConverterOutputFilePath, 'utf8')).toString(); + const plogRawOutput = await fs.readFile(plogConverterOutputFilePath, 'utf8'); // Sometimes if a code fragment can't be analyzed, PVS-Studio makes a warning for a preprocessed file // (*.PVS-Studio.i) // This name can't be parsed by utils.parseOutput // so let's just replace it with a source file name. - plogConverterOutput = plogConverterOutput.replace(sourceDir + '/example.PVS-Studio.i', inputFilepath); + const plogConverterOutput = plogRawOutput.toString().replace( + sourceDir + '/example.PVS-Studio.i', inputFilepath); result.stdout = utils.parseOutput(plogConverterOutput, plogConverterResult.filenameTransform(inputFilepath)); diff --git a/lib/utils.js b/lib/utils.ts index 97d864c34..fea13bc6e 100644 --- a/lib/utils.js +++ b/lib/utils.ts @@ -30,6 +30,18 @@ import fs from 'fs-extra'; import quote from 'shell-quote'; import _ from 'underscore'; +interface IResultLineTag { + line?: number; + column?: number; + file?: string; + text: string; +} + +interface IResultLine { + text: string; + tag?: IResultLineTag; +} + const tabsRe = /\t/g; const lineRe = /\r?\n/; @@ -58,7 +70,7 @@ export function splitLines(text) { * @param {eachLineFunc} func * @param {*} [context] */ -export function eachLine(text, func, context) { +export function eachLine(text: string, func, context?): IResultLine[] { return _.each(splitLines(text), func, context); } @@ -133,7 +145,7 @@ export function parseOutput(lines, inputFilename, pathPrefix) { line = maskRootdir(line); } if (line !== null) { - const lineObj = {text: line}; + const lineObj: IResultLine = { text: line }; const filteredline = line.replace(ansiColoursRe, ''); let match = filteredline.match(re); if (match) { @@ -172,7 +184,7 @@ export function parseRustOutput(lines, inputFilename, pathPrefix) { eachLine(lines, line => { line = _parseOutputLine(line, inputFilename, pathPrefix); if (line !== null) { - const lineObj = {text: line}; + const lineObj: IResultLine = { text: line }; const match = line.replace(ansiColoursRe, '').match(re); if (match) { @@ -307,13 +319,13 @@ export function getHash(object, HashVersion = DefaultHash) { * @returns {glContents} */ export function glGetMainContents(content) { - let contents = {editors: [], compilers: []}; + const contents = { editors: [], compilers: [] }; _.each(content, element => { if (element.type === 'component') { if (element.componentName === 'codeEditor') { - contents.editors.push({source: element.componentState.source, language: element.componentState.lang}); + contents.editors.push({ source: element.componentState.source, language: element.componentState.lang }); } else if (element.componentName === 'compiler') { - contents.compilers.push({compiler: element.componentState.compiler}); + contents.compilers.push({ compiler: element.componentState.compiler }); } } else { const subComponents = glGetMainContents(element.content); @@ -459,7 +471,7 @@ export async function dirExists(dir) { export function countOccurrences(collection, item) { // _.reduce(collection, (total, value) => value === item ? total + 1 : total, 0) would work, but is probably slower let result = 0; - for (let element of collection) { + for (const element of collection) { if (element === item) { result++; } diff --git a/package-lock.json b/package-lock.json index 19db95e9b..d760877a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,9 +14,9 @@ } }, "@babel/compat-data": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", - "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { @@ -99,12 +99,12 @@ } }, "@babel/eslint-parser": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.14.3.tgz", - "integrity": "sha512-IfJXKEVRV/Gisvgmih/+05gkBzzg4Dy0gcxkZ84iFiLK8+O+fI1HLnGJv3UrUMPpsMmmThNa69v+UnF80XP+kA==", + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.5.tgz", + "integrity": "sha512-mUqYa46lgWqHKQ33Q6LNCGp/wPR3eqOYTUixHFsfrSQqRxH0+WOzca75iEjFr5RDGH1dDz622LaHhLOzOuQRUA==", "dev": true, "requires": { - "eslint-scope": "^5.1.0", + "eslint-scope": "^5.1.1", "eslint-visitor-keys": "^2.1.0", "semver": "^6.3.0" }, @@ -152,18 +152,76 @@ } } }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, "@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, "dependencies": { + "browserslist": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.0.tgz", + "integrity": "sha512-JGHzm73ei2OnAcobcQ61GXNnN6vDCg5Oz5MayudL+FyzjoLnCzUWnuLtDLMIYw8aXgQzzdCZMVky+fftD5jbtA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001286", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", + "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.17", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.17.tgz", + "integrity": "sha512-zhk1MravPtq/KBhmGB7TLBILmXTgRG9TFSI3qS3DbgyfHzIl72iiTE37r/BHIbPCJJlWIo5rySyxiH4vWhu2ZA==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -172,6 +230,207 @@ } } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz", + "integrity": "sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.5", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.5", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "@babel/generator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", + "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz", + "integrity": "sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz", + "integrity": "sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-member-expression-to-functions": "^7.16.5", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", + "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "dev": true + }, + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/traverse": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", + "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.5", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", + "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, "@babel/helper-function-name": { "version": "7.14.2", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz", @@ -228,6 +487,33 @@ } } }, + "@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, "@babel/helper-member-expression-to-functions": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", @@ -346,6 +632,12 @@ } } }, + "@babel/helper-plugin-utils": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz", + "integrity": "sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==", + "dev": true + }, "@babel/helper-replace-supers": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", @@ -439,9 +731,9 @@ "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==" }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helpers": { @@ -498,6 +790,37 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==" }, + "@babel/plugin-syntax-typescript": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.5.tgz", + "integrity": "sha512-/d4//lZ1Vqb4mZ5xTep3dDK888j7BGM/iKqBmndBaoYAFPlPKrGU608VVBz5JeyAb6YQDjRu1UKqj86UhwWVgw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", + "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.16.0" + } + }, + "@babel/preset-typescript": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz", + "integrity": "sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.16.1" + } + }, "@babel/template": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", @@ -598,6 +921,21 @@ "to-fast-properties": "^2.0.0" } }, + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dev": true, + "requires": { + "@cspotcode/source-map-consumer": "0.8.0" + } + }, "@dabh/diagnostics": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", @@ -608,38 +946,36 @@ "kuler": "^2.0.0" } }, + "@discoveryjs/json-ext": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", + "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "dev": true + }, "@es-joy/jsdoccomment": { - "version": "0.9.0-alpha.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.9.0-alpha.1.tgz", - "integrity": "sha512-Clxxc0PwpISoYYBibA+1L2qFJ7gvFVhI2Hos87S06K+Q0cXdOhZQJNKWuaQGPAeHjZEuUB/YoWOfwjuF2wirqA==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.13.0.tgz", + "integrity": "sha512-APVqbVPGOprb4BmjEnwbSzV+V2e/6DVIUnZG3zdW5uWXWkN0DKMCpiIy2TdBauoANKYO7RQpO8cTjIYNVSKwUA==", "dev": true, "requires": { - "comment-parser": "1.1.6-beta.0", + "comment-parser": "1.3.0", "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "1.0.4" - }, - "dependencies": { - "jsdoc-type-pratt-parser": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.0.4.tgz", - "integrity": "sha512-jzmW9gokeq9+bHPDR1nCeidMyFUikdZlbOhKzh9+/nJqB75XhpNKec1/UuxW5c4+O+Pi31Gc/dCboyfSm/pSpQ==", - "dev": true - } + "jsdoc-type-pratt-parser": "2.0.0" } }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", + "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", "dev": true, "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", + "debug": "^4.3.2", + "espree": "^9.2.0", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, @@ -656,25 +992,25 @@ "uri-js": "^4.2.2" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "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.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" } }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -686,6 +1022,15 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -706,20 +1051,20 @@ "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==" }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", + "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" }, "dependencies": { "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.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -734,9 +1079,9 @@ } }, "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -1017,9 +1362,9 @@ } }, "@orchidjs/sifter": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@orchidjs/sifter/-/sifter-0.8.2.tgz", - "integrity": "sha512-aDemVMJL2cGo82EVHXMM2y6WoWlk00V2aibvNAl2djtZG1OquirMvnOTlb2L4tjcH5cT2q1/dyHepZcxnFW5zQ==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@orchidjs/sifter/-/sifter-0.9.0.tgz", + "integrity": "sha512-NDYPhjdydJNbwDRvMFyUFFeImj1a+CJAwpjh/goKmvTHi726DPAJ1nW0X05p/GsorQgXHwhgDPyu6WaYqd4cRA==" }, "@popperjs/core": { "version": "2.10.1", @@ -1082,13 +1427,13 @@ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" }, "@sentry/browser": { - "version": "6.13.3", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.13.3.tgz", - "integrity": "sha512-jwlpsk2/u1cofvfYsjmqcnx50JJtf/T6HTgdW+ih8+rqWC5ABEZf4IiB/H+KAyjJ3wVzCOugMq5irL83XDCfqQ==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.16.1.tgz", + "integrity": "sha512-F2I5RL7RTLQF9CccMrqt73GRdK3FdqaChED3RulGQX5lH6U3exHGFxwyZxSrY4x6FedfBFYlfXWWCJXpLnFkow==", "requires": { - "@sentry/core": "6.13.3", - "@sentry/types": "6.13.3", - "@sentry/utils": "6.13.3", + "@sentry/core": "6.16.1", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "tslib": "^1.9.3" }, "dependencies": { @@ -1100,14 +1445,14 @@ } }, "@sentry/core": { - "version": "6.13.3", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.13.3.tgz", - "integrity": "sha512-obm3SjgCk8A7nB37b2AU1eq1q7gMoJRrGMv9VRIyfcG0Wlz/5lJ9O3ohUk+YZaaVfZMxXn6hFtsBiOWmlv7IIA==", - "requires": { - "@sentry/hub": "6.13.3", - "@sentry/minimal": "6.13.3", - "@sentry/types": "6.13.3", - "@sentry/utils": "6.13.3", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.16.1.tgz", + "integrity": "sha512-UFI0264CPUc5cR1zJH+S2UPOANpm6dLJOnsvnIGTjsrwzR0h8Hdl6rC2R/GPq+WNbnipo9hkiIwDlqbqvIU5vw==", + "requires": { + "@sentry/hub": "6.16.1", + "@sentry/minimal": "6.16.1", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "tslib": "^1.9.3" }, "dependencies": { @@ -1119,12 +1464,12 @@ } }, "@sentry/hub": { - "version": "6.13.3", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.13.3.tgz", - "integrity": "sha512-eYppBVqvhs5cvm33snW2sxfcw6G20/74RbBn+E4WDo15hozis89kU7ZCJDOPkXuag3v1h9igns/kM6PNBb41dw==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.16.1.tgz", + "integrity": "sha512-4PGtg6AfpqMkreTpL7ymDeQ/U1uXv03bKUuFdtsSTn/FRf9TLS4JB0KuTZCxfp1IRgAA+iFg6B784dDkT8R9eg==", "requires": { - "@sentry/types": "6.13.3", - "@sentry/utils": "6.13.3", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "tslib": "^1.9.3" }, "dependencies": { @@ -1136,12 +1481,12 @@ } }, "@sentry/minimal": { - "version": "6.13.3", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.13.3.tgz", - "integrity": "sha512-63MlYYRni3fs5Bh8XBAfVZ+ctDdWg0fapSTP1ydIC37fKvbE+5zhyUqwrEKBIiclEApg1VKX7bkKxVdu/vsFdw==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.16.1.tgz", + "integrity": "sha512-dq+mI1EQIvUM+zJtGCVgH3/B3Sbx4hKlGf2Usovm9KoqWYA+QpfVBholYDe/H2RXgO7LFEefDLvOdHDkqeJoyA==", "requires": { - "@sentry/hub": "6.13.3", - "@sentry/types": "6.13.3", + "@sentry/hub": "6.16.1", + "@sentry/types": "6.16.1", "tslib": "^1.9.3" }, "dependencies": { @@ -1153,15 +1498,15 @@ } }, "@sentry/node": { - "version": "6.13.3", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.13.3.tgz", - "integrity": "sha512-ZeZSw+TcPcf4e0j7iEqNMtoVmz+WFW/TEoGokXIwysZqSgchKdAXDHqn+CqUqFan7d76JcJmzztAUK2JruQ2Kg==", - "requires": { - "@sentry/core": "6.13.3", - "@sentry/hub": "6.13.3", - "@sentry/tracing": "6.13.3", - "@sentry/types": "6.13.3", - "@sentry/utils": "6.13.3", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.16.1.tgz", + "integrity": "sha512-SeDDoug2kUxeF1D7JGPa3h5EXxKtmA01mITBPYx5xbJ0sMksnv5I5bC1SJ8arRRzq6+W1C4IEeDBQtrVCk6ixA==", + "requires": { + "@sentry/core": "6.16.1", + "@sentry/hub": "6.16.1", + "@sentry/tracing": "6.16.1", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "cookie": "^0.4.1", "https-proxy-agent": "^5.0.0", "lru_map": "^0.3.3", @@ -1176,14 +1521,14 @@ } }, "@sentry/tracing": { - "version": "6.13.3", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.13.3.tgz", - "integrity": "sha512-yyOFIhqlprPM0g4f35Icear3eZk2mwyYcGEzljJfY2iU6pJwj1lzia5PfSwiCW7jFGMmlBJNhOAIpfhlliZi8Q==", - "requires": { - "@sentry/hub": "6.13.3", - "@sentry/minimal": "6.13.3", - "@sentry/types": "6.13.3", - "@sentry/utils": "6.13.3", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.16.1.tgz", + "integrity": "sha512-MPSbqXX59P+OEeST+U2V/8Hu/8QjpTUxTNeNyTHWIbbchdcMMjDbXTS3etCgajZR6Ro+DHElOz5cdSxH6IBGlA==", + "requires": { + "@sentry/hub": "6.16.1", + "@sentry/minimal": "6.16.1", + "@sentry/types": "6.16.1", + "@sentry/utils": "6.16.1", "tslib": "^1.9.3" }, "dependencies": { @@ -1195,16 +1540,16 @@ } }, "@sentry/types": { - "version": "6.13.3", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.13.3.tgz", - "integrity": "sha512-Vrz5CdhaTRSvCQjSyIFIaV9PodjAVFkzJkTRxyY7P77RcegMsRSsG1yzlvCtA99zG9+e6MfoJOgbOCwuZids5A==" + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.16.1.tgz", + "integrity": "sha512-Wh354g30UsJ5kYJbercektGX4ZMc9MHU++1NjeN2bTMnbofEcpUDWIiKeulZEY65IC1iU+1zRQQgtYO+/hgCUQ==" }, "@sentry/utils": { - "version": "6.13.3", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.13.3.tgz", - "integrity": "sha512-zYFuFH3MaYtBZTeJ4Yajg7pDf0pM3MWs3+9k5my9Fd+eqNcl7dYQYJbT9gyC0HXK1QI4CAMNNlHNl4YXhF91ag==", + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.16.1.tgz", + "integrity": "sha512-7ngq/i4R8JZitJo9Sl8PDnjSbDehOxgr1vsoMmerIsyRZ651C/8B+jVkMhaAPgSdyJ0AlE3O7DKKTP1FXFw9qw==", "requires": { - "@sentry/types": "6.13.3", + "@sentry/types": "6.16.1", "tslib": "^1.9.3" }, "dependencies": { @@ -1225,9 +1570,9 @@ } }, "@sinonjs/fake-timers": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", - "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" @@ -1256,6 +1601,55 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.9.tgz", + "integrity": "sha512-VkZUiYevvtPyFu5XtpYw9a8moCSzxgjs5PAFF4yXjA7eYHvzBlXe+eJdqBBNWWVzI1r7Ki0KxMYvaQuhm+6f5A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/bootstrap": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.1.6.tgz", @@ -1278,26 +1672,93 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, "@types/cookiejar": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz", "integrity": "sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw==", "dev": true }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "@types/eslint": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz", + "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.26", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.26.tgz", + "integrity": "sha512-zeu3tpouA043RHxW0gzRxwCHchMgftE8GArRsvYT0ByDMbn19olQHx5jLue0LxWY6iYtXb7rXmuVtSkhy9YZvQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", "dev": true, "requires": { - "@types/minimatch": "*", "@types/node": "*" } }, "@types/jquery": { - "version": "3.5.7", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.7.tgz", - "integrity": "sha512-Why+9t1KuqWtIqYKtbk6wgWbE1PjyXJOyGkpmTUh0RX5p4HL7nnRuBkjAO9P2r9tGQP6bLWxl77jRLew3V5xXg==", + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.10.tgz", + "integrity": "sha512-w2qT5DFikh5TXrW/aOaCvCP8g2MMAfPXo3oeHR9v7dRuAZhu38PUWEkYrL4e9VRTcgZE4yER21AHndgpq2QPTQ==", "dev": true, "requires": { "@types/sizzle": "*" @@ -1320,10 +1781,10 @@ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" }, - "@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, "@types/node": { @@ -1333,29 +1794,63 @@ "dev": true }, "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "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==", + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "dev": true }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "@types/sizzle": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", "dev": true }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/superagent": { "version": "3.8.7", "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-3.8.7.tgz", @@ -1367,60 +1862,69 @@ } }, "@types/underscore": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.3.tgz", - "integrity": "sha512-Fl1TX1dapfXyDqFg2ic9M+vlXRktcPJrc4PR7sRc7sdVrjavg/JHlbUXBt8qWWqhJrmSqg3RNAkAPRiOYw6Ahw==", + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz", + "integrity": "sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg==", "dev": true }, + "@types/ws": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", + "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.0.tgz", + "integrity": "sha512-spu1UW7QuBn0nJ6+psnfCc3iVoQAifjKORgBngKOmC8U/1tbe2YJMzYQqDGYB4JCss7L8+RM2kKLb1B1Aw9BNA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", + "@typescript-eslint/experimental-utils": "5.8.0", + "@typescript-eslint/scope-manager": "5.8.0", + "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.3.5", "tsutils": "^3.21.0" }, "dependencies": { "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.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" } }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true } } }, "@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.0.tgz", + "integrity": "sha512-KN5FvNH71bhZ8fKtL+lhW7bjm7cxs1nt+hrDZWIqb6ViCffQcWyLunGrgvISgkRojIDcXIsH+xlFfI4RCDA0xA==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.8.0", + "@typescript-eslint/types": "5.8.0", + "@typescript-eslint/typescript-estree": "5.8.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1449,21 +1953,21 @@ } }, "@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.8.0.tgz", + "integrity": "sha512-Gleacp/ZhRtJRYs5/T8KQR3pAQjQI89Dn/k+OzyCKOsLiZH2/Vh60cFBTnFsHNI6WAD+lNUo/xGZ4NeA5u0Ipw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" + "@typescript-eslint/scope-manager": "5.8.0", + "@typescript-eslint/types": "5.8.0", + "@typescript-eslint/typescript-estree": "5.8.0", + "debug": "^4.3.2" }, "dependencies": { "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.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -1478,114 +1982,76 @@ } }, "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.0.tgz", + "integrity": "sha512-x82CYJsLOjPCDuFFEbS6e7K1QEWj7u5Wk1alw8A+gnJiYwNnDJk0ib6PCegbaPMjrfBvFKa7SxE3EOnnIQz2Gg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" + "@typescript-eslint/types": "5.8.0", + "@typescript-eslint/visitor-keys": "5.8.0" } }, "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.0.tgz", + "integrity": "sha512-LdCYOqeqZWqCMOmwFnum6YfW9F3nKuxJiR84CdIRN5nfHJ7gyvGpXWqL/AaW0k3Po0+wm93ARAsOdzlZDPCcXg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.0.tgz", + "integrity": "sha512-srfeZ3URdEcUsSLbkOFqS7WoxOqn8JNil2NSLO9O+I2/Uyc85+UlfpEvQHIpj5dVts7KKOZnftoJD/Fdv0L7nQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", + "@typescript-eslint/types": "5.8.0", + "@typescript-eslint/visitor-keys": "5.8.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", "semver": "^7.3.5", "tsutils": "^3.21.0" }, "dependencies": { - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, "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.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" } }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "is-extglob": "^2.1.1" } }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true } } }, "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.0.tgz", + "integrity": "sha512-+HDIGOEMnqbxdAHegxvnOqESUH6RWFRR2b8qxP1W9CZnnYh4Usz6MBL+2KMAgPk/P0o9c1HqnYtwzVH6GTIqug==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.8.0", + "eslint-visitor-keys": "^3.0.0" }, "dependencies": { "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true } } @@ -1597,180 +2063,172 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", + "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" } }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "@webpack-cli/configtest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", + "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "dev": true + }, + "@webpack-cli/info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", + "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" + "envinfo": "^7.7.3" } }, + "@webpack-cli/serve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", + "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "dev": true + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -1808,12 +2266,24 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==" }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true + }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -1848,27 +2318,76 @@ } }, "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" + }, + "dependencies": { + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } }, "ajv-keywords": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", - "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", - "dev": true + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + }, + "dependencies": { + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + } + } }, "alphanum-sort": { "version": "1.0.2", @@ -1877,9 +2396,9 @@ "dev": true }, "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "ansi-escapes": { @@ -1891,10 +2410,10 @@ "type-fest": "^0.8.1" } }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true }, "ansi-regex": { @@ -2054,7 +2573,8 @@ "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true }, "archy": { "version": "1.0.0", @@ -2072,6 +2592,12 @@ "readable-stream": "^2.0.6" } }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2086,30 +2612,6 @@ "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", "dev": true }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -2192,24 +2694,9 @@ } }, "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, "array.prototype.flat": { @@ -2286,12 +2773,6 @@ } } }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true - }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -2305,53 +2786,6 @@ "safer-buffer": "~2.1.0" } }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, "assert-never": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", @@ -2368,17 +2802,6 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" - }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -2386,42 +2809,24 @@ "dev": true }, "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.14" } }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, "async-exit-hook": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==" }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "await-to-js": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-2.1.1.tgz", @@ -2429,9 +2834,9 @@ "dev": true }, "aws-sdk": { - "version": "2.1009.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1009.0.tgz", - "integrity": "sha512-qKbmt+vzQ7ZSnfEvA+u6d7CkV09AcAGnxZAiNgOAEn8GFFEtERy6C39VoAuWfON/B2avJDYvtRocjVmAxWpgjQ==", + "version": "2.1048.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1048.0.tgz", + "integrity": "sha512-mVwWo+Udiuc/yEZ/DgJQGqOEtfiQjgUdtshx/t6ISe3+jW3TF9hUACwADwx2Sr/fuJyyJ3QD5JYLt5Cw35wQpA==", "requires": { "buffer": "4.9.2", "events": "1.1.1", @@ -2445,14 +2850,54 @@ } }, "aws-sdk-mock": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.4.0.tgz", - "integrity": "sha512-lAks83rzszMBNJ91YYGZT/NEaXUlW1rzeBNPFY4i4ImoL3Xx26Ro4sBUb9TwTnU+8LDCMgVigSEELMPFfTUkmA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.5.0.tgz", + "integrity": "sha512-IBs5NSANbRKBlRtj9qAszoIR0EtG5+DaXTHGuV4jZ+qp7otUv3vmBOBkGy9OlmiBNWc204KRNt1V4JnJbWPoiA==", "dev": true, "requires": { "aws-sdk": "^2.928.0", "sinon": "^11.1.1", "traverse": "^0.6.6" + }, + "dependencies": { + "@sinonjs/fake-timers": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", + "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "sinon": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-11.1.2.tgz", + "integrity": "sha512-59237HChms4kg7/sXhiRcUzdSkKuydDeTiamT/jesUVHshBgL8XAmhgFo0GfK6RruMDM/iRSij1EybmMog9cJw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": "^7.1.2", + "@sinonjs/samsam": "^6.0.2", + "diff": "^5.0.0", + "nise": "^5.1.0", + "supports-color": "^7.2.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "aws-sign2": { @@ -2495,67 +2940,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -2590,14 +2974,15 @@ "dev": true }, "big-integer": { - "version": "1.6.50", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.50.tgz", - "integrity": "sha512-+O2uoQWFRo8ysZNo/rjtri2jIwjr3XfeAgRjAUADRqGG+ZITvyn8J1kvXLTaKVr3hhGXk+f23tKfdzmklVM9vQ==" + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true }, "binary-extensions": { "version": "2.2.0", @@ -2655,33 +3040,21 @@ } } }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", "requires": { - "bytes": "3.1.0", + "bytes": "3.1.1", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "~1.1.2", - "http-errors": "1.7.2", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" }, "dependencies": { "debug": { @@ -2692,10 +3065,42 @@ "ms": "2.0.0" } }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" } } }, @@ -2728,9 +3133,9 @@ "dev": true }, "bootstrap": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", - "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==" + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz", + "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==" }, "bootstrap-slider": { "version": "10.6.2", @@ -2747,144 +3152,20 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, "browserslist": { "version": "4.16.6", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", @@ -2939,10 +3220,9 @@ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "buffer-indexof": { "version": "1.1.1", @@ -2950,84 +3230,16 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, "builtin-modules": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==" }, "caching-transform": { "version": "4.0.0", @@ -3068,32 +3280,6 @@ "get-intrinsic": "^1.0.2" } }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", @@ -3107,12 +3293,12 @@ "dev": true }, "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, "camelcase": { @@ -3134,9 +3320,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001274", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001274.tgz", - "integrity": "sha512-+Nkvv0fHyhISkiMIjnyjmf5YJcQ1IQHZN6U9TLUMroWR38FNwpsC51Gb68yueafX1V6ifOisInSgP9WJFS13ew==", + "version": "1.0.30001283", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001283.tgz", + "integrity": "sha512-9RoKo841j1GQFSJz/nCXOj0sD7tHBtlowjYlrqIUS812x9/emfBLBt6IyMz1zIaYc/eRL8Cs6HPUVi2Hzq4sIg==", "dev": true }, "cardinal": { @@ -3212,9 +3398,9 @@ } }, "chart.js": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.5.1.tgz", - "integrity": "sha512-m5kzt72I1WQ9LILwQC4syla/LD/N413RYv2Dx2nnTkRS9iv/ey1xLTt0DnPc/eWV4zI+BgEgDYBIzbQhZHc/PQ==" + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.6.2.tgz", + "integrity": "sha512-Xz7f/fgtVltfQYWq0zL1Xbv7N2inpG+B54p3D5FSvpCdy3sM+oZhbqa42eNuYXltaVvajgX5UpKCU2GeeJIgxg==" }, "check-error": { "version": "1.0.2", @@ -3405,48 +3591,15 @@ "dev": true }, "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", "dev": true }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz", + "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==", "requires": { "source-map": "~0.6.0" }, @@ -3483,80 +3636,51 @@ } }, "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", "dev": true, "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true }, "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz", + "integrity": "sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "emoji-regex": "^9.2.2", + "is-fullwidth-code-point": "^4.0.0", + "strip-ansi": "^7.0.1" } }, "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^6.0.1" } } } @@ -3642,15 +3766,15 @@ } } }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" } }, "code-point-at": { @@ -3690,26 +3814,6 @@ } } }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dev": true, - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -3732,6 +3836,12 @@ "simple-swizzle": "^0.2.2" } }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, "colorette": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", @@ -3781,14 +3891,14 @@ } }, "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" }, "comment-parser": { - "version": "1.1.6-beta.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.6-beta.0.tgz", - "integrity": "sha512-q3cA8TSMyqW7wcPSYWzbO/rMahnXgzs4SLG/UIWXdEsnXTFPZkEkWAdNgPiHig2OzxgpPLOh4WwsmClDxndwHw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.0.tgz", + "integrity": "sha512-hRpmWIKgzd81vn0ydoWoyPoALEOnF4wt8yKD35Ib1D6XC2siLiYaiqfGkYrunuKdsXGwpBpHU3+9r+RVw2NZfA==", "dev": true }, "commondir": { @@ -3859,30 +3969,12 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -3898,18 +3990,19 @@ "@babel/types": "^7.6.1" } }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } } }, "content-type": { @@ -3942,57 +4035,18 @@ "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", "dev": true }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, "copy-webpack-plugin": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", - "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", "dev": true, "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" } }, "core-util-is": { @@ -4000,39 +4054,6 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "dependencies": { - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } - } - }, "create-check": { "version": "0.6.36", "resolved": "https://registry.npmjs.org/create-check/-/create-check-0.6.36.tgz", @@ -4132,50 +4153,11 @@ } } }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true }, "cross-env": { "version": "7.0.3", @@ -4245,136 +4227,121 @@ } } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", + "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", "dev": true, "requires": { - "postcss": "^7.0.1", "timsort": "^0.3.0" } }, "css-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", - "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", + "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", "dev": true, "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "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.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" + "semver": "^7.3.5" }, "dependencies": { - "ajv": { - "version": "6.12.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", - "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", + "nanoid": { + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "dev": true + }, + "postcss": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + } + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.3.1.tgz", + "integrity": "sha512-SHA7Hu/EiF0dOwdmV2+agvqYpG+ljlUa7Dvn1AVOmSH3N8KOERoaM9lGpstz9nGsoTjANGyUXdrxl/EwdMScRg==", + "dev": true, + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.0.tgz", + "integrity": "sha512-6YVG6hsH9yIb/si3Th/is8Pex7qnVHO6t7q7U6TIUnkQASGbS8tnUDBftnPynLNnuUl/r2+PTd0ekiiq7R0zJw==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "dependencies": { + "domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + } } }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "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.4", + "mdn-data": "2.0.14", "source-map": "^0.6.1" }, "dependencies": { @@ -4387,9 +4354,9 @@ } }, "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true }, "cssesc": { @@ -4399,110 +4366,57 @@ "dev": true }, "cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "version": "5.0.14", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.14.tgz", + "integrity": "sha512-qzhRkFvBhv08tbyKCIfWbxBXmkIpLl1uNblt8SpTHkgLfON5OCPX/CCnkdNmEosvo8bANQYmTTMEgcVBlisHaw==", "dev": true, "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } + "cssnano-preset-default": "^5.1.9", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" } }, "cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.9.tgz", + "integrity": "sha512-RhkEucqlQ+OxEi14K1p8gdXcMQy1mSpo7P1oC44oRls7BYIj8p+cht4IFBFV3W4iOjTP8EUB33XV1fX9KhDzyA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.2", + "postcss-convert-values": "^5.0.2", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.4", + "postcss-merge-rules": "^5.0.3", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.3", + "postcss-minify-params": "^5.0.2", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.4", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.2", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.3", + "postcss-unique-selectors": "^5.0.2" + } + }, + "cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", "dev": true }, "csso": { @@ -4512,38 +4426,8 @@ "dev": true, "requires": { "css-tree": "^1.1.2" - }, - "dependencies": { - "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" - } - }, - "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 - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -4566,12 +4450,6 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -4627,13 +4505,105 @@ "dev": true }, "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "execa": "^5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true + } } }, "default-require-extensions": { @@ -4653,6 +4623,12 @@ } } }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -4662,87 +4638,29 @@ "object-keys": "^1.0.12" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", "dev": true, "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" }, "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "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": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "glob": "^7.1.3" } } } @@ -4774,27 +4692,11 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, "detect-libc": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", @@ -4813,32 +4715,13 @@ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { - "path-type": "^3.0.0" + "path-type": "^4.0.0" } }, "dns-equal": { @@ -4881,33 +4764,20 @@ "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" }, "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", "dev": true, "requires": { "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - } } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true }, "domhandler": { @@ -4928,30 +4798,23 @@ } }, "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" } }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "requires": { - "is-obj": "^2.0.0" - }, - "dependencies": { - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - } + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, "duplexer": { @@ -4960,18 +4823,6 @@ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -5001,35 +4852,6 @@ "integrity": "sha512-4i3T0cwnHo1O4Mnp9JniEco8bZiXoqbm3PhW5hv7uu8YLg35iajYrRnNyKFaN8/8SSTskU2hYqVTeYVPceSpUA==", "dev": true }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - } - } - }, "emitter-component": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", @@ -5038,13 +4860,13 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "optional": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true }, "enabled": { "version": "2.0.0", @@ -5065,26 +4887,13 @@ } }, "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" } }, "enquirer": { @@ -5094,14 +4903,6 @@ "dev": true, "requires": { "ansi-colors": "^4.1.1" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - } } }, "entities": { @@ -5205,14 +5006,11 @@ } } }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true }, "error-ex": { "version": "1.3.2", @@ -5231,30 +5029,11 @@ } } }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true }, "es6-error": { "version": "4.1.1", @@ -5272,15 +5051,6 @@ "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.6.tgz", "integrity": "sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA==" }, - "es6-templates": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", - "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", - "requires": { - "recast": "~0.11.12", - "through": "~2.3.6" - } - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -5299,37 +5069,36 @@ "dev": true }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.5.0.tgz", + "integrity": "sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg==", "dev": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.0.5", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.2.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", + "glob-parent": "^6.0.1", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -5337,22 +5106,24 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "@babel/highlight": "^7.10.4" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-styles": { @@ -5364,6 +5135,12 @@ "color-convert": "^2.0.1" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -5401,9 +5178,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.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -5415,31 +5192,49 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "eslint-scope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } } }, + "eslint-visitor-keys": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "dev": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -5457,6 +5252,15 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -5469,6 +5273,12 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5484,6 +5294,15 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5638,6 +5457,60 @@ } } }, + "eslint-import-resolver-typescript": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.5.0.tgz", + "integrity": "sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ==", + "dev": true, + "requires": { + "debug": "^4.3.1", + "glob": "^7.1.7", + "is-glob": "^4.0.1", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } + } + }, "eslint-module-utils": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", @@ -5728,9 +5601,9 @@ "integrity": "sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg==" }, "eslint-plugin-import": { - "version": "2.25.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz", - "integrity": "sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==", + "version": "2.25.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz", + "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -5738,9 +5611,9 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.0", + "eslint-module-utils": "^2.7.1", "has": "^1.0.3", - "is-core-module": "^2.7.0", + "is-core-module": "^2.8.0", "is-glob": "^4.0.3", "minimatch": "^3.0.4", "object.values": "^1.1.5", @@ -5875,31 +5748,37 @@ } }, "eslint-plugin-jsdoc": { - "version": "35.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-35.5.1.tgz", - "integrity": "sha512-pPYPWtsykwVEue1tYEyoppBj4dgF7XicF67tLLLraY6RQYBq7qMKjUHji19+hfiTtYKKBD0YfeK8hgjPAE5viw==", + "version": "37.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.4.0.tgz", + "integrity": "sha512-XWKMMHFq7eUdC8XMzuQSskevJvlHTDSAJm/2qtEZ7+qhZTZ0YjeqWaUn7KGdrmxLNqtWwtJ67LdIPgrYUZ5EoA==", "dev": true, "requires": { - "@es-joy/jsdoccomment": "0.9.0-alpha.1", - "comment-parser": "1.1.6-beta.0", - "debug": "^4.3.2", + "@es-joy/jsdoccomment": "0.13.0", + "comment-parser": "1.3.0", + "debug": "^4.3.3", + "escape-string-regexp": "^4.0.0", "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "^1.0.4", - "lodash": "^4.17.21", + "jsdoc-type-pratt-parser": "^2.0.0", "regextras": "^0.8.0", "semver": "^7.3.5", "spdx-expression-parse": "^3.0.1" }, "dependencies": { "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.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" } }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -5937,9 +5816,9 @@ } }, "eslint-plugin-promise": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz", - "integrity": "sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", + "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", "dev": true }, "eslint-plugin-requirejs": { @@ -5960,32 +5839,55 @@ } }, "eslint-plugin-sonarjs": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.7.0.tgz", - "integrity": "sha512-vi6zGkd5Eznc32AQlleWUOMrMeDiUih9wR7nPPfrDCyVRmwYNHIBRPZGv1EgXwELwaPghCSvoAoHoR7uSbBF/Q==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.11.0.tgz", + "integrity": "sha512-ei/WuZiL0wP+qx2KrxKyZs3+eDbxiGAhFSm3GKCOOAUkg+G2ny6TSXDB2j67tvyqHefi+eoQsAgGQvz+nEtIBw==", "dev": true }, "eslint-plugin-unicorn": { - "version": "32.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-32.0.1.tgz", - "integrity": "sha512-LaZ9utnXtOJjnoDkpm+nQsONUUmyRR0WD6PGROSdQRRW3LRmgK/ZP8wxjW+Ai+2uolKTtuJzLx2mvbIeIoLqpg==", + "version": "39.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-39.0.0.tgz", + "integrity": "sha512-fd5RK2FtYjGcIx3wra7csIE/wkkmBo22T1gZtRTsLr1Mb+KsFKJ+JOdSqhHXQUrI/JTs/Mon64cEYzTgSCbltw==", "dev": true, "requires": { - "ci-info": "^3.1.1", + "@babel/helper-validator-identifier": "^7.14.9", + "ci-info": "^3.2.0", "clean-regexp": "^1.0.0", "eslint-template-visitor": "^2.3.2", - "eslint-utils": "^2.1.0", - "import-modules": "^2.1.0", + "eslint-utils": "^3.0.0", + "esquery": "^1.4.0", + "indent-string": "4", "is-builtin-module": "^3.1.0", "lodash": "^4.17.21", "pluralize": "^8.0.0", "read-pkg-up": "^7.0.1", "regexp-tree": "^0.1.23", - "reserved-words": "^0.1.2", "safe-regex": "^2.1.1", - "semver": "^7.3.5" + "semver": "^7.3.5", + "strip-indent": "^3.0.0" }, "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, "safe-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", @@ -6026,21 +5928,30 @@ "multimap": "^1.1.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, "@babel/core": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz", - "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.3", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.14.2", - "@babel/helpers": "^7.14.0", - "@babel/parser": "^7.14.3", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2", + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", + "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helpers": "^7.16.5", + "@babel/parser": "^7.16.5", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -6049,107 +5960,157 @@ "source-map": "^0.5.0" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "@babel/generator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", + "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" } }, - "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, - "@babel/helper-module-transforms": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz", - "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==", + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2" + "@babel/types": "^7.16.0" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, - "@babel/helper-replace-supers": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz", - "integrity": "sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA==", + "@babel/helper-module-transforms": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", + "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2" + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helpers": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", - "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", + "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + } + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.3.tgz", - "integrity": "sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ==", + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.5.tgz", + "integrity": "sha512-+Ce7T5iPNWzfu9C1aB5tN3Lyafs5xb3Ic7vBWyZL2KXT3QSdD1dD3CvgOzPmQKoNNRt6uauc0XwNJTQtXC2/Mw==", "dev": true }, + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/traverse": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", + "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.5", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, "@babel/types": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz", - "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.0", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -6211,29 +6172,30 @@ "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.2.0.tgz", + "integrity": "sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==", "dev": true, "requires": { - "acorn": "^7.4.0", + "acorn": "^8.6.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "eslint-visitor-keys": "^3.1.0" }, "dependencies": { + "acorn": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "dev": true + }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true } } }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, "esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", @@ -6244,9 +6206,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -6310,25 +6272,6 @@ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" }, - "eventsource": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", - "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -6344,82 +6287,23 @@ "strip-eof": "^1.0.0" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, "expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "optional": true }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", + "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.19.1", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.4.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -6433,24 +6317,19 @@ "on-finished": "~2.3.0", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", "statuses": "~1.5.0", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "dependencies": { - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -6463,6 +6342,16 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" } } }, @@ -6471,107 +6360,15 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { "version": "3.2.7", @@ -6665,10 +6462,11 @@ "punycode": "^1.3.2" } }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true }, "fastq": { "version": "1.13.0", @@ -6693,12 +6491,6 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -6709,30 +6501,80 @@ } }, "file-loader": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-5.1.0.tgz", - "integrity": "sha512-u/VkLGskw3Ue59nyOwUwXI/6nuBCo7KBkniB/l7ICwr/7cPNGsL1WCXUp3GB0qgOOKU1TiP49bv4DZF/LJqprg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, "requires": { - "loader-utils": "^1.4.0", - "schema-utils": "^2.5.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } } } @@ -6755,26 +6597,12 @@ "optional": true }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "to-regex-range": "^5.0.1" } }, "finalhandler": { @@ -6806,36 +6634,22 @@ } } }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "dependencies": { + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } } }, "flat": { @@ -6866,21 +6680,11 @@ } }, "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", @@ -6894,12 +6698,6 @@ "debug": "^3.0.0" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, "foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -6966,18 +6764,9 @@ "dev": true }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, "fresh": { "version": "0.5.2", @@ -6990,16 +6779,6 @@ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, "fromentries": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.1.tgz", @@ -7037,26 +6816,11 @@ } } }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true }, "fs.realpath": { "version": "1.0.0", @@ -7171,12 +6935,6 @@ } } }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -7214,12 +6972,6 @@ "get-intrinsic": "^1.1.1" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -7248,86 +7000,30 @@ } }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "^4.0.3" }, "dependencies": { "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "requires": { - "global-prefix": "^3.0.0" - }, - "dependencies": { - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { - "isexe": "^2.0.0" + "is-extglob": "^2.1.1" } } } }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "globals": { "version": "11.12.0", @@ -7336,25 +7032,17 @@ "dev": true }, "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" } }, "glossy": { @@ -7412,6 +7100,19 @@ "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + } } }, "has": { @@ -7463,84 +7164,6 @@ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "optional": true }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "hasha": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.1.tgz", @@ -7564,32 +7187,6 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -7608,22 +7205,10 @@ "wbuf": "^1.1.0" } }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", "dev": true }, "html-escaper": { @@ -7633,52 +7218,26 @@ "dev": true }, "html-loader": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.5.tgz", - "integrity": "sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-3.0.1.tgz", + "integrity": "sha512-90Sxg9FhTkQEzmmHT2KOAQniTZgC72aifcfR0fZsuo1PJz0K4EXiTwxejTUombF8XShLj5RaZKYsUJhxR6G2dA==", "requires": { - "es6-templates": "^0.2.3", - "fastparse": "^1.1.1", - "html-minifier": "^3.5.8", - "loader-utils": "^1.1.0", - "object-assign": "^4.1.1" + "html-minifier-terser": "^6.0.2", + "parse5": "^6.0.1" } }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - } - } - } + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" } }, "htmlparser2": { @@ -7730,21 +7289,28 @@ "dev": true }, "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "requires": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "toidentifier": "1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } } }, "http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", + "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", "dev": true }, "http-proxy": { @@ -7786,15 +7352,16 @@ } }, "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", + "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==", "dev": true, "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" } }, "http-signature": { @@ -7807,12 +7374,6 @@ "sshpk": "^1.7.0" } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, "https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -7844,9 +7405,9 @@ "dev": true }, "husky": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.2.tgz", - "integrity": "sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==" + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", + "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==" }, "husky-init": { "version": "7.0.0", @@ -7865,29 +7426,20 @@ } }, "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true }, "ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true }, "ignore-walk": { @@ -7904,6 +7456,12 @@ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, + "immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -7915,21 +7473,15 @@ } }, "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", "dev": true, "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" } }, - "import-modules": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-2.1.0.tgz", - "integrity": "sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==", - "dev": true - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -7948,12 +7500,6 @@ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -7969,19 +7515,10 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "optional": true }, "internal-slot": { "version": "1.0.3", @@ -8013,9 +7550,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "irregular-plurals": { "version": "2.0.0", @@ -8023,28 +7560,14 @@ "integrity": "sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==", "dev": true }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-arrayish": { @@ -8080,12 +7603,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "is-builtin-module": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", @@ -8095,26 +7612,6 @@ "builtin-modules": "^3.0.0" } }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, "is-core-module": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", @@ -8123,44 +7620,16 @@ "has": "^1.0.3" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-expression": { @@ -8172,12 +7641,6 @@ "object-assign": "^4.1.1" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -8215,13 +7678,10 @@ "dev": true }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-number-object": { "version": "1.0.6", @@ -8232,40 +7692,22 @@ "has-tostringtag": "^1.0.0" } }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true }, "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true }, "is-plain-object": { @@ -8290,18 +7732,6 @@ "has": "^1.0.1" } }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, "is-shared-array-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", @@ -8338,12 +7768,12 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2" } }, "is-windows": { @@ -8353,10 +7783,13 @@ "dev": true }, "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } }, "isarray": { "version": "1.0.0", @@ -8596,13 +8029,14 @@ "dev": true }, "jest-worker": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", - "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz", + "integrity": "sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "supports-color": "^8.0.0" }, "dependencies": { "has-flag": { @@ -8612,9 +8046,9 @@ "dev": true }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -8633,9 +8067,9 @@ "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" }, "js-cookie": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", - "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==" }, "js-stringify": { "version": "1.0.2", @@ -8672,9 +8106,9 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsdoc-type-pratt-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.1.1.tgz", - "integrity": "sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.0.0.tgz", + "integrity": "sha512-sUuj2j48wxrEpbFjDp1sAesAxPiLT+z0SWVmMafyIINs6Lj5gIPKh3VrkBZu4E/Dv+wHpOot0m6H8zlHQjwqeQ==", "dev": true }, "jsesc": { @@ -8696,9 +8130,9 @@ "dev": true }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "json-schema-traverse": { "version": "0.4.1", @@ -8716,27 +8150,13 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "minimist": "^1.2.0" } }, "jsonwebtoken": { @@ -8766,13 +8186,13 @@ } }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, @@ -8828,25 +8248,16 @@ "resolved": "https://registry.npmjs.org/keycharm/-/keycharm-0.2.0.tgz", "integrity": "sha1-+m6i5DuQpoAohD0n8gddNajD5vk=" }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "dev": true }, "kuler": { @@ -8854,16 +8265,6 @@ "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, - "last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "dev": true, - "requires": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -8882,6 +8283,12 @@ "immediate": "~3.0.5" } }, + "lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -8889,46 +8296,36 @@ "dev": true }, "lint-staged": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.3.tgz", - "integrity": "sha512-Tfmhk8O2XFMD25EswHPv+OYhUjsijy5D7liTdxeXvhG2rsadmOLFtyj8lmlfoFFXY8oXWAIOKpoI+lJe1DB1mw==", + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.3.tgz", + "integrity": "sha512-ajapdkaFxx+MVhvq6xQRg9zCnCLz49iQLJZP7+w8XaA3U4B35Z9xJJGq9vxmWo73QTvJLG+N2NxhjWiSexbAWQ==", "dev": true, "requires": { - "cli-truncate": "2.1.0", - "colorette": "^1.4.0", - "commander": "^8.2.0", - "cosmiconfig": "^7.0.1", - "debug": "^4.3.2", - "enquirer": "^2.3.6", + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^8.3.0", + "debug": "^4.3.3", "execa": "^5.1.1", - "listr2": "^3.12.2", + "lilconfig": "2.0.4", + "listr2": "^3.13.5", "micromatch": "^4.0.4", "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "3.3.0", - "supports-color": "8.1.1" + "object-inspect": "^1.11.1", + "string-argv": "^0.3.1", + "supports-color": "^9.2.1", + "yaml": "^1.10.2" }, "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, "commander": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz", - "integrity": "sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, "cross-spawn": { @@ -8943,9 +8340,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.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -8968,55 +8365,24 @@ "strip-final-newline": "^2.0.0" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -9032,6 +8398,12 @@ "path-key": "^3.0.0" } }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, "onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", @@ -9063,42 +8435,31 @@ "dev": true }, "signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", "dev": true }, "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", + "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", + "dev": true } } }, "listr2": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.12.2.tgz", - "integrity": "sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A==", + "version": "3.13.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.5.tgz", + "integrity": "sha512-3n8heFQDSk+NcwBn3CgxEibZGaRzx+pC64n3YjpMD1qguV4nWus3Al+Oo3KooqFKTQEJ1v7MmnbnyyNspgx3NA==", "dev": true, "requires": { "cli-truncate": "^2.1.0", - "colorette": "^1.4.0", + "colorette": "^2.0.16", "log-update": "^4.0.0", "p-map": "^4.0.0", - "rxjs": "^6.6.7", + "rfdc": "^1.3.0", + "rxjs": "^7.4.0", "through": "^2.3.8", "wrap-ansi": "^7.0.0" }, @@ -9112,6 +8473,16 @@ "color-convert": "^2.0.1" } }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -9128,15 +8499,9 @@ "dev": true }, "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, "is-fullwidth-code-point": { @@ -9145,74 +8510,54 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } } } }, "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "dependencies": { + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { @@ -9309,12 +8654,6 @@ "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", "dev": true }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -9366,38 +8705,21 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } }, "wrap-ansi": { @@ -9425,21 +8747,18 @@ "triple-beam": "^1.3.0" } }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "dev": true - }, "long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } }, "lru-cache": { "version": "5.1.1", @@ -9465,28 +8784,10 @@ "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==", "dev": true }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "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 }, "map-stream": { @@ -9495,36 +8796,16 @@ "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, "marked": { "version": "0.3.12", "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.12.tgz", "integrity": "sha512-k4NaW+vS7ytQn6MgJn3fYpQt20/mOgYM5Ft9BYMfQJDz2QT6yEeS9XJ8k2Nw8JTeWK/znPPW2n3UJGzyYEiMoA==", "dev": true }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "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 }, "media-typer": { @@ -9532,14 +8813,13 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "memfs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.0.tgz", + "integrity": "sha512-o/RfP0J1d03YwsAxyHxAYs2kyJp55AFkMazlFAZFR2I2IXkxiUTXRabJ6RmNNCQ83LAD2jy52Khj0m3OffpNdA==", "dev": true, "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "fs-monkey": "1.0.3" } }, "merge-descriptors": { @@ -9565,50 +8845,13 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } + "braces": "^3.0.1", + "picomatch": "^2.2.3" } }, "mime": { @@ -9642,27 +8885,61 @@ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "optional": true }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, "mini-css-extract-plugin": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", - "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.5.tgz", + "integrity": "sha512-oEIhRucyn1JbT/1tU2BhnwO6ft1jjH1iCX9Gc59WFMg0n5773rQU0oyQ0zzeYFFuBfONaRbQJyGoPtuNseMxjA==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" + "schema-utils": "^4.0.0" }, "dependencies": { - "schema-utils": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } } } @@ -9673,12 +8950,6 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -9692,101 +8963,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -10062,9 +9238,9 @@ } }, "mock-fs": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-5.1.1.tgz", - "integrity": "sha512-p/8oZ3qvfKGPw+4wdVCyjDxa6wn2tP0TCf3WXC1UyUBAevezPn1TtOoxtMYVbZu/S/iExg+Ghed1busItj2CEw==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-5.1.2.tgz", + "integrity": "sha512-YkjQkdLulFrz0vD4BfNQdQRVmgycXTV7ykuHMlyv+C8WCHazpkiQRDthwa02kSyo8wKnY9wRptHfQLgmf0eR+A==", "dev": true }, "moment": { @@ -10073,45 +9249,17 @@ "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "monaco-editor": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.27.0.tgz", - "integrity": "sha512-UhwP78Wb8w0ZSYoKXQNTV/0CHObp6NS3nCt51QfKE6sKyBo5PBsvuDOHoI2ooBakc6uIwByRLHVeT7+yXQe2fQ==" + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.31.1.tgz", + "integrity": "sha512-FYPwxGZAeP6mRRyrr5XTGHD9gRXVjy7GUzF4IPChnyt3fS5WrNxIkS8DNujWf6EQy0Zlzpxw8oTVE+mWI2/D1Q==" }, "monaco-editor-webpack-plugin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-4.2.0.tgz", - "integrity": "sha512-/P3sFiEgBl+Y50he4mbknMhbLJVop5gBUZiPS86SuHUDOOnQiQ5rL1jU5lwt1XKAwMEkhwZbUwqaHxTPkb1Utw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-7.0.1.tgz", + "integrity": "sha512-M8qIqizltrPlIbrb73cZdTWfU9sIsUVFvAZkL3KGjAHmVWEJ0hZKa/uad14JuOckc0GwnCaoGHvMoYtJjVyCzw==", "dev": true, "requires": { - "loader-utils": "^2.0.0" - }, - "dependencies": { - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } + "loader-utils": "^2.0.2" } }, "monaco-vim": { @@ -10151,26 +9299,6 @@ } } }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "mri": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", - "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", - "dev": true - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -10259,31 +9387,10 @@ "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==", "dev": true }, - "multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", - "dev": true, - "requires": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - } - } - }, "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", "optional": true }, "nanoid": { @@ -10292,33 +9399,6 @@ "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", "dev": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, "napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -10367,6 +9447,15 @@ "path-to-regexp": "^1.7.0" }, "dependencies": { + "@sinonjs/fake-timers": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", + "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -10385,17 +9474,18 @@ } }, "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "requires": { - "lower-case": "^1.1.1" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, "nock": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.1.3.tgz", - "integrity": "sha512-YKj0rKQWMGiiIO+Y65Ut8OEgYM3PplLU2+GAhnPmqZdBd6z5IskgdBqWmjzA6lH3RF0S2a3wiAlrMOF5Iv2Jeg==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.1.tgz", + "integrity": "sha512-CoHAabbqq/xZEknubuyQMjq6Lfi5b7RtK6SoNK6m40lebGp3yiMagWtIoYaw2s9sISD7wPuCfwFpivVHX/35RA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -10405,9 +9495,9 @@ }, "dependencies": { "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.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -10455,55 +9545,6 @@ "resolved": "https://registry.npmjs.org/node-graceful/-/node-graceful-3.1.0.tgz", "integrity": "sha512-fGH0ijsO5ZDDY405mP6bE0eNrHQhpjDrihhaviqprP1+aJEWy7bZtzXESp3ZAo6hBTtxOFe7RfSkcqFX001gJQ==" }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - } - } - }, "node-preload": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", @@ -10568,16 +9609,10 @@ "dev": true }, "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true }, "npm-run-path": { "version": "2.0.2", @@ -10601,12 +9636,12 @@ } }, "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dev": true, "requires": { - "boolbase": "~1.0.0" + "boolbase": "^1.0.0" } }, "number-is-nan": { @@ -10874,28 +9909,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", @@ -10918,15 +9931,6 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", @@ -10947,171 +9951,6 @@ } } }, - "object.entries": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", - "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.7.tgz", - "integrity": "sha512-uFG1gyVX91tZIiDWNmPsL8XNpiCk/6tkB7MZphoSJflS4w+KgWyQ2gjCVDnsPxFAo9WjRXG3eqONNYdfbJjAtw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-string": "^1.0.7", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - } - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.7.tgz", - "integrity": "sha512-uFG1gyVX91tZIiDWNmPsL8XNpiCk/6tkB7MZphoSJflS4w+KgWyQ2gjCVDnsPxFAo9WjRXG3eqONNYdfbJjAtw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-string": "^1.0.7", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - } - } - }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -11156,23 +9995,15 @@ "mimic-fn": "^2.1.0" } }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optimize-css-assets-webpack-plugin": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz", - "integrity": "sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==", + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "requires": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" } }, "optionator": { @@ -11189,21 +10020,6 @@ "word-wrap": "^1.2.3" } }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -11250,19 +10066,22 @@ } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } }, "p-queue": { "version": "6.6.2", @@ -11281,12 +10100,13 @@ } }, "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", "dev": true, "requires": { - "retry": "^0.12.0" + "@types/retry": "^0.12.0", + "retry": "^0.13.1" } }, "p-timeout": { @@ -11320,23 +10140,13 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "requires": { - "no-case": "^2.2.0" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, "parent-module": { @@ -11348,40 +10158,10 @@ "callsites": "^3.0.0" } }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, "parse5-htmlparser2-tree-adapter": { "version": "6.0.1", @@ -11397,22 +10177,19 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } }, "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true }, "path-exists": { @@ -11426,12 +10203,6 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -11449,21 +10220,10 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "pathval": { "version": "1.1.1", @@ -11480,67 +10240,30 @@ "through": "~2.3" } }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "semver-compare": "^1.0.0" + "find-up": "^4.0.0" } }, "plur": { @@ -11574,517 +10297,330 @@ "mkdirp": "^0.5.5" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "nanoid": { + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", "dev": true, "requires": { - "postcss": "^7.0.27", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.0.2" } }, "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.2.tgz", + "integrity": "sha512-tSEe3NpqWARUTidDlF0LntPkdlhXqfDFuA1yslqpvvGAfpZ7oBaw+/QXd935NKm2U9p4PED0HDZlzmMk7fVC6g==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" }, "dependencies": { "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true } } }, "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz", + "integrity": "sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==", "dev": true, "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "postcss-value-parser": "^4.1.0" } }, "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true }, "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true }, "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true }, "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true }, "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.4.tgz", + "integrity": "sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw==", "dev": true, "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" } }, "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.3.tgz", + "integrity": "sha512-cEKTMEbWazVa5NXd8deLdCnXl+6cYG7m2am+1HzqH0EnTdy8fRysatkaXb2dEnR+fdaDxTvuZ5zoBdv6efF6hg==", "dev": true, "requires": { - "browserslist": "^4.0.0", + "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5" }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz", + "integrity": "sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA==", "dev": true, "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" } } } }, "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", "dev": true, "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "postcss-value-parser": "^4.1.0" } }, "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz", + "integrity": "sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q==", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "colord": "^2.9.1", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.2.tgz", + "integrity": "sha512-qJAPuBzxO1yhLad7h2Dzk/F7n1vPyfHfCCh5grjGfjhi1ttCnq4ZXGIW77GSrEbh9Hus9Lc/e/+tB4vh3/GpDg==", "dev": true, "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.6", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", "dev": true, "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz", + "integrity": "sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA==", "dev": true, "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" } } } }, "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true }, "postcss-modules-local-by-default": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", - "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", + "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.1.0" } }, "postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" + "postcss-selector-parser": "^6.0.4" } }, "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" + "icss-utils": "^5.0.0" } }, "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true }, "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", "dev": true, "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" } }, "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.4.tgz", + "integrity": "sha512-cNj3RzK2pgQQyNp7dzq0dqpUpQ/wYtdDZM3DepPmFjCmYIfceuD9VIAcOdvrNetjIU65g1B4uwdP/Krf6AFdXg==", "dev": true, "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" }, "dependencies": { - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true } } }, "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", "dev": true, "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "postcss-value-parser": "^4.1.0" } }, "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.2.tgz", + "integrity": "sha512-v/kbAAQ+S1V5v9TJvbGkV98V2ERPdU6XvMcKMjqAlYiJ2NtsHGlKYLPjWWcXlaTKNxooId7BGxeraK8qXvzKtw==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" } }, "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, "postcss-selector-parser": { @@ -12100,33 +10636,35 @@ } }, "postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz", + "integrity": "sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==", "dev": true, "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "postcss-value-parser": "^4.1.0", + "svgo": "^2.7.0" } }, "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.2.tgz", + "integrity": "sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA==", "dev": true, "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz", + "integrity": "sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + } } }, "postcss-value-parser": { @@ -12177,215 +10715,10 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, "prettier": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", - "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", - "dev": true - }, - "pretty-quick": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.1.tgz", - "integrity": "sha512-ZYLGiMoV2jcaas3vTJrLvKAYsxDoXQBUn8OSTxkl67Fyov9lyXivJTl0+2WVh+y6EovGcw7Lm5ThYpH+Sh3XxQ==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "execa": "^4.0.0", - "find-up": "^4.1.0", - "ignore": "^5.1.4", - "mri": "^1.1.5", - "multimatch": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", "dev": true }, "process-nextick-args": { @@ -12414,9 +10747,9 @@ "dev": true }, "prom-client": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-12.0.0.tgz", - "integrity": "sha512-JbzzHnw0VDwCvoqf8y1WDtq4wSBAbthMB1pcVI/0lzdqHGJI3KBJDXle70XK+c7Iv93Gihqo0a5LlOn+g8+DrQ==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.0.1.tgz", + "integrity": "sha512-HxTArb6fkOntQHoRGvv4qd/BkorjliiuO2uSWC2KC17MUTKYttWdDoXX/vxOhQdkoECEM9BBH0pj2l8G8kev6w==", "requires": { "tdigest": "^0.1.1" } @@ -12429,12 +10762,6 @@ "asap": "~2.0.3" } }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, "propagate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", @@ -12470,54 +10797,26 @@ }, "dependencies": { "@types/node": { - "version": "16.11.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.5.tgz", - "integrity": "sha512-NyUV2DGcqYIx9op++MG2+Z4Nhw1tPhi0Wfs81TgncuX1aJC4zf2fgCJlJhl4BW9bCSS04e34VkqmOS96w0XQdg==" + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.2.tgz", + "integrity": "sha512-JepeIUPFDARgIs0zD/SKPgFsJEAF0X5/qO80llx59gOxFTboS9Amv3S+QfB7lqBId5sFXJ99BN0J6zFRvL9dDA==" } } }, "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, "psl": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==" }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, "pug": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", @@ -12650,72 +10949,22 @@ "once": "^1.3.1" } }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -12736,30 +10985,49 @@ "safe-buffer": "^5.1.0" } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.1", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" + }, + "dependencies": { + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + } } }, "rc": { @@ -12884,17 +11152,6 @@ "picomatch": "^2.2.1" } }, - "recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", - "requires": { - "ast-types": "0.9.6", - "esprima": "~3.1.0", - "private": "~0.1.5", - "source-map": "~0.5.0" - } - }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -12921,20 +11178,10 @@ } } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, "regexp-tree": { - "version": "0.1.23", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.23.tgz", - "integrity": "sha512-+7HWfb4Bvu8Rs2eQTUIpX9I/PlQkYOuTNbRpKLJlQpSgwSkzFYh+pUj0gtvglnOZLKB6YgnIgRuJ2/IlpL48qw==", + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", + "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", "dev": true }, "regexp.prototype.flags": { @@ -12973,18 +11220,6 @@ "es6-error": "^4.0.1" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -13048,12 +11283,6 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, - "reserved-words": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", - "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", - "dev": true - }, "resolve": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", @@ -13064,57 +11293,28 @@ } }, "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "^5.0.0" }, "dependencies": { "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "dependencies": { - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - } - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, "response-time": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.2.tgz", @@ -13134,16 +11334,10 @@ "signal-exit": "^3.0.2" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true }, "reusify": { @@ -13152,16 +11346,10 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, "rimraf": { @@ -13172,16 +11360,6 @@ "glob": "^7.1.3" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -13191,28 +11369,19 @@ "queue-microtask": "^1.2.2" } }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", + "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", "dev": true, "requires": { - "tslib": "^1.9.0" + "tslib": "~2.1.0" }, "dependencies": { "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true } } @@ -13222,103 +11391,30 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.43.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.2.tgz", - "integrity": "sha512-DncYhjl3wBaPMMJR0kIUaH3sF536rVrOcqqVGmTZHQRRzj7LQlyGV7Mb8aCKFyILMr5VsPHwRYtyKpnKYlmQSQ==", + "version": "1.45.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.45.1.tgz", + "integrity": "sha512-pwPRiq29UR0o4X3fiQyCtrESldXvUQAAE0QmcJTpsI4kuHHcLzZ54M1oNBVIXybQv8QF2zfkpFcTxp8ta97dUA==", "dev": true, "requires": { - "chokidar": ">=3.0.0 <4.0.0" + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" } }, "sass-loader": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.2.0.tgz", - "integrity": "sha512-kUceLzC1gIHz0zNJPpqRsJyisWatGYNFRmv2CKZK2/ngMJgLqxTbXwe/hJ85luyvZkgqU3VlJ33UVF2T/0g6mw==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.4.0.tgz", + "integrity": "sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==", "dev": true, "requires": { "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", - "semver": "^7.3.2" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "neo-async": "^2.6.2" } }, "sax": { @@ -13327,19 +11423,26 @@ "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, "ajv": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", - "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -13349,15 +11452,15 @@ } }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true } } @@ -13405,16 +11508,10 @@ } } }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -13423,9 +11520,9 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "1.8.1", "mime": "1.6.0", - "ms": "2.1.1", + "ms": "2.1.3", "on-finished": "~2.3.0", "range-parser": "~1.2.1", "statuses": "~1.5.0" @@ -13450,13 +11547,18 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -13532,14 +11634,14 @@ } }, "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.17.2" } }, "set-blocking": { @@ -13552,48 +11654,18 @@ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "kind-of": "^6.0.2" } }, "shebang-command": { @@ -13612,9 +11684,9 @@ "dev": true }, "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" }, "shelljs": { "version": "0.8.4", @@ -13669,13 +11741,13 @@ } }, "sinon": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-11.1.2.tgz", - "integrity": "sha512-59237HChms4kg7/sXhiRcUzdSkKuydDeTiamT/jesUVHshBgL8XAmhgFo0GfK6RruMDM/iRSij1EybmMog9cJw==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-12.0.1.tgz", + "integrity": "sha512-iGu29Xhym33ydkAT+aNQFBINakjq69kKO6ByPvTsm3yyIACfyQttRTP03aBP/I8GfhFmLzrnKwNNkr0ORb1udg==", "dev": true, "requires": { "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": "^7.1.2", + "@sinonjs/fake-timers": "^8.1.0", "@sinonjs/samsam": "^6.0.2", "diff": "^5.0.0", "nise": "^5.1.0", @@ -13700,171 +11772,35 @@ } }, "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" }, "dependencies": { "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", "dev": true }, "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true } } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - } - }, "snappy": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/snappy/-/snappy-6.3.5.tgz", @@ -13877,42 +11813,20 @@ } }, "sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "requires": { "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", + "uuid": "^8.3.2", "websocket-driver": "^0.7.4" }, "dependencies": { "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, - "sockjs-client": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", - "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", - "dev": true, - "requires": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.5.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true } } @@ -13926,15 +11840,6 @@ "lodash": "^4.17.21" } }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -13944,58 +11849,26 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", + "dev": true }, "source-map-loader": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz", - "integrity": "sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.0.tgz", + "integrity": "sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==", "dev": true, "requires": { "abab": "^2.0.5", "iconv-lite": "^0.6.2", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "source-map": "^0.6.1", - "whatwg-mimetype": "^2.3.0" + "source-map-js": "^0.6.2" }, "dependencies": { - "@types/json-schema": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", - "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, "iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -14005,63 +11878,18 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", "dev": true } } }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -14070,17 +11898,10 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, "spawn-wrap": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", @@ -14148,9 +11969,9 @@ } }, "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, "spdy": { @@ -14167,9 +11988,9 @@ }, "dependencies": { "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -14198,9 +12019,9 @@ }, "dependencies": { "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -14234,15 +12055,6 @@ "through": "2" } }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -14264,15 +12076,6 @@ "tweetnacl": "~0.14.0" } }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -14284,42 +12087,11 @@ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, "stream-combiner": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", @@ -14330,16 +12102,6 @@ "through": "~2.3.4" } }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, "stream-events": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", @@ -14349,31 +12111,6 @@ "stubs": "^3.0.0" } }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, "string-argv": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", @@ -14384,7 +12121,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "optional": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -14394,14 +12130,12 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "optional": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "optional": true, "requires": { "ansi-regex": "^5.0.1" } @@ -14436,17 +12170,6 @@ "safe-buffer": "~5.1.0" } }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - } - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -14474,6 +12197,15 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -14487,27 +12219,13 @@ "dev": true }, "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" } }, "superagent": { @@ -14571,30 +12289,24 @@ } }, "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "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": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" + "@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": { - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "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 } } @@ -14604,86 +12316,6 @@ "resolved": "https://registry.npmjs.org/systemd-socket/-/systemd-socket-0.0.0.tgz", "integrity": "sha1-o2uChDPPgxoIeOKe4zoNHY/HVls=" }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - } - } - }, "table-header": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/table-header/-/table-header-0.2.2.tgz", @@ -14694,9 +12326,9 @@ } }, "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true }, "tar-fs": { @@ -14798,239 +12430,45 @@ } }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" }, "dependencies": { "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" } } }, "terser-webpack-plugin": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", - "integrity": "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz", + "integrity": "sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ==", "dev": true, "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.3.1", - "jest-worker": "^25.4.0", - "p-limit": "^2.3.0", - "schema-utils": "^2.6.6", - "serialize-javascript": "^4.0.0", + "jest-worker": "^27.4.1", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", "source-map": "^0.6.1", - "terser": "^4.6.12", - "webpack-sources": "^1.4.3" + "terser": "^5.7.2" }, "dependencies": { - "ajv": { - "version": "6.12.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", - "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "dev": true, - "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "ssri": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.1.tgz", - "integrity": "sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - } } } }, @@ -15075,7 +12513,8 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "through2": { "version": "2.0.5", @@ -15093,15 +12532,6 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, "timsort": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", @@ -15113,12 +12543,6 @@ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, "to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", @@ -15129,41 +12553,19 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "token-stream": { "version": "1.0.0", @@ -15171,11 +12573,11 @@ "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=" }, "tom-select": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/tom-select/-/tom-select-1.7.8.tgz", - "integrity": "sha512-b9K+RYhbmcGiaqKssKf4N/fkn/Hle330OwOaAO786TtUNfGImR6J/IAuJP3lNOAl4rZyC4Q0uLuxE+1367rQtg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tom-select/-/tom-select-2.0.0.tgz", + "integrity": "sha512-ArECm8bNnv8GMTpvSQawesKX6IDv32cylqivjbghwCddYwfngmz+nOtEhQZkEye7BY415eutqhb4XYim2EL8Hg==", "requires": { - "@orchidjs/sifter": "^0.8.1" + "@orchidjs/sifter": "^0.9.0" } }, "tough-cookie": { @@ -15211,14 +12613,13 @@ "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, "ts-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.3.0.tgz", - "integrity": "sha512-MgGly4I6cStsJy27ViE32UoqxPTN9Xly4anxxVyaIWR+9BGxboV4EyJBGfR3RePV7Ksjj3rHmPZJeIt+7o4Vag==", + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", + "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", "dev": true, "requires": { "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", + "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", "semver": "^7.3.4" }, @@ -15232,19 +12633,10 @@ "color-convert": "^2.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -15266,63 +12658,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15331,22 +12672,47 @@ "requires": { "has-flag": "^4.0.0" } + } + } + }, + "ts-node": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", + "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true } } }, "tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", + "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", "dev": true, "requires": { "@types/json5": "^0.0.29", @@ -15377,12 +12743,6 @@ } } }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -15426,12 +12786,6 @@ "mime-types": "~2.1.24" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -15442,9 +12796,9 @@ } }, "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", + "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", "dev": true }, "unbox-primitive": { @@ -15468,21 +12822,9 @@ } }, "underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", + "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==" }, "uniq": { "version": "1.0.1", @@ -15490,104 +12832,17 @@ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, "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": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -15603,12 +12858,6 @@ } } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, "url": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", @@ -15624,34 +12873,59 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" }, "url-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-3.0.0.tgz", - "integrity": "sha512-a84JJbIA5xTFTWyjjcPdnsu+41o/SNE8SpXMdUvXs6Q+LuhCD9E2+0VCiuDWqgo3GGXVlFHzArDmBpj9PgWn4A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", "dev": true, "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" }, "dependencies": { - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "requires": { + "mime-db": "1.51.0" + } } } }, - "url-parse": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", - "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "urlgrey": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", @@ -15661,12 +12935,6 @@ "fast-url-parser": "^1.1.3" } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, "user-home": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", @@ -15676,93 +12944,11 @@ "os-homedir": "^1.0.0" } }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.7.tgz", - "integrity": "sha512-uFG1gyVX91tZIiDWNmPsL8XNpiCk/6tkB7MZphoSJflS4w+KgWyQ2gjCVDnsPxFAo9WjRXG3eqONNYdfbJjAtw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-string": "^1.0.7", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - } - } - }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -15774,9 +12960,9 @@ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { @@ -15800,12 +12986,6 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -15828,123 +13008,19 @@ "propagating-hammerjs": "^1.4.6" } }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, "void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=" }, "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dev": true, - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - } - }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", "dev": true, - "optional": true, "requires": { - "chokidar": "^2.1.8" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - } + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" } }, "wbuf": { @@ -15973,40 +13049,47 @@ } }, "webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", + "version": "5.65.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", + "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", + "enhanced-resolve": "^5.8.3", + "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.4", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" + "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", + "webpack-sources": "^3.2.2" }, "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", "dev": true }, "ajv": { @@ -16028,37 +13111,20 @@ "dev": true }, "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" } }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -16066,495 +13132,400 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "mime-db": "1.51.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "webpack-sources": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", + "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "dev": true } } }, "webpack-cli": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", - "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.1", - "findup-sync": "^3.0.0", - "global-modules": "^2.0.0", - "import-local": "^2.0.0", - "interpret": "^1.4.0", - "loader-utils": "^1.4.0", - "supports-color": "^6.1.0", - "v8-compile-cache": "^2.1.1", - "yargs": "^13.3.2" + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.0", + "@webpack-cli/info": "^1.4.0", + "@webpack-cli/serve": "^1.6.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "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 + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "path-key": "^3.0.0" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "mimic-fn": "^2.1.0" } }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "resolve": "^1.9.0" } }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "shebang-regex": "^3.0.0" } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true } } }, "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz", + "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==", "dev": true, "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", + "colorette": "^2.0.10", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "schema-utils": "^4.0.0" }, "dependencies": { - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "requires": { + "mime-db": "1.51.0" + } + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } } } }, "webpack-dev-server": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", - "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.1.tgz", + "integrity": "sha512-bkoNgFyqlF/CT726Axtf/ELHHYsTZJWz3QJ6HqstWPbalhjAPunlPH9bwt/Lr5cLb+uoLmsta6svVplVzq8beA==", "dev": true, "requires": { - "ansi-html": "0.0.7", + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", "bonjour": "^3.5.0", - "chokidar": "^2.1.8", + "chokidar": "^3.5.2", + "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", + "default-gateway": "^6.0.3", + "del": "^6.0.0", "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^1.10.11", "serve-index": "^1.9.1", "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.0", + "ws": "^8.1.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true }, "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, - "optional": true, "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" } }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "is-glob": "^4.0.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true }, "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "picomatch": "^2.2.1" } }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "ansi-regex": "^6.0.1" } } } }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, "webpack-manifest-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", - "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.0.2.tgz", + "integrity": "sha512-Ld6j05pRblXAVoX8xdXFDsc/s97cFnR1FOmQawhTSlp6F6aeU1Jia5aqTmDpkueaAz8g9sXpgSOqmEgVAR61Xw==", "dev": true, "requires": { - "fs-extra": "^7.0.0", - "lodash": ">=3.5 <5", - "object.entries": "^1.1.0", - "tapable": "^1.0.0" + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" }, "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" } } } }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" } }, "websocket-driver": { @@ -16579,12 +13550,6 @@ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -16644,6 +13609,12 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, "windows-release": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.1.tgz", @@ -16692,9 +13663,9 @@ } }, "winston-loki": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/winston-loki/-/winston-loki-6.0.1.tgz", - "integrity": "sha512-qdQZdOyWwJv8I4y6z8IZRf4CBvHvCokXsiWEZWJLgW8GwBoC9nPJJlCK0Wja52wlAreAvBH4q/Ygy7/hraIo6w==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/winston-loki/-/winston-loki-6.0.3.tgz", + "integrity": "sha512-9yj1raXZ8jHytdrtw/VilOPlmCGUOPVJxvRDJ62sh17FZYNHUMHu3AID61GUNhakGQeIovuA3c/HQu1xSsV9Wg==", "requires": { "async-exit-hook": "2.0.1", "btoa": "^1.2.1", @@ -16712,26 +13683,23 @@ } }, "winston-transport": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", - "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.1.tgz", + "integrity": "sha512-ciZRlU4CSjHqHe8RQG1iPxKMRVwv6ZJ0RC7DxStKWd0KjpAhPDy5gVYSCpIUq+5CUsP+IyNOTZy1X0tO2QZqjg==", "requires": { - "readable-stream": "^2.3.7", + "logform": "^2.2.0", + "readable-stream": "^3.4.0", "triple-beam": "^1.2.0" }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } } } @@ -16775,15 +13743,6 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, "workerpool": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", @@ -16791,47 +13750,39 @@ "dev": true }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "color-convert": "^2.0.1" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "color-name": "~1.1.4" } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true } } }, @@ -16853,13 +13804,10 @@ } }, "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", + "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "dev": true }, "xml2js": { "version": "0.4.19", @@ -16957,24 +13905,6 @@ } } }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } - } - }, "yargs-unparser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", @@ -17001,6 +13931,12 @@ } } }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 326a57f7c..4d7eed9d2 100644 --- a/package.json +++ b/package.json @@ -18,15 +18,15 @@ "esm": true, "dependencies": { "@fortawesome/fontawesome-free": "^5.15.4", - "@sentry/browser": "^6.13.3", - "@sentry/node": "^6.13.3", - "@sentry/tracing": "^6.13.3", - "aws-sdk": "^2.1009.0", - "big-integer": "^1.6.50", - "body-parser": "^1.18.2", - "bootstrap": "^4.6.0", + "@sentry/browser": "^6.16.1", + "@sentry/node": "^6.16.1", + "@sentry/tracing": "^6.16.1", + "aws-sdk": "^2.1048.0", + "big-integer": "^1.6.51", + "body-parser": "^1.19.1", + "bootstrap": "^4.6.1", "bootstrap-slider": "^10.6.2", - "chart.js": "^3.5.1", + "chart.js": "^3.6.2", "clipboard": "^2.0.8", "compiler-opt-info": "0.0.4", "compression": "^1.7.1", @@ -35,22 +35,22 @@ "es6-shim": "^0.35.6", "eslint-plugin-header": "^3.1.1", "esm": "^3.2.25", - "express": "^4.17.1", + "express": "^4.17.2", "file-saver": "^2.0.5", "fs-extra": "^10.0.0", "golden-layout": "^1.5.9", - "html-loader": "^0.5.5", + "html-loader": "^3.0.1", "http-proxy": "^1.18.1", - "husky": "^7.0.2", + "husky": "^7.0.4", "husky-init": "^7.0.0", "jquery": "^3.6.0", - "js-cookie": "^2.2.1", + "js-cookie": "^3.0.1", "jszip": "^3.7.1", "lodash": "^4.17.21", "lodash.clonedeep": "^4.5.0", "lru-cache": "^5.1.1", "lz-string": "^1.4.4", - "monaco-editor": "^0.27.0", + "monaco-editor": "^0.31.1", "monaco-vim": "^0.1.19", "morgan": "^1.10.0", "node-graceful": "^3.1.0", @@ -59,82 +59,87 @@ "p-queue": "^6.6.2", "popper.js": "^1.16.1", "profanities": "^2.14.0", - "prom-client": "^12.0.0", + "prom-client": "^14.0.1", "pug": "^3.0.2", "request": "^2.88.2", "response-time": "^2.3.2", "semver": "^7.3.5", "serve-favicon": "^2.4.5", - "shell-quote": "^1.7.2", + "shell-quote": "^1.7.3", "systemd-socket": "0.0.0", "tar-stream": "^2.2.0", "temp": "^0.9.4", - "tom-select": "^1.7.8", + "tom-select": "^2.0.0", "tree-kill": "^1.2.2", "triple-beam": "^1.3.0", "tslib": "^2.3.1", - "underscore": "^1.13.1", + "underscore": "^1.13.2", "url-join": "^4.0.1", "vis": "4.20.1", "whatwg-fetch": "^3.6.2", "which": "^2.0.2", "winston": "^3.3.3", - "winston-loki": "6.0.1", + "winston-loki": "^6.0.3", "winston-papertrail": "^1.0.5", - "winston-transport": "^4.4.0", + "winston-transport": "^4.4.1", "yaml": "^1.10.2" }, "devDependencies": { + "@babel/preset-typescript": "^7.16.5", "@types/bootstrap": "^5.1.6", - "@types/jquery": "^3.5.7", - "@types/underscore": "^1.11.2", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", + "@types/jquery": "^3.5.10", + "@types/underscore": "^1.11.4", + "@typescript-eslint/eslint-plugin": "^5.8.0", + "@typescript-eslint/parser": "^5.8.0", + "ajv": "^8.8.2", + "ajv-keywords": "^5.1.0", "approvals": "^4.0.0-beta.1", - "aws-sdk-mock": "^5.4.0", + "aws-sdk-mock": "^5.5.0", "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "chai-http": "^4.2.1", "cheerio": "^1.0.0-rc.10", "codecov": "^3.8.3", - "copy-webpack-plugin": "^5.1.2", - "css-loader": "^3.6.0", + "copy-webpack-plugin": "^9.1.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.3.1", "deep-equal-in-any-order": "^1.1.15", - "eslint": "^7.32.0", + "eslint": "^8.5.0", "eslint-config-prettier": "^8.3.0", "eslint-formatter-github": "^1.0.11", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jsdoc": "^35.5.1", + "eslint-import-resolver-typescript": "^2.5.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsdoc": "^37.4.0", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.0", + "eslint-plugin-promise": "^6.0.0", "eslint-plugin-requirejs": "^4.0.1", - "eslint-plugin-sonarjs": "^0.7.0", - "eslint-plugin-unicorn": "^32.0.1", - "file-loader": "^5.1.0", - "lint-staged": "^11.2.3", - "mini-css-extract-plugin": "^0.9.0", + "eslint-plugin-sonarjs": "^0.11.0", + "eslint-plugin-unicorn": "^39.0.0", + "file-loader": "^6.2.0", + "lint-staged": "^12.1.3", + "mini-css-extract-plugin": "^2.4.5", "mocha": "^8.4.0", - "mock-fs": "^5.1.1", - "monaco-editor-webpack-plugin": "^4.2.0", - "nock": "^13.1.3", + "mock-fs": "^5.1.2", + "monaco-editor-webpack-plugin": "^7.0.1", + "nock": "^13.2.1", "nyc": "^15.1.0", - "optimize-css-assets-webpack-plugin": "^5.0.8", - "prettier": "2.3.2", - "pretty-quick": "^3.1.1", - "sass": "^1.43.2", - "sass-loader": "^10.2.0", - "sinon": "^11.1.2", - "source-map-loader": "^1.1.3", + "path-browserify": "^1.0.1", + "prettier": "^2.5.1", + "sass": "^1.45.1", + "sass-loader": "^12.4.0", + "sinon": "^12.0.1", + "source-map-loader": "^3.0.0", "supervisor": "^0.12.0", - "terser-webpack-plugin": "^2.3.8", - "ts-loader": "^8.3.0", - "typescript": "^4.4.4", - "url-loader": "^3.0.0", - "webpack": "^4.46.0", - "webpack-cli": "^3.3.12", - "webpack-dev-middleware": "^3.7.3", - "webpack-dev-server": "^3.11.2", - "webpack-manifest-plugin": "^2.2.0" + "terser-webpack-plugin": "^5.3.0", + "ts-loader": "^9.2.6", + "ts-node": "^10.4.0", + "typescript": "^4.5.4", + "url-loader": "^4.1.1", + "webpack": "^5.65.0", + "webpack-cli": "^4.9.1", + "webpack-dev-middleware": "^5.3.0", + "webpack-dev-server": "^4.7.1", + "webpack-manifest-plugin": "^4.0.2" }, "mocha": { "require": [ @@ -144,21 +149,21 @@ }, "scripts": { "ci-lint": "eslint --format github .", - "ci-test": "nyc mocha --recursive", + "ci-test": "nyc npm run test", "lint": "eslint .", "lint-fix": "eslint --fix .", "test": "mocha --recursive", "check": "npm run lint && npm run test", - "dev": "cross-env NODE_ENV=DEV node -r esm app.js", - "debugger": "cross-env NODE_ENV=DEV node --inspect -r esm app.js --debug", - "debug": "cross-env NODE_ENV=DEV node -r esm app.js --debug", - "start": "webpack && cross-env NODE_ENV=LOCAL node -r esm app.js", + "dev": "cross-env NODE_ENV=DEV node -r esm -r ts-node/register app.js", + "debugger": "cross-env NODE_ENV=DEV node --inspect -r esm -r ts-node/register app.js --debug", + "debug": "cross-env NODE_ENV=DEV node -r esm -r ts-node/register app.js --debug", + "start": "webpack && cross-env NODE_ENV=LOCAL node -r esm -r ts-node/register app.js", "codecov": "codecov --disable=gcov", "sentry": "npx -p @sentry/cli sentry-cli", "update-browserslist": "npx browserslist@latest -- --update-db", "prepare": "husky install", - "format": "prettier --ignore-unknown", - "format-fix": "prettier --write --ignore-unknown" + "format": "prettier --ignore-unknown .", + "format-fix": "prettier --write --ignore-unknown ." }, "lint-staged": { "*.js": [ diff --git a/static/api/api.ts b/static/api/api.ts new file mode 100644 index 000000000..f3728c6e3 --- /dev/null +++ b/static/api/api.ts @@ -0,0 +1,62 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import _ from 'underscore'; + +import { AssemblyDocumentationResponse, AssemblyDocumentationRequest } from '../../types/features/assembly-documentation.interfaces'; +import { FormattingRequest, FormattingResponse } from './formatting.interfaces'; + +/** Type wrapper allowing .json() to resolve to a concrete type */ +interface TypedResponse<T> extends Response { + json(): Promise<T>; +} + +/** Lightweight fetch() wrapper for CE API urls */ +const request = async <R>(uri: string, options?: RequestInit): Promise<TypedResponse<R>> => fetch( + `${window.location.origin}${window.httpRoot}api${uri}`, + { + ...options, + credentials: 'include', + headers: { + ...options?.headers, + 'Accept': 'application/json', + }, + }, +); + +/** GET /api/asm/:arch/:instruction */ +export const getAssemblyDocumentation = async ( + options: AssemblyDocumentationRequest, +) => await request<AssemblyDocumentationResponse>(`/asm/${options.instructionSet}/${options.opcode}`); + +/** POST /api/format/:formatter */ +export const getFormattedCode = async ( + options: FormattingRequest, +) => await request<FormattingResponse>(`/format/${options.formatterId}`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(_.pick(options, 'source', 'base', 'tabWidth', 'useSpaces')), +}); diff --git a/static/formatter-registry.interfaces.ts b/static/api/formatting.interfaces.ts index c60aaa188..b2849d211 100644 --- a/static/formatter-registry.interfaces.ts +++ b/static/api/formatting.interfaces.ts @@ -22,9 +22,9 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -import { FormatBase } from './settings.interfaces'; +import { FormatBase } from '../settings.interfaces'; -export interface FormatRequestOptions { +export interface FormattingRequest { source: string; formatterId: string; /** @@ -37,8 +37,8 @@ export interface FormatRequestOptions { useSpaces: boolean; } -export interface FormatResponse { +export interface FormattingResponse { answer: string; exit: number; throw?: true; -} +}
\ No newline at end of file diff --git a/static/components.js b/static/components.js index 3c30deecd..3148a2558 100644 --- a/static/components.js +++ b/static/components.js @@ -310,6 +310,28 @@ module.exports = { }, }; }, + + getGnatDebugTreeView: function () { + return { + type: 'component', + componentName: 'gnatdebugtree', + componentState: {}, + }; + }, + getGnatDebugTreeViewWith: function (id, source, gnatDebugTreeOutput, compilerName, editorid) { + return { + type: 'component', + componentName: 'gnatdebugtree', + componentState: { + id: id, + source: source, + gnatDebugTreeOutput: gnatDebugTreeOutput, + compilerName: compilerName, + editorid: editorid, + }, + }; + }, + getGnatDebugView: function () { return { type: 'component', @@ -350,6 +372,26 @@ module.exports = { }, }; }, + getRustHirView: function () { + return { + type: 'component', + componentName: 'rusthir', + componentState: {}, + }; + }, + getRustHirViewWith: function (id, source, rustHirOutput, compilerName, editorid) { + return { + type: 'component', + componentName: 'rusthir', + componentState: { + id: id, + source: source, + rustHirOutput: rustHirOutput, + compilerName: compilerName, + editorid: editorid, + }, + }; + }, getDeviceView: function () { return { type: 'component', diff --git a/static/explorer.scss b/static/explorer.scss index 00b860bec..75a7aeb14 100644 --- a/static/explorer.scss +++ b/static/explorer.scss @@ -372,7 +372,7 @@ pre.content.wrap * { .change-language { line-height: 14px; - min-width: 150px !important; + min-width: 200px !important; } .change-language .ts-input { diff --git a/static/formatter-registry.ts b/static/formatter-registry.ts index d7224002c..818152f97 100644 --- a/static/formatter-registry.ts +++ b/static/formatter-registry.ts @@ -26,8 +26,9 @@ import * as monaco from 'monaco-editor'; import { Alert } from './alert'; import { getStoredSettings } from './settings'; -import { FormatRequestOptions, FormatResponse } from './formatter-registry.interfaces'; import { SiteSettings } from './settings.interfaces'; +import { FormattingRequest } from './api/formatting.interfaces'; +import { getFormattedCode } from './api/api'; // Proxy function to emit the error to the alert system const onFormatError = (cause: string, source: string) => { @@ -39,17 +40,9 @@ const onFormatError = (cause: string, source: string) => { return source; }; -const getFormattedCode = async ({ source, formatterId, base, tabWidth, useSpaces }: FormatRequestOptions) => { - const res = await fetch(`${window.location.origin}${window.httpRoot}api/format/${formatterId}`, { - method: 'POST', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - }, - body: JSON.stringify({ source, base, tabWidth, useSpaces }), - }); - const body = await res.json() as FormatResponse; +const doFormatRequest = async (options: FormattingRequest) => { + const res = await getFormattedCode(options); + const body = await res.json(); if (res.status === 200 && body.exit === 0) { // API sent 200 and we have a valid response return body.answer; @@ -84,7 +77,7 @@ const getDocumentFormatter = ( const source = model.getValue(); // Request the formatted code. If that API call fails, we just back off // and return the user's old code. - const formattedSource = await getFormattedCode({ + const formattedSource = await doFormatRequest({ formatterId: formatter, tabWidth: settings.tabWidth, useSpaces: settings.useSpaces, diff --git a/static/global.ts b/static/global.ts index 107036709..6eba0c8e5 100644 --- a/static/global.ts +++ b/static/global.ts @@ -22,7 +22,9 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -type CompilerExplorerOptions = Record<string, unknown>; +import { Options } from './options.interfaces'; + +type CompilerExplorerOptions = Record<string, unknown> & Options declare global { export interface Window { diff --git a/static/hub.js b/static/hub.js index e286baad7..e7f4ea3c6 100644 --- a/static/hub.js +++ b/static/hub.js @@ -42,7 +42,9 @@ var irView = require('./panes/ir-view'); var deviceView = require('./panes/device-view'); var rustMirView = require('./panes/rustmir-view'); var gnatDebugView = require('./panes/gnatdebug-view'); +var gnatDebugTreeView = require('./panes/gnatdebugtree-view'); var rustMacroExpView = require('./panes/rustmacroexp-view'); +var rustHirView = require('./panes/rusthir-view'); var gccDumpView = require('./panes/gccdump-view'); var cfgView = require('./panes/cfg-view'); var conformanceView = require('./panes/conformance-view'); @@ -145,6 +147,10 @@ function Hub(layout, subLangId, defaultLangId) { function (container, state) { return self.rustMirViewFactory(container, state); }); + layout.registerComponent(Components.getGnatDebugTreeView().componentName, + function (container, state) { + return self.gnatDebugTreeViewFactory(container, state); + }); layout.registerComponent(Components.getGnatDebugView().componentName, function (container, state) { return self.gnatDebugViewFactory(container, state); @@ -153,6 +159,10 @@ function Hub(layout, subLangId, defaultLangId) { function (container, state) { return self.rustMacroExpViewFactory(container, state); }); + layout.registerComponent(Components.getRustHirView().componentName, + function (container, state) { + return self.rustHirViewFactory(container, state); + }); layout.registerComponent(Components.getGccDumpView().componentName, function (container, state) { return self.gccDumpViewFactory(container, state); @@ -323,6 +333,10 @@ Hub.prototype.deviceViewFactory = function (container, state) { return new deviceView.DeviceAsm(this, container, state); }; +Hub.prototype.gnatDebugTreeViewFactory = function (container, state) { + return new gnatDebugTreeView.GnatDebugTree(this, container, state); +}; + Hub.prototype.gnatDebugViewFactory = function (container, state) { return new gnatDebugView.GnatDebug(this, container, state); }; @@ -335,6 +349,10 @@ Hub.prototype.rustMacroExpViewFactory = function (container, state) { return new rustMacroExpView.RustMacroExp(this, container, state); }; +Hub.prototype.rustHirViewFactory = function (container, state) { + return new rustHirView.RustHir(this, container, state); +}; + Hub.prototype.gccDumpViewFactory = function (container, state) { return new gccDumpView.GccDump(this, container, state); }; diff --git a/static/lib-utils.ts b/static/lib-utils.ts index 8e587b961..818585bcb 100644 --- a/static/lib-utils.ts +++ b/static/lib-utils.ts @@ -1,55 +1,64 @@ -import _ from 'underscore'; -const options = require('./options').options; +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. -export class LibUtils { - private copyAndFilterLibraries(allLibraries, filter) { - const filterLibAndVersion = _.map(filter, (lib) => { - const match = lib.match(/([\w-]*)\.([\w-]*)/i); - if (match) { - return { - id: match[1], - version: match[2], - }; - } else { - return { - id: lib, - version: false, - }; - } - }); - - const filterLibIds = new Set(); - _.each(filterLibAndVersion, (lib) => { - filterLibIds.add(lib.id); - }); +import { options } from './options'; +import {LanguageLibs, Library} from './options.interfaces'; - const copiedLibraries = {}; - _.each(allLibraries, (lib, libid) => { - if (!filterLibIds.has(libid)) return; +const LIB_MATCH_RE = /([\w-]*)\.([\w-]*)/i; - const libcopy = Object.assign({}, lib); - libcopy.versions = _.omit(lib.versions, (version, versionid) => { - for (const filter of filterLibAndVersion) { - if (filter.id === libid) { - if (!filter.version) return false; - if (filter.version === versionid) return false; - } - } +export function copyAndFilterLibraries(allLibraries: LanguageLibs, filter: string[]) { + const filterLibAndVersion = filter.map(lib => { + const match = lib.match(LIB_MATCH_RE); + return { + id: match ? match[1] : lib, + version: match ? match[2] : false + }; + }); - return true; - }); + const filterLibIds = new Set(filterLibAndVersion.map(lib => lib.id)); - copiedLibraries[libid] = libcopy; - }); - - return copiedLibraries; + const copiedLibraries: Record<string, Library> = {}; + for (let libid in allLibraries) { + if (!filterLibIds.has(libid)) continue; + const lib = {...allLibraries[libid]}; + for (let versionid in lib.versions) { + for (const filter of filterLibAndVersion) { + if (!(!filter.version || filter.version === versionid)) { + delete filterLibAndVersion[versionid]; + } + } + } + copiedLibraries[libid] = lib; } - public getSupportedLibraries(supportedLibrariesArr, langId) { - const allLibs = options.libs[langId]; - if (supportedLibrariesArr && supportedLibrariesArr.length > 0) { - return this.copyAndFilterLibraries(allLibs, supportedLibrariesArr); - } - return allLibs; + return copiedLibraries; +} + +export function getSupportedLibraries(supportedLibrariesArr: string[], langId: string) { + const allLibs = options.libs[langId]; + if (supportedLibrariesArr && supportedLibrariesArr.length > 0) { + return copyAndFilterLibraries(allLibs, supportedLibrariesArr); } + return allLibs; } diff --git a/static/libs-widget-ext.js b/static/libs-widget-ext.js deleted file mode 100644 index 1300f495a..000000000 --- a/static/libs-widget-ext.js +++ /dev/null @@ -1,537 +0,0 @@ -// Copyright (c) 2020, Compiler Explorer Authors -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - -var options = require('options').options, - _ = require('underscore'), - local = require('./local'), - $ = require('jquery'); - -function LibsWidgetExt(langId, compiler, dropdownButton, state, onChangeCallback, possibleLibs) { - this.dropdownButton = dropdownButton; - if (compiler) { - this.currentCompilerId = compiler.id; - } else { - this.currentCompilerId = '_default_'; - } - this.currentLangId = langId; - this.domRoot = $('#library-selection').clone(true); - this.onChangeCallback = function () { - this.updateButton(); - onChangeCallback(); - }; - this.availableLibs = {}; - this.updateAvailableLibs(possibleLibs); - _.each(state.libs, _.bind(function (lib) { - if (lib.name && lib.ver) { - this.markLibrary(lib.name, lib.ver, true); - } else { - this.markLibrary(lib.id, lib.version, true); - } - }, this)); - - this.fullRefresh(); - - var searchInput = this.domRoot.find('.lib-search-input'); - - if (window.compilerExplorerOptions.mobileViewer) { - this.domRoot.addClass('mobile'); - } - - this.domRoot.on('shown.bs.modal', function () { - searchInput.trigger('focus'); - }); - - searchInput.on('input', _.bind(function () { - this.startSearching(); - }, this)); - - this.domRoot.find('.lib-search-button').on('click', _.bind(function () { - this.startSearching(); - }, this)); - - this.dropdownButton.on('click', _.bind(function () { - this.domRoot.modal({}); - }, this)); - - this.updateButton(); -} - -LibsWidgetExt.prototype.fullRefresh = function () { - this.showSelectedLibs(); - this.showSelectedLibsAsSearchResults(); - this.showFavorites(); -}; - -LibsWidgetExt.prototype.updateButton = function () { - var selectedLibs = this.get(); - var text = ' Libraries'; - if (selectedLibs.length > 0) { - this.dropdownButton - .addClass('btn-success') - .removeClass('btn-light') - .prop('title', 'Current libraries:\n' + _.map(selectedLibs, function (lib) { - return '- ' + lib.name; - }).join('\n')); - text = text + ' (' + selectedLibs.length + ')'; - } else { - this.dropdownButton - .removeClass('btn-success') - .addClass('btn-light') - .prop('title', 'Include libs'); - } - - this.dropdownButton.find('.dp-text').text(text); -}; - -LibsWidgetExt.prototype.getFavorites = function () { - var storkey = 'favlibs'; - - return JSON.parse(local.get(storkey, '{}')); -}; - -LibsWidgetExt.prototype.setFavorites = function (faves) { - var storkey = 'favlibs'; - - local.set(storkey, JSON.stringify(faves)); -}; - -LibsWidgetExt.prototype.isAFavorite = function (libId, versionId) { - var faves = this.getFavorites(); - if (faves[libId]) { - return faves[libId].includes(versionId); - } - - return false; -}; - -LibsWidgetExt.prototype.addToFavorites = function (libId, versionId) { - var faves = this.getFavorites(); - if (faves[libId]) { - faves[libId].push(versionId); - } else { - faves[libId] = []; - faves[libId].push(versionId); - } - - this.setFavorites(faves); -}; - -LibsWidgetExt.prototype.removeFromFavorites = function (libId, versionId) { - var faves = this.getFavorites(); - if (faves[libId]) { - faves[libId] = _.filter(faves[libId], function (v) { - return (v !== versionId); - }); - } - - this.setFavorites(faves); -}; - -LibsWidgetExt.prototype.newFavoriteLibDiv = function (libId, versionId, lib, version) { - var template = $('#lib-favorite-tpl'); - - var libDiv = $(template.children()[0].cloneNode(true)); - - var quickSelectButton = libDiv.find('.lib-name-and-version'); - quickSelectButton.html(lib.name + ' ' + version.version); - quickSelectButton.on('click', _.bind(function () { - this.selectLibAndVersion(libId, versionId); - this.showSelectedLibs(); - this.onChangeCallback(); - }, this)); - - return libDiv; -}; - -LibsWidgetExt.prototype.showFavorites = function () { - var favoritesDiv = this.domRoot.find('.lib-favorites'); - favoritesDiv.html(''); - - var faves = this.getFavorites(); - _.each(faves, _.bind(function (versionArr, libId) { - _.each(versionArr, _.bind(function (versionId) { - var lib = this.getLibInfoById(libId); - if (lib) { - var version = lib.versions[versionId]; - if (version) { - var div = this.newFavoriteLibDiv(libId, versionId, lib, version); - favoritesDiv.append(div); - } - } - }, this)); - }, this)); -}; - -LibsWidgetExt.prototype.getAndEmptySearchResults = function () { - var searchResults = this.domRoot.find('.lib-results-items'); - searchResults.html(''); - return searchResults; -}; - -LibsWidgetExt.prototype.newSelectedLibDiv = function (libId, versionId, lib, version) { - var template = $('#lib-selected-tpl'); - - var libDiv = $(template.children()[0].cloneNode(true)); - - var detailsButton = libDiv.find('.lib-name-and-version'); - detailsButton.html(lib.name + ' ' + version.version); - detailsButton.on('click', _.bind(function () { - var searchResults = this.getAndEmptySearchResults(); - this.addSearchResult(libId, lib, searchResults); - }, this)); - - var deleteButton = libDiv.find('.lib-remove'); - deleteButton.on('click', _.bind(function () { - this.markLibrary(libId, versionId, false); - libDiv.remove(); - this.showSelectedLibs(); - this.onChangeCallback(); - // We need to refresh the library lists, or the selector will still show up with the old library version - this.startSearching(); - }, this)); - - return libDiv; -}; - -LibsWidgetExt.prototype.conjureUpExamples = function (result, lib) { - var examples = result.find('.lib-examples'); - if (lib.examples && lib.examples.length > 0) { - var examplesHeader = $('<b>Examples</b>'); - var examplesList = $('<ul />'); - _.each(lib.examples, function (exampleId) { - var li = $('<li />'); - examplesList.append(li); - var exampleLink = $('<a>Example</a>'); - exampleLink.attr('href', window.httpRoot + 'z/' + exampleId); - exampleLink.attr('target', '_blank'); - exampleLink.attr('rel', 'noopener'); - li.append(exampleLink); - }); - - examples.append(examplesHeader); - examples.append(examplesList); - } -}; - -LibsWidgetExt.prototype.newSearchResult = function (libId, lib) { - var template = $('#lib-search-result-tpl'); - - var result = $(template.children()[0].cloneNode(true)); - result.find('.lib-name').html(lib.name); - if (!lib.description) { - result.find('.lib-description').hide(); - } else { - result.find('.lib-description').html(lib.description); - } - result.find('.lib-website-link').attr('href', lib.url ? lib.url : '#'); - - this.conjureUpExamples(result, lib); - - var faveButton = result.find('.lib-fav-button'); - var faveStar = faveButton.find('.lib-fav-btn-icon'); - faveButton.hide(); - - var versions = result.find('.lib-version-select'); - versions.html(''); - var noVersionSelectedOption = $('<option value="">-</option>'); - versions.append(noVersionSelectedOption); - var hasVisibleVersions = false; - - _.each(lib.versions, _.bind(function (version, versionId) { - var option = $('<option>'); - if (version.used) { - option.attr('selected','selected'); - - if (this.isAFavorite(libId, versionId)) { - faveStar.removeClass('far').addClass('fas'); - } - - faveButton.show(); - } - option.attr('value', versionId); - option.html(version.version); - if (version.used || !version.hidden) { - hasVisibleVersions = true; - versions.append(option); - } - }, this)); - - if (!hasVisibleVersions) { - noVersionSelectedOption.text('No available versions'); - versions.prop('disabled', true); - } - - faveButton.on('click', _.bind(function () { - var option = versions.find('option:selected'); - var verId = option.attr('value'); - if (this.isAFavorite(libId, verId)) { - this.removeFromFavorites(libId, verId); - faveStar.removeClass('fas').addClass('far'); - } else { - this.addToFavorites(libId, verId); - faveStar.removeClass('far').addClass('fas'); - } - this.showFavorites(); - }, this)); - - versions.on('change', _.bind(function () { - var option = versions.find('option:selected'); - var verId = option.attr('value'); - - this.selectLibAndVersion(libId, verId); - this.showSelectedLibs(); - - if (this.isAFavorite(libId, verId)) { - faveStar.removeClass('far').addClass('fas'); - } else { - faveStar.removeClass('fas').addClass('far'); - } - - if (verId) { - faveButton.show(); - } else { - faveButton.hide(); - } - - this.onChangeCallback(); - }, this)); - - return result; -}; - -LibsWidgetExt.prototype.addSearchResult = function (libId, library, searchResults) { - var card = this.newSearchResult(libId, library); - searchResults.append(card); -}; - -LibsWidgetExt.prototype.startSearching = function () { - var searchtext = this.domRoot.find('.lib-search-input').val(); - var lcSearchtext = searchtext.toLowerCase(); - - var searchResults = this.getAndEmptySearchResults(); - - if (Object.keys(this.availableLibs[this.currentLangId][this.currentCompilerId]).length === 0) { - var nolibsMessage = $($('#libs-dropdown').children()[0].cloneNode(true)); - searchResults.append(nolibsMessage); - return; - } - - var descriptionSearchResults = []; - - _.each(this.availableLibs[this.currentLangId][this.currentCompilerId], _.bind(function (library, libId) { - if (library.versions && library.versions.autodetect) return; - - if (library.name) { - if (library.name.toLowerCase().includes(lcSearchtext)) { - this.addSearchResult(libId, library, searchResults); - return; - } - } - - if (library.description) { - if (library.description.toLowerCase().includes(lcSearchtext)) { - - descriptionSearchResults.push({ - libId: libId, - library: library, - searchResults: searchResults, - }); - } - } - }, this)); - - _.each(descriptionSearchResults, _.bind(function (res) { - this.addSearchResult(res.libId, res.library, res.searchResults); - }, this)); -}; - -LibsWidgetExt.prototype.showSelectedLibs = function () { - var items = this.domRoot.find('.libs-selected-items'); - items.html(''); - - var selectedLibs = this.listUsedLibs(); - _.each(selectedLibs, _.bind(function (versionId, libId) { - var lib = this.availableLibs[this.currentLangId][this.currentCompilerId][libId]; - var version = lib.versions[versionId]; - - var libDiv = this.newSelectedLibDiv(libId, versionId, lib, version); - items.append(libDiv); - }, this)); -}; - -LibsWidgetExt.prototype.showSelectedLibsAsSearchResults = function () { - var searchResults = this.getAndEmptySearchResults(); - - if (Object.keys(this.availableLibs[this.currentLangId][this.currentCompilerId]).length === 0) { - var nolibsMessage = $($('#libs-dropdown').children()[0].cloneNode(true)); - searchResults.append(nolibsMessage); - return; - } - - _.each(this.availableLibs[this.currentLangId][this.currentCompilerId], _.bind(function (library, libId) { - if (library.versions && library.versions.autodetect) return; - - var card = this.newSearchResult(libId, library); - searchResults.append(card); - }, this)); -}; - -LibsWidgetExt.prototype.initLangDefaultLibs = function () { - var defaultLibs = options.defaultLibs[this.currentLangId]; - if (!defaultLibs) return; - _.each(defaultLibs.split(':'), _.bind(function (libPair) { - var pairSplits = libPair.split('.'); - if (pairSplits.length === 2) { - var lib = pairSplits[0]; - var ver = pairSplits[1]; - this.markLibrary(lib, ver, true); - } - }, this)); -}; - -LibsWidgetExt.prototype.updateAvailableLibs = function (possibleLibs) { - if (!this.availableLibs[this.currentLangId]) { - this.availableLibs[this.currentLangId] = {}; - } - - if (!this.availableLibs[this.currentLangId][this.currentCompilerId]) { - if (this.currentCompilerId === '_default_') { - this.availableLibs[this.currentLangId][this.currentCompilerId] = - $.extend(true, {}, options.libs[this.currentLangId]); - } else { - this.availableLibs[this.currentLangId][this.currentCompilerId] = - $.extend(true, {}, possibleLibs); - } - } - - this.initLangDefaultLibs(); -}; - -LibsWidgetExt.prototype.setNewLangId = function (langId, compilerId, possibleLibs) { - var libsInUse = this.listUsedLibs(); - - this.currentLangId = langId; - - if (compilerId) { - this.currentCompilerId = compilerId; - } else { - this.currentCompilerId = '_default_'; - } - - // Clear the dom Root so it gets rebuilt with the new language libraries - this.updateAvailableLibs(possibleLibs); - - _.forEach(libsInUse, _.bind(function (version, lib) { - this.markLibrary(lib, version, true); - }, this)); - - this.fullRefresh(); - this.onChangeCallback(); -}; - -LibsWidgetExt.prototype.getVersionOrAlias = function (name, version) { - if (this.availableLibs[this.currentLangId] && - this.availableLibs[this.currentLangId][this.currentCompilerId] && - this.availableLibs[this.currentLangId][this.currentCompilerId][name]) { - if (this.availableLibs[this.currentLangId][this.currentCompilerId][name].versions[version]) { - return version; - } else { - return _.findKey( - this.availableLibs[this.currentLangId][this.currentCompilerId][name].versions, - function (ver) { - return ver.alias && ver.alias.includes(version); - }); - } - } -}; - -LibsWidgetExt.prototype.getLibInfoById = function (libId) { - if (this.availableLibs[this.currentLangId] && - this.availableLibs[this.currentLangId][this.currentCompilerId] && - this.availableLibs[this.currentLangId][this.currentCompilerId][libId]) { - return this.availableLibs[this.currentLangId][this.currentCompilerId][libId]; - } - - return false; -}; - -LibsWidgetExt.prototype.markLibrary = function (name, version, used) { - var actualVersion = this.getVersionOrAlias(name, version); - - if (this.availableLibs[this.currentLangId] && - this.availableLibs[this.currentLangId][this.currentCompilerId] && - this.availableLibs[this.currentLangId][this.currentCompilerId][name] && - this.availableLibs[this.currentLangId][this.currentCompilerId][name].versions[actualVersion]) { - this.availableLibs[this.currentLangId][this.currentCompilerId][name].versions[actualVersion].used = used; - } -}; - -LibsWidgetExt.prototype.selectLibAndVersion = function (libId, versionId) { - if (this.availableLibs[this.currentLangId] && - this.availableLibs[this.currentLangId][this.currentCompilerId] && - this.availableLibs[this.currentLangId][this.currentCompilerId][libId]) { - - _.each( - this.availableLibs[this.currentLangId][this.currentCompilerId][libId].versions, - function (curver, curverId) { - curver.used = curverId === versionId; - }); - } -}; - -LibsWidgetExt.prototype.get = function () { - return _.map(this.listUsedLibs(), function (item, libId) { - return {name: libId, ver: item}; - }); -}; - -LibsWidgetExt.prototype.listUsedLibs = function () { - var libs = {}; - _.each(this.availableLibs[this.currentLangId][this.currentCompilerId], function (library, libId) { - _.each(library.versions, function (version, ver) { - if (library.versions[ver].used) { - // We trust the invariant of only 1 used version at any given time per lib - libs[libId] = ver; - } - }); - }); - return libs; -}; - -LibsWidgetExt.prototype.getLibsInUse = function () { - var libs = []; - _.each(this.availableLibs[this.currentLangId][this.currentCompilerId], function (library, libId) { - _.each(library.versions, function (version, ver) { - if (library.versions[ver].used) { - var libVer = Object.assign({libId: libId, versionId: ver}, library.versions[ver]); - libs.push(libVer); - } - }); - }); - return libs; -}; - -module.exports = { - Widget: LibsWidgetExt, -}; diff --git a/static/libs-widget.ts b/static/libs-widget.ts new file mode 100644 index 000000000..549575238 --- /dev/null +++ b/static/libs-widget.ts @@ -0,0 +1,556 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import { options } from './options'; +import * as local from './local'; +import { Library, LibraryVersion } from './options.interfaces'; + + +const FAV_LIBS_STORE_KEY = 'favlibs'; + +interface StateLib { + id?: string; + name?: string; + ver?: string; + version?: string; +} + +interface WidgetState { + libs?: StateLib[]; +} + +export type CompilerLibs = Record<string, Library>; +type LangLibs = Record<string, CompilerLibs>; +type AvailableLibs = Record<string, LangLibs>; +type LibInUse = {libId: string, versionId: string} & LibraryVersion; + +type FavLibraries = Record<string, string[]>; + +export class LibsWidget { + private domRoot: JQuery; + + private currentLangId: string; + private currentCompilerId: string; + + private dropdownButton: JQuery; + private searchResults: JQuery; + + private readonly onChangeCallback: () => void; + + private readonly availableLibs: AvailableLibs; + + + constructor(langId: string, compiler: any, dropdownButton: JQuery, state: WidgetState, onChangeCallback: () => void, possibleLibs: CompilerLibs) { + this.dropdownButton = dropdownButton; + if (compiler) { + this.currentCompilerId = compiler.id; + } else { + this.currentCompilerId = '_default_'; + } + this.currentLangId = langId; + this.domRoot = $('#library-selection').clone(true); + this.initButtons(); + this.onChangeCallback = onChangeCallback; + this.availableLibs = {}; + this.updateAvailableLibs(possibleLibs); + this.loadState(state); + + this.fullRefresh(); + + const searchInput = this.domRoot.find('.lib-search-input'); + + if (window.compilerExplorerOptions.mobileViewer) { + this.domRoot.addClass('mobile'); + } + + this.domRoot.on('shown.bs.modal', () => { + searchInput.trigger('focus'); + }); + + searchInput.on('input', this.startSearching.bind(this)); + + this.domRoot.find('.lib-search-button') + .on('click', this.startSearching.bind(this)); + + this.dropdownButton.on('click', () => { + this.domRoot.modal({}); + }); + + this.updateButton(); + } + + onChange() { + this.updateButton(); + this.onChangeCallback(); + } + + loadState(state: WidgetState) { + if (!state) return; + for (let lib of state.libs ?? []) { + if (lib.name && lib.ver) { + this.markLibrary(lib.name, lib.ver, true); + } else { + this.markLibrary(lib.id, lib.version, true); + } + } + } + + initButtons() { + this.searchResults = this.domRoot.find('.lib-results-items'); + } + + fullRefresh() { + this.showSelectedLibs(); + this.showSelectedLibsAsSearchResults(); + this.showFavorites(); + } + + updateButton() { + const selectedLibs = this.get(); + let text = 'Libraries'; + if (selectedLibs.length > 0) { + this.dropdownButton + .addClass('btn-success') + .removeClass('btn-light') + .prop('title', 'Current libraries:\n' + + selectedLibs.map(lib => '- ' + lib.name).join('\n')); + text += ' (' + selectedLibs.length + ')'; + } else { + this.dropdownButton + .removeClass('btn-success') + .addClass('btn-light') + .prop('title', 'Include libs'); + } + + this.dropdownButton.find('.dp-text').text(text); + } + + getFavorites(): FavLibraries { + return JSON.parse(local.get(FAV_LIBS_STORE_KEY, '{}')); + } + + setFavorites(faves: FavLibraries) { + local.set(FAV_LIBS_STORE_KEY, JSON.stringify(faves)); + } + + isAFavorite(libId: string, versionId: string): boolean { + const faves = this.getFavorites(); + if (faves[libId]) { + return faves[libId].includes(versionId); + } + + return false; + } + + addToFavorites(libId: string, versionId: string) { + const faves = this.getFavorites(); + if (faves[libId]) { + faves[libId].push(versionId); + } else { + faves[libId] = []; + faves[libId].push(versionId); + } + + this.setFavorites(faves); + } + + removeFromFavorites(libId: string, versionId: string) { + const faves = this.getFavorites(); + if (faves[libId]) { + faves[libId] = faves[libId].filter(v => v !== versionId); + } + + this.setFavorites(faves); + } + + newFavoriteLibDiv(libId: string, versionId: string, lib: Library, version: LibraryVersion): JQuery<Node> { + const template = $('#lib-favorite-tpl'); + + const libDiv = $(template.children()[0].cloneNode(true)); + + const quickSelectButton = libDiv.find('.lib-name-and-version'); + quickSelectButton.html(lib.name + ' ' + version.version); + quickSelectButton.on('click', () => { + this.selectLibAndVersion(libId, versionId); + this.showSelectedLibs(); + this.onChange(); + }); + + return libDiv; + } + + showFavorites() { + const favoritesDiv = this.domRoot.find('.lib-favorites'); + favoritesDiv.html(''); + + const faves = this.getFavorites(); + for (let libId in faves) { + const versionArr = faves[libId]; + for (let versionId of versionArr) { + const lib = this.getLibInfoById(libId); + if (lib) { + const version = lib.versions[versionId]; + if (version) { + const div: any = this.newFavoriteLibDiv(libId, versionId, lib, version); + favoritesDiv.append(div); + } + } + } + } + } + + clearSearchResults() { + this.searchResults.html(''); + } + + newSelectedLibDiv(libId: string, versionId: string, lib: Library, version: LibraryVersion): JQuery<Node> { + const template = $('#lib-selected-tpl'); + + const libDiv = $(template.children()[0].cloneNode(true)); + + const detailsButton = libDiv.find('.lib-name-and-version'); + detailsButton.html(lib.name + ' ' + version.version); + detailsButton.on('click', () => { + this.clearSearchResults(); + this.addSearchResult(libId, lib); + }); + + const deleteButton = libDiv.find('.lib-remove'); + deleteButton.on('click', () => { + this.markLibrary(libId, versionId, false); + libDiv.remove(); + this.showSelectedLibs(); + this.onChange(); + // We need to refresh the library lists, or the selector will still show up with the old library version + this.startSearching(); + }); + + return libDiv; + } + + conjureUpExamples(result: JQuery<Node>, lib: Library) { + const examples = result.find('.lib-examples'); + if (lib.examples && lib.examples.length > 0) { + examples.append($('<b>Examples</b>')); + const examplesList = $('<ul />'); + for (let exampleId of lib.examples) { + const li = $('<li />'); + examplesList.append(li); + const exampleLink = $('<a>Example</a>'); + exampleLink.attr('href', `${window.httpRoot}z/${exampleId}`); + exampleLink.attr('target', '_blank'); + exampleLink.attr('rel', 'noopener'); + li.append(exampleLink); + } + examples.append(examplesList); + } + } + + newSearchResult(libId: string, lib: Library): JQuery<Node> { + const template = $('#lib-search-result-tpl'); + + const result = $($(template.children()[0].cloneNode(true))); + result.find('.lib-name').html(lib.name); + if (!lib.description) { + result.find('.lib-description').hide(); + } else { + result.find('.lib-description').html(lib.description); + } + result.find('.lib-website-link').attr('href', lib.url ?? '#'); + + this.conjureUpExamples(result, lib); + + const faveButton = result.find('.lib-fav-button'); + const faveStar = faveButton.find('.lib-fav-btn-icon'); + faveButton.hide(); + + const versions = result.find('.lib-version-select'); + versions.html(''); + const noVersionSelectedOption = $('<option value="">-</option>'); + versions.append(noVersionSelectedOption); + let hasVisibleVersions = false; + + for (let versionId in lib.versions) { + const version = lib.versions[versionId]; + const option = $('<option>'); + if (version.used) { + option.attr('selected', 'selected'); + + if (this.isAFavorite(libId, versionId)) { + faveStar.removeClass('far').addClass('fas'); + } + + faveButton.show(); + } + option.attr('value', versionId); + option.html(version.version); + if (version.used || !version.hidden) { + hasVisibleVersions = true; + versions.append(option); + } + } + + if (!hasVisibleVersions) { + noVersionSelectedOption.text('No available versions'); + versions.prop('disabled', true); + } + + faveButton.on('click', () => { + const option = versions.find('option:selected'); + const verId = option.attr('value'); + if (this.isAFavorite(libId, verId)) { + this.removeFromFavorites(libId, verId); + faveStar.removeClass('fas').addClass('far'); + } else { + this.addToFavorites(libId, verId); + faveStar.removeClass('far').addClass('fas'); + } + this.showFavorites(); + }); + + versions.on('change', () => { + const option = versions.find('option:selected'); + const verId = option.attr('value'); + + this.selectLibAndVersion(libId, verId); + this.showSelectedLibs(); + + if (this.isAFavorite(libId, verId)) { + faveStar.removeClass('far').addClass('fas'); + } else { + faveStar.removeClass('fas').addClass('far'); + } + + if (verId) { + faveButton.show(); + } else { + faveButton.hide(); + } + + this.onChange(); + }); + + return result; + } + + addSearchResult(libId: string, library: Library) { + // FIXME: Type mismatch. + // The any here stops TS from complaining + const result: any = this.newSearchResult(libId, library); + this.searchResults.append(result); + } + + static _libVersionMatchesQuery(library: Library, searchText: string): boolean { + const text = searchText.toLowerCase(); + return library.name?.toLowerCase().includes(text) + || library.description?.toLowerCase().includes(text); + } + + startSearching() { + const searchValue = this.domRoot.find('.lib-search-input').val(); + const searchText = searchValue.toString(); + + this.clearSearchResults(); + + const currentAvailableLibs = this.availableLibs[this.currentLangId][this.currentCompilerId]; + if (Object.keys(currentAvailableLibs).length === 0) { + const nolibsMessage: any = $($('#libs-dropdown').children()[0].cloneNode(true)); + this.searchResults.append(nolibsMessage); + return; + } + + for (let libId in currentAvailableLibs) { + const library = currentAvailableLibs[libId]; + + if (library.versions && library.versions.autodetect) continue; + + if (LibsWidget._libVersionMatchesQuery(library, searchText)) { + this.addSearchResult(libId, library); + } + } + } + + showSelectedLibs() { + const items = this.domRoot.find('.libs-selected-items'); + items.html(''); + + const selectedLibs = this.listUsedLibs(); + for (let libId in selectedLibs) { + const versionId = selectedLibs[libId]; + + const lib = this.availableLibs[this.currentLangId][this.currentCompilerId][libId]; + const version = lib.versions[versionId]; + + const libDiv: any = this.newSelectedLibDiv(libId, versionId, lib, version); + items.append(libDiv); + } + } + + showSelectedLibsAsSearchResults() { + this.clearSearchResults(); + + const currentAvailableLibs = this.availableLibs[this.currentLangId][this.currentCompilerId]; + if (Object.keys(currentAvailableLibs).length === 0) { + const nolibsMessage: any = $($('#libs-dropdown').children()[0].cloneNode(true)); + this.searchResults.append(nolibsMessage); + return; + } + + + for (let libId in currentAvailableLibs) { + const library = currentAvailableLibs[libId]; + + if (library.versions && library.versions.autodetect) continue; + + const card: any = this.newSearchResult(libId, library); + this.searchResults.append(card); + } + } + + initLangDefaultLibs() { + const defaultLibs = options.defaultLibs[this.currentLangId]; + if (!defaultLibs) return; + for (let libPair of defaultLibs.split(':')) { + const pairSplits = libPair.split('.'); + if (pairSplits.length === 2) { + const lib = pairSplits[0]; + const ver = pairSplits[1]; + this.markLibrary(lib, ver, true); + } + } + } + + updateAvailableLibs(possibleLibs: CompilerLibs) { + if (!this.availableLibs[this.currentLangId]) { + this.availableLibs[this.currentLangId] = {}; + } + + if (!this.availableLibs[this.currentLangId][this.currentCompilerId]) { + if (this.currentCompilerId === '_default_') { + this.availableLibs[this.currentLangId][this.currentCompilerId] = + $.extend(true, {}, options.libs[this.currentLangId]); + } else { + this.availableLibs[this.currentLangId][this.currentCompilerId] = + $.extend(true, {}, possibleLibs); + } + } + + this.initLangDefaultLibs(); + } + + setNewLangId(langId: string, compilerId: string, possibleLibs: CompilerLibs) { + const libsInUse = this.listUsedLibs(); + + this.currentLangId = langId; + + if (compilerId) { + this.currentCompilerId = compilerId; + } else { + this.currentCompilerId = '_default_'; + } + + // Clear the dom Root so it gets rebuilt with the new language libraries + this.updateAvailableLibs(possibleLibs); + + for (let libId in libsInUse) { + this.markLibrary(libId, libsInUse[libId], true); + } + + this.fullRefresh(); + this.onChange(); + } + + getVersionOrAlias(name: string, versionId: string): string | null { + const lib = this.getLibInfoById(name); + if (!lib) return null; + // If it's already a key, return it directly + if (lib.versions[versionId] != null) { + return versionId; + } else { + // Else, look in each version and see if it has the id as an alias + for (let verId in lib.versions) { + const version = lib.versions[verId]; + if (version.alias?.includes(versionId)) { + return verId; + } + } + return null; + } + } + + getLibInfoById(libId: string): Library | null { + return this.availableLibs[this.currentLangId]?.[this.currentCompilerId]?.[libId]; + }; + + markLibrary(name: string, versionId: string, used: boolean) { + const actualId = this.getVersionOrAlias(name, versionId); + if (actualId != null) { + const v = this.getLibInfoById(name)?.versions[actualId]; + if (v != null) { + v.used = used; + } + } + }; + + selectLibAndVersion(libId: string, versionId: string) { + this.markLibrary(libId, versionId, true); + }; + + get(): {name: string, ver: any}[] { + const result = []; + const usedLibs = this.listUsedLibs(); + for (let libId in usedLibs) { + result.push({name: libId, ver: usedLibs[libId]}); + } + return result; + }; + + listUsedLibs(): Record<string, string> { + const libs: Record<string, string> = {}; + const currentAvailableLibs = this.availableLibs[this.currentLangId][this.currentCompilerId]; + for (let libId in currentAvailableLibs) { + const library = currentAvailableLibs[libId]; + for (let verId in library.versions) { + if (library.versions[verId].used) { + libs[libId] = verId; + } + } + } + return libs; + }; + + getLibsInUse(): LibInUse[] { + const libs: LibInUse[] = []; + const currentAvailableLibs = this.availableLibs[this.currentLangId][this.currentCompilerId]; + for (let libId in currentAvailableLibs) { + const library = currentAvailableLibs[libId]; + for (let verId in library.versions) { + if (library.versions[verId].used) { + libs.push({...library.versions[verId], libId: libId, versionId: verId}); + } + } + } + return libs; + }; +} diff --git a/static/main.js b/static/main.js index 915a731ba..f01fd9d7c 100644 --- a/static/main.js +++ b/static/main.js @@ -143,7 +143,7 @@ function setupButtons(options) { $('#privacy').on('click', function (event, data) { var modal = alertSystem.alert( data && data.title ? data.title : 'Privacy policy', - require('./policies/privacy.html') + require('./policies/privacy.html').default ); calcLocaleChangedDate(modal); // I can't remember why this check is here as it seems superfluous @@ -162,7 +162,7 @@ function setupButtons(options) { (hasCookieConsented(options) ? 'Granted' : 'Denied') + '</span></p>'; }; $('#cookies').on('click', function () { - var modal = alertSystem.ask(getCookieTitle(), $(require('./policies/cookies.html')), { + var modal = alertSystem.ask(getCookieTitle(), require('./policies/cookies.html').default, { yes: function () { simpleCooks.callDoConsent.apply(simpleCooks); }, @@ -458,8 +458,7 @@ function start() { // share the same cookie domain for some settings. var cookieDomain = new RegExp(options.cookieDomainRe).exec(window.location.hostname); if (cookieDomain && cookieDomain[0]) { - cookieDomain = cookieDomain[0]; - jsCookie.defaults.domain = cookieDomain; + jsCookie = jsCookie.withAttributes({domain: cookieDomain[0]}); } var defaultConfig = { diff --git a/static/modes/asm-mode.ts b/static/modes/asm-mode.ts index 39d3b626e..822a8df82 100644 --- a/static/modes/asm-mode.ts +++ b/static/modes/asm-mode.ts @@ -85,6 +85,7 @@ function definition() { // strings [/"([^"\\]|\\.)*$/, 'string.invalid'], // non-terminated string [/"/, {token: 'string.quote', bracket: '@open', next: '@string'}], + [/'/, {token: 'string.singlequote', bracket: '@open', next: '@sstring'}], // characters [/'[^\\']'/, 'string'], @@ -112,6 +113,13 @@ function definition() { [/"/, {token: 'string.quote', bracket: '@close', next: '@pop'}], ], + sstring: [ + [/[^\\']+/, 'string'], + [/@escapes/, 'string.escape'], + [/\\./, 'string.escape.invalid'], + [/'/, {token: 'string.singlequote', bracket: '@close', next: '@pop'}], + ], + whitespace: [ [/[ \t\r\n]+/, 'white'], [/\/\*/, 'comment', '@comment'], diff --git a/static/options.interfaces.ts b/static/options.interfaces.ts new file mode 100644 index 000000000..a5b84f9f2 --- /dev/null +++ b/static/options.interfaces.ts @@ -0,0 +1,50 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +export interface LibraryVersion { + alias: string[]; + hidden: boolean; + libId: string; + used: boolean; + version?: string; + versionId: string; +} + +export interface Library { + dependencies: string[]; + description?: string; + examples: string[]; + name?: string; + url?: string; + versions: Record<string, LibraryVersion>; +} + +export type LanguageLibs = Record<string, Library>; + +export type Libs = Record<string, LanguageLibs>; + +export interface Options { + libs: Libs; + defaultLibs: Record<string, string | null>; +} diff --git a/static/panes/ast-view.js b/static/panes/ast-view.js index 42dae8faa..f4aed7c94 100644 --- a/static/panes/ast-view.js +++ b/static/panes/ast-view.js @@ -138,7 +138,7 @@ Ast.prototype.onCompileResult = function (id, compiler, result, lang) { // Monaco language id of the current editor Ast.prototype.getCurrentEditorLanguage = function () { - return this.astEditor.getModel().getModeId(); + return this.astEditor.getModel().getLanguageId(); }; Ast.prototype.getPaneName = function () { diff --git a/static/panes/cfg-view.interfaces.ts b/static/panes/cfg-view.interfaces.ts new file mode 100644 index 000000000..f3bd5cc5f --- /dev/null +++ b/static/panes/cfg-view.interfaces.ts @@ -0,0 +1,35 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +export interface CfgState { + id: number; + editorid: number; + selectedFn?: string; + pos: any; // vis.Network.Position + scale: number; + options?: { + physics?: boolean; + navigation?: boolean; + } +} diff --git a/static/panes/cfg-view.js b/static/panes/cfg-view.js deleted file mode 100644 index 0919672fe..000000000 --- a/static/panes/cfg-view.js +++ /dev/null @@ -1,393 +0,0 @@ -// Copyright (c) 2017, Najjar Chedy -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - -'use strict'; - -var $ = require('jquery'); -var vis = require('vis'); -var _ = require('underscore'); -var Toggles = require('../toggles').Toggles; -var ga = require('../analytics').ga; - -var TomSelect = require('tom-select'); - -function Cfg(hub, container, state) { - this.container = container; - this.eventHub = hub.createEventHub(); - this.domRoot = container.getElement(); - this.domRoot.html($('#cfg').html()); - this.defaultCfgOutput = {nodes: [{id: 0, shape: 'box', label: 'No Output'}], edges: []}; - this.binaryModeSupport = { - nodes: [{ - id: 0, - shape: 'box', - label: 'Cfg mode cannot be used when the binary filter is set', - }], edges: [], - }; - // Note that this might be outdated if no functions were present when creating the link, but that's handled - // by selectize - state.options = state.options || {}; - this.savedPos = state.pos; - this.savedScale = state.scale; - this.needsMove = this.savedPos && this.savedScale; - - this.currentFunc = state.selectedFn || ''; - this.functions = []; - this.networkOpts = { - autoResize: true, - locale: 'en', - edges: { - arrows: {to: {enabled: true}}, - smooth: { - enabled: true, - type: 'dynamic', - roundness: 1, - }, - physics: true, - }, - nodes: { - font: {face: 'Consolas, "Liberation Mono", Courier, monospace', align: 'left'}, - }, - layout: { - hierarchical: { - enabled: true, - direction: 'UD', - nodeSpacing: 100, - levelSeparation: 150, - }, - }, - physics: { - enabled: !!state.options.physics, - hierarchicalRepulsion: { - nodeDistance: 160, - }, - }, - interaction: { - navigationButtons: !!state.options.navigation, - keyboard: { - enabled: true, - speed: {x: 10, y: 10, zoom: 0.03}, - bindToWindow: false, - }, - }, - }; - - this.cfgVisualiser = new vis.Network(this.domRoot.find('.graph-placeholder')[0], - this.defaultCfgOutput, this.networkOpts); - - this.initButtons(state); - - this.compilerId = state.id; - this._editorid = state.editorid; - this._binaryFilter = false; - - var pickerEl = this.domRoot[0].querySelector('.function-picker'); - this.functionPicker = new TomSelect(pickerEl, { - sortField: 'name', - valueField: 'name', - labelField: 'name', - searchField: ['name'], - dropdownParent: 'body', - plugins: ['input_autogrow'], - onChange: _.bind(function (val) { - var selectedFn = this.functions[val]; - if (selectedFn) { - this.currentFunc = val; - this.showCfgResults({ - nodes: selectedFn.nodes, - edges: selectedFn.edges, - }); - this.cfgVisualiser.selectNodes([selectedFn.nodes[0].id]); - this.resize(); - this.saveState(); - } - }, this), - }); - - this.initCallbacks(); - this.adaptStructure = function (names) { - return _.map(names, function (name) { - return {name: name}; - }); - }; - this.updateButtons(); - this.setTitle(); - ga.proxy('send', { - hitType: 'event', - eventCategory: 'OpenViewPane', - eventAction: 'Cfg', - }); -} - -Cfg.prototype.onCompileResult = function (id, compiler, result) { - if (this.compilerId === id) { - var functionNames = []; - if (this.supportsCfg && !$.isEmptyObject(result.cfg)) { - this.functions = result.cfg; - functionNames = Object.keys(this.functions); - if (functionNames.indexOf(this.currentFunc) === -1) { - this.currentFunc = functionNames[0]; - } - this.showCfgResults({ - nodes: this.functions[this.currentFunc].nodes, - edges: this.functions[this.currentFunc].edges, - }); - this.cfgVisualiser.selectNodes([this.functions[this.currentFunc].nodes[0].id]); - } else { - // We don't reset the current function here as we would lose the saved one if this happened at the beginning - // (Hint: It *does* happen) - this.showCfgResults(this._binaryFilter ? this.binaryModeSupport : this.defaultCfgOutput); - } - - this.functionPicker.clearOptions(); - this.functionPicker.addOption(functionNames.length ? - this.adaptStructure(functionNames) : {name: 'The input does not contain functions'}); - this.functionPicker.refreshOptions(false); - - this.functionPicker.clear(); - this.functionPicker.addItem(functionNames.length ? - this.currentFunc : 'The input does not contain any function', true); - this.saveState(); - } -}; - -Cfg.prototype.onCompiler = function (id, compiler) { - if (id === this.compilerId) { - this._compilerName = compiler ? compiler.name : ''; - this.supportsCfg = compiler.supportsCfg; - this.setTitle(); - } -}; - -Cfg.prototype.onFiltersChange = function (id, filters) { - if (this.compilerId === id) { - this._binaryFilter = filters.binary; - } -}; - -Cfg.prototype.initButtons = function (state) { - this.toggles = new Toggles(this.domRoot.find('.options'), state.options); - - this.toggleNavigationButton = this.domRoot.find('.toggle-navigation'); - this.toggleNavigationTitle = this.toggleNavigationButton.prop('title'); - - this.togglePhysicsButton = this.domRoot.find('.toggle-physics'); - this.togglePhysicsTitle = this.togglePhysicsButton.prop('title'); - - this.topBar = this.domRoot.find('.top-bar'); -}; - -Cfg.prototype.initCallbacks = function () { - this.cfgVisualiser.on('dragEnd', _.bind(this.saveState, this)); - this.cfgVisualiser.on('zoom', _.bind(this.saveState, this)); - - this.eventHub.on('compilerClose', this.onCompilerClose, this); - this.eventHub.on('compileResult', this.onCompileResult, this); - this.eventHub.on('compiler', this.onCompiler, this); - this.eventHub.on('filtersChange', this.onFiltersChange, this); - - this.container.on('destroy', this.close, this); - this.container.on('resize', this.resize, this); - this.container.on('shown', this.resize, this); - this.eventHub.emit('cfgViewOpened', this.compilerId); - this.eventHub.emit('requestFilters', this.compilerId); - this.eventHub.emit('requestCompiler', this.compilerId); - - this.togglePhysicsButton.on('click', _.bind(function () { - this.networkOpts.physics.enabled = this.togglePhysicsButton.hasClass('active'); - // change only physics.enabled option to preserve current node locations - this.cfgVisualiser.setOptions({ - physics: {enabled: this.networkOpts.physics.enabled}, - }); - }, this)); - - this.toggleNavigationButton.on('click', _.bind(function () { - this.networkOpts.interaction.navigationButtons = this.toggleNavigationButton.hasClass('active'); - this.cfgVisualiser.setOptions({ - interaction: { - navigationButtons: this.networkOpts.interaction.navigationButtons, - }, - }); - }, this)); - this.toggles.on('change', _.bind(function () { - this.updateButtons(); - this.saveState(); - }, this)); -}; - -Cfg.prototype.updateButtons = function () { - var formatButtonTitle = function (button, title) { - button.prop('title', '[' + (button.hasClass('active') ? 'ON' : 'OFF') + '] ' + title); - }; - formatButtonTitle(this.togglePhysicsButton, this.togglePhysicsTitle); - formatButtonTitle(this.toggleNavigationButton, this.toggleNavigationTitle); -}; - -Cfg.prototype.resize = function () { - if (this.cfgVisualiser.canvas) { - var height = this.domRoot.height() - this.topBar.outerHeight(true); - this.cfgVisualiser.setSize('100%', height.toString()); - this.cfgVisualiser.redraw(); - } -}; - -Cfg.prototype.getPaneName = function () { - return 'Graph Viewer ' + this._compilerName + - ' (Editor #' + this._editorid + ', Compiler #' + this.compilerId + ')'; -}; - -Cfg.prototype.setTitle = function () { - this.container.setTitle(this.getPaneName()); -}; - -Cfg.prototype.assignLevels = function (data) { - var nodes = []; - var idToIdx = []; - for (var i in data.nodes) { - var node = data.nodes[i]; - idToIdx[node.id] = i; - nodes.push({ - edges: [], - dagEdges: [], - index: i, - id: node.id, - level: 0, - state: 0, - inCount: 0, - }); - } - var isEdgeValid = function (edge) { - return edge.from in idToIdx && edge.to in idToIdx; - }; - data.edges.forEach(function (edge) { - if (isEdgeValid(edge)) { - nodes[idToIdx[edge.from]].edges.push(idToIdx[edge.to]); - } - }); - - var dfs = function (node) { // choose which edges will be back-edges - node.state = 1; - node.edges.forEach(function (targetIndex) { - var target = nodes[targetIndex]; - if (target.state !== 1) { - if (target.state === 0) { - dfs(target); - } - node.dagEdges.push(targetIndex); - target.inCount += 1; - } - }); - node.state = 2; - }; - var markLevels = function (node) { - node.dagEdges.forEach(function (targetIndex) { - var target = nodes[targetIndex]; - target.level = Math.max(target.level, node.level + 1); - if (--target.inCount === 0) { - markLevels(target); - } - }); - }; - nodes.forEach(function (node) { - if (node.state === 0) { - dfs(node); - node.level = 1; - markLevels(node); - } - }); - nodes.forEach(function (node) { - data.nodes[node.index]['level'] = node.level; - }); - data.edges.forEach(function (edge) { - if (isEdgeValid(edge)) { - var nodeA = nodes[idToIdx[edge.from]]; - var nodeB = nodes[idToIdx[edge.to]]; - if (nodeA.level >= nodeB.level) { - edge.physics = false; - } else { - edge.physics = true; - var diff = (nodeB.level - nodeA.level); - edge.length = diff * (200 - 5 * (Math.min(5, diff))); - } - } else { - edge.physics = false; - } - }); -}; - -Cfg.prototype.showCfgResults = function (data) { - this.assignLevels(data); - this.cfgVisualiser.setData(data); - /* FIXME: This does not work. It's here because I suspected that not having content in the constructor was - * breaking the move, but it does not seem like it - */ - if (this.needsMove) { - this.cfgVisualiser.moveTo({ - position: this.savedPos, - animation: false, - scale: this.savedScale, - }); - this.needsMove = false; - } -}; - -Cfg.prototype.onCompilerClose = function (compilerId) { - if (this.compilerId === compilerId) { - // We can't immediately close as an outer loop somewhere in GoldenLayout is iterating over - // the hierarchy. We can't modify while it's being iterated over. - this.close(); - _.defer(function (self) { - self.container.close(); - }, this); - } -}; - -Cfg.prototype.close = function () { - this.eventHub.unsubscribe(); - this.eventHub.emit('cfgViewClosed', this.compilerId); - this.cfgVisualiser.destroy(); -}; - -Cfg.prototype.saveState = function () { - this.container.setState(this.currentState()); -}; - -Cfg.prototype.getEffectiveOptions = function () { - return this.toggles.get(); -}; - -Cfg.prototype.currentState = function () { - return { - id: this.compilerId, - editorid: this._editorid, - selectedFn: this.currentFunc, - pos: this.cfgVisualiser.getViewPosition(), - scale: this.cfgVisualiser.getScale(), - options: this.getEffectiveOptions(), - }; -}; - -module.exports = { - Cfg: Cfg, -}; diff --git a/static/panes/cfg-view.ts b/static/panes/cfg-view.ts new file mode 100644 index 000000000..5347cfed3 --- /dev/null +++ b/static/panes/cfg-view.ts @@ -0,0 +1,419 @@ +// Copyright (c) 2017, Najjar Chedy +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import vis from "vis"; +import _ from 'underscore'; +import { Toggles } from '../toggles'; +import { ga } from "../analytics"; +import TomSelect from 'tom-select'; +import { Container } from "golden-layout"; +import { CfgState } from "./cfg-view.interfaces"; + +export class Cfg { + container: Container; + eventHub: any; + domRoot: JQuery; + defaultCfgOutput: object; + binaryModeSupport: object; + savedPos: any; + savedScale: any; + needsMove: boolean; + currentFunc: string; + functions: { [key: string]: any }; + networkOpts: any; + cfgVisualiser: any; + compilerId: number; + _compilerName: string = ''; + _editorid: number; + _binaryFilter: boolean; + functionPicker: TomSelect; + supportsCfg: boolean = false; + toggles: Toggles; + toggleNavigationButton: JQuery; + toggleNavigationTitle: string; + togglePhysicsButton: JQuery; + togglePhysicsTitle: string; + topBar: JQuery; + + constructor(hub: any, container: Container, state: CfgState) { + this.container = container; + this.eventHub = hub.createEventHub(); + this.domRoot = container.getElement(); + this.domRoot.html($('#cfg').html()); + this.defaultCfgOutput = { nodes: [{ id: 0, shape: 'box', label: 'No Output' }], edges: [] }; + this.binaryModeSupport = { + nodes: [{ + id: 0, + shape: 'box', + label: 'Cfg mode cannot be used when the binary filter is set', + }], edges: [], + }; + // Note that this might be outdated if no functions were present when creating the link, but that's handled + // by selectize + state.options = state.options || {}; + this.savedPos = state.pos; + this.savedScale = state.scale; + this.needsMove = this.savedPos && this.savedScale; + + this.currentFunc = state.selectedFn || ''; + this.functions = {}; + + this.networkOpts = { + autoResize: true, + locale: 'en', + edges: { + arrows: { to: { enabled: true } }, + smooth: { + enabled: true, + type: 'dynamic', + roundness: 1, + }, + physics: true, + }, + nodes: { + font: { face: 'Consolas, "Liberation Mono", Courier, monospace', align: 'left' }, + }, + layout: { + hierarchical: { + enabled: true, + direction: 'UD', + nodeSpacing: 100, + levelSeparation: 150, + }, + }, + physics: { + enabled: !!state.options.physics, + hierarchicalRepulsion: { + nodeDistance: 160, + }, + }, + interaction: { + navigationButtons: !!state.options.navigation, + keyboard: { + enabled: true, + speed: { x: 10, y: 10, zoom: 0.03 }, + bindToWindow: false, + }, + }, + }; + + this.cfgVisualiser = new vis.Network(this.domRoot.find('.graph-placeholder')[0], + this.defaultCfgOutput, this.networkOpts); + + + this.initButtons(state); + + this.compilerId = state.id; + this._editorid = state.editorid; + this._binaryFilter = false; + + const pickerEl = this.domRoot.find('.function-picker')[0] as HTMLInputElement; + this.functionPicker = new TomSelect(pickerEl, { + sortField: 'name', + valueField: 'name', + labelField: 'name', + searchField: ['name'], + dropdownParent: 'body', + plugins: ['input_autogrow'], + onChange: (val: string) => { + const selectedFn = this.functions[val]; + if (selectedFn) { + this.currentFunc = val; + this.showCfgResults({ + nodes: selectedFn.nodes, + edges: selectedFn.edges, + }); + this.cfgVisualiser.selectNodes([selectedFn.nodes[0].id]); + this.resize(); + this.saveState(); + } + }, + } as any + // The current version of tom-select has a very restrictive type definition + // that forces to pass the whole options object. This is a workaround to make it type check + ); + + this.initCallbacks(); + this.updateButtons(); + this.setTitle(); + ga.proxy('send', { + hitType: 'event', + eventCategory: 'OpenViewPane', + eventAction: 'Cfg', + }); + } + + onCompileResult(compilerId: number, compiler: any, result: any) { + if (this.compilerId === compilerId) { + let functionNames: string[] = []; + if (this.supportsCfg && !$.isEmptyObject(result.cfg)) { + this.functions = result.cfg; + functionNames = Object.keys(this.functions); + if (functionNames.indexOf(this.currentFunc) === -1) { + this.currentFunc = functionNames[0]; + } + this.showCfgResults({ + nodes: this.functions[this.currentFunc].nodes, + edges: this.functions[this.currentFunc].edges, + }); + this.cfgVisualiser.selectNodes([this.functions[this.currentFunc].nodes[0].id]); + } else { + // We don't reset the current function here as we would lose the saved one if this happened at the beginning + // (Hint: It *does* happen) + this.showCfgResults(this._binaryFilter ? this.binaryModeSupport : this.defaultCfgOutput); + } + + this.functionPicker.clearOptions(); + this.functionPicker.addOption(functionNames.length ? + this.adaptStructure(functionNames) : { name: 'The input does not contain functions' }); + this.functionPicker.refreshOptions(false); + + this.functionPicker.clear(); + this.functionPicker.addItem(functionNames.length ? + this.currentFunc : 'The input does not contain any function', true); + this.saveState(); + } + } + onCompiler(compilerId: number, compiler: any) { + if (compilerId === this.compilerId) { + this._compilerName = compiler ? compiler.name : ''; + this.supportsCfg = compiler.supportsCfg; + this.setTitle(); + } + } + + onFiltersChange(compilerId: number, filters: any) { + if (this.compilerId === compilerId) { + this._binaryFilter = filters.binary; + } + } + + initButtons(state: any) { + this.toggles = new Toggles(this.domRoot.find('.options'), state.options); + + this.toggleNavigationButton = this.domRoot.find('.toggle-navigation'); + this.toggleNavigationTitle = this.toggleNavigationButton.prop('title') as string; + + this.togglePhysicsButton = this.domRoot.find('.toggle-physics'); + this.togglePhysicsTitle = this.togglePhysicsButton.prop('title'); + + this.topBar = this.domRoot.find('.top-bar'); + } + + initCallbacks() { + this.cfgVisualiser.on('dragEnd', this.saveState.bind(this)); + this.cfgVisualiser.on('zoom', this.saveState.bind(this)); + + this.eventHub.on('compilerClose', this.onCompilerClose, this); + this.eventHub.on('compileResult', this.onCompileResult, this); + this.eventHub.on('compiler', this.onCompiler, this); + this.eventHub.on('filtersChange', this.onFiltersChange, this); + + this.container.on('destroy', this.close, this); + this.container.on('resize', this.resize, this); + this.container.on('shown', this.resize, this); + this.eventHub.emit('cfgViewOpened', this.compilerId); + this.eventHub.emit('requestFilters', this.compilerId); + this.eventHub.emit('requestCompiler', this.compilerId); + + this.togglePhysicsButton.on('click', () => { + this.networkOpts.physics.enabled = this.togglePhysicsButton.hasClass('active'); + // change only physics.enabled option to preserve current node locations + this.cfgVisualiser.setOptions({ + physics: { enabled: this.networkOpts.physics.enabled }, + }); + }); + + this.toggleNavigationButton.on('click', () => { + this.networkOpts.interaction.navigationButtons = this.toggleNavigationButton.hasClass('active'); + this.cfgVisualiser.setOptions({ + interaction: { + navigationButtons: this.networkOpts.interaction.navigationButtons, + }, + }); + }); + this.toggles.on('change', () => { + this.updateButtons(); + this.saveState(); + }); + } + + updateButtons() { + const formatButtonTitle = (button: JQuery, title: string) => { + button.prop('title', '[' + (button.hasClass('active') ? 'ON' : 'OFF') + '] ' + title); + }; + formatButtonTitle(this.togglePhysicsButton, this.togglePhysicsTitle); + formatButtonTitle(this.toggleNavigationButton, this.toggleNavigationTitle); + } + + resize() { + if (this.cfgVisualiser.canvas) { + const height = this.domRoot.height() - this.topBar.outerHeight(true); + this.cfgVisualiser.setSize('100%', height.toString()); + this.cfgVisualiser.redraw(); + } + } + + getPaneName() { + return `Graph Viewer ${this._compilerName}` + + `(Editor #${this._editorid}, ` + + `Compiler #${this.compilerId})`; + }; + + setTitle() { + this.container.setTitle(this.getPaneName()); + } + + assignLevels(data: any) { + const nodes = []; + const idToIdx = []; + for (const i in data.nodes) { + const node = data.nodes[i]; + idToIdx[node.id] = i; + nodes.push({ + edges: [], + dagEdges: [], + index: i, + id: node.id, + level: 0, + state: 0, + inCount: 0, + }); + } + const isEdgeValid = (edge: any) => edge.from in idToIdx && edge.to in idToIdx; + data.edges.forEach((edge: any) => { + if (isEdgeValid(edge)) { + nodes[idToIdx[edge.from]].edges.push(idToIdx[edge.to]); + } + }); + + const dfs = (node: any) => { // choose which edges will be back-edges + node.state = 1; + node.edges.forEach((targetIndex: number) => { + const target = nodes[targetIndex]; + if (target.state !== 1) { + if (target.state === 0) { + dfs(target); + } + node.dagEdges.push(targetIndex); + target.inCount += 1; + } + }); + node.state = 2; + }; + const markLevels = (node: any) => { + node.dagEdges.forEach((targetIndex: number) => { + let target = nodes[targetIndex]; + target.level = Math.max(target.level, node.level + 1); + if (--target.inCount === 0) { + markLevels(target); + } + }); + }; + nodes.forEach((node: any) => { + if (node.state === 0) { + dfs(node); + node.level = 1; + markLevels(node); + } + }); + nodes.forEach((node: any) => { + data.nodes[node.index]['level'] = node.level; + }); + data.edges.forEach((edge: any) => { + if (isEdgeValid(edge)) { + const nodeA = nodes[idToIdx[edge.from]]; + const nodeB = nodes[idToIdx[edge.to]]; + if (nodeA.level >= nodeB.level) { + edge.physics = false; + } else { + edge.physics = true; + const diff = (nodeB.level - nodeA.level); + edge.length = diff * (200 - 5 * (Math.min(5, diff))); + } + } else { + edge.physics = false; + } + }); + } + + showCfgResults(data: any) { + this.assignLevels(data); + this.cfgVisualiser.setData(data); + /* FIXME: This does not work. It's here because I suspected that not having content in the constructor was + * breaking the move, but it does not seem like it + */ + if (this.needsMove) { + this.cfgVisualiser.moveTo({ + position: this.savedPos, + animation: false, + scale: this.savedScale, + }); + this.needsMove = false; + } + } + + onCompilerClose(compilerId: number) { + if (this.compilerId === compilerId) { + // We can't immediately close as an outer loop somewhere in GoldenLayout is iterating over + // the hierarchy. We can't modify while it's being iterated over. + this.close(); + _.defer((self: Cfg) => { + self.container.close(); + }, this); + } + } + + close() { + this.eventHub.unsubscribe(); + this.eventHub.emit('cfgViewClosed', this.compilerId); + this.cfgVisualiser.destroy(); + } + + saveState() { + this.container.setState(this.currentState()); + } + + getEffectiveOptions() { + return this.toggles.get(); + } + + currentState(): CfgState { + return { + id: this.compilerId, + editorid: this._editorid, + selectedFn: this.currentFunc, + pos: this.cfgVisualiser.getViewPosition(), + scale: this.cfgVisualiser.getScale(), + options: this.getEffectiveOptions(), + }; + } + + adaptStructure(names: string[]) { + return _.map(names, name => { + return { name }; + }); + } +} + diff --git a/static/panes/compiler.js b/static/panes/compiler.js index 5bbcecaef..d154d2203 100644 --- a/static/panes/compiler.js +++ b/static/panes/compiler.js @@ -36,14 +36,15 @@ var options = require('../options').options; var monaco = require('monaco-editor'); var Alert = require('../alert').Alert; var bigInt = require('big-integer'); -var Libraries = require('../libs-widget-ext'); +var LibsWidget = require('../libs-widget').LibsWidget; var codeLensHandler = require('../codelens-handler'); var monacoConfig = require('../monaco-config'); var TimingWidget = require('../timing-info-widget'); var CompilerPicker = require('../compiler-picker').CompilerPicker; var Settings = require('../settings'); var utils = require('../utils'); -var LibUtils = require('../lib-utils').LibUtils; +var LibUtils = require('../lib-utils'); +var getAssemblyDocumentation = require('../api/api').getAssemblyDocumentation; require('../modes/asm-mode'); require('../modes/asmruby-mode'); @@ -136,7 +137,7 @@ function Compiler(hub, container, state) { readOnly: true, language: monacoDisassembly, glyphMargin: !options.embedded, - renderIndentGuides: false, + guides: false, vimInUse: false, }, this.settings)); @@ -203,6 +204,7 @@ Compiler.prototype.close = function () { this.outputEditor.dispose(); }; +// eslint-disable-next-line max-statements Compiler.prototype.initPanerButtons = function () { var outputConfig = _.bind(function () { return Components.getOutput(this.id, this.sourceEditorId, this.sourceTreeId); @@ -263,11 +265,21 @@ Compiler.prototype.initPanerButtons = function () { this.getCompilerName(), this.sourceEditorId); }, this); + var createRustHirView = _.bind(function () { + return Components.getRustHirViewWith(this.id, this.source, this.lastResult.rustHirOutput, + this.getCompilerName(), this.sourceEditorId); + }, this); + var createGccDumpView = _.bind(function () { return Components.getGccDumpViewWith(this.id, this.getCompilerName(), this.sourceEditorId, this.lastResult.gccDumpOutput); }, this); + var createGnatDebugTreeView = _.bind(function () { + return Components.getGnatDebugTreeViewWith(this.id, this.source, this.lastResult.gnatDebugTreeOutput, + this.getCompilerName(), this.sourceEditorId); + }, this); + var createGnatDebugView = _.bind(function () { return Components.getGnatDebugViewWith(this.id, this.source, this.lastResult.gnatDebugOutput, this.getCompilerName(), this.sourceEditorId); @@ -382,6 +394,16 @@ Compiler.prototype.initPanerButtons = function () { }, this)); this.container.layoutManager + .createDragSource(this.rustHirButton, createRustHirView) + ._dragListener.on('dragStart', togglePannerAdder); + + this.rustHirButton.click(_.bind(function () { + var insertPoint = this.hub.findParentRowOrColumn(this.container) || + this.container.layoutManager.root.contentItems[0]; + insertPoint.addChild(createRustHirView); + }, this)); + + this.container.layoutManager .createDragSource(this.gccDumpButton, createGccDumpView) ._dragListener.on('dragStart', togglePannerAdder); @@ -392,6 +414,16 @@ Compiler.prototype.initPanerButtons = function () { }, this)); this.container.layoutManager + .createDragSource(this.gnatDebugTreeButton, createGnatDebugTreeView) + ._dragListener.on('dragStart', togglePannerAdder); + + this.gnatDebugTreeButton.click(_.bind(function () { + var insertPoint = this.hub.findParentRowOrColumn(this.container) || + this.container.layoutManager.root.contentItems[0]; + insertPoint.addChild(createGnatDebugTreeView); + }, this)); + + this.container.layoutManager .createDragSource(this.gnatDebugButton, createGnatDebugView) ._dragListener.on('dragStart', togglePannerAdder); @@ -699,11 +731,13 @@ Compiler.prototype.compile = function (bypassCache, newTools) { }, produceOptInfo: this.wantOptInfo, produceCfg: this.cfgViewOpen, + produceGnatDebugTree: this.gnatDebugTreeViewOpen, produceGnatDebug: this.gnatDebugViewOpen, produceIr: this.irViewOpen, produceDevice: this.deviceViewOpen, produceRustMir: this.rustMirViewOpen, produceRustMacroExp: this.rustMacroExpViewOpen, + produceRustHir: this.rustHirViewOpen, }, filters: this.getEffectiveFilters(), tools: this.getActiveTools(newTools), @@ -845,7 +879,10 @@ Compiler.prototype.sendCompile = function (request) { message = e; } else if (e) { message = e.error || e.code || e.message; - if (e.stack) console.log(e); + if (e.stack) { + // eslint-disable-next-line no-console + console.log(e); + } } onCompilerResponse(request, errorResult('<Compilation failed: ' + message + '>'), false); }); @@ -955,7 +992,7 @@ Compiler.prototype.setAssembly = function (result, filteredCount) { if (this.settings.enableCodeLens) { codeLensHandler.registerLensesForCompiler(this.id, editorModel, codeLenses); - var currentAsmLang = editorModel.getModeId(); + var currentAsmLang = editorModel.getLanguageId(); codeLensHandler.registerProviderForLanguage(currentAsmLang); } else { // Make sure the codelens is disabled @@ -1279,6 +1316,21 @@ Compiler.prototype.onRustMirViewClosed = function (id) { } }; +Compiler.prototype.onGnatDebugTreeViewOpened = function (id) { + if (this.id === id) { + this.gnatDebugTreeButton.prop('disabled', true); + this.gnatDebugTreeViewOpen = true; + this.compile(); + } +}; + +Compiler.prototype.onGnatDebugTreeViewClosed = function (id) { + if (this.id === id) { + this.gnatDebugTreeButton.prop('disabled', false); + this.gnatDebugTreeViewOpen = false; + } +}; + Compiler.prototype.onGnatDebugViewOpened = function (id) { if (this.id === id) { this.gnatDebugButton.prop('disabled', true); @@ -1309,6 +1361,21 @@ Compiler.prototype.onRustMacroExpViewClosed = function (id) { } }; +Compiler.prototype.onRustHirViewOpened = function (id) { + if (this.id === id) { + this.rustHirButton.prop('disabled', true); + this.rustHirViewOpen = true; + this.compile(); + } +}; + +Compiler.prototype.onRustHirViewClosed = function (id) { + if (this.id === id) { + this.rustHirButton.prop('disabled', false); + this.rustHirViewOpen = false; + } +}; + Compiler.prototype.onGccDumpUIInit = function (id) { if (this.id === id) { this.compile(); @@ -1445,11 +1512,12 @@ Compiler.prototype.initButtons = function (state) { this.astButton = this.domRoot.find('.btn.view-ast'); this.irButton = this.domRoot.find('.btn.view-ir'); this.deviceButton = this.domRoot.find('.btn.view-device'); + this.gnatDebugTreeButton = this.domRoot.find('.btn.view-gnatdebugtree'); this.gnatDebugButton = this.domRoot.find('.btn.view-gnatdebug'); this.rustMirButton = this.domRoot.find('.btn.view-rustmir'); this.rustMacroExpButton = this.domRoot.find('.btn.view-rustmacroexp'); + this.rustHirButton = this.domRoot.find('.btn.view-rusthir'); this.gccDumpButton = this.domRoot.find('.btn.view-gccdump'); - this.gnatDebugButton = this.domRoot.find('.btn.view-gnatdebug'); this.cfgButton = this.domRoot.find('.btn.view-cfg'); this.executorButton = this.domRoot.find('.create-executor'); this.libsButton = this.domRoot.find('.btn.show-libs'); @@ -1509,20 +1577,21 @@ Compiler.prototype.onLibsChanged = function () { }; Compiler.prototype.initLibraries = function (state) { - var libUtils = new LibUtils(); - - this.libsWidget = new Libraries.Widget(this.currentLangId, this.compiler, this.libsButton, - state, _.bind(this.onLibsChanged, this), - libUtils.getSupportedLibraries(this.compiler ? this.compiler.libsArr: [], this.currentLangId)); + this.libsWidget = new LibsWidget( + this.currentLangId, + this.compiler, + this.libsButton, + state, + _.bind(this.onLibsChanged, this), + LibUtils.getSupportedLibraries(this.compiler ? this.compiler.libsArr: [], this.currentLangId) + ); }; Compiler.prototype.updateLibraries = function () { if (this.libsWidget) { - var libUtils = new LibUtils(); - var filteredLibraries = {}; if (this.compiler) { - filteredLibraries = libUtils.getSupportedLibraries(this.compiler.libsArr, this.currentLangId); + filteredLibraries = LibUtils.getSupportedLibraries(this.compiler.libsArr, this.currentLangId); } this.libsWidget.setNewLangId(this.currentLangId, @@ -1662,8 +1731,10 @@ Compiler.prototype.updateButtons = function () { this.deviceButton.prop('disabled', this.deviceViewOpen); this.rustMirButton.prop('disabled', this.rustMirViewOpen); this.rustMacroExpButton.prop('disabled', this.rustMacroExpViewOpen); + this.rustHirButton.prop('disabled', this.rustHirViewOpen); this.cfgButton.prop('disabled', this.cfgViewOpen); this.gccDumpButton.prop('disabled', this.gccDumpViewOpen); + this.gnatDebugTreeButton.prop('disabled', this.gnatDebugTreeViewOpen); this.gnatDebugButton.prop('disabled', this.gnatDebugViewOpen); // The executorButton does not need to be changed here, because you can create however // many executors as you want. @@ -1674,9 +1745,11 @@ Compiler.prototype.updateButtons = function () { this.deviceButton.toggle(!!this.compiler.supportsDeviceAsmView); this.rustMirButton.toggle(!!this.compiler.supportsRustMirView); this.rustMacroExpButton.toggle(!!this.compiler.supportsRustMacroExpView); + this.rustHirButton.toggle(!!this.compiler.supportsRustHirView); this.cfgButton.toggle(!!this.compiler.supportsCfg); this.gccDumpButton.toggle(!!this.compiler.supportsGccDump); - this.gnatDebugButton.toggle(!!this.compiler.supportsGnatDebugView); + this.gnatDebugTreeButton.toggle(!!this.compiler.supportsGnatDebugViews); + this.gnatDebugButton.toggle(!!this.compiler.supportsGnatDebugViews); this.executorButton.toggle(!!this.compiler.supportsExecute); this.enableToolButtons(); @@ -1766,6 +1839,8 @@ Compiler.prototype.initListeners = function () { this.eventHub.on('rustMirViewClosed', this.onRustMirViewClosed, this); this.eventHub.on('rustMacroExpViewOpened', this.onRustMacroExpViewOpened, this); this.eventHub.on('rustMacroExpViewClosed', this.onRustMacroExpViewClosed, this); + this.eventHub.on('rustHirViewOpened', this.onRustHirViewOpened, this); + this.eventHub.on('rustHirViewClosed', this.onRustHirViewClosed, this); this.eventHub.on('outputOpened', this.onOutputOpened, this); this.eventHub.on('outputClosed', this.onOutputClosed, this); @@ -1775,6 +1850,8 @@ Compiler.prototype.initListeners = function () { this.eventHub.on('gccDumpViewClosed', this.onGccDumpViewClosed, this); this.eventHub.on('gccDumpUIInit', this.onGccDumpUIInit, this); + this.eventHub.on('gnatDebugTreeViewOpened', this.onGnatDebugTreeViewOpened, this); + this.eventHub.on('gnatDebugTreeViewClosed', this.onGnatDebugTreeViewClosed, this); this.eventHub.on('gnatDebugViewOpened', this.onGnatDebugViewOpened, this); this.eventHub.on('gnatDebugViewClosed', this.onGnatDebugViewClosed, this); @@ -2228,24 +2305,26 @@ function getAsmInfo(opcode, instructionSet) { var cacheName = 'asm/' + (instructionSet ? (instructionSet + '/') : '') + opcode; var cached = OpcodeCache.get(cacheName); if (cached) { - return Promise.resolve(cached.found ? cached.result : null); + if (cached.found) { + return Promise.resolve(cached.data); + } + return Promise.reject(cached.data); } - var base = window.httpRoot; return new Promise(function (resolve, reject) { - $.ajax({ - type: 'GET', - url: window.location.origin + base + 'api/asm/' + (instructionSet ? (instructionSet + '/') : '') + opcode, - dataType: 'json', // Expected, - contentType: 'text/plain', // Sent - success: function (result) { - OpcodeCache.set(cacheName, result); - resolve(result.found ? result.result : null); - }, - error: function (result) { - reject(result); - }, - cache: true, - }); + getAssemblyDocumentation({ opcode: opcode, instructionSet: instructionSet }) + .then(function (response) { + response.json().then(function (body) { + if (response.status === 200) { + OpcodeCache.set(cacheName, { found: true, data: body }); + resolve(body); + } else { + OpcodeCache.set(cacheName, { found: false, data: body.error }); + reject(body.error); + } + }); + }).catch(function (error) { + reject('Fetch error: ' + error); + }); }); } @@ -2345,7 +2424,7 @@ Compiler.prototype.onMouseMove = function (e) { Compiler.prototype.getLineTokens = function (line) { var model = this.outputEditor.getModel(); if (!model || line > model.getLineCount()) return []; - var flavour = model.getModeId(); + var flavour = model.getLanguageId(); var tokens = monaco.editor.tokenize(model.getLineContent(line), flavour); return tokens.length > 0 ? tokens[0] : []; }; @@ -2427,7 +2506,7 @@ Compiler.prototype.onLanguageChange = function (editorId, newLangId, treeId) { this.updateCompilersSelector(info); this.saveState(); this.updateCompilerUI(); - + this.setAssembly(fakeAsm('')); // this is a workaround to delay compilation further until the Editor sends a compile request this.needsCompile = false; diff --git a/static/panes/conformance-view.js b/static/panes/conformance-view.js index ed57d9542..25b9daaaa 100644 --- a/static/panes/conformance-view.js +++ b/static/panes/conformance-view.js @@ -30,10 +30,10 @@ var $ = require('jquery'); var Promise = require('es6-promise').Promise; var ga = require('../analytics').ga; var Components = require('../components'); -var Libraries = require('../libs-widget-ext'); +var LibsWidget = require('../libs-widget').LibsWidget; var CompilerPicker = require('../compiler-picker').CompilerPicker; var utils = require('../utils'); -var LibUtils = require('../lib-utils').LibUtils; +var LibUtils = require('../lib-utils'); function Conformance(hub, container, state) { this.hub = hub; @@ -58,9 +58,9 @@ function Conformance(hub, container, state) { this.stateByLang = {}; this.initButtons(); - this.initLibraries(state); this.initCallbacks(); this.initFromState(state); + this.initLibraries(state); this.handleToolbarUI(); ga.proxy('send', { hitType: 'event', @@ -96,7 +96,15 @@ Conformance.prototype.onLibsChanged = function () { }; Conformance.prototype.initLibraries = function (state) { - this.libsWidget = new Libraries.Widget(this.langId, null, this.libsButton, state, _.bind(this.onLibsChanged, this)); + var compilerIds = this.getCurrentCompilersIds(); + this.libsWidget = new LibsWidget( + this.langId, + compilerIds.join('|'), + this.libsButton, + state, + _.bind(this.onLibsChanged, this), + this.getOverlappingLibraries(compilerIds) + ); // No callback is done on initialization, so make sure we store the current libs this.currentLibs = this.libsWidget.get(); }; @@ -400,15 +408,13 @@ Conformance.prototype.getOverlappingLibraries = function (compilerIds) { return this.compilerService.findCompiler(this.langId, compilerId); }, this)); - var libUtils = new LibUtils(); - var langId = this.langId; var libraries = {}; var first = true; _.forEach(compilers, function (compiler) { if (compiler) { - var filteredLibraries = libUtils.getSupportedLibraries(compiler.libsArr, langId); + var filteredLibraries = LibUtils.getSupportedLibraries(compiler.libsArr, langId); if (first) { libraries = _.extend({}, filteredLibraries); @@ -441,8 +447,8 @@ Conformance.prototype.getOverlappingLibraries = function (compilerIds) { return libraries; }; -Conformance.prototype.updateLibraries = function () { - var compilerIds = _.uniq( +Conformance.prototype.getCurrentCompilersIds = function () { + return _.uniq( _.filter( _.map(this.compilerPickers, function (compilerEntry) { return getCompilerId(compilerEntry); @@ -451,10 +457,15 @@ Conformance.prototype.updateLibraries = function () { return compilerId !== ''; }) ); +}; - var libraries = this.getOverlappingLibraries(compilerIds); - - this.libsWidget.setNewLangId(this.langId, compilerIds.join('|'), libraries); +Conformance.prototype.updateLibraries = function () { + var compilerIds = this.getCurrentCompilersIds(); + this.libsWidget.setNewLangId( + this.langId, + compilerIds.join('|'), + this.getOverlappingLibraries(compilerIds) + ); }; Conformance.prototype.onLanguageChange = function (editorId, newLangId) { diff --git a/static/panes/diff.js b/static/panes/diff.js index 19523c061..6f804af42 100644 --- a/static/panes/diff.js +++ b/static/panes/diff.js @@ -41,7 +41,8 @@ var DiffType_CompilerStdErr = 2, DiffType_ExecStdOut = 3, DiffType_ExecStdErr = 4, - DiffType_GNAT_ExpandedCode = 5; + DiffType_GNAT_ExpandedCode = 5, + DiffType_GNAT_Tree = 6; function State(id, model, difftype) { this.id = id; @@ -85,6 +86,11 @@ State.prototype.refresh = function () { if (this.result.hasGnatDebugOutput) output = this.result.gnatDebugOutput || []; break; + case DiffType_GNAT_Tree: + if (this.result.hasGnatDebugTreeOutput) + output = this.result.gnatDebugTreeOutput || []; + break; + } } this.model.setValue(_.pluck(output, 'text').join('\n')); @@ -136,6 +142,7 @@ function Diff(hub, container, state) { {id: DiffType_ExecStdOut, name: 'Execution stdout'}, {id: DiffType_ExecStdErr, name: 'Execution stderr'}, {id: DiffType_GNAT_ExpandedCode, name: 'GNAT Expanded Code'}, + {id: DiffType_GNAT_Tree, name: 'GNAT Tree Code'}, ], items: [], render: { diff --git a/static/panes/editor.js b/static/panes/editor.js index 56057f623..677542a0c 100644 --- a/static/panes/editor.js +++ b/static/panes/editor.js @@ -130,11 +130,13 @@ function Editor(hub, state, container) { valueField: 'id', labelField: 'name', searchField: ['name'], + placeholder: '🔍 Select a language...', options: _.map(usableLanguages, _.identity), items: [this.currentLanguage.id], dropdownParent: 'body', - plugins: ['input_autogrow'], + plugins: ['dropdown_input'], onChange: _.bind(this.onLanguageChange, this), + closeAfterSelect: true, }); @@ -788,7 +790,7 @@ Editor.prototype.initEditorActions = function () { this.editor.getAction('editor.action.formatDocument').run(); }, this)); - this.editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_D, _.bind(function () { + this.editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyD, _.bind(function () { this.editor.getAction('editor.action.duplicateSelection').run(); }, this)); }; @@ -1253,7 +1255,7 @@ Editor.prototype.getTokenSpan = function (lineNum, column) { if (lineNum <= model.getLineCount()) { var line = model.getLineContent(lineNum); if (0 < column && column < line.length) { - var tokens = monaco.editor.tokenize(line, model.getModeId()); + var tokens = monaco.editor.tokenize(line, model.getLanguageId()); if (tokens.length > 0) { var lastOffset = 0; var lastWasString = false; diff --git a/static/panes/executor.js b/static/panes/executor.js index 1d1ebc536..a6586c2d8 100644 --- a/static/panes/executor.js +++ b/static/panes/executor.js @@ -30,13 +30,13 @@ var Toggles = require('../toggles').Toggles; var FontScale = require('../fontscale').FontScale; var options = require('../options').options; var Alert = require('../alert').Alert; -var Libraries = require('../libs-widget-ext'); +var LibsWidget = require('../libs-widget').LibsWidget; var AnsiToHtml = require('../ansi-to-html').Filter; var TimingWidget = require('../timing-info-widget'); var CompilerPicker = require('../compiler-picker').CompilerPicker; var Settings = require('../settings'); var utils = require('../utils'); -var LibUtils = require('../lib-utils').LibUtils; +var LibUtils = require('../lib-utils'); require('../modes/asm-mode'); require('../modes/ptx-mode'); @@ -681,11 +681,14 @@ Executor.prototype.onLibsChanged = function () { }; Executor.prototype.initLibraries = function (state) { - var libUtils = new LibUtils(); - - this.libsWidget = new Libraries.Widget(this.currentLangId, this.compiler, - this.libsButton, state, _.bind(this.onLibsChanged, this), - libUtils.getSupportedLibraries(this.compiler.libsArr, this.currentLangId)); + this.libsWidget = new LibsWidget( + this.currentLangId, + this.compiler, + this.libsButton, + state, + _.bind(this.onLibsChanged, this), + LibUtils.getSupportedLibraries(this.compiler ? this.compiler.libsArr : [], this.currentLangId) + ); }; Executor.prototype.onFontScale = function () { @@ -1038,7 +1041,16 @@ Executor.prototype.handleCompilationStatus = function (status) { }; Executor.prototype.updateLibraries = function () { - if (this.libsWidget) this.libsWidget.setNewLangId(this.currentLangId, this.compiler.id, this.compiler.libs); + if (this.libsWidget) { + var filteredLibraries = {}; + if (this.compiler) { + filteredLibraries = LibUtils.getSupportedLibraries(this.compiler.libsArr, this.currentLangId); + } + + this.libsWidget.setNewLangId(this.currentLangId, + this.compiler ? this.compiler.id : false, + filteredLibraries); + } }; Executor.prototype.onLanguageChange = function (editorId, newLangId) { diff --git a/static/panes/gnatdebug-view.ts b/static/panes/gnatdebug-view.ts index 0fa0f44fe..46a4e5c53 100644 --- a/static/panes/gnatdebug-view.ts +++ b/static/panes/gnatdebug-view.ts @@ -79,7 +79,7 @@ export class GnatDebug extends Pane<monaco.editor.IStandaloneCodeEditor, GnatDeb if (this.compilerInfo.compilerId !== compilerId) return; if (result.hasGnatDebugOutput) { this.showGnatDebugResults(result.gnatDebugOutput); - } else if (compiler.supportsGnatDebugView) { + } else if (compiler.supportsGnatDebugViews) { this.showGnatDebugResults([{text: '<No output>'}]); } } @@ -89,7 +89,7 @@ export class GnatDebug extends Pane<monaco.editor.IStandaloneCodeEditor, GnatDeb this.compilerInfo.compilerName = compiler ? compiler.name : ''; this.compilerInfo.editorId = editorId; this.setTitle(); - if (compiler && !compiler.supportsGnatDebugView) { + if (compiler && !compiler.supportsGnatDebugViews) { this.showGnatDebugResults([{text: '<GNAT Debug output is not supported for this compiler>'}]); } } diff --git a/static/panes/gnatdebugtree-view.interfaces.ts b/static/panes/gnatdebugtree-view.interfaces.ts new file mode 100644 index 000000000..67a51ec7b --- /dev/null +++ b/static/panes/gnatdebugtree-view.interfaces.ts @@ -0,0 +1,27 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +export interface GnatDebugTreeState { + gnatDebugTreeOutput: any; +} diff --git a/static/panes/gnatdebugtree-view.ts b/static/panes/gnatdebugtree-view.ts new file mode 100644 index 000000000..258700dce --- /dev/null +++ b/static/panes/gnatdebugtree-view.ts @@ -0,0 +1,119 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import _ from 'underscore'; +import * as monaco from 'monaco-editor'; +import { Container } from 'golden-layout'; + +import { Pane } from './pane'; +import { GnatDebugTreeState } from './gnatdebugtree-view.interfaces'; +import { BasePaneState } from './pane.interfaces'; + +import { ga } from '../analytics'; +import { extendConfig } from '../monaco-config'; + +export class GnatDebugTree extends Pane<monaco.editor.IStandaloneCodeEditor, GnatDebugTreeState> { + constructor(hub: any, container: Container, state: GnatDebugTreeState & BasePaneState) { + super(hub, container, state); + if (state && state.gnatDebugTreeOutput) { + this.showGnatDebugTreeResults(state.gnatDebugTreeOutput); + } + } + + override getInitialHTML(): string { + return $('#gnatdebugtree').html(); + } + + override createEditor(editorRoot: HTMLElement): monaco.editor.IStandaloneCodeEditor { + return monaco.editor.create(editorRoot, extendConfig({ + language: 'plainText', + readOnly: true, + glyphMargin: true, + lineNumbersMinChars: 3, + })); + } + + override registerOpeningAnalyticsEvent(): void { + ga.proxy('send', { + hitType: 'event', + eventCategory: 'OpenViewPane', + eventAction: 'GnatDebugTree', + }); + } + + override getPaneName(): string { + return `GNAT Debug Tree Viewer ${this.compilerInfo.compilerName}` + + `(Editor #${this.compilerInfo.editorId}, ` + + `Compiler #${this.compilerInfo.compilerId})`; + } + + override registerCallbacks(): void { + const throttleFunction = _.throttle((event) => this.onDidChangeCursorSelection(event), 500); + this.editor.onDidChangeCursorSelection((event) => throttleFunction(event)); + this.eventHub.emit('gnatDebugTreeViewOpened', this.compilerInfo.compilerId); + this.eventHub.emit('requestSettings'); + } + + override onCompileResult(compilerId: number, compiler: any, result: any): void { + if (this.compilerInfo.compilerId !== compilerId) return; + if (result.hasGnatDebugTreeOutput) { + this.showGnatDebugTreeResults(result.gnatDebugTreeOutput); + } else if (compiler.supportsGnatDebugViews) { + this.showGnatDebugTreeResults([{text: '<No output>'}]); + } + } + + override onCompiler(compilerId: number, compiler: any, options: any, editorId: number): void { + if (this.compilerInfo.compilerId === compilerId) { + this.compilerInfo.compilerName = compiler ? compiler.name : ''; + this.compilerInfo.editorId = editorId; + this.setTitle(); + if (compiler && !compiler.supportsGnatDebugViews) { + this.showGnatDebugTreeResults([{text: '<GNAT Debug Tree output is not supported for this compiler>'}]); + } + } + } + + showGnatDebugTreeResults(result: any[]): void { + if (!this.editor) return; + this.editor.getModel().setValue(result.length + ? _.pluck(result, 'text').join('\n') + : '<No GNAT Debug Tree generated>'); + + if (!this.isAwaitingInitialResults) { + if (this.selection) { + this.editor.setSelection(this.selection); + this.editor.revealLinesInCenter(this.selection.selectionStartLineNumber, + this.selection.endLineNumber); + } + this.isAwaitingInitialResults = true; + } + } + + override close(): void { + this.eventHub.unsubscribe(); + this.eventHub.emit('gnatDebugTreeViewClosed', this.compilerInfo.compilerId); + this.editor.dispose(); + } +} diff --git a/static/panes/ir-view.interfaces.ts b/static/panes/ir-view.interfaces.ts new file mode 100644 index 000000000..028bf3bd7 --- /dev/null +++ b/static/panes/ir-view.interfaces.ts @@ -0,0 +1,27 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +export interface IrState { + irOutput: any; +} diff --git a/static/panes/ir-view.js b/static/panes/ir-view.js deleted file mode 100644 index 80e27acd4..000000000 --- a/static/panes/ir-view.js +++ /dev/null @@ -1,347 +0,0 @@ -// Copyright (c) 2018, Compiler Explorer Authors -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - -'use strict'; - -var FontScale = require('../fontscale').FontScale; -var monaco = require('monaco-editor'); -var _ = require('underscore'); -var $ = require('jquery'); -var colour = require('../colour'); -var ga = require('../analytics').ga; -var monacoConfig = require('../monaco-config'); - -function Ir(hub, container, state) { - this.container = container; - this.eventHub = hub.createEventHub(); - this.domRoot = container.getElement(); - this.domRoot.html($('#ir').html()); - - this.decorations = {}; - this.prevDecorations = []; - var root = this.domRoot.find('.monaco-placeholder'); - - this.irEditor = monaco.editor.create(root[0], monacoConfig.extendConfig({ - language: 'llvm-ir', - readOnly: true, - glyphMargin: true, - lineNumbersMinChars: 3, - })); - - this._compilerid = state.id; - this._compilerName = state.compilerName; - this._editorid = state.editorid; - - this.awaitingInitialResults = false; - this.selection = state.selection; - - this.settings = {}; - - this.colours = []; - this.irCode = []; - - this.initButtons(state); - this.initCallbacks(); - this.initEditorActions(); - - if (state && state.irOutput) { - this.showIrResults(state.irOutput); - } - this.setTitle(); - - ga.proxy('send', { - hitType: 'event', - eventCategory: 'OpenViewPane', - eventAction: 'Ir', - }); -} - -Ir.prototype.initEditorActions = function () { - this.irEditor.addAction({ - id: 'viewsource', - label: 'Scroll to source', - keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.F10], - keybindingContext: null, - contextMenuGroupId: 'navigation', - contextMenuOrder: 1.5, - run: _.bind(function (ed) { - var desiredLine = ed.getPosition().lineNumber - 1; - var source = this.irCode[desiredLine].source; - if (source !== null && source.file === null) { - // a null file means it was the user's source - this.eventHub.emit('editorLinkLine', this._editorid, source.line, -1, -1, true); - } - }, this), - }); -}; - -Ir.prototype.initButtons = function (state) { - this.fontScale = new FontScale(this.domRoot, state, this.irEditor); - - this.topBar = this.domRoot.find('.top-bar'); -}; - -Ir.prototype.initCallbacks = function () { - this.linkedFadeTimeoutId = -1; - this.mouseMoveThrottledFunction = _.throttle(_.bind(this.onMouseMove, this), 50); - this.irEditor.onMouseMove(_.bind(function (e) { - this.mouseMoveThrottledFunction(e); - }, this)); - - this.cursorSelectionThrottledFunction = - _.throttle(_.bind(this.onDidChangeCursorSelection, this), 500); - this.irEditor.onDidChangeCursorSelection(_.bind(function (e) { - this.cursorSelectionThrottledFunction(e); - }, this)); - - this.fontScale.on('change', _.bind(this.updateState, this)); - - this.container.on('destroy', this.close, this); - - var onColoursOnCompile = this.eventHub.mediateDependentCalls(this.onColours, this.onCompileResponse); - - this.eventHub.on('compileResult', onColoursOnCompile.dependencyProxy, this); - this.eventHub.on('compiler', this.onCompiler, this); - this.eventHub.on('colours', onColoursOnCompile.dependentProxy, this); - this.eventHub.on('panesLinkLine', this.onPanesLinkLine, this); - this.eventHub.on('compilerClose', this.onCompilerClose, this); - this.eventHub.on('settingsChange', this.onSettingsChange, this); - this.eventHub.emit('irViewOpened', this._compilerid); - this.eventHub.emit('requestSettings'); - - this.container.on('resize', this.resize, this); - this.container.on('shown', this.resize, this); -}; - -// TODO: de-dupe with compiler etc -Ir.prototype.resize = function () { - var topBarHeight = this.topBar.outerHeight(true); - this.irEditor.layout({ - width: this.domRoot.width(), - height: this.domRoot.height() - topBarHeight, - }); -}; - -Ir.prototype.onCompileResponse = function (id, compiler, result) { - if (this._compilerid !== id) return; - if (result.hasIrOutput) { - this.showIrResults(result.irOutput); - } else if (compiler.supportsIrView) { - this.showIrResults([{text: '<No output>'}]); - } -}; - -Ir.prototype.getPaneName = function () { - return 'IR Viewer ' + this._compilerName + ' (Editor #' + this._editorid + ', Compiler #' + this._compilerid + ')'; -}; - -Ir.prototype.setTitle = function () { - this.container.setTitle(this.getPaneName()); -}; - -Ir.prototype.showIrResults = function (irCode) { - if (!this.irEditor) return; - this.irCode = irCode; - this.irEditor.getModel().setValue(irCode.length ? _.pluck(irCode, 'text').join('\n') : '<No IR generated>'); - - if (!this.awaitingInitialResults) { - if (this.selection) { - this.irEditor.setSelection(this.selection); - this.irEditor.revealLinesInCenter(this.selection.startLineNumber, - this.selection.endLineNumber); - } - this.awaitingInitialResults = true; - } -}; - -Ir.prototype.onCompiler = function (id, compiler, options, editorid) { - if (id === this._compilerid) { - this._compilerName = compiler ? compiler.name : ''; - this._editorid = editorid; - this.setTitle(); - if (compiler && !compiler.supportsIrView) { - this.irEditor.setValue('<IR output is not supported for this compiler>'); - } - } -}; - -Ir.prototype.onColours = function (id, colours, scheme) { - if (id === this._compilerid) { - var irColours = {}; - _.each(this.irCode, function (x, index) { - if (x.source && x.source.file === null && x.source.line > 0 && colours[x.source.line - 1] !== undefined) { - irColours[index] = colours[x.source.line - 1]; - } - }); - this.colours = colour.applyColours(this.irEditor, irColours, scheme, this.colours); - } -}; - -Ir.prototype.onCompilerClose = function (id) { - if (id === this._compilerid) { - // We can't immediately close as an outer loop somewhere in GoldenLayout is iterating over - // the hierarchy. We can't modify while it's being iterated over. - _.defer(function (self) { - self.container.close(); - }, this); - } -}; - -Ir.prototype.updateState = function () { - this.container.setState(this.currentState()); -}; - -Ir.prototype.currentState = function () { - var state = { - id: this._compilerid, - editorid: this._editorid, - selection: this.selection, - }; - this.fontScale.addState(state); - return state; -}; - -Ir.prototype.onCompilerClose = function (id) { - if (id === this._compilerid) { - // We can't immediately close as an outer loop somewhere in GoldenLayout is iterating over - // the hierarchy. We can't modify while it's being iterated over. - this.close(); - _.defer(function (self) { - self.container.close(); - }, this); - } -}; - -Ir.prototype.onSettingsChange = function (newSettings) { - this.settings = newSettings; - this.irEditor.updateOptions({ - contextmenu: newSettings.useCustomContextMenu, - minimap: { - enabled: newSettings.showMinimap, - }, - fontFamily: newSettings.editorsFFont, - fontLigatures: newSettings.editorsFLigatures, - }); -}; - -Ir.prototype.onMouseMove = function (e) { - if (e === null || e.target === null || e.target.position === null) return; - if (this.settings.hoverShowSource === true && this.irCode) { - this.clearLinkedLines(); - var hoverCode = this.irCode[e.target.position.lineNumber - 1]; - if (hoverCode) { - // We check that we actually have something to show at this point! - var sourceLine = -1; - var sourceColBegin = -1; - var sourceColEnd = -1; - if (hoverCode.source && !hoverCode.source.file) { - sourceLine = hoverCode.source.line; - if (hoverCode.source.column) { - sourceColBegin = hoverCode.source.column; - sourceColEnd = sourceColBegin; - } - } - this.eventHub.emit('editorLinkLine', this._editorid, sourceLine, sourceColBegin, sourceColEnd, false); - this.eventHub.emit('panesLinkLine', this._compilerid, - sourceLine, sourceColBegin, sourceColEnd, - false, this.getPaneName()); - } - } -}; - -Ir.prototype.onDidChangeCursorSelection = function (e) { - if (this.awaitingInitialResults) { - this.selection = e.selection; - this.updateState(); - } -}; - - -Ir.prototype.updateDecorations = function () { - this.prevDecorations = this.irEditor.deltaDecorations( - this.prevDecorations, _.flatten(_.values(this.decorations))); -}; - -Ir.prototype.clearLinkedLines = function () { - this.decorations.linkedCode = []; - this.updateDecorations(); -}; - -Ir.prototype.onPanesLinkLine = function (compilerId, lineNumber, colBegin, colEnd, revealLine, sender) { - if (Number(compilerId) === this._compilerid) { - var lineNums = []; - var directlyLinkedLineNums = []; - var signalFromAnotherPane = sender !== this.getPaneName(); - _.each(this.irCode, function (irLine, i) { - if (irLine.source && irLine.source.file === null && irLine.source.line === lineNumber) { - var line = i + 1; - lineNums.push(line); - var currentCol = irLine.source.column; - if (signalFromAnotherPane && currentCol && colBegin <= currentCol && currentCol <= colEnd) { - directlyLinkedLineNums.push(line); - } - } - }); - if (revealLine && lineNums[0]) this.irEditor.revealLineInCenter(lineNums[0]); - var lineClass = sender !== this.getPaneName() ? 'linked-code-decoration-line' : ''; - var linkedLineDecorations = _.map(lineNums, function (line) { - return { - range: new monaco.Range(line, 1, line, 1), - options: { - isWholeLine: true, - linesDecorationsClassName: 'linked-code-decoration-margin', - className: lineClass, - }, - }; - }); - var directlyLinkedLineDecorations = _.map(directlyLinkedLineNums, function (line) { - return { - range: new monaco.Range(line, 1, line, 1), - options: { - isWholeLine: true, - inlineClassName: 'linked-code-decoration-column', - }, - }; - }); - this.decorations.linkedCode = linkedLineDecorations.concat(directlyLinkedLineDecorations); - if (this.linkedFadeTimeoutId !== -1) { - clearTimeout(this.linkedFadeTimeoutId); - } - this.linkedFadeTimeoutId = setTimeout(_.bind(function () { - this.clearLinkedLines(); - this.linkedFadeTimeoutId = -1; - }, this), 5000); - this.updateDecorations(); - } -}; - -Ir.prototype.close = function () { - this.eventHub.unsubscribe(); - this.eventHub.emit('irViewClosed', this._compilerid); - this.irEditor.dispose(); -}; - -module.exports = { - Ir: Ir, -}; diff --git a/static/panes/ir-view.ts b/static/panes/ir-view.ts new file mode 100644 index 000000000..3c6791818 --- /dev/null +++ b/static/panes/ir-view.ts @@ -0,0 +1,279 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import _ from 'underscore'; +import * as monaco from 'monaco-editor'; +import { Container } from 'golden-layout'; + +import { Pane } from './pane'; +import { IrState } from './ir-view.interfaces'; +import { BasePaneState } from './pane.interfaces'; + +import { ga } from '../analytics'; +import { extendConfig } from '../monaco-config'; +import { applyColours } from '../colour'; + +export class Ir extends Pane<monaco.editor.IStandaloneCodeEditor, IrState> { + linkedFadeTimeoutId: number = -1; + irCode: any[] = []; + colours: any[] = []; + decorations: any = {}; + previousDecorations: string[] = []; + + constructor(hub: any, container: Container, state: IrState & BasePaneState) { + super(hub, container, state); + if (state && state.irOutput) { + this.showIrResults(state.irOutput); + } + } + + override getInitialHTML(): string { + return $('#ir').html(); + } + + override createEditor(editorRoot: HTMLElement): monaco.editor.IStandaloneCodeEditor { + return monaco.editor.create(editorRoot, extendConfig({ + language: 'llvm-ir', + readOnly: true, + glyphMargin: true, + lineNumbersMinChars: 3, + })); + } + + override registerOpeningAnalyticsEvent(): void { + ga.proxy('send', { + hitType: 'event', + eventCategory: 'OpenViewPane', + eventAction: 'Ir', + }); + } + + override getPaneName(): string { + return `LLVM IR Viewer ${this.compilerInfo.compilerName}` + + `(Editor #${this.compilerInfo.editorId}, ` + + `Compiler #${this.compilerInfo.compilerId})`; + } + + override registerEditorActions(): void { + this.editor.addAction({ + id: 'viewsource', + label: 'Scroll to source', + keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.F10], + contextMenuGroupId: 'navigation', + contextMenuOrder: 1.5, + run: (editor) => { + const desiredLine = editor.getPosition().lineNumber - 1; + const source = this.irCode[desiredLine].source; + if (source !== null && source.file !== null) { + this.eventHub.emit('editorLinkLine', this.compilerInfo.editorId, source.line, -1, -1, true); + } + }, + }); + } + + override registerCallbacks(): void { + const onMouseMove = _.throttle(this.onMouseMove.bind(this), 50); + const onDidChangeCursorSelection = _.throttle(this.onDidChangeCursorSelection.bind(this), 500); + const onColoursOnCompile = this.eventHub.mediateDependentCalls(this.onColours.bind(this), + this.onCompileResult.bind(this)); + + this.eventHub.on('compileResult', onColoursOnCompile.dependencyProxy, this); + this.eventHub.on('colours', onColoursOnCompile.dependentProxy, this); + this.eventHub.on('panesLinkLine', this.onPanesLinkLine.bind(this)); + + this.editor.onMouseMove((event) => onMouseMove(event)); + this.editor.onDidChangeCursorSelection((event) => onDidChangeCursorSelection(event)); + + this.eventHub.emit('irViewOpened', this.compilerInfo.compilerId); + this.eventHub.emit('requestSettings'); + } + + override onCompileResult(compilerId: number, compiler: any, result: any): void { + if (this.compilerInfo.compilerId !== compilerId) return; + if (result.hasIrOutput) { + this.showIrResults(result.irOutput); + } else if (compiler.supportsIrView) { + this.showIrResults([{text: '<No output>'}]); + } + } + + override onCompiler(compilerId: number, compiler: any, options: unknown, editorId: number): void { + if (this.compilerInfo.compilerId !== compilerId) return; + this.compilerInfo.compilerName = compiler ? compiler.name : ''; + this.compilerInfo.editorId = editorId; + this.setTitle(); + if (compiler && !compiler.supportsIrView) { + this.editor.setValue('<LLVM IR output is not supported for this compiler>'); + } + } + + showIrResults(result: any[]): void { + if (!this.editor) return; + this.irCode = result; + this.editor.getModel().setValue(result.length + ? _.pluck(result, 'text').join('\n') + : '<No LLVM IR generated>'); + + if (!this.isAwaitingInitialResults) { + if (this.selection) { + this.editor.setSelection(this.selection); + this.editor.revealLinesInCenter(this.selection.startLineNumber, + this.selection.endLineNumber); + } + this.isAwaitingInitialResults = true; + } + } + + onColours(compilerId: number, colours: any, scheme: any): void { + if (compilerId !== this.compilerInfo.compilerId) return; + const irColours: Record<number, number> = {}; + for (const [index, code] of this.irCode.entries()) { + if (code.source + && code.source.file === null + && code.source.line > 0 + && colours[code.source.line - 1] !== undefined) { + irColours[index] = colours[code.source.line - 1]; + } + } + this.colours = applyColours(this.editor, irColours, scheme, this.colours); + } + + onMouseMove(e: monaco.editor.IEditorMouseEvent): void { + if (e === null || e.target === null || e.target.position === null) return; + // TODO(supergrecko): Refactor base class to properly type this. + // @ts-expect-error mismatched types on this.settings + if (this.settings.hoverShowSource === true && this.irCode) { + this.clearLinkedLines(); + const hoverCode = this.irCode[e.target.position.lineNumber - 1]; + if (hoverCode) { + let sourceLine = -1; + let sourceColumnBegin = -1; + let sourceColumnEnd = -1; + + if (hoverCode.source && !hoverCode.source.file) { + sourceLine = hoverCode.source.line; + if (hoverCode.source.column) { + sourceColumnBegin = hoverCode.source.column; + sourceColumnEnd = sourceColumnBegin; + } + } + + this.eventHub.emit('editorLinkLine', this.compilerInfo.editorId, sourceLine, sourceColumnBegin, + sourceColumnEnd, false); + this.eventHub.emit('panesLinkLine', this.compilerInfo.compilerId, sourceLine, sourceColumnBegin, + sourceColumnEnd, false, this.getPaneName()); + } + } + } + + onPanesLinkLine( + compilerId: number, + lineNumber: number, + columnBegin: number, + columnEnd: number, + revealLinesInEditor: boolean, + sender: string, + ): void { + if (compilerId !== this.compilerInfo.compilerId) return; + const lineNumbers: number[] = []; + const directlyLinkedLineNumbers: number[] = []; + const isSignalFromAnotherPane = sender !== this.getPaneName(); + + for (const [index, irLine] of this.irCode.entries()) { + if (irLine.source && irLine.source.file === null && irLine.source.line === lineNumber) { + const line = index + 1; + const currentColumn = irLine.source.column; + lineNumbers.push(line); + if (isSignalFromAnotherPane + && currentColumn + && columnBegin <= currentColumn + && currentColumn <= columnEnd) { + directlyLinkedLineNumbers.push(line); + } + } + } + + if (revealLinesInEditor && lineNumbers[0]) { + // Just make sure that the mapped line is in view! + this.editor.revealLinesInCenter(lineNumbers[0], lineNumbers[0]); + } + + const lineClassName = isSignalFromAnotherPane ? 'linked-code-decoration-line' : ''; + const linkedLineDecorations: monaco.editor.IModelDeltaDecoration[] = lineNumbers.map((line) => ({ + range: new monaco.Range(line, 1, line, 1), + options: { + isWholeLine: true, + linesDecorationsClassName: 'linked-code-decoration-margin', + className: lineClassName, + }, + })); + const directlyLinkedLineDecorations: monaco.editor.IModelDeltaDecoration[] = + directlyLinkedLineNumbers.map((line) => ({ + range: new monaco.Range(line, 1, line, 1), + options: { + isWholeLine: true, + inlineClassName: 'linked-code-decoration-column', + }, + })); + this.decorations.linkedCode = [...linkedLineDecorations, ...directlyLinkedLineDecorations]; + + if (this.linkedFadeTimeoutId !== -1) { + clearTimeout(this.linkedFadeTimeoutId); + } + // @ts-expect-error mismatched type on setTimeout, assumes NodeJS.Timeout + this.linkedFadeTimeoutId = setTimeout(() => { + this.clearLinkedLines(); + this.linkedFadeTimeoutId = -1; + }, 5000); + this.updateDecorations(); + } + + updateDecorations(): void { + this.previousDecorations = this.editor.deltaDecorations( + this.previousDecorations, _.flatten(_.values(this.decorations))); + } + + clearLinkedLines(): void { + this.decorations.linkedCode = []; + this.updateDecorations(); + } + + /** LLVM IR View proxies some things in the standard callbacks */ + override registerStandardCallbacks(): void { + this.fontScale.on('change', this.updateState.bind(this)); + this.container.on('destroy', this.close.bind(this)); + this.container.on('resize', this.resize.bind(this)); + this.eventHub.on('compiler', this.onCompiler.bind(this)); + this.eventHub.on('compilerClose', this.onCompilerClose.bind(this)); + this.eventHub.on('settingsChange', this.onSettingsChange.bind(this)); + this.eventHub.on('shown', this.resize.bind(this)); + this.eventHub.on('resize', this.resize.bind(this)); + } + + override close(): void { + this.eventHub.unsubscribe(); + this.eventHub.emit('irViewClosed', this.compilerInfo.compilerId); + this.editor.dispose(); + } +} diff --git a/static/panes/opt-view.js b/static/panes/opt-view.js index 630892018..85ecebaa8 100644 --- a/static/panes/opt-view.js +++ b/static/panes/opt-view.js @@ -126,7 +126,7 @@ Opt.prototype.onCompileResult = function (id, compiler, result, lang) { // Monaco language id of the current editor Opt.prototype.getCurrentEditorLanguage = function () { - return this.optEditor.getModel().getModeId(); + return this.optEditor.getModel().getLanguageId(); }; Opt.prototype.getPaneName = function () { diff --git a/static/panes/rusthir-view.interfaces.ts b/static/panes/rusthir-view.interfaces.ts new file mode 100644 index 000000000..50c267387 --- /dev/null +++ b/static/panes/rusthir-view.interfaces.ts @@ -0,0 +1,27 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +export interface RustHirState { + rustHirOutput: any; +} diff --git a/static/panes/rusthir-view.ts b/static/panes/rusthir-view.ts new file mode 100644 index 000000000..f52ed5a35 --- /dev/null +++ b/static/panes/rusthir-view.ts @@ -0,0 +1,121 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import _ from 'underscore'; +import * as monaco from 'monaco-editor'; +import { Container } from 'golden-layout'; + +import { Pane } from './pane'; +import { BasePaneState } from './pane.interfaces'; +import { RustHirState } from './rusthir-view.interfaces'; + +import { ga } from '../analytics'; +import { extendConfig } from '../monaco-config'; + +export class RustHir extends Pane<monaco.editor.IStandaloneCodeEditor, RustHirState> { + constructor(hub: any, container: Container, state: RustHirState & BasePaneState) { + super(hub, container, state); + if (state && state.rustHirOutput) { + this.showRustHirResults(state.rustHirOutput); + } + } + + override getInitialHTML(): string { + return $('#rusthir').html(); + } + + override createEditor(editorRoot: HTMLElement): monaco.editor.IStandaloneCodeEditor { + return monaco.editor.create(editorRoot, extendConfig({ + language: 'plainText', + readOnly: true, + glyphMargin: true, + lineNumbersMinChars: 3, + })); + } + + override registerOpeningAnalyticsEvent(): void { + ga.proxy('send', { + hitType: 'event', + eventCategory: 'OpenViewPane', + eventAction: 'RustHir', + }); + } + + override getPaneName(): string { + return `Rust HIR Viewer ${this.compilerInfo.compilerName}` + + `(Editor #${this.compilerInfo.editorId}, ` + + `Compiler #${this.compilerInfo.compilerId})`; + } + + override registerCallbacks(): void { + const throttleFunction = _.throttle((event) => this.onDidChangeCursorSelection(event), 500); + this.editor.onDidChangeCursorSelection((event) => throttleFunction(event)); + this.eventHub.emit('rustHirViewOpened', this.compilerInfo.compilerId); + this.eventHub.emit('requestSettings'); + } + + override onCompileResult(compilerId: number, compiler: any, result: any): void { + if (this.compilerInfo.compilerId !== compilerId) return; + if (result.hasRustHirOutput) { + this.showRustHirResults(result.rustHirOutput); + } else if (compiler.supportsRustHirView) { + this.showRustHirResults([{text: '<No output>'}]); + } + } + + override onCompiler(compilerId: number, compiler: any, options: any, editorId: number): void { + if (this.compilerInfo.compilerId === compilerId) { + this.compilerInfo.compilerName = compiler ? compiler.name : ''; + this.compilerInfo.editorId = editorId; + this.setTitle(); + if (compiler && !compiler.supportsRustHirView) { + this.showRustHirResults([{ + text: '<Rust HIR output is not supported for this compiler>' + }]); + } + } + } + + showRustHirResults(result: any[]): void { + if (!this.editor) return; + this.editor.getModel().setValue(result.length + ? _.pluck(result, 'text').join('\n') + : '<No Rust HIR generated>'); + + if (!this.isAwaitingInitialResults) { + if (this.selection) { + this.editor.setSelection(this.selection); + this.editor.revealLinesInCenter(this.selection.selectionStartLineNumber, + this.selection.endLineNumber); + } + this.isAwaitingInitialResults = true; + } + } + + override close(): void { + this.eventHub.unsubscribe(); + this.eventHub.emit('rustHirViewClosed', this.compilerInfo.compilerId); + this.editor.dispose(); + } +} diff --git a/static/panes/tool.js b/static/panes/tool.js index ec8987d82..baf394efc 100644 --- a/static/panes/tool.js +++ b/static/panes/tool.js @@ -78,7 +78,7 @@ function Tool(hub, container, state) { language: 'text', fontFamily: 'courier new', lineNumbersMinChars: 5, - renderIndentGuides: false, + guides: false, })); this.fontScale = new FontScale(this.domRoot, state, '.content'); diff --git a/static/themes.js b/static/themes.js index 24fb87954..b67a6d283 100644 --- a/static/themes.js +++ b/static/themes.js @@ -49,6 +49,7 @@ monaco.editor.defineTheme('ce', { rules: [ { token: 'identifier.definition.cppx-blue', foreground: '008a00', fontStyle: 'bold' }, ], + colors: {}, }); monaco.editor.defineTheme('ce-dark', { @@ -57,6 +58,7 @@ monaco.editor.defineTheme('ce-dark', { rules: [ { token: 'identifier.definition.cppx-blue', foreground: '7c9c7c', fontStyle: 'bold' }, ], + colors: {}, }); function Themer(eventHub, initialSettings) { diff --git a/static/themes/dark-theme.scss b/static/themes/dark-theme.scss index 66b0cab21..b6a1f1258 100644 --- a/static/themes/dark-theme.scss +++ b/static/themes/dark-theme.scss @@ -136,14 +136,14 @@ a.navbar-brand img.logo.normal { color-stop(1.00, violet)); } -.ts-control.single .ts-input { +.ts-wrapper.single .ts-control { border: none; color: #f2f2f2 !important; background: #444 !important; text-shadow: none !important; } -.ts-control.single .ts-input:after { +.ts-wrapper.single .ts-control:after { border-color: #728690 transparent transparent transparent; } @@ -157,10 +157,10 @@ a.navbar-brand img.logo.normal { .ts-dropdown { color: #f2f2f2 !important; background-color: #303030 !important; - margin: 0 !important; + margin: 0 !important; } -.ts-control.single .ts-input.disabled { +.ts-wrapper.single .ts-control.disabled { color: #f2f2f2 !important; background-color: #383838 !important; } @@ -381,7 +381,7 @@ textarea.form-control { } .custom-select { - background-color: #818181 !important; + background-color: #76a1c8 !important; } kbd { diff --git a/static/tsconfig.json b/static/tsconfig.json index 47f099568..f65028e78 100644 --- a/static/tsconfig.json +++ b/static/tsconfig.json @@ -1,13 +1,3 @@ { - "compilerOptions": { - /* Module options */ - "target": "es5", - "rootDir": ".", - /* Code emitting options */ - "sourceMap": true, - "downlevelIteration": true, - "importHelpers": true, - /* Interoperability constraints */ - "esModuleInterop": true, - } + "extends": "../tsconfig.frontend.json" } diff --git a/test/.eslintrc.yml b/test/.eslintrc.yml index 234ab5f0e..99bf3a680 100644 --- a/test/.eslintrc.yml +++ b/test/.eslintrc.yml @@ -4,3 +4,5 @@ rules: max-len: off max-statements: off node/no-unpublished-import: off + unicorn/no-empty-file: off + unicorn/no-await-expression-member: off diff --git a/test/cfg-cases/cfg-gcc.binary.json b/test/cfg-cases/cfg-gcc.binary.json index beaf8c90c..3f6f176f1 100644 --- a/test/cfg-cases/cfg-gcc.binary.json +++ b/test/cfg-cases/cfg-gcc.binary.json @@ -5,20 +5,14 @@ "source": null }, { - "opcodes": [ - "85", - "ff" - ], + "opcodes": ["85", "ff"], "address": 4195280, "text": " test edi,edi", "source": 3, "links": null }, { - "opcodes": [ - "78", - "16" - ], + "opcodes": ["78", "16"], "address": 4195282, "text": " js 4003ea <main+0x1a>", "source": 3, @@ -31,85 +25,56 @@ ] }, { - "opcodes": [ - "83", - "c7", - "01" - ], + "opcodes": ["83", "c7", "01"], "address": 4195284, "text": " add edi,0x1", "source": 3, "links": null }, { - "opcodes": [ - "31", - "c0" - ], + "opcodes": ["31", "c0"], "address": 4195287, "text": " xor eax,eax", "source": 2, "links": null }, { - "opcodes": [ - "31", - "d2" - ], + "opcodes": ["31", "d2"], "address": 4195289, "text": " xor edx,edx", "source": 3, "links": null }, { - "opcodes": [ - "0f", - "1f", - "44", - "00", - "00" - ], + "opcodes": ["0f", "1f", "44", "00", "00"], "address": 4195291, "text": " nop DWORD PTR [rax+rax*1+0x0]", "source": 3, "links": null }, { - "opcodes": [ - "01", - "d0" - ], + "opcodes": ["01", "d0"], "address": 4195296, "text": " add eax,edx", "source": 4, "links": null }, { - "opcodes": [ - "83", - "c2", - "01" - ], + "opcodes": ["83", "c2", "01"], "address": 4195298, "text": " add edx,0x1", "source": 3, "links": null }, { - "opcodes": [ - "39", - "fa" - ], + "opcodes": ["39", "fa"], "address": 4195301, "text": " cmp edx,edi", "source": 3, "links": null }, { - "opcodes": [ - "75", - "f7" - ], + "opcodes": ["75", "f7"], "address": 4195303, "text": " jne 4003e0 <main+0x10>", "source": 3, @@ -122,39 +87,28 @@ ] }, { - "opcodes": [ - "c3" - ], + "opcodes": ["c3"], "address": 4195305, "text": " ret ", "source": 3, "links": null }, { - "opcodes": [ - "31", - "c0" - ], + "opcodes": ["31", "c0"], "address": 4195306, "text": " xor eax,eax", "source": 2, "links": null }, { - "opcodes": [ - "c3" - ], + "opcodes": ["c3"], "address": 4195308, "text": " ret ", "source": 9, "links": null }, { - "opcodes": [ - "0f", - "1f", - "00" - ], + "opcodes": ["0f", "1f", "00"], "address": 4195309, "text": " nop DWORD PTR [rax]", "source": 9, @@ -223,4 +177,4 @@ ] } } -}
\ No newline at end of file +} diff --git a/test/handlers/api-tests.js b/test/handlers/api-tests.js index 8bf1f4ea6..6c1757ba6 100644 --- a/test/handlers/api-tests.js +++ b/test/handlers/api-tests.js @@ -166,19 +166,6 @@ describe('API handling', () => { throw err; }); }); - it('should respond to ASM doc requests', () => { - return chai.request(app) - .get('/api/asm/MOV') - .set('Accept', 'application/json') - .then(res => { - res.should.have.status(200); - res.should.be.json; - res.body.found.should.be.true; - }) - .catch(err => { - throw err; - }); - }); it('should respond to JSON compilers requests with c++ filter', () => { return chai.request(app) .get('/api/compilers/c++') diff --git a/test/handlers/asm-docs-tests.js b/test/handlers/asm-docs-tests.js deleted file mode 100644 index 926b5e3dc..000000000 --- a/test/handlers/asm-docs-tests.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) 2017, Compiler Explorer Authors -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - -import express from 'express'; - -import { AsmDocsHandler } from '../../lib/handlers/asm-docs-api-amd64'; -import { chai } from '../utils'; - -describe('Assembly documents', () => { - let app; - - before(() => { - app = express(); - const handler = new AsmDocsHandler(); - app.use('/asm/:opcode', handler.handle.bind(handler)); - }); - - // We don't serve a 404 for unknown opcodes as it allows the not-an-opcode to be cached. - it('should respond with "unknown opcode" for unknown opcodes', () => { - return chai.request(app) - .get('/asm/NOTANOPCODE') - .then(res => { - res.should.have.status(200); - res.should.be.html; - res.text.should.equal('Unknown opcode'); - }) - .catch(function (err) { - throw err; - }); - }); - - it('should respond to text requests', () => { - return chai.request(app) - .get('/asm/mov') - .then(res => { - res.should.have.status(200); - res.should.be.html; - res.text.should.contain('Copies the second operand'); - }) - .catch(function (err) { - throw err; - }); - }); - - it('should respond to json requests', () => { - return chai.request(app) - .get('/asm/mov') - .set('Accept', 'application/json') - .then(res => { - res.should.have.status(200); - res.should.be.json; - res.body.found.should.equal(true); - res.body.result.html.should.contain('Copies the second operand'); - res.body.result.tooltip.should.contain('Copies the second operand'); - res.body.result.url.should.contain('www.felixcloutier.com'); - }) - .catch(function (err) { - throw err; - }); - }); - it('should respond to json for unknown opcodes', () => { - return chai.request(app) - .get('/asm/NOANOPCODE') - .set('Accept', 'application/json') - .then(res => { - res.should.have.status(200); - res.should.be.json; - res.body.found.should.equal(false); - }) - .catch(function (err) { - throw err; - }); - }); - - it('should handle at&t syntax', () => { - return chai.request(app) - .get('/asm/addq') - .then(res => { - res.should.have.status(200); - res.should.be.html; - res.text.should.contain('Adds the destination operand'); - }) - .catch(function (err) { - throw err; - }); - }); -}); diff --git a/test/handlers/asm-docs-tests-java.js b/test/handlers/assembly-documentation/6502-tests.js index 316e4f32f..83bf7cfd1 100644 --- a/test/handlers/asm-docs-tests-java.js +++ b/test/handlers/assembly-documentation/6502-tests.js @@ -24,63 +24,52 @@ import express from 'express'; -import { AsmDocsHandler } from '../../lib/handlers/asm-docs-api-java'; -import { chai } from '../utils'; +import { Mos6502DocumentationHandler } from '../../../lib/handlers/assembly-documentation/mos6502'; +import { chai } from '../../utils'; -describe('Assembly documents', () => { +describe('6502 assembly documentation', () => { let app; - before(() => { app = express(); - const handler = new AsmDocsHandler(); + const handler = new Mos6502DocumentationHandler(); app.use('/asm/:opcode', handler.handle.bind(handler)); }); - it('should respond with "unknown opcode" for unknown opcodes', () => { - return chai.request(app).get('/asm/NOTANOPCODE') + it('returns 404 for unknown opcodes', () => { + return chai.request(app).get('/asm/lda_oh_wait') .then(res => { - res.should.have.status(200); - res.should.be.html; - res.text.should.equal('Unknown opcode'); - }) - .catch(err => { throw err; }); + res.should.have.status(404); + res.should.be.json; + res.body.should.deep.equal({ error: 'Unknown opcode \'LDA_OH_WAIT\'' }); + }).catch(e => { throw e; }); }); - it('should respond to text requests', () => { - return chai.request(app) - .get('/asm/aaload') + it('responds to accept=text requests', () => { + return chai.request(app).get('/asm/lda') .then(res => { res.should.have.status(200); res.should.be.html; - res.text.should.contain('Load reference from array'); - }) - .catch(err => { throw err; }); + res.text.should.contain('data is transferred from memory to the accumulator'); + }).catch(e => { throw e; }); }); - it('should respond to json requests', () => { - return chai.request(app) - .get('/asm/aaload') + it('responds to accept=json requests', () => { + return chai.request(app).get('/asm/lda') .set('Accept', 'application/json') .then(res => { res.should.have.status(200); res.should.be.json; - res.body.found.should.equal(true); - res.body.result.html.should.contain('Load reference from array'); - res.body.result.tooltip.should.contain('Load reference from array'); - res.body.result.url.should.contain('https://docs.oracle.com/javase/specs/'); - }) - .catch(err => { throw err; }); + res.body.html.should.contain('data is transferred from memory to the accumulator'); + res.body.tooltip.should.contain('Load Accumulator with Memory'); + res.body.url.should.contain('https://www.pagetable.com/c64ref/6502/'); + }).catch(e => { throw e; }); }); - it('should respond to json for unknown opcodes', () => { - return chai.request(app) - .get('/asm/NOTANOPCODE') - .set('Accept', 'application/json') + it('should return 406 on bad accept type', () => { + return chai.request(app).get('/asm/lda') + .set('Accept', 'application/pdf') .then(res => { - res.should.have.status(200); - res.should.be.json; - res.body.found.should.equal(false); - }) - .catch(err => { throw err; }); + res.should.have.status(406); + }).catch(e => { throw e; }); }); }); diff --git a/test/handlers/assembly-documentation/amd64-tests.js b/test/handlers/assembly-documentation/amd64-tests.js new file mode 100644 index 000000000..78945d45a --- /dev/null +++ b/test/handlers/assembly-documentation/amd64-tests.js @@ -0,0 +1,85 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import express from 'express'; + +import { Amd64DocumentationHandler } from '../../../lib/handlers/assembly-documentation/amd64'; +import { chai } from '../../utils'; + +describe('amd64 assembly documentation', () => { + let app; + before(() => { + app = express(); + const handler = new Amd64DocumentationHandler(); + app.use('/asm/:opcode', handler.handle.bind(handler)); + }); + + it('returns 404 for unknown opcodes', () => { + return chai.request(app).get('/asm/mov_oh_wait') + .then(res => { + res.should.have.status(404); + res.should.be.json; + res.body.should.deep.equal({ error: 'Unknown opcode \'MOV_OH_WAIT\'' }); + }).catch(e => { throw e; }); + }); + + it('responds to accept=text requests', () => { + return chai.request(app).get('/asm/mov') + .then(res => { + res.should.have.status(200); + res.should.be.html; + res.text.should.contain('Copies the second operand'); + }).catch(e => { throw e; }); + }); + + it('responds to accept=json requests', () => { + return chai.request(app).get('/asm/mov') + .set('Accept', 'application/json') + .then(res => { + res.should.have.status(200); + res.should.be.json; + res.body.html.should.contain('Copies the second operand'); + res.body.tooltip.should.contain('Copies the second operand'); + res.body.url.should.contain('www.felixcloutier.com'); + }).catch(e => { throw e; }); + }); + + it('should return 406 on bad accept type', () => { + return chai.request(app).get('/asm/mov') + .set('Accept', 'application/pdf') + .then(res => { + res.should.have.status(406); + }).catch(e => { throw e; }); + }); + + it('should handle at&t syntax', () => { + return chai.request(app) + .get('/asm/addq') + .then(res => { + res.should.have.status(200); + res.should.be.html; + res.text.should.contain('Adds the destination operand'); + }).catch(e => { throw e; }); + }); +}); diff --git a/test/handlers/assembly-documentation/api-tests.js b/test/handlers/assembly-documentation/api-tests.js new file mode 100644 index 000000000..8b617d483 --- /dev/null +++ b/test/handlers/assembly-documentation/api-tests.js @@ -0,0 +1,73 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import express, { Router } from 'express'; + +import { setup } from '../../../lib/handlers/assembly-documentation/router'; +import { chai } from '../../utils'; + +describe('Assembly Documentation API', () => { + let app; + + before(() => { + app = express(); + /** @type {e.Router} */ + const router = Router(); + setup(router); + app.use('/api', router); + }); + + it('should accept requests to the api', () => { + return chai.request(app) + .get('/api/asm/amd64/mov') + .set('Accept', 'application/json') + .then(res => { + res.should.have.status(200); + res.should.be.json; + }) + .catch(err => { + throw err; + }); + }); + + it('should return opcode not found', () => { + return chai.request(app).get('/api/asm/amd64/notexistingop') + .set('Accept', 'application/json') + .then((res) => { + res.should.have.status(404); + res.should.be.json; + res.body.should.deep.equals({ error: `Unknown opcode 'NOTEXISTINGOP'` }); + }).catch(e => { throw e; }); + }); + + it('should return architecture not found', () => { + return chai.request(app).get('/api/asm/notarch/mov') + .set('Accept', 'application/json') + .then((res) => { + res.should.have.status(404); + res.should.be.json; + res.body.should.deep.equals({ error: `No documentation for 'notarch'` }); + }).catch(e => { throw e; }); + }); +}); diff --git a/test/handlers/asm-docs-tests-arm32.js b/test/handlers/assembly-documentation/arm32-tests.js index db6a9fdb5..899e28e38 100644 --- a/test/handlers/asm-docs-tests-arm32.js +++ b/test/handlers/assembly-documentation/arm32-tests.js @@ -24,73 +24,53 @@ import express from 'express'; -import { AsmDocsHandler } from '../../lib/handlers/asm-docs-api-arm32'; -import { chai } from '../utils'; +import { Arm32DocumentationHandler } from '../../../lib/handlers/assembly-documentation/arm32'; +import { chai } from '../../utils'; -describe('Assembly documents', () => { +describe('arm32 assembly documentation', () => { let app; - before(() => { app = express(); - const handler = new AsmDocsHandler(); + const handler = new Arm32DocumentationHandler(); app.use('/asm/:opcode', handler.handle.bind(handler)); }); - // We don't serve a 404 for unknown opcodes as it allows the not-an-opcode to be cached. - it('should respond with "unknown opcode" for unknown opcodes', () => { - return chai.request(app) - .get('/asm/NOTANOPCODE') + it('returns 404 for unknown opcodes', () => { + return chai.request(app).get('/asm/mov_oh_wait') .then(res => { - res.should.have.status(200); - res.should.be.html; - res.text.should.equal('Unknown opcode'); - }) - .catch(function (err) { - throw err; - }); + res.should.have.status(404); + res.should.be.json; + res.body.should.deep.equal({ error: 'Unknown opcode \'MOV_OH_WAIT\'' }); + }).catch(e => { throw e; }); }); - it('should respond to text requests', () => { - return chai.request(app) - .get('/asm/mov') + it('responds to accept=text requests', () => { + return chai.request(app).get('/asm/mov') .then(res => { res.should.have.status(200); res.should.be.html; res.text.should.contain('writes an immediate value to the destination register'); - }) - .catch(function (err) { - throw err; - }); + }).catch(e => { throw e; }); }); - it('should respond to json requests', () => { - return chai.request(app) - .get('/asm/mov') + it('responds to accept=json requests', () => { + return chai.request(app).get('/asm/mov') .set('Accept', 'application/json') .then(res => { res.should.have.status(200); res.should.be.json; - res.body.found.should.equal(true); - res.body.result.html.should.contain('writes an immediate value'); - res.body.result.tooltip.should.contain('writes an immediate value'); - res.body.result.url.should.contain('https://developer.arm.com/documentation/'); - }) - .catch(function (err) { - throw err; - }); + res.body.html.should.contain('writes an immediate value'); + res.body.tooltip.should.contain('writes an immediate value'); + res.body.url.should.contain('https://developer.arm.com/documentation/'); + }).catch(e => { throw e; }); }); - it('should respond to json for unknown opcodes', () => { - return chai.request(app) - .get('/asm/NOANOPCODE') - .set('Accept', 'application/json') + + it('should return 406 on bad accept type', () => { + return chai.request(app).get('/asm/mov') + .set('Accept', 'application/pdf') .then(res => { - res.should.have.status(200); - res.should.be.json; - res.body.found.should.equal(false); - }) - .catch(function (err) { - throw err; - }); + res.should.have.status(406); + }).catch(e => { throw e; }); }); it('should handle opcodes with a conditional type suffix that are not conditionals', () => { @@ -100,10 +80,7 @@ describe('Assembly documents', () => { res.should.have.status(200); res.should.be.html; res.text.should.contain('adds an immediate value and the Carry flag'); - }) - .catch(function (err) { - throw err; - }); + }).catch(e => { throw e; }); }); it('should handle conditional opcodes', () => { @@ -113,23 +90,16 @@ describe('Assembly documents', () => { res.should.have.status(200); res.should.be.html; res.text.should.contain('If equal, <p>Branch causes a branch'); - }) - .catch(function (err) { - throw err; - }); + }).catch(e => { throw e; }); }); it('should respond with "unknown opcode" for unknown opcodes that can be parsed as conditional', () => { return chai.request(app) .get('/asm/jne') .then(res => { - res.should.have.status(200); - res.should.be.html; - res.text.should.equal('Unknown opcode'); - }) - .catch(function (err) { - throw err; - }); + res.should.have.status(404); + res.should.be.json; + res.body.should.deep.equal({ error: 'Unknown opcode \'JNE\'' }); + }).catch(e => { throw e; }); }); - }); diff --git a/test/handlers/assembly-documentation/java-tests.js b/test/handlers/assembly-documentation/java-tests.js new file mode 100644 index 000000000..09b7ba4b9 --- /dev/null +++ b/test/handlers/assembly-documentation/java-tests.js @@ -0,0 +1,75 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import express from 'express'; + +import { JavaDocumentationHandler } from '../../../lib/handlers/assembly-documentation/java'; +import { chai } from '../../utils'; + +describe('jvm assembly documentation', () => { + let app; + before(() => { + app = express(); + const handler = new JavaDocumentationHandler(); + app.use('/asm/:opcode', handler.handle.bind(handler)); + }); + + it('returns 404 for unknown opcodes', () => { + return chai.request(app).get('/asm/mov_oh_wait') + .then(res => { + res.should.have.status(404); + res.should.be.json; + res.body.should.deep.equal({ error: 'Unknown opcode \'MOV_OH_WAIT\'' }); + }).catch(e => { throw e; }); + }); + + it('responds to accept=text requests', () => { + return chai.request(app).get('/asm/iload_0') + .then(res => { + res.should.have.status(200); + res.should.be.html; + res.text.should.contain('Load int from local variable'); + }).catch(e => { throw e; }); + }); + + it('responds to accept=json requests', () => { + return chai.request(app).get('/asm/iload_0') + .set('Accept', 'application/json') + .then(res => { + res.should.have.status(200); + res.should.be.json; + res.body.html.should.contain('Load int from local variable'); + res.body.tooltip.should.contain('Load int from local variable'); + res.body.url.should.contain('https://docs.oracle.com/javase/specs/jvms/se16/html/'); + }).catch(e => { throw e; }); + }); + + it('should return 406 on bad accept type', () => { + return chai.request(app).get('/asm/iload_0') + .set('Accept', 'application/pdf') + .then(res => { + res.should.have.status(406); + }).catch(e => { throw e; }); + }); +}); diff --git a/test/handlers/compile-tests.js b/test/handlers/compile-tests.js index d1ec19b3e..2357596be 100644 --- a/test/handlers/compile-tests.js +++ b/test/handlers/compile-tests.js @@ -244,7 +244,7 @@ describe('Compiler tests', () => { code: 0, input: { backendOptions: {}, - filters: [], + filters: {}, options: [], source: 'I am a program', }, diff --git a/test/state/andthekitchensink.json b/test/state/andthekitchensink.json index 73b4234d9..48384f3df 100644 --- a/test/state/andthekitchensink.json +++ b/test/state/andthekitchensink.json @@ -1,264 +1,264 @@ { - "settings": { - "hasHeaders": true, - "constrainDragToContainer": false, - "reorderEnabled": true, - "selectionEnabled": false, - "popoutWholeStack": false, - "blockedPopoutsThrowError": true, - "closePopoutsOnUnload": true, - "showPopoutIcon": false, - "showMaximiseIcon": true, - "showCloseIcon": true, - "responsiveMode": "onload", - "tabOverlapAllowance": 0, - "reorderOnTabMenuClick": true, - "tabControlOffset": 10 - }, - "dimensions": { - "borderWidth": 5, - "borderGrabWidth": 15, - "minItemHeight": 10, - "minItemWidth": 10, - "headerHeight": 20, - "dragProxyWidth": 300, - "dragProxyHeight": 200 - }, - "labels": { - "close": "close", - "maximise": "maximise", - "minimise": "minimise", - "popout": "open in new window", - "popin": "pop in", - "tabDropdown": "additional tabs" - }, - "content": [ + "settings": { + "hasHeaders": true, + "constrainDragToContainer": false, + "reorderEnabled": true, + "selectionEnabled": false, + "popoutWholeStack": false, + "blockedPopoutsThrowError": true, + "closePopoutsOnUnload": true, + "showPopoutIcon": false, + "showMaximiseIcon": true, + "showCloseIcon": true, + "responsiveMode": "onload", + "tabOverlapAllowance": 0, + "reorderOnTabMenuClick": true, + "tabControlOffset": 10 + }, + "dimensions": { + "borderWidth": 5, + "borderGrabWidth": 15, + "minItemHeight": 10, + "minItemWidth": 10, + "headerHeight": 20, + "dragProxyWidth": 300, + "dragProxyHeight": 200 + }, + "labels": { + "close": "close", + "maximise": "maximise", + "minimise": "minimise", + "popout": "open in new window", + "popin": "pop in", + "tabDropdown": "additional tabs" + }, + "content": [ + { + "type": "row", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "content": [ { - "type": "row", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "content": [ - { - "type": "stack", - "width": 12.500000000000004, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 1, - "source": "\ntemplate<typename T>\nconcept TheSameAndAddable = requires(T a, T b) {\n {a+b} -> T;\n};\n\ntemplate<TheSameAndAddable T>\nT sum(T x, T y) {\n return x + y;\n}\n\n#include <string>\n\nint main() {\n int z = 0;\n int w;\n\n return sum(z, w);\n}\n", - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "C++ source #1" - } - ] - }, - { - "type": "stack", - "width": 14.915966386554626, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "compiler": "clang_concepts", - "source": 1, - "options": "-std=c++1z -Wuninitialized -O3", - "filters": { - "binary": false, - "execute": false, - "labels": true, - "directives": true, - "commentOnly": true, - "trim": false, - "intel": true, - "demangle": true - }, - "wantOptInfo": true, - "libs": [], - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 clang (experimental concepts) (Editor #1, Compiler #1) C++" - } - ] - }, - { - "type": "stack", - "width": 10.08403361344538, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "output", - "componentState": { - "compiler": 1, - "editor": 1, - "wrap": false - }, - "isClosable": true, - "reorderEnabled": true, - "title": "#1 with x86-64 clang (experimental concepts)" - } - ] - }, - { - "type": "stack", - "width": 12.500000000000004, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "ast", - "componentState": { - "id": 1, - "source": "\ntemplate<typename T>\nconcept TheSameAndAddable = requires(T a, T b) {\n {a+b} -> T;\n};\n\ntemplate<TheSameAndAddable T>\nT sum(T x, T y) {\n return x + y;\n}\n\n#include <string>\n\nint main() {\n int z = 0;\n int w;\n\n return sum(z, w);\n}\n", - "compilerName": "x86-64 clang (experimental concepts)", - "editorid": 1 - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 clang (experimental concepts) Ast Viewer (Editor #1, Compiler #1)" - } - ] - }, - { - "type": "stack", - "width": 5.507131537242474, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "opt", - "componentState": { - "id": 1, - "source": "\ntemplate<typename T>\nconcept TheSameAndAddable = requires(T a, T b) {\n {a+b} -> T;\n};\n\ntemplate<TheSameAndAddable T>\nT sum(T x, T y) {\n return x + y;\n}\n\n#include <string>\n\nint main() {\n int z = 0;\n int w;\n\n return sum(z, w);\n}\n", - "compilerName": "x86-64 clang (experimental concepts)", - "editorid": 1 - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 clang (experimental concepts) Opt Viewer (Editor #1, Compiler #1)" - } - ] - }, - { - "type": "stack", - "width": 15.27879391130244, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "cfg", - "componentState": { - "id": 1, - "editorid": 1, - "selectedFn": "main: ", - "pos": { - "x": 31.664837339408276, - "y": -134.74509810060746 - }, - "scale": 0.9914309396855399, - "options": { - "navigation": true, - "physics": false - } - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 clang (experimental concepts) Graph Viewer (Editor #1, Compiler #1)" - } - ] + "type": "stack", + "width": 12.500000000000004, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 1, + "source": "\ntemplate<typename T>\nconcept TheSameAndAddable = requires(T a, T b) {\n {a+b} -> T;\n};\n\ntemplate<TheSameAndAddable T>\nT sum(T x, T y) {\n return x + y;\n}\n\n#include <string>\n\nint main() {\n int z = 0;\n int w;\n\n return sum(z, w);\n}\n", + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "C++ source #1" + } + ] + }, + { + "type": "stack", + "width": 14.915966386554626, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "compiler", + "componentState": { + "compiler": "clang_concepts", + "source": 1, + "options": "-std=c++1z -Wuninitialized -O3", + "filters": { + "binary": false, + "execute": false, + "labels": true, + "directives": true, + "commentOnly": true, + "trim": false, + "intel": true, + "demangle": true }, - { - "type": "stack", - "width": 16.71407455145509, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "compiler": "g82", - "source": 1, - "options": "", - "filters": { - "binary": false, - "execute": false, - "labels": true, - "directives": true, - "commentOnly": true, - "trim": false, - "intel": true, - "demangle": true - }, - "libs": [], - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 gcc 8.2 (Editor #1, Compiler #2) C++" - } - ] + "wantOptInfo": true, + "libs": [], + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 clang (experimental concepts) (Editor #1, Compiler #1) C++" + } + ] + }, + { + "type": "stack", + "width": 10.08403361344538, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "output", + "componentState": { + "compiler": 1, + "editor": 1, + "wrap": false + }, + "isClosable": true, + "reorderEnabled": true, + "title": "#1 with x86-64 clang (experimental concepts)" + } + ] + }, + { + "type": "stack", + "width": 12.500000000000004, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "ast", + "componentState": { + "id": 1, + "source": "\ntemplate<typename T>\nconcept TheSameAndAddable = requires(T a, T b) {\n {a+b} -> T;\n};\n\ntemplate<TheSameAndAddable T>\nT sum(T x, T y) {\n return x + y;\n}\n\n#include <string>\n\nint main() {\n int z = 0;\n int w;\n\n return sum(z, w);\n}\n", + "compilerName": "x86-64 clang (experimental concepts)", + "editorid": 1 + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 clang (experimental concepts) Ast Viewer (Editor #1, Compiler #1)" + } + ] + }, + { + "type": "stack", + "width": 5.507131537242474, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "opt", + "componentState": { + "id": 1, + "source": "\ntemplate<typename T>\nconcept TheSameAndAddable = requires(T a, T b) {\n {a+b} -> T;\n};\n\ntemplate<TheSameAndAddable T>\nT sum(T x, T y) {\n return x + y;\n}\n\n#include <string>\n\nint main() {\n int z = 0;\n int w;\n\n return sum(z, w);\n}\n", + "compilerName": "x86-64 clang (experimental concepts)", + "editorid": 1 + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 clang (experimental concepts) Opt Viewer (Editor #1, Compiler #1)" + } + ] + }, + { + "type": "stack", + "width": 15.27879391130244, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "cfg", + "componentState": { + "id": 1, + "editorid": 1, + "selectedFn": "main: ", + "pos": { + "x": 31.664837339408276, + "y": -134.74509810060746 }, - { - "type": "stack", - "width": 12.5, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "gccdump", - "componentState": { - "_compilerid": 2, - "_editorid": 1, - "selectedPass": "004t.gimple", - "treeDump": true, - "rtlDump": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 gcc 8.2 GCC Tree/RTL Viewer (Editor #1, Compiler #2)" - } - ] + "scale": 0.9914309396855399, + "options": { + "navigation": true, + "physics": false } - ] + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 clang (experimental concepts) Graph Viewer (Editor #1, Compiler #1)" + } + ] + }, + { + "type": "stack", + "width": 16.71407455145509, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "compiler", + "componentState": { + "compiler": "g82", + "source": 1, + "options": "", + "filters": { + "binary": false, + "execute": false, + "labels": true, + "directives": true, + "commentOnly": true, + "trim": false, + "intel": true, + "demangle": true + }, + "libs": [], + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 gcc 8.2 (Editor #1, Compiler #2) C++" + } + ] + }, + { + "type": "stack", + "width": 12.5, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "gccdump", + "componentState": { + "_compilerid": 2, + "_editorid": 1, + "selectedPass": "004t.gimple", + "treeDump": true, + "rtlDump": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 gcc 8.2 GCC Tree/RTL Viewer (Editor #1, Compiler #2)" + } + ] } - ], - "isClosable": true, - "reorderEnabled": true, - "title": "", - "openPopouts": [], - "maximisedItemId": null -}
\ No newline at end of file + ] + } + ], + "isClosable": true, + "reorderEnabled": true, + "title": "", + "openPopouts": [], + "maximisedItemId": null +} diff --git a/test/state/bug-2231.json b/test/state/bug-2231.json index 5ed8bbe23..3110ebcae 100644 --- a/test/state/bug-2231.json +++ b/test/state/bug-2231.json @@ -1,63 +1,61 @@ { - "sessions": [ + "sessions": [ + { + "id": 1, + "language": "c++", + "source": "#include <Groundfloor/Atoms/Defines.h>\n#include <cstdio>\n\nint main() {\n const char crlf[] = GFNATIVENEXTLINE;\n\n printf(\"hello%s\", crlf);\n return 46;\n}\n\n\n", + "conformanceview": false, + "compilers": [ { - "id": 1, - "language": "c++", - "source": "#include <Groundfloor/Atoms/Defines.h>\n#include <cstdio>\n\nint main() {\n const char crlf[] = GFNATIVENEXTLINE;\n\n printf(\"hello%s\", crlf);\n return 46;\n}\n\n\n", - "conformanceview": false, - "compilers": [ - { - "id": "vc2017_64", - "options": "", - "filters": { - "binary": true, - "commentOnly": false, - "demangle": false, - "directives": false, - "execute": false, - "intel": true, - "labels": false, - "trim": false - }, - "libs": [ - { - "name": "openssl", - "ver": "111c" - }, - { - "name": "crosscables", - "ver": "trunk" - } - ], - "specialoutputs": [], - "tools": [] - }, - { - "id": "", - "options": "", - "filters": { - "binary": false, - "commentOnly": true, - "demangle": true, - "directives": true, - "execute": false, - "intel": true, - "labels": true, - "trim": false - }, - "libs": [], - "specialoutputs": [ - "compilerOutput" - ], - "tools": [ - { - "id": "strings", - "args": "" - } - ] - } - ], - "executors": [] + "id": "vc2017_64", + "options": "", + "filters": { + "binary": true, + "commentOnly": false, + "demangle": false, + "directives": false, + "execute": false, + "intel": true, + "labels": false, + "trim": false + }, + "libs": [ + { + "name": "openssl", + "ver": "111c" + }, + { + "name": "crosscables", + "ver": "trunk" + } + ], + "specialoutputs": [], + "tools": [] + }, + { + "id": "", + "options": "", + "filters": { + "binary": false, + "commentOnly": true, + "demangle": true, + "directives": true, + "execute": false, + "intel": true, + "labels": true, + "trim": false + }, + "libs": [], + "specialoutputs": ["compilerOutput"], + "tools": [ + { + "id": "strings", + "args": "" + } + ] } - ] -}
\ No newline at end of file + ], + "executors": [] + } + ] +} diff --git a/test/state/conformanceview.json b/test/state/conformanceview.json index a89e35af6..da5c80237 100644 --- a/test/state/conformanceview.json +++ b/test/state/conformanceview.json @@ -1,206 +1,206 @@ { - "settings": { - "hasHeaders": true, - "constrainDragToContainer": false, - "reorderEnabled": true, - "selectionEnabled": false, - "popoutWholeStack": false, - "blockedPopoutsThrowError": true, - "closePopoutsOnUnload": true, - "showPopoutIcon": false, - "showMaximiseIcon": true, - "showCloseIcon": true, - "responsiveMode": "onload", - "tabOverlapAllowance": 0, - "reorderOnTabMenuClick": true, - "tabControlOffset": 10 - }, - "dimensions": { - "borderWidth": 5, - "borderGrabWidth": 15, - "minItemHeight": 10, - "minItemWidth": 10, - "headerHeight": 20, - "dragProxyWidth": 300, - "dragProxyHeight": 200 - }, - "labels": { - "close": "close", - "maximise": "maximise", - "minimise": "minimise", - "popout": "open in new window", - "popin": "pop in", - "tabDropdown": "additional tabs" - }, - "content": [ + "settings": { + "hasHeaders": true, + "constrainDragToContainer": false, + "reorderEnabled": true, + "selectionEnabled": false, + "popoutWholeStack": false, + "blockedPopoutsThrowError": true, + "closePopoutsOnUnload": true, + "showPopoutIcon": false, + "showMaximiseIcon": true, + "showCloseIcon": true, + "responsiveMode": "onload", + "tabOverlapAllowance": 0, + "reorderOnTabMenuClick": true, + "tabControlOffset": 10 + }, + "dimensions": { + "borderWidth": 5, + "borderGrabWidth": 15, + "minItemHeight": 10, + "minItemWidth": 10, + "headerHeight": 20, + "dragProxyWidth": 300, + "dragProxyHeight": 200 + }, + "labels": { + "close": "close", + "maximise": "maximise", + "minimise": "minimise", + "popout": "open in new window", + "popin": "pop in", + "tabDropdown": "additional tabs" + }, + "content": [ + { + "type": "row", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "content": [ { - "type": "row", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "content": [ - { - "type": "stack", - "width": 20, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 1, - "source": "// Type your code here, or load an example.\r\nint square(int num) {\r\n return num * num;\r\n}", - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "C++ source #1" - } - ] - }, - { - "type": "stack", - "width": 20, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "compiler": "vc2017_64", - "source": 1, - "options": "", - "filters": { - "binary": false, - "execute": false, - "labels": true, - "directives": true, - "commentOnly": true, - "trim": false, - "intel": true, - "demangle": true - }, - "libs": [], - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "VC 2017 amd64 (Editor #1, Compiler #1) C++" - } - ] + "type": "stack", + "width": 20, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 1, + "source": "// Type your code here, or load an example.\r\nint square(int num) {\r\n return num * num;\r\n}", + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "C++ source #1" + } + ] + }, + { + "type": "stack", + "width": 20, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "compiler", + "componentState": { + "compiler": "vc2017_64", + "source": 1, + "options": "", + "filters": { + "binary": false, + "execute": false, + "labels": true, + "directives": true, + "commentOnly": true, + "trim": false, + "intel": true, + "demangle": true }, - { - "type": "stack", - "width": 20, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "conformance", - "componentState": { - "editorid": 1, - "langId": "c++", - "compilers": [ - { - "compilerId": "vc2017_32", - "options": "-O3" - }, - { - "compilerId": "vc2017_64", - "options": "-O2" - } - ], - "libs": [] - }, - "isClosable": true, - "reorderEnabled": true, - "title": "Conformance viewer (Editor #1) 2/10" - } - ] + "libs": [], + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "VC 2017 amd64 (Editor #1, Compiler #1) C++" + } + ] + }, + { + "type": "stack", + "width": 20, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "conformance", + "componentState": { + "editorid": 1, + "langId": "c++", + "compilers": [ + { + "compilerId": "vc2017_32", + "options": "-O3" + }, + { + "compilerId": "vc2017_64", + "options": "-O2" + } + ], + "libs": [] + }, + "isClosable": true, + "reorderEnabled": true, + "title": "Conformance viewer (Editor #1) 2/10" + } + ] + }, + { + "type": "stack", + "width": 20, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "compiler", + "componentState": { + "compiler": "vc2017_32", + "source": 1, + "options": "-O3", + "filters": { + "binary": false, + "execute": false, + "labels": true, + "directives": true, + "commentOnly": true, + "trim": false, + "intel": true, + "demangle": true }, - { - "type": "stack", - "width": 20, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "compiler": "vc2017_32", - "source": 1, - "options": "-O3", - "filters": { - "binary": false, - "execute": false, - "labels": true, - "directives": true, - "commentOnly": true, - "trim": false, - "intel": true, - "demangle": true - }, - "libs": [], - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "VC 2017 x86 (Editor #1, Compiler #2) C++" - } - ] + "libs": [], + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "VC 2017 x86 (Editor #1, Compiler #2) C++" + } + ] + }, + { + "type": "stack", + "width": 20, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "compiler", + "componentState": { + "compiler": "vc2017_64", + "source": 1, + "options": "-O2", + "filters": { + "binary": false, + "execute": false, + "labels": true, + "directives": true, + "commentOnly": true, + "trim": false, + "intel": true, + "demangle": true }, - { - "type": "stack", - "width": 20, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "compiler": "vc2017_64", - "source": 1, - "options": "-O2", - "filters": { - "binary": false, - "execute": false, - "labels": true, - "directives": true, - "commentOnly": true, - "trim": false, - "intel": true, - "demangle": true - }, - "libs": [], - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "VC 2017 amd64 (Editor #1, Compiler #3) C++" - } - ] - } - ] + "libs": [], + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "VC 2017 amd64 (Editor #1, Compiler #3) C++" + } + ] } - ], - "isClosable": true, - "reorderEnabled": true, - "title": "", - "openPopouts": [], - "maximisedItemId": null -}
\ No newline at end of file + ] + } + ], + "isClosable": true, + "reorderEnabled": true, + "title": "", + "openPopouts": [], + "maximisedItemId": null +} diff --git a/test/state/executor.json b/test/state/executor.json index ec46d6f69..0c8ef1584 100644 --- a/test/state/executor.json +++ b/test/state/executor.json @@ -1,142 +1,142 @@ { - "settings": { - "hasHeaders": true, - "constrainDragToContainer": false, - "reorderEnabled": true, - "selectionEnabled": false, - "popoutWholeStack": false, - "blockedPopoutsThrowError": true, - "closePopoutsOnUnload": true, - "showPopoutIcon": false, - "showMaximiseIcon": true, - "showCloseIcon": true, - "responsiveMode": "onload", - "tabOverlapAllowance": 0, - "reorderOnTabMenuClick": true, - "tabControlOffset": 10 - }, - "dimensions": { - "borderWidth": 5, - "borderGrabWidth": 15, - "minItemHeight": 10, - "minItemWidth": 10, - "headerHeight": 20, - "dragProxyWidth": 300, - "dragProxyHeight": 200 - }, - "labels": { - "close": "close", - "maximise": "maximise", - "minimise": "minimise", - "popout": "open in new window", - "popin": "pop in", - "tabDropdown": "additional tabs" - }, - "content": [ + "settings": { + "hasHeaders": true, + "constrainDragToContainer": false, + "reorderEnabled": true, + "selectionEnabled": false, + "popoutWholeStack": false, + "blockedPopoutsThrowError": true, + "closePopoutsOnUnload": true, + "showPopoutIcon": false, + "showMaximiseIcon": true, + "showCloseIcon": true, + "responsiveMode": "onload", + "tabOverlapAllowance": 0, + "reorderOnTabMenuClick": true, + "tabControlOffset": 10 + }, + "dimensions": { + "borderWidth": 5, + "borderGrabWidth": 15, + "minItemHeight": 10, + "minItemWidth": 10, + "headerHeight": 20, + "dragProxyWidth": 300, + "dragProxyHeight": 200 + }, + "labels": { + "close": "close", + "maximise": "maximise", + "minimise": "minimise", + "popout": "open in new window", + "popin": "pop in", + "tabDropdown": "additional tabs" + }, + "content": [ + { + "type": "row", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "content": [ { - "type": "row", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "content": [ - { - "type": "stack", - "width": 33.333333333333336, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 1, - "source": "// Type your code here, or load an example.\nint square(int num) {\n auto x = 344 + 5 + 1;\n return num * num + 234 + x;\n}\n\nint main() {\n return square(23);\n}\n", - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "C++ source #1" - } - ] - }, - { - "type": "stack", - "width": 33.333333333333336, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "compiler": "g92", - "source": 1, - "options": "-O3", - "filters": { - "binary": false, - "execute": false, - "labels": true, - "libraryCode": false, - "directives": true, - "commentOnly": true, - "trim": false, - "intel": true, - "demangle": true - }, - "libs": [], - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 gcc 9.2 (Editor #1, Compiler #1) C++" - } - ] + "type": "stack", + "width": 33.333333333333336, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 1, + "source": "// Type your code here, or load an example.\nint square(int num) {\n auto x = 344 + 5 + 1;\n return num * num + 234 + x;\n}\n\nint main() {\n return square(23);\n}\n", + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "C++ source #1" + } + ] + }, + { + "type": "stack", + "width": 33.333333333333336, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "compiler", + "componentState": { + "compiler": "g92", + "source": 1, + "options": "-O3", + "filters": { + "binary": false, + "execute": false, + "labels": true, + "libraryCode": false, + "directives": true, + "commentOnly": true, + "trim": false, + "intel": true, + "demangle": true }, - { - "type": "stack", - "width": 33.33333333333333, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "executor", - "componentState": { - "compiler": "g92", - "source": 1, - "options": "-O3", - "execArgs": "test", - "execStdin": "", - "libs": [ - { - "name": "openssl", - "ver": "111c" - } - ], - "lang": "c++", - "compilationPanelShown": false, - "compilerOutShown": true, - "argsPanelShown": true, - "stdinPanelShown": false - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 gcc 9.2 Executor (Editor #1) C++" - } - ] - } - ] + "libs": [], + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 gcc 9.2 (Editor #1, Compiler #1) C++" + } + ] + }, + { + "type": "stack", + "width": 33.33333333333333, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "executor", + "componentState": { + "compiler": "g92", + "source": 1, + "options": "-O3", + "execArgs": "test", + "execStdin": "", + "libs": [ + { + "name": "openssl", + "ver": "111c" + } + ], + "lang": "c++", + "compilationPanelShown": false, + "compilerOutShown": true, + "argsPanelShown": true, + "stdinPanelShown": false + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 gcc 9.2 Executor (Editor #1) C++" + } + ] } - ], - "isClosable": true, - "reorderEnabled": true, - "title": "", - "openPopouts": [], - "maximisedItemId": null -}
\ No newline at end of file + ] + } + ], + "isClosable": true, + "reorderEnabled": true, + "title": "", + "openPopouts": [], + "maximisedItemId": null +} diff --git a/test/state/executorwrap.json b/test/state/executorwrap.json index 4805bfe2a..8122115dc 100644 --- a/test/state/executorwrap.json +++ b/test/state/executorwrap.json @@ -1,179 +1,179 @@ { - "settings": { - "hasHeaders": true, - "constrainDragToContainer": false, - "reorderEnabled": true, - "selectionEnabled": false, - "popoutWholeStack": false, - "blockedPopoutsThrowError": true, - "closePopoutsOnUnload": true, - "showPopoutIcon": false, - "showMaximiseIcon": true, - "showCloseIcon": true, - "responsiveMode": "onload", - "tabOverlapAllowance": 0, - "reorderOnTabMenuClick": true, - "tabControlOffset": 10 - }, - "dimensions": { - "borderWidth": 5, - "borderGrabWidth": 15, - "minItemHeight": 10, - "minItemWidth": 10, - "headerHeight": 20, - "dragProxyWidth": 300, - "dragProxyHeight": 200 - }, - "labels": { - "close": "close", - "maximise": "maximise", - "minimise": "minimise", - "popout": "open in new window", - "popin": "pop in", - "tabDropdown": "additional tabs" - }, - "content": [ + "settings": { + "hasHeaders": true, + "constrainDragToContainer": false, + "reorderEnabled": true, + "selectionEnabled": false, + "popoutWholeStack": false, + "blockedPopoutsThrowError": true, + "closePopoutsOnUnload": true, + "showPopoutIcon": false, + "showMaximiseIcon": true, + "showCloseIcon": true, + "responsiveMode": "onload", + "tabOverlapAllowance": 0, + "reorderOnTabMenuClick": true, + "tabControlOffset": 10 + }, + "dimensions": { + "borderWidth": 5, + "borderGrabWidth": 15, + "minItemHeight": 10, + "minItemWidth": 10, + "headerHeight": 20, + "dragProxyWidth": 300, + "dragProxyHeight": 200 + }, + "labels": { + "close": "close", + "maximise": "maximise", + "minimise": "minimise", + "popout": "open in new window", + "popin": "pop in", + "tabDropdown": "additional tabs" + }, + "content": [ + { + "type": "column", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "content": [ { - "type": "column", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "content": [ - { - "type": "stack", - "width": 100, - "height": 50, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 1, - "source": "// Type your code here, or load an example.\nint square(int num) {\n return num * num;\n}", - "lang": "c++", - "selection": { - "startLineNumber": 2, - "startColumn": 12, - "endLineNumber": 2, - "endColumn": 19, - "selectionStartLineNumber": 2, - "selectionStartColumn": 19, - "positionLineNumber": 2, - "positionColumn": 12 - }, - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "C++ source #1" - } - ] + "type": "stack", + "width": 100, + "height": 50, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 1, + "source": "// Type your code here, or load an example.\nint square(int num) {\n return num * num;\n}", + "lang": "c++", + "selection": { + "startLineNumber": 2, + "startColumn": 12, + "endLineNumber": 2, + "endColumn": 19, + "selectionStartLineNumber": 2, + "selectionStartColumn": 19, + "positionLineNumber": 2, + "positionColumn": 12 }, + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "C++ source #1" + } + ] + }, + { + "type": "row", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "height": 50, + "content": [ + { + "type": "stack", + "header": {}, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "height": 50, + "width": 50, + "content": [ { - "type": "row", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "height": 50, - "content": [ - { - "type": "stack", - "header": {}, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "height": 50, - "width": 50, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "id": 1, - "compiler": "g111", - "source": 1, - "options": "", - "filters": { - "binary": false, - "execute": false, - "intel": true, - "demangle": true, - "labels": true, - "libraryCode": true, - "directives": true, - "commentOnly": true, - "trim": false - }, - "libs": [], - "lang": "c++", - "selection": { - "startLineNumber": 4, - "startColumn": 17, - "endLineNumber": 4, - "endColumn": 39, - "selectionStartLineNumber": 4, - "selectionStartColumn": 17, - "positionLineNumber": 4, - "positionColumn": 39 - }, - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 gcc 11.1 (Editor #1, Compiler #1) C++" - } - ] - }, - { - "type": "stack", - "header": {}, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "width": 50, - "content": [ - { - "type": "component", - "componentName": "executor", - "componentState": { - "id": 1, - "compiler": "g111", - "source": 1, - "options": "", - "execArgs": "", - "execStdin": "", - "libs": [], - "lang": "c++", - "compilationPanelShown": true, - "compilerOutShown": true, - "argsPanelShown": false, - "stdinPanelShown": false, - "wrap": true, - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 gcc 11.1 Executor (Editor #1) C++" - } - ] - } - ] + "type": "component", + "componentName": "compiler", + "componentState": { + "id": 1, + "compiler": "g111", + "source": 1, + "options": "", + "filters": { + "binary": false, + "execute": false, + "intel": true, + "demangle": true, + "labels": true, + "libraryCode": true, + "directives": true, + "commentOnly": true, + "trim": false + }, + "libs": [], + "lang": "c++", + "selection": { + "startLineNumber": 4, + "startColumn": 17, + "endLineNumber": 4, + "endColumn": 39, + "selectionStartLineNumber": 4, + "selectionStartColumn": 17, + "positionLineNumber": 4, + "positionColumn": 39 + }, + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 gcc 11.1 (Editor #1, Compiler #1) C++" } - ] + ] + }, + { + "type": "stack", + "header": {}, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "width": 50, + "content": [ + { + "type": "component", + "componentName": "executor", + "componentState": { + "id": 1, + "compiler": "g111", + "source": 1, + "options": "", + "execArgs": "", + "execStdin": "", + "libs": [], + "lang": "c++", + "compilationPanelShown": true, + "compilerOutShown": true, + "argsPanelShown": false, + "stdinPanelShown": false, + "wrap": true, + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 gcc 11.1 Executor (Editor #1) C++" + } + ] + } + ] } - ], - "isClosable": true, - "reorderEnabled": true, - "title": "", - "openPopouts": [], - "maximisedItemId": null -}
\ No newline at end of file + ] + } + ], + "isClosable": true, + "reorderEnabled": true, + "title": "", + "openPopouts": [], + "maximisedItemId": null +} diff --git a/test/state/output-editor-id.json b/test/state/output-editor-id.json index f6ffbf15e..62ab5f5ef 100644 --- a/test/state/output-editor-id.json +++ b/test/state/output-editor-id.json @@ -1,156 +1,156 @@ { - "settings": { - "hasHeaders": true, - "constrainDragToContainer": false, - "reorderEnabled": true, - "selectionEnabled": false, - "popoutWholeStack": false, - "blockedPopoutsThrowError": true, - "closePopoutsOnUnload": true, - "showPopoutIcon": true, - "showMaximiseIcon": true, - "showCloseIcon": true, - "responsiveMode": "onload", - "tabOverlapAllowance": 0, - "reorderOnTabMenuClick": true, - "tabControlOffset": 10, - "theme": "dark" - }, - "dimensions": { - "borderWidth": 5, - "borderGrabWidth": 15, - "minItemHeight": 10, - "minItemWidth": 10, - "headerHeight": 20, - "dragProxyWidth": 300, - "dragProxyHeight": 200 - }, - "labels": { - "close": "close", - "maximise": "maximise", - "minimise": "minimise", - "popout": "open in new window", - "popin": "pop in", - "tabDropdown": "additional tabs" - }, - "content": [ + "settings": { + "hasHeaders": true, + "constrainDragToContainer": false, + "reorderEnabled": true, + "selectionEnabled": false, + "popoutWholeStack": false, + "blockedPopoutsThrowError": true, + "closePopoutsOnUnload": true, + "showPopoutIcon": true, + "showMaximiseIcon": true, + "showCloseIcon": true, + "responsiveMode": "onload", + "tabOverlapAllowance": 0, + "reorderOnTabMenuClick": true, + "tabControlOffset": 10, + "theme": "dark" + }, + "dimensions": { + "borderWidth": 5, + "borderGrabWidth": 15, + "minItemHeight": 10, + "minItemWidth": 10, + "headerHeight": 20, + "dragProxyWidth": 300, + "dragProxyHeight": 200 + }, + "labels": { + "close": "close", + "maximise": "maximise", + "minimise": "minimise", + "popout": "open in new window", + "popin": "pop in", + "tabDropdown": "additional tabs" + }, + "content": [ + { + "type": "row", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "content": [ + { + "type": "stack", + "width": 50, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 1, + "source": "#include <iostream>\n \nint main() {\n std::cout << \"Hello CE!\";\n}", + "lang": "c++", + "fontScale": 25, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "C++ source #1" + } + ] + }, { - "type": "row", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "content": [ + "type": "column", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "width": 50, + "content": [ + { + "type": "stack", + "height": 50, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ { - "type": "stack", - "width": 50, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 1, - "source": "#include <iostream>\n \nint main() {\n std::cout << \"Hello CE!\";\n}", - "lang": "c++", - "fontScale": 25, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "C++ source #1" - } - ] - }, + "type": "component", + "componentName": "compiler", + "componentState": { + "id": 1, + "compiler": "g83", + "source": 1, + "options": "-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter", + "filters": { + "commentOnly": true, + "directives": true, + "intel": true, + "labels": true, + "trim": true, + "execute": true, + "binary": false, + "demangle": true, + "libraryCode": true + }, + "libs": [], + "lang": "c++", + "selection": { + "startLineNumber": 1, + "startColumn": 1, + "endLineNumber": 1, + "endColumn": 1, + "selectionStartLineNumber": 1, + "selectionStartColumn": 1, + "positionLineNumber": 1, + "positionColumn": 1 + }, + "flagsViewOpen": false, + "fontScale": 30, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 gcc 8.3 (Editor #1, Compiler #1) C++" + } + ] + }, + { + "type": "stack", + "height": 50, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ { - "type": "column", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "width": 50, - "content": [ - { - "type": "stack", - "height": 50, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "id": 1, - "compiler": "g83", - "source": 1, - "options": "-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter", - "filters": { - "commentOnly": true, - "directives": true, - "intel": true, - "labels": true, - "trim": true, - "execute": true, - "binary": false, - "demangle": true, - "libraryCode": true - }, - "libs": [], - "lang": "c++", - "selection": { - "startLineNumber": 1, - "startColumn": 1, - "endLineNumber": 1, - "endColumn": 1, - "selectionStartLineNumber": 1, - "selectionStartColumn": 1, - "positionLineNumber": 1, - "positionColumn": 1 - }, - "flagsViewOpen": false, - "fontScale": 30, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 gcc 8.3 (Editor #1, Compiler #1) C++" - } - ] - }, - { - "type": "stack", - "height": 50, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "output", - "componentState": { - "compiler": 1, - "wrap": false, - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "Output of x86-64 gcc 8.3 (Compiler #1)" - } - ] - } - ] + "type": "component", + "componentName": "output", + "componentState": { + "compiler": 1, + "wrap": false, + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "Output of x86-64 gcc 8.3 (Compiler #1)" } - ] + ] + } + ] } - ], - "isClosable": true, - "reorderEnabled": true, - "title": "", - "openPopouts": [], - "maximisedItemId": null -}
\ No newline at end of file + ] + } + ], + "isClosable": true, + "reorderEnabled": true, + "title": "", + "openPopouts": [], + "maximisedItemId": null +} diff --git a/test/state/output-editor-id.normalized.json b/test/state/output-editor-id.normalized.json index ccad6c124..2a6d61608 100644 --- a/test/state/output-editor-id.normalized.json +++ b/test/state/output-editor-id.normalized.json @@ -1,34 +1,32 @@ { - "sessions": [ + "sessions": [ + { + "id": 1, + "language": "c++", + "source": "#include <iostream>\n \nint main() {\n std::cout << \"Hello CE!\";\n}", + "conformanceview": false, + "compilers": [ { - "id": 1, - "language": "c++", - "source": "#include <iostream>\n \nint main() {\n std::cout << \"Hello CE!\";\n}", - "conformanceview": false, - "compilers": [ - { - "_internalid": 1, - "id": "g83", - "options": "-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter", - "filters": { - "binary": false, - "commentOnly": true, - "demangle": true, - "directives": true, - "execute": true, - "intel": true, - "labels": true, - "trim": true - }, - "libs": [], - "specialoutputs": [ - "compilerOutput" - ], - "tools": [] - } - ], - "executors": [] + "_internalid": 1, + "id": "g83", + "options": "-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter", + "filters": { + "binary": false, + "commentOnly": true, + "demangle": true, + "directives": true, + "execute": true, + "intel": true, + "labels": true, + "trim": true + }, + "libs": [], + "specialoutputs": ["compilerOutput"], + "tools": [] } - ], - "trees": [] -}
\ No newline at end of file + ], + "executors": [] + } + ], + "trees": [] +} diff --git a/test/state/tree-gl-outputpane.json b/test/state/tree-gl-outputpane.json index 11cbbf619..0a7ce4519 100644 --- a/test/state/tree-gl-outputpane.json +++ b/test/state/tree-gl-outputpane.json @@ -1,240 +1,240 @@ { - "settings": { - "hasHeaders": true, - "constrainDragToContainer": false, - "reorderEnabled": true, - "selectionEnabled": false, - "popoutWholeStack": false, - "blockedPopoutsThrowError": true, - "closePopoutsOnUnload": true, - "showPopoutIcon": false, - "showMaximiseIcon": true, - "showCloseIcon": true, - "responsiveMode": "onload", - "tabOverlapAllowance": 0, - "reorderOnTabMenuClick": true, - "tabControlOffset": 10 - }, - "dimensions": { - "borderWidth": 5, - "borderGrabWidth": 15, - "minItemHeight": 10, - "minItemWidth": 10, - "headerHeight": 20, - "dragProxyWidth": 300, - "dragProxyHeight": 200 - }, - "labels": { - "close": "close", - "maximise": "maximise", - "minimise": "minimise", - "popout": "open in new window", - "popin": "pop in", - "tabDropdown": "additional tabs" - }, - "content": [ + "settings": { + "hasHeaders": true, + "constrainDragToContainer": false, + "reorderEnabled": true, + "selectionEnabled": false, + "popoutWholeStack": false, + "blockedPopoutsThrowError": true, + "closePopoutsOnUnload": true, + "showPopoutIcon": false, + "showMaximiseIcon": true, + "showCloseIcon": true, + "responsiveMode": "onload", + "tabOverlapAllowance": 0, + "reorderOnTabMenuClick": true, + "tabControlOffset": 10 + }, + "dimensions": { + "borderWidth": 5, + "borderGrabWidth": 15, + "minItemHeight": 10, + "minItemWidth": 10, + "headerHeight": 20, + "dragProxyWidth": 300, + "dragProxyHeight": 200 + }, + "labels": { + "close": "close", + "maximise": "maximise", + "minimise": "minimise", + "popout": "open in new window", + "popin": "pop in", + "tabDropdown": "additional tabs" + }, + "content": [ + { + "type": "row", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "content": [ { - "type": "row", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "content": [ - { - "type": "stack", - "header": {}, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "width": 32.68232718579945, - "content": [ - { - "type": "component", - "componentName": "tree", - "componentState": { - "id": 1, - "cmakeArgs": "", - "customOutputFilename": "hellow", - "isCMakeProject": true, - "compilerLanguageId": "c++", - "files": [ - { - "fileId": 1, - "filename": "CMakeLists.txt", - "isIncluded": true, - "isOpen": true, - "editorId": 1, - "isMainSource": true, - "content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", - "langId": "cmake" - }, - { - "fileId": 2, - "filename": "example.cpp", - "isIncluded": true, - "isOpen": true, - "editorId": 2, - "isMainSource": false, - "content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", - "langId": "c++" - }, - { - "fileId": 3, - "filename": "subdir/hello.txt", - "isIncluded": true, - "isOpen": false, - "editorId": -1, - "isMainSource": false, - "content": "Hello, World!!!!\n", - "langId": "cmake" - } - ], - "newFileId": 4 - }, - "isClosable": true, - "reorderEnabled": true, - "title": "Tree #1" - } - ] - }, + "type": "stack", + "header": {}, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "width": 32.68232718579945, + "content": [ + { + "type": "component", + "componentName": "tree", + "componentState": { + "id": 1, + "cmakeArgs": "", + "customOutputFilename": "hellow", + "isCMakeProject": true, + "compilerLanguageId": "c++", + "files": [ + { + "fileId": 1, + "filename": "CMakeLists.txt", + "isIncluded": true, + "isOpen": true, + "editorId": 1, + "isMainSource": true, + "content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", + "langId": "cmake" + }, + { + "fileId": 2, + "filename": "example.cpp", + "isIncluded": true, + "isOpen": true, + "editorId": 2, + "isMainSource": false, + "content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", + "langId": "c++" + }, + { + "fileId": 3, + "filename": "subdir/hello.txt", + "isIncluded": true, + "isOpen": false, + "editorId": -1, + "isMainSource": false, + "content": "Hello, World!!!!\n", + "langId": "cmake" + } + ], + "newFileId": 4 + }, + "isClosable": true, + "reorderEnabled": true, + "title": "Tree #1" + } + ] + }, + { + "type": "column", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "width": 33.984339480867234, + "content": [ + { + "type": "stack", + "header": {}, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "width": 34.10502675378526, + "height": 50, + "content": [ { - "type": "column", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "width": 33.984339480867234, - "content": [ - { - "type": "stack", - "header": {}, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "width": 34.10502675378526, - "height": 50, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "id": 1, - "compiler": "g103", - "source": false, - "tree": 1, - "options": "-g -O3 -flto", - "filters": { - "binary": false, - "execute": true, - "intel": true, - "demangle": true, - "labels": true, - "libraryCode": true, - "directives": true, - "commentOnly": true, - "trim": false - }, - "libs": [ - { - "name": "fmt", - "ver": "700" - } - ], - "lang": "c++", - "selection": { - "startLineNumber": 1, - "startColumn": 1, - "endLineNumber": 1, - "endColumn": 1, - "selectionStartLineNumber": 1, - "selectionStartColumn": 1, - "positionLineNumber": 1, - "positionColumn": 1 - }, - "flagsViewOpen": false, - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 gcc 10.3 (C++, Tree #1, Compiler #1)" - } - ] - }, - { - "type": "stack", - "header": {}, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "height": 50, - "content": [ - { - "type": "component", - "componentName": "output", - "componentState": { - "compiler": 1, - "editor": false, - "tree": 1, - "wrap": false, - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "Output of x86-64 gcc 10.3 (Compiler #1)" - } - ] - } - ] - }, + "type": "component", + "componentName": "compiler", + "componentState": { + "id": 1, + "compiler": "g103", + "source": false, + "tree": 1, + "options": "-g -O3 -flto", + "filters": { + "binary": false, + "execute": true, + "intel": true, + "demangle": true, + "labels": true, + "libraryCode": true, + "directives": true, + "commentOnly": true, + "trim": false + }, + "libs": [ + { + "name": "fmt", + "ver": "700" + } + ], + "lang": "c++", + "selection": { + "startLineNumber": 1, + "startColumn": 1, + "endLineNumber": 1, + "endColumn": 1, + "selectionStartLineNumber": 1, + "selectionStartColumn": 1, + "positionLineNumber": 1, + "positionColumn": 1 + }, + "flagsViewOpen": false, + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 gcc 10.3 (C++, Tree #1, Compiler #1)" + } + ] + }, + { + "type": "stack", + "header": {}, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "height": 50, + "content": [ { - "type": "stack", - "width": 33.33333333333333, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 1, - "content": [ - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 1, - "source": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", - "lang": "cmake", - "filename": "CMakeLists.txt", - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "CMakeLists.txt" - }, - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 2, - "source": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", - "lang": "c++", - "filename": "example.cpp", - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "example.cpp" - } - ] + "type": "component", + "componentName": "output", + "componentState": { + "compiler": 1, + "editor": false, + "tree": 1, + "wrap": false, + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "Output of x86-64 gcc 10.3 (Compiler #1)" } - ] + ] + } + ] + }, + { + "type": "stack", + "width": 33.33333333333333, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 1, + "content": [ + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 1, + "source": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", + "lang": "cmake", + "filename": "CMakeLists.txt", + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "CMakeLists.txt" + }, + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 2, + "source": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", + "lang": "c++", + "filename": "example.cpp", + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "example.cpp" + } + ] } - ], - "isClosable": true, - "reorderEnabled": true, - "title": "", - "openPopouts": [], - "maximisedItemId": null -}
\ No newline at end of file + ] + } + ], + "isClosable": true, + "reorderEnabled": true, + "title": "", + "openPopouts": [], + "maximisedItemId": null +} diff --git a/test/state/tree-gl-outputpane.normalized.json b/test/state/tree-gl-outputpane.normalized.json index 5a3c96571..5a668914b 100644 --- a/test/state/tree-gl-outputpane.normalized.json +++ b/test/state/tree-gl-outputpane.normalized.json @@ -1,92 +1,90 @@ { - "sessions": [ + "sessions": [ + { + "id": 1, + "language": "cmake", + "source": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "CMakeLists.txt" + }, + { + "id": 2, + "language": "c++", + "source": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "example.cpp" + } + ], + "trees": [ + { + "id": 1, + "cmakeArgs": "", + "customOutputFilename": "hellow", + "isCMakeProject": true, + "compilerLanguageId": "c++", + "files": [ { - "id": 1, - "language": "cmake", - "source": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "CMakeLists.txt" + "fileId": 1, + "isIncluded": true, + "isOpen": true, + "isMainSource": true, + "filename": "CMakeLists.txt", + "content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", + "editorId": 1, + "langId": "cmake" }, { - "id": 2, - "language": "c++", - "source": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "example.cpp" + "fileId": 2, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "example.cpp", + "content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", + "editorId": 2, + "langId": "c++" + }, + { + "fileId": 3, + "isIncluded": true, + "isOpen": false, + "isMainSource": false, + "filename": "subdir/hello.txt", + "content": "Hello, World!!!!\n", + "editorId": -1, + "langId": "cmake" } - ], - "trees": [ + ], + "newFileId": 4, + "compilers": [ { - "id": 1, - "cmakeArgs": "", - "customOutputFilename": "hellow", - "isCMakeProject": true, - "compilerLanguageId": "c++", - "files": [ - { - "fileId": 1, - "isIncluded": true, - "isOpen": true, - "isMainSource": true, - "filename": "CMakeLists.txt", - "content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", - "editorId": 1, - "langId": "cmake" - }, - { - "fileId": 2, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "example.cpp", - "content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", - "editorId": 2, - "langId": "c++" - }, - { - "fileId": 3, - "isIncluded": true, - "isOpen": false, - "isMainSource": false, - "filename": "subdir/hello.txt", - "content": "Hello, World!!!!\n", - "editorId": -1, - "langId": "cmake" - } - ], - "newFileId": 4, - "compilers": [ - { - "_internalid": 1, - "id": "g103", - "options": "-g -O3 -flto", - "filters": { - "binary": false, - "commentOnly": true, - "demangle": true, - "directives": true, - "execute": true, - "intel": true, - "labels": true, - "trim": false - }, - "libs": [ - { - "name": "fmt", - "ver": "700" - } - ], - "specialoutputs": [ - "compilerOutput" - ], - "tools": [] - } - ], - "executors": [] + "_internalid": 1, + "id": "g103", + "options": "-g -O3 -flto", + "filters": { + "binary": false, + "commentOnly": true, + "demangle": true, + "directives": true, + "execute": true, + "intel": true, + "labels": true, + "trim": false + }, + "libs": [ + { + "name": "fmt", + "ver": "700" + } + ], + "specialoutputs": ["compilerOutput"], + "tools": [] } - ] -}
\ No newline at end of file + ], + "executors": [] + } + ] +} diff --git a/test/state/tree-gl.json b/test/state/tree-gl.json index 67b2a0402..4e7d10141 100644 --- a/test/state/tree-gl.json +++ b/test/state/tree-gl.json @@ -1,269 +1,269 @@ { - "settings": { - "hasHeaders": true, - "constrainDragToContainer": false, - "reorderEnabled": true, - "selectionEnabled": false, - "popoutWholeStack": false, - "blockedPopoutsThrowError": true, - "closePopoutsOnUnload": true, - "showPopoutIcon": false, - "showMaximiseIcon": true, - "showCloseIcon": true, - "responsiveMode": "onload", - "tabOverlapAllowance": 0, - "reorderOnTabMenuClick": true, - "tabControlOffset": 10 - }, - "dimensions": { - "borderWidth": 5, - "borderGrabWidth": 15, - "minItemHeight": 10, - "minItemWidth": 10, - "headerHeight": 20, - "dragProxyWidth": 300, - "dragProxyHeight": 200 - }, - "labels": { - "close": "close", - "maximise": "maximise", - "minimise": "minimise", - "popout": "open in new window", - "popin": "pop in", - "tabDropdown": "additional tabs" - }, - "content": [ + "settings": { + "hasHeaders": true, + "constrainDragToContainer": false, + "reorderEnabled": true, + "selectionEnabled": false, + "popoutWholeStack": false, + "blockedPopoutsThrowError": true, + "closePopoutsOnUnload": true, + "showPopoutIcon": false, + "showMaximiseIcon": true, + "showCloseIcon": true, + "responsiveMode": "onload", + "tabOverlapAllowance": 0, + "reorderOnTabMenuClick": true, + "tabControlOffset": 10 + }, + "dimensions": { + "borderWidth": 5, + "borderGrabWidth": 15, + "minItemHeight": 10, + "minItemWidth": 10, + "headerHeight": 20, + "dragProxyWidth": 300, + "dragProxyHeight": 200 + }, + "labels": { + "close": "close", + "maximise": "maximise", + "minimise": "minimise", + "popout": "open in new window", + "popin": "pop in", + "tabDropdown": "additional tabs" + }, + "content": [ + { + "type": "row", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "content": [ + { + "type": "stack", + "header": {}, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "width": 23.193297464602633, + "content": [ + { + "type": "component", + "componentName": "tree", + "componentState": { + "id": 1, + "cmakeArgs": "", + "customOutputFilename": "", + "isCMakeProject": true, + "compilerLanguageId": "c++", + "files": [ + { + "fileId": 1, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "example.cpp", + "content": "// Type your code here, or load an example.\nint square(int num) {\n return num * num;\n}", + "editorId": 1, + "langId": "c++" + }, + { + "fileId": 2, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "square.h", + "content": "#pragma once\n\nint square(int num);\n", + "editorId": 2, + "langId": "c++" + }, + { + "fileId": 3, + "isIncluded": true, + "isOpen": false, + "isMainSource": true, + "filename": "CMakeLists.txt", + "content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", + "editorId": -1, + "langId": "cmake" + }, + { + "fileId": 4, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "square.cpp", + "content": "", + "editorId": 4, + "langId": "" + }, + { + "fileId": 6, + "isIncluded": false, + "isOpen": true, + "isMainSource": false, + "filename": "", + "content": "", + "editorId": 3, + "langId": "" + } + ], + "newFileId": 7 + }, + "isClosable": true, + "reorderEnabled": true, + "title": "Tree #1" + } + ] + }, + { + "type": "stack", + "width": 37.22445710458798, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 3, + "content": [ + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 1, + "source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", + "lang": "c++", + "selection": { + "startLineNumber": 6, + "startColumn": 1, + "endLineNumber": 6, + "endColumn": 1, + "selectionStartLineNumber": 6, + "selectionStartColumn": 1, + "positionLineNumber": 6, + "positionColumn": 1 + }, + "filename": "example.cpp", + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "example.cpp" + }, + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 2, + "source": "#pragma once\n\nint square(int num);\n", + "lang": "c++", + "filename": "square.h", + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "square.h" + }, + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 4, + "source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", + "lang": "c++", + "selection": { + "startLineNumber": 6, + "startColumn": 1, + "endLineNumber": 6, + "endColumn": 1, + "selectionStartLineNumber": 6, + "selectionStartColumn": 1, + "positionLineNumber": 6, + "positionColumn": 1 + }, + "filename": "square.cpp", + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "square.cpp" + }, + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 3, + "source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", + "lang": "cmake", + "filename": "CMakeLists.txt", + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "CMakeLists.txt" + } + ] + }, { - "type": "row", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "content": [ - { - "type": "stack", - "header": {}, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "width": 23.193297464602633, - "content": [ - { - "type": "component", - "componentName": "tree", - "componentState": { - "id": 1, - "cmakeArgs": "", - "customOutputFilename": "", - "isCMakeProject": true, - "compilerLanguageId": "c++", - "files": [ - { - "fileId": 1, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "example.cpp", - "content": "// Type your code here, or load an example.\nint square(int num) {\n return num * num;\n}", - "editorId": 1, - "langId": "c++" - }, - { - "fileId": 2, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "square.h", - "content": "#pragma once\n\nint square(int num);\n", - "editorId": 2, - "langId": "c++" - }, - { - "fileId": 3, - "isIncluded": true, - "isOpen": false, - "isMainSource": true, - "filename": "CMakeLists.txt", - "content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", - "editorId": -1, - "langId": "cmake" - }, - { - "fileId": 4, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "square.cpp", - "content": "", - "editorId": 4, - "langId": "" - }, - { - "fileId": 6, - "isIncluded": false, - "isOpen": true, - "isMainSource": false, - "filename": "", - "content": "", - "editorId": 3, - "langId": "" - } - ], - "newFileId": 7 - }, - "isClosable": true, - "reorderEnabled": true, - "title": "Tree #1" - } - ] + "type": "stack", + "header": {}, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "width": 39.5822454308094, + "content": [ + { + "type": "component", + "componentName": "compiler", + "componentState": { + "id": 1, + "compiler": "g103", + "source": false, + "tree": 1, + "options": "-g -O3 -flto", + "filters": { + "binary": true, + "execute": false, + "intel": true, + "demangle": true, + "labels": true, + "libraryCode": true, + "directives": true, + "commentOnly": true, + "trim": false }, - { - "type": "stack", - "width": 37.22445710458798, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 3, - "content": [ - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 1, - "source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", - "lang": "c++", - "selection": { - "startLineNumber": 6, - "startColumn": 1, - "endLineNumber": 6, - "endColumn": 1, - "selectionStartLineNumber": 6, - "selectionStartColumn": 1, - "positionLineNumber": 6, - "positionColumn": 1 - }, - "filename": "example.cpp", - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "example.cpp" - }, - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 2, - "source": "#pragma once\n\nint square(int num);\n", - "lang": "c++", - "filename": "square.h", - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "square.h" - }, - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 4, - "source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", - "lang": "c++", - "selection": { - "startLineNumber": 6, - "startColumn": 1, - "endLineNumber": 6, - "endColumn": 1, - "selectionStartLineNumber": 6, - "selectionStartColumn": 1, - "positionLineNumber": 6, - "positionColumn": 1 - }, - "filename": "square.cpp", - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "square.cpp" - }, - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 3, - "source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", - "lang": "cmake", - "filename": "CMakeLists.txt", - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "CMakeLists.txt" - } - ] + "libs": [], + "lang": "c++", + "selection": { + "startLineNumber": 1, + "startColumn": 1, + "endLineNumber": 1, + "endColumn": 1, + "selectionStartLineNumber": 1, + "selectionStartColumn": 1, + "positionLineNumber": 1, + "positionColumn": 1 }, - { - "type": "stack", - "header": {}, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "width": 39.5822454308094, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "id": 1, - "compiler": "g103", - "source": false, - "tree": 1, - "options": "-g -O3 -flto", - "filters": { - "binary": true, - "execute": false, - "intel": true, - "demangle": true, - "labels": true, - "libraryCode": true, - "directives": true, - "commentOnly": true, - "trim": false - }, - "libs": [], - "lang": "c++", - "selection": { - "startLineNumber": 1, - "startColumn": 1, - "endLineNumber": 1, - "endColumn": 1, - "selectionStartLineNumber": 1, - "selectionStartColumn": 1, - "positionLineNumber": 1, - "positionColumn": 1 - }, - "flagsViewOpen": false, - "fontScale": 14, - "fontUsePx": true - }, - "isClosable": true, - "reorderEnabled": true, - "title": "x86-64 gcc 10.3 (Tree #1, Compiler #1) C++" - } - ] - } - ] + "flagsViewOpen": false, + "fontScale": 14, + "fontUsePx": true + }, + "isClosable": true, + "reorderEnabled": true, + "title": "x86-64 gcc 10.3 (Tree #1, Compiler #1) C++" + } + ] } - ], - "isClosable": true, - "reorderEnabled": true, - "title": "", - "openPopouts": [], - "maximisedItemId": null -}
\ No newline at end of file + ] + } + ], + "isClosable": true, + "reorderEnabled": true, + "title": "", + "openPopouts": [], + "maximisedItemId": null +} diff --git a/test/state/tree-mobile.goldenified.json b/test/state/tree-mobile.goldenified.json index 7e86ac2f8..f6157d1fa 100644 --- a/test/state/tree-mobile.goldenified.json +++ b/test/state/tree-mobile.goldenified.json @@ -1,154 +1,154 @@ [ - { - "settings": { - "hasHeaders": true, - "constrainDragToContainer": false, - "reorderEnabled": true, - "selectionEnabled": false, - "popoutWholeStack": false, - "blockedPopoutsThrowError": true, - "closePopoutsOnUnload": true, - "showPopoutIcon": false, - "showMaximiseIcon": true, - "showCloseIcon": false, - "responsiveMode": "onload", - "tabOverlapAllowance": 0, - "reorderOnTabMenuClick": true, - "tabControlOffset": 10 - }, - "dimensions": { - "borderWidth": 5, - "borderGrabWidth": 15, - "minItemHeight": 10, - "minItemWidth": 10, - "headerHeight": 20, - "dragProxyWidth": 300, - "dragProxyHeight": 200 - }, - "labels": { - "close": "close", - "maximise": "maximise", - "minimise": "minimise", - "popout": "open in new window", - "popin": "pop in", - "tabDropdown": "additional tabs" - }, + { + "settings": { + "hasHeaders": true, + "constrainDragToContainer": false, + "reorderEnabled": true, + "selectionEnabled": false, + "popoutWholeStack": false, + "blockedPopoutsThrowError": true, + "closePopoutsOnUnload": true, + "showPopoutIcon": false, + "showMaximiseIcon": true, + "showCloseIcon": false, + "responsiveMode": "onload", + "tabOverlapAllowance": 0, + "reorderOnTabMenuClick": true, + "tabControlOffset": 10 + }, + "dimensions": { + "borderWidth": 5, + "borderGrabWidth": 15, + "minItemHeight": 10, + "minItemWidth": 10, + "headerHeight": 20, + "dragProxyWidth": 300, + "dragProxyHeight": 200 + }, + "labels": { + "close": "close", + "maximise": "maximise", + "minimise": "minimise", + "popout": "open in new window", + "popin": "pop in", + "tabDropdown": "additional tabs" + }, + "content": [ + { + "type": "column", "content": [ - { - "type": "column", + { + "type": "column", + "width": 100, + "content": [ + { + "type": "row", + "height": 50, "content": [ - { - "type": "column", - "width": 100, - "content": [ - { - "type": "row", - "height": 50, - "content": [ - { - "type": "component", - "componentName": "tree", - "componentState": { - "id": 1, - "cmakeArgs": "", - "customOutputFilename": "hellow", - "isCMakeProject": true, - "compilerLanguageId": "c++", - "files": [ - { - "fileId": 1, - "isIncluded": true, - "isOpen": false, - "isMainSource": true, - "filename": "CMakeLists.txt", - "content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", - "editorId": -1, - "langId": "cmake" - }, - { - "fileId": 2, - "isIncluded": true, - "isOpen": false, - "isMainSource": false, - "filename": "example.cpp", - "content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", - "editorId": -1, - "langId": "c++" - }, - { - "fileId": 3, - "isIncluded": true, - "isOpen": false, - "isMainSource": false, - "filename": "subdir/hello.txt", - "content": "Hello, World!!!!\n", - "editorId": -1, - "langId": "cmake" - } - ], - "newFileId": 4 - }, - "isClosable": true, - "reorderEnabled": true - } - ] - }, + { + "type": "component", + "componentName": "tree", + "componentState": { + "id": 1, + "cmakeArgs": "", + "customOutputFilename": "hellow", + "isCMakeProject": true, + "compilerLanguageId": "c++", + "files": [ + { + "fileId": 1, + "isIncluded": true, + "isOpen": false, + "isMainSource": true, + "filename": "CMakeLists.txt", + "content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", + "editorId": -1, + "langId": "cmake" + }, + { + "fileId": 2, + "isIncluded": true, + "isOpen": false, + "isMainSource": false, + "filename": "example.cpp", + "content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", + "editorId": -1, + "langId": "c++" + }, + { + "fileId": 3, + "isIncluded": true, + "isOpen": false, + "isMainSource": false, + "filename": "subdir/hello.txt", + "content": "Hello, World!!!!\n", + "editorId": -1, + "langId": "cmake" + } + ], + "newFileId": 4 + }, + "isClosable": true, + "reorderEnabled": true + } + ] + }, + { + "type": "row", + "height": 50, + "content": [ + { + "type": "stack", + "width": 100, + "content": [ + { + "type": "component", + "componentName": "compiler", + "componentState": { + "id": 1, + "compiler": "g103", + "tree": 1, + "options": "-g -O3 -flto", + "filters": { + "binary": false, + "commentOnly": true, + "demangle": true, + "directives": true, + "execute": false, + "intel": true, + "labels": true, + "trim": false + }, + "libs": [ { - "type": "row", - "height": 50, - "content": [ - { - "type": "stack", - "width": 100, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "id": 1, - "compiler": "g103", - "tree": 1, - "options": "-g -O3 -flto", - "filters": { - "binary": false, - "commentOnly": true, - "demangle": true, - "directives": true, - "execute": false, - "intel": true, - "labels": true, - "trim": false - }, - "libs": [ - { - "name": "fmt", - "ver": "700" - } - ], - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true - }, - { - "type": "component", - "componentName": "output", - "componentState": { - "compiler": 1, - "wrap": false, - "fontScale": 14 - }, - "isClosable": true, - "reorderEnabled": true - } - ] - } - ] + "name": "fmt", + "ver": "700" } - ] - } + ], + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true + }, + { + "type": "component", + "componentName": "output", + "componentState": { + "compiler": 1, + "wrap": false, + "fontScale": 14 + }, + "isClosable": true, + "reorderEnabled": true + } + ] + } ] - } + } + ] + } ] - } -]
\ No newline at end of file + } + ] + } +] diff --git a/test/state/tree-mobile.json b/test/state/tree-mobile.json index e79bbf6ef..cbe350231 100644 --- a/test/state/tree-mobile.json +++ b/test/state/tree-mobile.json @@ -1,92 +1,90 @@ { - "sessions": [ + "sessions": [ + { + "id": 1, + "language": "cmake", + "source": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "CMakeLists.txt" + }, + { + "id": 2, + "language": "c++", + "source": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "example.cpp" + } + ], + "trees": [ + { + "id": 1, + "cmakeArgs": "", + "customOutputFilename": "hellow", + "isCMakeProject": true, + "compilerLanguageId": "c++", + "files": [ { - "id": 1, - "language": "cmake", - "source": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "CMakeLists.txt" + "fileId": 1, + "isIncluded": true, + "isOpen": true, + "isMainSource": true, + "filename": "CMakeLists.txt", + "content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", + "editorId": 1, + "langId": "cmake" }, { - "id": 2, - "language": "c++", - "source": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "example.cpp" + "fileId": 2, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "example.cpp", + "content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", + "editorId": 2, + "langId": "c++" + }, + { + "fileId": 3, + "isIncluded": true, + "isOpen": false, + "isMainSource": false, + "filename": "subdir/hello.txt", + "content": "Hello, World!!!!\n", + "editorId": -1, + "langId": "cmake" } - ], - "trees": [ + ], + "newFileId": 4, + "compilers": [ { - "id": 1, - "cmakeArgs": "", - "customOutputFilename": "hellow", - "isCMakeProject": true, - "compilerLanguageId": "c++", - "files": [ - { - "fileId": 1, - "isIncluded": true, - "isOpen": true, - "isMainSource": true, - "filename": "CMakeLists.txt", - "content": "project(hello)\n\nadd_executable(hellow\n example.cpp)\n\ntarget_link_libraries(hellow\n fmtd)\n", - "editorId": 1, - "langId": "cmake" - }, - { - "fileId": 2, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "example.cpp", - "content": "#include \"fmt/core.h\"\n\nint main() {\n fmt::print(\"H€llo, world!\\n\");\n return 0;\n}", - "editorId": 2, - "langId": "c++" - }, - { - "fileId": 3, - "isIncluded": true, - "isOpen": false, - "isMainSource": false, - "filename": "subdir/hello.txt", - "content": "Hello, World!!!!\n", - "editorId": -1, - "langId": "cmake" - } - ], - "newFileId": 4, - "compilers": [ - { - "_internalid": 1, - "id": "g103", - "options": "-g -O3 -flto", - "filters": { - "binary": false, - "commentOnly": true, - "demangle": true, - "directives": true, - "execute": false, - "intel": true, - "labels": true, - "trim": false - }, - "libs": [ - { - "name": "fmt", - "ver": "700" - } - ], - "specialoutputs": [ - "compilerOutput" - ], - "tools": [] - } - ], - "executors": [] + "_internalid": 1, + "id": "g103", + "options": "-g -O3 -flto", + "filters": { + "binary": false, + "commentOnly": true, + "demangle": true, + "directives": true, + "execute": false, + "intel": true, + "labels": true, + "trim": false + }, + "libs": [ + { + "name": "fmt", + "ver": "700" + } + ], + "specialoutputs": ["compilerOutput"], + "tools": [] } - ] -}
\ No newline at end of file + ], + "executors": [] + } + ] +} diff --git a/test/state/tree.goldenified.json b/test/state/tree.goldenified.json index ca448ae65..86f325331 100644 --- a/test/state/tree.goldenified.json +++ b/test/state/tree.goldenified.json @@ -1,202 +1,202 @@ { - "settings": { - "hasHeaders": true, - "constrainDragToContainer": false, - "reorderEnabled": true, - "selectionEnabled": false, - "popoutWholeStack": false, - "blockedPopoutsThrowError": true, - "closePopoutsOnUnload": true, - "showPopoutIcon": false, - "showMaximiseIcon": true, - "showCloseIcon": true, - "responsiveMode": "onload", - "tabOverlapAllowance": 0, - "reorderOnTabMenuClick": true, - "tabControlOffset": 10 - }, - "dimensions": { - "borderWidth": 5, - "borderGrabWidth": 15, - "minItemHeight": 10, - "minItemWidth": 10, - "headerHeight": 20, - "dragProxyWidth": 300, - "dragProxyHeight": 200 - }, - "labels": { - "close": "close", - "maximise": "maximise", - "minimise": "minimise", - "popout": "open in new window", - "popin": "pop in", - "tabDropdown": "additional tabs" - }, - "content": [ + "settings": { + "hasHeaders": true, + "constrainDragToContainer": false, + "reorderEnabled": true, + "selectionEnabled": false, + "popoutWholeStack": false, + "blockedPopoutsThrowError": true, + "closePopoutsOnUnload": true, + "showPopoutIcon": false, + "showMaximiseIcon": true, + "showCloseIcon": true, + "responsiveMode": "onload", + "tabOverlapAllowance": 0, + "reorderOnTabMenuClick": true, + "tabControlOffset": 10 + }, + "dimensions": { + "borderWidth": 5, + "borderGrabWidth": 15, + "minItemHeight": 10, + "minItemWidth": 10, + "headerHeight": 20, + "dragProxyWidth": 300, + "dragProxyHeight": 200 + }, + "labels": { + "close": "close", + "maximise": "maximise", + "minimise": "minimise", + "popout": "open in new window", + "popin": "pop in", + "tabDropdown": "additional tabs" + }, + "content": [ + { + "type": "row", + "content": [ { - "type": "row", - "content": [ - { - "type": "stack", - "width": 25, - "content": [ - { - "type": "component", - "componentName": "tree", - "componentState": { - "id": 1, - "cmakeArgs": "", - "customOutputFilename": "", - "isCMakeProject": true, - "newFileId": 7, - "compilerLanguageId": "c++", - "files": [ - { - "fileId": 1, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "example.cpp", - "content": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", - "editorId": 1, - "langId": "c++" - }, - { - "fileId": 2, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "square.h", - "content": "#pragma once\n\nint square(int num);\n", - "editorId": 2, - "langId": "c++" - }, - { - "fileId": 3, - "isIncluded": true, - "isOpen": false, - "isMainSource": true, - "filename": "CMakeLists.txt", - "content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", - "editorId": -1, - "langId": "cmake" - }, - { - "fileId": 4, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "square.cpp", - "content": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", - "editorId": 4, - "langId": "" - } - ] - }, - "isClosable": true, - "reorderEnabled": true - } - ] - }, - { - "type": "stack", - "width": 40, - "content": [ - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 1, - "source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", - "lang": "c++", - "filename": "example.cpp" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "example.cpp" - }, - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 2, - "source": "#pragma once\n\nint square(int num);\n", - "lang": "c++", - "filename": "square.h" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "square.h" - }, - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 4, - "source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", - "lang": "c++", - "filename": "square.cpp" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "square.cpp" - }, - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 3, - "source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", - "lang": "cmake", - "filename": "CMakeLists.txt" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "CMakeLists.txt" - } - ] + "type": "stack", + "width": 25, + "content": [ + { + "type": "component", + "componentName": "tree", + "componentState": { + "id": 1, + "cmakeArgs": "", + "customOutputFilename": "", + "isCMakeProject": true, + "newFileId": 7, + "compilerLanguageId": "c++", + "files": [ + { + "fileId": 1, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "example.cpp", + "content": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", + "editorId": 1, + "langId": "c++" + }, + { + "fileId": 2, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "square.h", + "content": "#pragma once\n\nint square(int num);\n", + "editorId": 2, + "langId": "c++" + }, + { + "fileId": 3, + "isIncluded": true, + "isOpen": false, + "isMainSource": true, + "filename": "CMakeLists.txt", + "content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", + "editorId": -1, + "langId": "cmake" + }, + { + "fileId": 4, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "square.cpp", + "content": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", + "editorId": 4, + "langId": "" + } + ] + }, + "isClosable": true, + "reorderEnabled": true + } + ] + }, + { + "type": "stack", + "width": 40, + "content": [ + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 1, + "source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", + "lang": "c++", + "filename": "example.cpp" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "example.cpp" + }, + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 2, + "source": "#pragma once\n\nint square(int num);\n", + "lang": "c++", + "filename": "square.h" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "square.h" + }, + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 4, + "source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", + "lang": "c++", + "filename": "square.cpp" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "square.cpp" + }, + { + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 3, + "source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", + "lang": "cmake", + "filename": "CMakeLists.txt" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "CMakeLists.txt" + } + ] + }, + { + "type": "stack", + "width": 40, + "content": [ + { + "componentName": "compiler", + "componentState": { + "compiler": "g103", + "filters": { + "binary": true, + "commentOnly": true, + "demangle": true, + "directives": true, + "execute": false, + "intel": true, + "labels": true, + "trim": false }, - { - "type": "stack", - "width": 40, - "content": [ - { - "componentName": "compiler", - "componentState": { - "compiler": "g103", - "filters": { - "binary": true, - "commentOnly": true, - "demangle": true, - "directives": true, - "execute": false, - "intel": true, - "labels": true, - "trim": false - }, - "lang": "c++", - "libs": [], - "options": "-g -O3 -flto", - "tree": 1 - }, - "isClosable": true, - "reorderEnabled": true, - "type": "component" - }, - { - "componentName": "output", - "componentState": { - "compiler": 1, - "fontScale": 14, - "wrap": false - }, - "isClosable": true, - "reorderEnabled": true, - "type": "component" - } - ] - } - ] + "lang": "c++", + "libs": [], + "options": "-g -O3 -flto", + "tree": 1 + }, + "isClosable": true, + "reorderEnabled": true, + "type": "component" + }, + { + "componentName": "output", + "componentState": { + "compiler": 1, + "fontScale": 14, + "wrap": false + }, + "isClosable": true, + "reorderEnabled": true, + "type": "component" + } + ] } - ] -}
\ No newline at end of file + ] + } + ] +} diff --git a/test/state/tree.json b/test/state/tree.json index d53a36154..a8ab80569 100644 --- a/test/state/tree.json +++ b/test/state/tree.json @@ -1,114 +1,112 @@ { - "sessions": [ + "sessions": [ + { + "id": 1, + "language": "c++", + "source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "example.cpp" + }, + { + "id": 2, + "language": "c++", + "source": "#pragma once\n\nint square(int num);\n", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "square.h" + }, + { + "id": 4, + "language": "c++", + "source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "square.cpp" + }, + { + "id": 3, + "language": "cmake", + "source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "CMakeLists.txt" + } + ], + "trees": [ + { + "id": 1, + "cmakeArgs": "", + "customOutputFilename": "", + "isCMakeProject": true, + "compilerLanguageId": "c++", + "files": [ { - "id": 1, - "language": "c++", - "source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "example.cpp" + "fileId": 1, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "example.cpp", + "content": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", + "editorId": 1, + "langId": "c++" }, { - "id": 2, - "language": "c++", - "source": "#pragma once\n\nint square(int num);\n", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "square.h" + "fileId": 2, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "square.h", + "content": "#pragma once\n\nint square(int num);\n", + "editorId": 2, + "langId": "c++" }, { - "id": 4, - "language": "c++", - "source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "square.cpp" + "fileId": 3, + "isIncluded": true, + "isOpen": false, + "isMainSource": true, + "filename": "CMakeLists.txt", + "content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", + "editorId": -1, + "langId": "cmake" }, { - "id": 3, - "language": "cmake", - "source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "CMakeLists.txt" + "fileId": 4, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "square.cpp", + "content": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", + "editorId": 4, + "langId": "" } - ], - "trees": [ + ], + "newFileId": 7, + "compilers": [ { - "id": 1, - "cmakeArgs": "", - "customOutputFilename": "", - "isCMakeProject": true, - "compilerLanguageId": "c++", - "files": [ - { - "fileId": 1, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "example.cpp", - "content": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", - "editorId": 1, - "langId": "c++" - }, - { - "fileId": 2, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "square.h", - "content": "#pragma once\n\nint square(int num);\n", - "editorId": 2, - "langId": "c++" - }, - { - "fileId": 3, - "isIncluded": true, - "isOpen": false, - "isMainSource": true, - "filename": "CMakeLists.txt", - "content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", - "editorId": -1, - "langId": "cmake" - }, - { - "fileId": 4, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "square.cpp", - "content": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", - "editorId": 4, - "langId": "" - } - ], - "newFileId": 7, - "compilers": [ - { - "id": "g103", - "options": "-g -O3 -flto", - "filters": { - "binary": true, - "commentOnly": true, - "demangle": true, - "directives": true, - "execute": false, - "intel": true, - "labels": true, - "trim": false - }, - "libs": [], - "specialoutputs": [ - "compilerOutput" - ], - "tools": [] - } - ], - "executors": [] + "id": "g103", + "options": "-g -O3 -flto", + "filters": { + "binary": true, + "commentOnly": true, + "demangle": true, + "directives": true, + "execute": false, + "intel": true, + "labels": true, + "trim": false + }, + "libs": [], + "specialoutputs": ["compilerOutput"], + "tools": [] } - ] -}
\ No newline at end of file + ], + "executors": [] + } + ] +} diff --git a/test/state/tree.normalized.json b/test/state/tree.normalized.json index 9b5b21fee..cc12f5938 100644 --- a/test/state/tree.normalized.json +++ b/test/state/tree.normalized.json @@ -1,113 +1,113 @@ { - "sessions": [ + "sessions": [ + { + "id": 1, + "language": "c++", + "source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "example.cpp" + }, + { + "id": 2, + "language": "c++", + "source": "#pragma once\n\nint square(int num);\n", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "square.h" + }, + { + "id": 4, + "language": "c++", + "source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "square.cpp" + }, + { + "id": 3, + "language": "cmake", + "source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", + "conformanceview": false, + "compilers": [], + "executors": [], + "filename": "CMakeLists.txt" + } + ], + "trees": [ + { + "id": 1, + "cmakeArgs": "", + "customOutputFilename": "", + "isCMakeProject": true, + "compilerLanguageId": "c++", + "files": [ { - "id": 1, - "language": "c++", - "source": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "example.cpp" + "fileId": 1, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "example.cpp", + "content": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", + "editorId": 1, + "langId": "c++" }, { - "id": 2, - "language": "c++", - "source": "#pragma once\n\nint square(int num);\n", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "square.h" + "fileId": 2, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "square.h", + "content": "#pragma once\n\nint square(int num);\n", + "editorId": 2, + "langId": "c++" }, { - "id": 4, - "language": "c++", - "source": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "square.cpp" + "fileId": 3, + "isIncluded": true, + "isOpen": false, + "isMainSource": true, + "filename": "CMakeLists.txt", + "content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", + "editorId": -1, + "langId": "cmake" }, { - "id": 3, - "language": "cmake", - "source": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", - "conformanceview": false, - "compilers": [], - "executors": [], - "filename": "CMakeLists.txt" + "fileId": 4, + "isIncluded": true, + "isOpen": true, + "isMainSource": false, + "filename": "square.cpp", + "content": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", + "editorId": 4, + "langId": "" } - ], - "trees": [ + ], + "newFileId": 7, + "compilers": [ { - "id": 1, - "cmakeArgs": "", - "customOutputFilename": "", - "isCMakeProject": true, - "compilerLanguageId": "c++", - "files": [ - { - "fileId": 1, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "example.cpp", - "content": "#include \"square.h\"\n\nint main(int argc, char **argv) {\n return square(argc);\n}\n", - "editorId": 1, - "langId": "c++" - }, - { - "fileId": 2, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "square.h", - "content": "#pragma once\n\nint square(int num);\n", - "editorId": 2, - "langId": "c++" - }, - { - "fileId": 3, - "isIncluded": true, - "isOpen": false, - "isMainSource": true, - "filename": "CMakeLists.txt", - "content": "project(hello)\n\nadd_executable(output.s\n example.cpp\n square.cpp)\n", - "editorId": -1, - "langId": "cmake" - }, - { - "fileId": 4, - "isIncluded": true, - "isOpen": true, - "isMainSource": false, - "filename": "square.cpp", - "content": "#include \"square.h\"\n\nint square(int num) {\n return num * num;\n}\n", - "editorId": 4, - "langId": "" - } - ], - "newFileId": 7, - "compilers": [ - { - "_internalid": 1, - "id": "g103", - "options": "-g -O3 -flto", - "filters": { - "binary": true, - "commentOnly": true, - "demangle": true, - "directives": true, - "execute": false, - "intel": true, - "labels": true, - "trim": false - }, - "libs": [], - "specialoutputs": [], - "tools": [] - } - ], - "executors": [] + "_internalid": 1, + "id": "g103", + "options": "-g -O3 -flto", + "filters": { + "binary": true, + "commentOnly": true, + "demangle": true, + "directives": true, + "execute": false, + "intel": true, + "labels": true, + "trim": false + }, + "libs": [], + "specialoutputs": [], + "tools": [] } - ] -}
\ No newline at end of file + ], + "executors": [] + } + ] +} diff --git a/test/state/twocompilers.json b/test/state/twocompilers.json index 16218c390..fdfb8029f 100644 --- a/test/state/twocompilers.json +++ b/test/state/twocompilers.json @@ -1,195 +1,195 @@ { - "settings": { - "hasHeaders": true, - "constrainDragToContainer": false, - "reorderEnabled": true, - "selectionEnabled": false, - "popoutWholeStack": false, - "blockedPopoutsThrowError": true, - "closePopoutsOnUnload": true, - "showPopoutIcon": false, - "showMaximiseIcon": true, - "showCloseIcon": true, - "responsiveMode": "onload", - "tabOverlapAllowance": 0, - "reorderOnTabMenuClick": true, - "tabControlOffset": 10 - }, - "dimensions": { - "borderWidth": 5, - "borderGrabWidth": 15, - "minItemHeight": 10, - "minItemWidth": 10, - "headerHeight": 20, - "dragProxyWidth": 300, - "dragProxyHeight": 200 - }, - "labels": { - "close": "close", - "maximise": "maximise", - "minimise": "minimise", - "popout": "open in new window", - "popin": "pop in", - "tabDropdown": "additional tabs" - }, - "content": [ + "settings": { + "hasHeaders": true, + "constrainDragToContainer": false, + "reorderEnabled": true, + "selectionEnabled": false, + "popoutWholeStack": false, + "blockedPopoutsThrowError": true, + "closePopoutsOnUnload": true, + "showPopoutIcon": false, + "showMaximiseIcon": true, + "showCloseIcon": true, + "responsiveMode": "onload", + "tabOverlapAllowance": 0, + "reorderOnTabMenuClick": true, + "tabControlOffset": 10 + }, + "dimensions": { + "borderWidth": 5, + "borderGrabWidth": 15, + "minItemHeight": 10, + "minItemWidth": 10, + "headerHeight": 20, + "dragProxyWidth": 300, + "dragProxyHeight": 200 + }, + "labels": { + "close": "close", + "maximise": "maximise", + "minimise": "minimise", + "popout": "open in new window", + "popin": "pop in", + "tabDropdown": "additional tabs" + }, + "content": [ + { + "type": "row", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "content": [ { - "type": "row", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "content": [ + "type": "column", + "isClosable": true, + "reorderEnabled": true, + "title": "", + "width": 25.000000000000004, + "content": [ + { + "type": "stack", + "width": 25.000000000000004, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "height": 50, + "content": [ { - "type": "column", - "isClosable": true, - "reorderEnabled": true, - "title": "", - "width": 25.000000000000004, - "content": [ - { - "type": "stack", - "width": 25.000000000000004, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "height": 50, - "content": [ - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 1, - "source": "// Type your code here, or load an example.\r\nint square(int num) {\r\n return num * num + 3;\r\n}\r\n\r\n", - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "C++ source #1" - } - ] - }, - { - "type": "stack", - "header": {}, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "height": 50, - "content": [ - { - "type": "component", - "componentName": "codeEditor", - "componentState": { - "id": 2, - "source": "// Type your code here, or load an example.\r\nint square(int num) {\r\n return num * num;\r\n}", - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "C++ source #2" - } - ] - } - ] - }, + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 1, + "source": "// Type your code here, or load an example.\r\nint square(int num) {\r\n return num * num + 3;\r\n}\r\n\r\n", + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "C++ source #1" + } + ] + }, + { + "type": "stack", + "header": {}, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "height": 50, + "content": [ { - "type": "stack", - "width": 25.000000000000004, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "compiler": "vc2017_64", - "source": 1, - "options": "-O2", - "filters": { - "binary": false, - "execute": false, - "labels": true, - "directives": true, - "commentOnly": true, - "trim": false, - "intel": true, - "demangle": true - }, - "libs": [], - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "VC 2017 amd64 (Editor #1, Compiler #1) C++" - } - ] + "type": "component", + "componentName": "codeEditor", + "componentState": { + "id": 2, + "source": "// Type your code here, or load an example.\r\nint square(int num) {\r\n return num * num;\r\n}", + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "C++ source #2" + } + ] + } + ] + }, + { + "type": "stack", + "width": 25.000000000000004, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "compiler", + "componentState": { + "compiler": "vc2017_64", + "source": 1, + "options": "-O2", + "filters": { + "binary": false, + "execute": false, + "labels": true, + "directives": true, + "commentOnly": true, + "trim": false, + "intel": true, + "demangle": true }, - { - "type": "stack", - "width": 25.000000000000004, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "output", - "componentState": { - "compiler": 1, - "editor": 1, - "wrap": false - }, - "isClosable": true, - "reorderEnabled": true, - "title": "#1 with VC 2017 amd64" - } - ] + "libs": [], + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "VC 2017 amd64 (Editor #1, Compiler #1) C++" + } + ] + }, + { + "type": "stack", + "width": 25.000000000000004, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "output", + "componentState": { + "compiler": 1, + "editor": 1, + "wrap": false + }, + "isClosable": true, + "reorderEnabled": true, + "title": "#1 with VC 2017 amd64" + } + ] + }, + { + "type": "stack", + "width": 25.000000000000004, + "isClosable": true, + "reorderEnabled": true, + "title": "", + "activeItemIndex": 0, + "content": [ + { + "type": "component", + "componentName": "compiler", + "componentState": { + "compiler": "vc2017_32", + "source": 2, + "options": "-O3", + "filters": { + "binary": false, + "execute": false, + "labels": true, + "directives": true, + "commentOnly": true, + "trim": false, + "intel": true, + "demangle": true }, - { - "type": "stack", - "width": 25.000000000000004, - "isClosable": true, - "reorderEnabled": true, - "title": "", - "activeItemIndex": 0, - "content": [ - { - "type": "component", - "componentName": "compiler", - "componentState": { - "compiler": "vc2017_32", - "source": 2, - "options": "-O3", - "filters": { - "binary": false, - "execute": false, - "labels": true, - "directives": true, - "commentOnly": true, - "trim": false, - "intel": true, - "demangle": true - }, - "libs": [], - "lang": "c++" - }, - "isClosable": true, - "reorderEnabled": true, - "title": "VC 2017 x86 (Editor #2, Compiler #2) C++" - } - ] - } - ] + "libs": [], + "lang": "c++" + }, + "isClosable": true, + "reorderEnabled": true, + "title": "VC 2017 x86 (Editor #2, Compiler #2) C++" + } + ] } - ], - "isClosable": true, - "reorderEnabled": true, - "title": "", - "openPopouts": [], - "maximisedItemId": null -}
\ No newline at end of file + ] + } + ], + "isClosable": true, + "reorderEnabled": true, + "title": "", + "openPopouts": [], + "maximisedItemId": null +} diff --git a/test/utils.js b/test/utils.js index 5f2bbaff4..33252f31e 100644 --- a/test/utils.js +++ b/test/utils.js @@ -26,7 +26,6 @@ import path from 'path'; import { fileURLToPath } from 'url'; import chai from 'chai'; -import fs from 'fs-extra'; import { CompilationEnvironment } from '../lib/compilation-env'; import { CompilationQueue } from '../lib/compilation-queue'; @@ -49,8 +48,6 @@ export function resolvePathFromTestRoot(...args) { return path.resolve(TEST_ROOT, ...args); } -export { - fs, - chai, - path, -}; +export {default as fs} from 'fs-extra'; +export {default as chai} from 'chai'; +export {default as path} from 'path'; diff --git a/tsconfig.backend.json b/tsconfig.backend.json new file mode 100644 index 000000000..abdafdc52 --- /dev/null +++ b/tsconfig.backend.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.base.json", + "include": ["lib/**/*"], + "exclude": ["static/**/*"], + "compilerOptions": { + /* Module resolution */ + "target": "esnext", + "module": "esnext", + "moduleResolution": "node", + /* Code generation */ + "outDir": "./out/app", + "typeRoots": ["./typings", "./node_modules/@types"] + } +} diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 000000000..c1058b205 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + /* Code generation */ + "sourceMap": true, + "downlevelIteration": true, + "importHelpers": true, + /* Module resolution */ + "esModuleInterop": true, + /* Other options */ + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true + } +} diff --git a/tsconfig.frontend.json b/tsconfig.frontend.json new file mode 100644 index 000000000..daaeccb06 --- /dev/null +++ b/tsconfig.frontend.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + /* Module resolution */ + "target": "es5", + "rootDirs": ["./static", "./types"], + /* Code generation */ + "inlineSources": true, + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..3c586996c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.backend.json" +} diff --git a/types/features/assembly-documentation.interfaces.ts b/types/features/assembly-documentation.interfaces.ts new file mode 100644 index 000000000..21e390bdc --- /dev/null +++ b/types/features/assembly-documentation.interfaces.ts @@ -0,0 +1,41 @@ +// Copyright (c) 2021, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +export interface AssemblyDocumentationRequest { + /** Specifies which instruction set to look for */ + instructionSet: 'amd64' | 'arm32' | 'java'; + /** Instruction set opcode to look for */ + opcode: string; +} + +export interface AssemblyDocumentationResponse { + tooltip: string; + html: string; + url: string; +} + +export interface AssemblyDocumentationError { + /** Explanatory error string */ + error: string; +} diff --git a/views/templates.pug b/views/templates.pug index e6c82bd96..879ca0020 100644 --- a/views/templates.pug +++ b/views/templates.pug @@ -108,9 +108,15 @@ button.dropdown-item.btn.btn-sm.btn-light.view-rustmacroexp(title="Show Rust Macro Expansion") span.dropdown-icon.fas.fa-arrows-alt | Rust Macro Expansion output + button.dropdown-item.btn.btn-sm.btn-light.view-rusthir(title="Show Rust HIR") + span.dropdown-icon.fas.fa-arrows-alt + | Rust HIR output button.dropdown-item.btn.btn-sm.btn-light.view-gccdump(title="Show Tree/RTL dump (GCC only)") span.dropdown-icon.fas.fa-tree | GCC Tree/RTL output + button.dropdown-item.btn.btn-sm.btn-light.view-gnatdebugtree(title="Show GNAT Debug Tree") + span.dropdown-icon.fas.fa-tree + | GNAT Debug Tree button.dropdown-item.btn.btn-sm.btn-light.view-gnatdebug(title="Show GNAT Debug Expanded Code") span.dropdown-icon.fas.fa-tree | GNAT Debug Expanded Code @@ -291,6 +297,11 @@ select.change-device(placeholder="Select a device...") .monaco-placeholder + #gnatdebugtree + .top-bar.btn-toolbar.bg-light(role="toolbar") + include font-size + .monaco-placeholder + #gnatdebug .top-bar.btn-toolbar.bg-light(role="toolbar") include font-size @@ -306,6 +317,11 @@ include font-size .monaco-placeholder + #rusthir + .top-bar.btn-toolbar.bg-light(role="toolbar") + include font-size + .monaco-placeholder + #gccdump .top-bar.btn-toolbar.bg-light(role="toolbar") include font-size diff --git a/webpack.config.esm.js b/webpack.config.esm.js index 515071145..464b8d2ff 100644 --- a/webpack.config.esm.js +++ b/webpack.config.esm.js @@ -22,17 +22,17 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -/* eslint-disable node/no-unpublished-import */ import path from 'path'; -import { fileURLToPath } from 'url'; +import {fileURLToPath} from 'url'; +/* eslint-disable node/no-unpublished-import */ import CopyWebpackPlugin from 'copy-webpack-plugin'; +import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'; import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import MonacoEditorWebpackPlugin from 'monaco-editor-webpack-plugin'; -import OptimizeCssAssetsPlugin from 'optimize-css-assets-webpack-plugin'; import TerserPlugin from 'terser-webpack-plugin'; -import webpack from 'webpack'; -import ManifestPlugin from 'webpack-manifest-plugin'; +import {HotModuleReplacementPlugin, ProvidePlugin} from 'webpack'; +import {WebpackManifestPlugin} from 'webpack-manifest-plugin'; const __dirname = path.resolve(path.dirname(fileURLToPath(import.meta.url))); const isDev = process.env.NODE_ENV !== 'production'; @@ -43,31 +43,37 @@ const staticPath = path.join(distPath, 'static'); // Hack alert: due to a variety of issues, sometimes we need to change // the name here. Mostly it's things like webpack changes that affect // how minification is done, even though that's supposed not to matter. -const webjackJsHack = '.v4.'; +const webjackJsHack = '.v5.'; const plugins = [ new MonacoEditorWebpackPlugin({ - languages: [ 'cpp', 'go', 'pascal', 'python', 'rust', 'swift', 'java', 'kotlin', 'scala', 'ruby' ], + languages: ['cpp', 'go', 'pascal', 'python', 'rust', 'swift', 'java', 'kotlin', 'scala', 'ruby'], filename: isDev ? '[name].worker.js' : `[name]${webjackJsHack}worker.[contenthash].js`, }), - new CopyWebpackPlugin([ - { - from: 'node_modules/es6-shim/es6-shim.min.js', - to: staticPath, - }, - ]), - new webpack.ProvidePlugin({ + new CopyWebpackPlugin({ + patterns: [ + { + from: 'node_modules/es6-shim/es6-shim.min.js', + to: path.join(staticPath, '[name].[contenthash][ext]'), + }, + ], + }), + new ProvidePlugin({ $: 'jquery', jQuery: 'jquery', }), new MiniCssExtractPlugin({ filename: isDev ? '[name].css' : '[name].[contenthash].css', }), - new ManifestPlugin({ + new WebpackManifestPlugin({ fileName: path.join(distPath, 'manifest.json'), publicPath: '', }), ]; +if (isDev) { + plugins.push(new HotModuleReplacementPlugin()); +} + // eslint-disable-next-line import/no-default-export export default { mode: isDev ? 'development' : 'production', @@ -83,8 +89,11 @@ export default { alias: { 'monaco-editor$': 'monaco-editor/esm/vs/editor/editor.api', }, + fallback: { + path: 'path-browserify', + }, modules: ['./static', './node_modules'], - extensions: [ '.tsx', '.ts', '.js' ], + extensions: ['.tsx', '.ts', '.js'], }, stats: 'normal', devtool: 'source-map', @@ -100,18 +109,14 @@ export default { }, }, }, - moduleIds: 'hashed', + moduleIds: 'deterministic', minimizer: [ - new OptimizeCssAssetsPlugin({ - cssProcessorPluginOptions: { - preset: ['default', { discardComments: { removeAll: true } }], - }, - }), + new CssMinimizerPlugin(), new TerserPlugin({ parallel: true, - sourceMap: true, terserOptions: { - ecma: 5, + ecma: 5, sourceMap: true, + }, }), ], @@ -119,26 +124,12 @@ export default { module: { rules: [ { - test: /\.css$/, - use: [ - { - loader: MiniCssExtractPlugin.loader, - options: { - publicPath: './', - hmr: isDev, - }, - }, - 'css-loader', - ], - }, - { - test: /\.scss$/, + test: /\.s?css$/, use: [ { loader: MiniCssExtractPlugin.loader, options: { publicPath: './', - hmr: isDev, }, }, 'css-loader', @@ -147,7 +138,8 @@ export default { }, { test: /\.(png|woff|woff2|eot|ttf|svg)$/, - loader: 'url-loader?limit=8192', + type: 'asset', + parser: {dataUrlCondition: {maxSize: 8192}}, }, { test: /\.(html)$/, |