diff --git a/frontends/bas/package.json b/frontends/bas/package.json index 9a6f2a142ff..6364fd2aced 100644 --- a/frontends/bas/package.json +++ b/frontends/bas/package.json @@ -144,7 +144,7 @@ "ts-pnp": "1.2.0", "typescript": "4.6.3", "url-loader": "4.1.1", - "vite": "^2.9.9" + "vite": "^2.9.12" }, "vx": { "isBundled": true, diff --git a/frontends/bmd/package.json b/frontends/bmd/package.json index 6e3b8d40c16..6307dad11b3 100644 --- a/frontends/bmd/package.json +++ b/frontends/bmd/package.json @@ -193,7 +193,7 @@ "stylelint-config-styled-components": "^0.1.1", "stylelint-processor-styled-components": "^1.10.0", "ts-jest": "26", - "vite": "^2.9.9" + "vite": "^2.9.12" }, "engines": { "node": ">= 12" diff --git a/frontends/bsd/package.json b/frontends/bsd/package.json index 80dbcf6dfaa..ed783b8cfac 100644 --- a/frontends/bsd/package.json +++ b/frontends/bsd/package.json @@ -144,7 +144,7 @@ "stylelint-config-styled-components": "^0.1.1", "stylelint-processor-styled-components": "^1.10.0", "type-fest": "^0.18.0", - "vite": "^2.9.9", + "vite": "^2.9.12", "zip-stream": "^3.0.1" }, "vx": { diff --git a/frontends/election-manager/package.json b/frontends/election-manager/package.json index 100e2840581..bf66374819d 100644 --- a/frontends/election-manager/package.json +++ b/frontends/election-manager/package.json @@ -205,7 +205,7 @@ "stylelint-config-prettier": "^8.0.1", "stylelint-config-styled-components": "^0.1.1", "stylelint-processor-styled-components": "^1.10.0", - "vite": "^2.9.9" + "vite": "^2.9.12" }, "vx": { "isBundled": true, diff --git a/frontends/precinct-scanner/.eslintignore b/frontends/precinct-scanner/.eslintignore index 5e4306738b3..0217cd62443 100644 --- a/frontends/precinct-scanner/.eslintignore +++ b/frontends/precinct-scanner/.eslintignore @@ -5,4 +5,8 @@ /cypress/support /prodserver /src/**/*.js +/config +/scripts *.d.ts +*.config.js +*.config.ts diff --git a/frontends/precinct-scanner/config/env.js b/frontends/precinct-scanner/config/env.js new file mode 100644 index 00000000000..3d1411bd0bd --- /dev/null +++ b/frontends/precinct-scanner/config/env.js @@ -0,0 +1,106 @@ +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const paths = require('./paths'); + +// Make sure that including paths.js after env.js will read .env variables. +delete require.cache[require.resolve('./paths')]; + +const NODE_ENV = process.env.NODE_ENV; +if (!NODE_ENV) { + throw new Error( + 'The NODE_ENV environment variable is required but was not specified.' + ); +} + +// https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use +const dotenvFiles = [ + `${paths.dotenv}.${NODE_ENV}.local`, + // Don't include `.env.local` for `test` environment + // since normally you expect tests to produce the same + // results for everyone + NODE_ENV !== 'test' && `${paths.dotenv}.local`, + `${paths.dotenv}.${NODE_ENV}`, + paths.dotenv, +].filter(Boolean); + +// Load environment variables from .env* files. Suppress warnings using silent +// if this file is missing. dotenv will never modify any environment variables +// that have already been set. Variable expansion is supported in .env files. +// https://github.com/motdotla/dotenv +// https://github.com/motdotla/dotenv-expand +dotenvFiles.forEach(dotenvFile => { + if (fs.existsSync(dotenvFile)) { + require('dotenv-expand')( + require('dotenv').config({ + path: dotenvFile, + }) + ); + } +}); + +// We support resolving modules according to `NODE_PATH`. +// This lets you use absolute paths in imports inside large monorepos: +// https://github.com/facebook/create-react-app/issues/253. +// It works similar to `NODE_PATH` in Node itself: +// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders +// Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored. +// Otherwise, we risk importing Node.js core modules into an app instead of webpack shims. +// https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421 +// We also resolve them to make sure all tools using them work consistently. +const appDirectory = fs.realpathSync(process.cwd()); +process.env.NODE_PATH = (process.env.NODE_PATH || '') + .split(path.delimiter) + .filter(folder => folder && !path.isAbsolute(folder)) + .map(folder => path.resolve(appDirectory, folder)) + .join(path.delimiter); + +// Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be +// injected into the application via DefinePlugin in webpack configuration. +const REACT_APP = /^REACT_APP_/i; + +function getClientEnvironment(publicUrl) { + const raw = Object.keys(process.env) + .filter(key => REACT_APP.test(key)) + .reduce( + (env, key) => { + env[key] = process.env[key]; + return env; + }, + { + // Useful for determining whether we’re running in production mode. + // Most importantly, it switches React into the correct mode. + NODE_ENV: process.env.NODE_ENV || 'development', + // Useful for resolving the correct path to static assets in `public`. + // For example, . + // This should only be used as an escape hatch. Normally you would put + // images into the `src` and `import` them in code to get their paths. + PUBLIC_URL: publicUrl, + // We support configuring the sockjs pathname during development. + // These settings let a developer run multiple simultaneous projects. + // They are used as the connection `hostname`, `pathname` and `port` + // in webpackHotDevClient. They are used as the `sockHost`, `sockPath` + // and `sockPort` options in webpack-dev-server. + WDS_SOCKET_HOST: process.env.WDS_SOCKET_HOST, + WDS_SOCKET_PATH: process.env.WDS_SOCKET_PATH, + WDS_SOCKET_PORT: process.env.WDS_SOCKET_PORT, + // Whether or not react-refresh is enabled. + // react-refresh is not 100% stable at this time, + // which is why it's disabled by default. + // It is defined here so it is available in the webpackHotDevClient. + FAST_REFRESH: process.env.FAST_REFRESH !== 'false', + } + ); + // Stringify all values so we can feed into webpack DefinePlugin + const stringified = { + 'process.env': Object.keys(raw).reduce((env, key) => { + env[key] = JSON.stringify(raw[key]); + return env; + }, {}), + }; + + return { raw, stringified }; +} + +module.exports = getClientEnvironment; diff --git a/frontends/precinct-scanner/config/jest/cssTransform.js b/frontends/precinct-scanner/config/jest/cssTransform.js new file mode 100644 index 00000000000..8f65114812a --- /dev/null +++ b/frontends/precinct-scanner/config/jest/cssTransform.js @@ -0,0 +1,14 @@ +'use strict'; + +// This is a custom Jest transformer turning style imports into empty objects. +// http://facebook.github.io/jest/docs/en/webpack.html + +module.exports = { + process() { + return 'module.exports = {};'; + }, + getCacheKey() { + // The output is always the same. + return 'cssTransform'; + }, +}; diff --git a/frontends/precinct-scanner/config/paths.js b/frontends/precinct-scanner/config/paths.js new file mode 100644 index 00000000000..59c6d044b74 --- /dev/null +++ b/frontends/precinct-scanner/config/paths.js @@ -0,0 +1,73 @@ +'use strict'; + +const path = require('path'); +const fs = require('fs'); +const getPublicUrlOrPath = require('react-dev-utils/getPublicUrlOrPath'); + +// Make sure any symlinks in the project folder are resolved: +// https://github.com/facebook/create-react-app/issues/637 +const appDirectory = fs.realpathSync(process.cwd()); +const resolveApp = relativePath => path.resolve(appDirectory, relativePath); + +// We use `PUBLIC_URL` environment variable or "homepage" field to infer +// "public path" at which the app is served. +// webpack needs to know it to put the right + + diff --git a/frontends/precinct-scanner/jest.config.js b/frontends/precinct-scanner/jest.config.js new file mode 100644 index 00000000000..57e4d21b190 --- /dev/null +++ b/frontends/precinct-scanner/jest.config.js @@ -0,0 +1,32 @@ +const shared = require('../../jest.config.shared'); + +/** + * @type {import('@jest/types').Config.InitialOptions} + */ +module.exports = { + ...shared, + collectCoverageFrom: [ + 'src/**/*.{js,jsx,ts,tsx}', + '!src/config/*', + '!src/**/*.d.ts', + '!src/index.tsx', + ], + coverageThreshold: { + global: { + statements: 95, + branches: 91, + functions: 94, + lines: 95, + }, + }, + resetMocks: true, + setupFiles: ['react-app-polyfill/jsdom'], + setupFilesAfterEnv: ['/src/setupTests.ts'], + testEnvironment: 'jsdom', + transform: { + '^.+\\.css$': '/config/jest/cssTransform.js', + }, + transformIgnorePatterns: [ + '[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs|cjs|ts|tsx)$', + ], +}; diff --git a/frontends/precinct-scanner/package.json b/frontends/precinct-scanner/package.json index e5bba3c0929..a98e2bf1b8e 100644 --- a/frontends/precinct-scanner/package.json +++ b/frontends/precinct-scanner/package.json @@ -9,19 +9,17 @@ ], "scripts": { "type-check": "tsc --build", - "build": "tsc --build && react-scripts build", + "build": "vite build", "build:watch": "tsc --build --watch", - "eject": "react-scripts eject", "format": "prettier '**/*.+(css|graphql|json|less|md|mdx|sass|scss|yaml|yml)' --write", "lint": "pnpm type-check && eslint . && pnpm stylelint:run", "lint:fix": "pnpm type-check && eslint . --fix && pnpm stylelint:run:fix", - "start": "react-scripts start", + "start": "vite", "stylelint:run": "stylelint 'src/**/*.{js,jsx,ts,tsx}' && stylelint 'src/**/*.css' --config .stylelintrc-css.js", "stylelint:run:fix": "stylelint 'src/**/*.{js,jsx,ts,tsx}' --fix && stylelint 'src/**/*.css' --config .stylelintrc-css.js --fix", "test": "is-ci test:coverage test:watch", - "test:debug": "TZ=UTC react-scripts --inspect-brk test --runInBand --no-cache --env=jest-environment-jsdom-sixteen", - "test:watch": "TZ=UTC react-scripts test --env=jest-environment-jsdom-sixteen", - "test:coverage": "TZ=UTC react-scripts test --coverage --watchAll=false", + "test:watch": "TZ=UTC node scripts/test.js --env=jest-environment-jsdom-sixteen", + "test:coverage": "TZ=UTC node scripts/test.js --coverage --watchAll=false", "pre-commit": "lint-staged" }, "lint-staged": { @@ -54,22 +52,6 @@ "eslintConfig": { "extends": "react-app" }, - "jest": { - "collectCoverageFrom": [ - "src/**/*.{js,jsx,ts,tsx}", - "!src/config/*", - "!src/**/*.d.ts", - "!src/index.tsx" - ], - "coverageThreshold": { - "global": { - "statements": 95, - "branches": 91, - "functions": 94, - "lines": 95 - } - } - }, "dependencies": { "@rooks/use-interval": "^4.11.2", "@testing-library/jest-dom": "^5.11.4", @@ -91,6 +73,7 @@ "base64-js": "^1.3.1", "buffer": "^6.0.3", "debug": "^4.3.1", + "events": "^3.3.0", "fetch-mock": "^9.11.0", "http-proxy-middleware": "1.0.6", "i18next": "^19.4.5", @@ -100,12 +83,12 @@ "luxon": "^1.26.0", "mockdate": "^3.0.5", "normalize.css": "^8.0.1", + "path": "^0.12.7", "pluralize": "^8.0.0", "react": "^17.0.1", "react-dom": "^17.0.1", "react-i18next": "^11.7.3", "react-router-dom": "^5.2.0", - "react-scripts": "4.0.1", "setimmediate": "^1.0.5", "styled-components": "^5.2.3", "typescript": "4.6.3", @@ -117,6 +100,7 @@ "@codemod/parser": "^1.0.6", "@testing-library/react-hooks": "^7.0.2", "@testing-library/user-event": "^12.8.3", + "@types/connect": "^3.4.35", "@types/debug": "^4.1.5", "@types/kiosk-browser": "workspace:*", "@types/pluralize": "^0.0.29", @@ -140,10 +124,13 @@ "eslint-plugin-react-hooks": "^4.2.0", "eslint-plugin-vx": "workspace:*", "is-ci-cli": "^2.1.2", - "jest": "^27.3.1", + "jest": "^26.6.0", "jest-environment-jsdom-sixteen": "^1.0.3", + "jest-watch-typeahead": "0.6.4", "lint-staged": "^10.5.4", "prettier": "^2.6.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.1", "react-refresh": "^0.9.0", "sort-package-json": "^1.50.0", "stylelint": "^13.1.0", @@ -151,7 +138,8 @@ "stylelint-config-prettier": "^8.0.1", "stylelint-config-styled-components": "^0.1.1", "stylelint-processor-styled-components": "^1.9.0", - "ts-jest": "^26.5.6" + "ts-jest": "^26.5.6", + "vite": "^2.9.12" }, "vx": { "isBundled": true, diff --git a/frontends/precinct-scanner/prodserver/setupProxy.js b/frontends/precinct-scanner/prodserver/setupProxy.js index 06be2c6cdbf..0d503a355a6 100644 --- a/frontends/precinct-scanner/prodserver/setupProxy.js +++ b/frontends/precinct-scanner/prodserver/setupProxy.js @@ -8,15 +8,25 @@ const { createProxyMiddleware: proxy } = require('http-proxy-middleware'); +/** + * @param {import('connect').Server} app + */ module.exports = function (app) { app.use(proxy('/scan', { target: 'http://localhost:3002/' })); app.use(proxy('/config', { target: 'http://localhost:3002/' })); app.use(proxy('/card', { target: 'http://localhost:3001/' })); - app.get('/machine-config', (req, res) => { - res.json({ - machineId: process.env.VX_MACHINE_ID || '0000', - codeVersion: process.env.VX_CODE_VERSION || 'dev', - }); + app.use('/machine-config', (req, res, next) => { + if (req.method === 'GET') { + res.setHeader('Content-Type', 'application/json'); + res.end( + JSON.stringify({ + machineId: process.env.VX_MACHINE_ID || '0000', + codeVersion: process.env.VX_CODE_VERSION || 'dev', + }) + ); + } else { + next(); + } }); }; diff --git a/frontends/precinct-scanner/scripts/test.js b/frontends/precinct-scanner/scripts/test.js new file mode 100644 index 00000000000..b57cb38346a --- /dev/null +++ b/frontends/precinct-scanner/scripts/test.js @@ -0,0 +1,53 @@ +'use strict'; + +// Do this as the first thing so that any code reading it knows the right env. +process.env.BABEL_ENV = 'test'; +process.env.NODE_ENV = 'test'; +process.env.PUBLIC_URL = ''; + +// Makes the script crash on unhandled rejections instead of silently +// ignoring them. In the future, promise rejections that are not handled will +// terminate the Node.js process with a non-zero exit code. +process.on('unhandledRejection', err => { + throw err; +}); + +// Ensure environment variables are read. +require('../config/env'); + + +const jest = require('jest'); +const execSync = require('child_process').execSync; +let argv = process.argv.slice(2); + +function isInGitRepository() { + try { + execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' }); + return true; + } catch (e) { + return false; + } +} + +function isInMercurialRepository() { + try { + execSync('hg --cwd . root', { stdio: 'ignore' }); + return true; + } catch (e) { + return false; + } +} + +// Watch unless on CI or explicitly running all tests +if ( + !process.env.CI && + argv.indexOf('--watchAll') === -1 && + argv.indexOf('--watchAll=false') === -1 +) { + // https://github.com/facebook/create-react-app/issues/5210 + const hasSourceControl = isInGitRepository() || isInMercurialRepository(); + argv.push(hasSourceControl ? '--watch' : '--watchAll'); +} + + +jest.run(argv); diff --git a/frontends/precinct-scanner/src/index.tsx b/frontends/precinct-scanner/src/index.tsx index f718dca7d07..9816ad7c3ef 100644 --- a/frontends/precinct-scanner/src/index.tsx +++ b/frontends/precinct-scanner/src/index.tsx @@ -1,4 +1,4 @@ -import 'setimmediate'; +import './polyfills'; import React from 'react'; import ReactDom from 'react-dom'; import { App } from './app'; diff --git a/frontends/precinct-scanner/src/polyfills.ts b/frontends/precinct-scanner/src/polyfills.ts new file mode 100644 index 00000000000..b0375f079fb --- /dev/null +++ b/frontends/precinct-scanner/src/polyfills.ts @@ -0,0 +1,10 @@ +/** + * Provides polyfills needed for this application and its dependencies. + */ + +/* istanbul ignore file */ +import { Buffer } from 'buffer'; +import 'setimmediate'; + +globalThis.global = globalThis; +globalThis.Buffer = Buffer; diff --git a/frontends/precinct-scanner/src/react-app-env.d.ts b/frontends/precinct-scanner/src/react-app-env.d.ts deleted file mode 100644 index 6431bc5fc6b..00000000000 --- a/frontends/precinct-scanner/src/react-app-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/frontends/precinct-scanner/vite.config.ts b/frontends/precinct-scanner/vite.config.ts new file mode 100644 index 00000000000..deee25a256f --- /dev/null +++ b/frontends/precinct-scanner/vite.config.ts @@ -0,0 +1,84 @@ +import { join } from 'path'; +import { defineConfig, loadEnv } from 'vite'; +import { getWorkspacePackageInfo } from '../../script/src/validate-monorepo/pnpm'; +import setupProxy from './prodserver/setupProxy'; + +export default defineConfig(async (env) => { + const workspacePackages = await getWorkspacePackageInfo( + join(__dirname, '../..') + ); + + const envPrefix = 'REACT_APP_'; + const dotenvValues = loadEnv(env.mode, __dirname, envPrefix); + const processEnvDefines = Object.entries(dotenvValues).reduce< + Record + >( + (acc, [key, value]) => ({ + ...acc, + [`process.env.${key}`]: JSON.stringify(value), + }), + {} + ); + + return { + build: { + // Write build files to `build` directory. + outDir: 'build', + + // Do not minify build files. We don't need the space savings and this is + // a minor transparency improvement. + minify: false, + }, + + // Replace some code in Node modules, `#define`-style, to avoid referencing + // Node-only globals like `process`. + define: { + 'process.env.NODE_DEBUG': 'undefined', + 'process.platform': JSON.stringify('browser'), + + // TODO: Replace these with the appropriate `import.meta.env` values. + ...processEnvDefines, + }, + + resolve: { + alias: { + // Replace NodeJS built-in modules with polyfills. + // + // The trailing slash is important, otherwise it will be resolved as a + // built-in NodeJS module. + buffer: require.resolve('buffer/'), + + // Create aliases for all workspace packages, i.e. + // + // { + // '@votingworks/types': '…/libs/types/src/index.ts', + // '@votingworks/utils': '…/libs/utils/src/index.ts', + // … + // } + // + // This allows re-mapping imports for workspace packages to their + // TypeScript source code rather than the built JavaScript. + ...Array.from(workspacePackages.values()).reduce< + Record + >( + (aliases, { path, name, source }) => + !source ? aliases : { ...aliases, [name]: join(path, source) }, + {} + ), + }, + }, + + plugins: [ + // Setup the proxy to local services, e.g. `smartcards`. + { + name: 'development-proxy', + configureServer: (app) => { + setupProxy(app.middlewares); + }, + }, + ], + + // Pass some environment variables to the client in `import.meta.env`. + envPrefix, + }; +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e51415d914..300a2e52e50 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -156,7 +156,7 @@ importers: ts-pnp: 1.2.0_typescript@4.6.3 typescript: 4.6.3 url-loader: 4.1.1_file-loader@6.1.1 - vite: 2.9.9 + vite: 2.9.12 specifiers: '@babel/core': 7.12.3 '@jest/types': ^28.1.0 @@ -240,7 +240,7 @@ importers: ts-pnp: 1.2.0 typescript: 4.6.3 url-loader: 4.1.1 - vite: ^2.9.9 + vite: ^2.9.12 zod: 3.14.4 frontends/bas/prodserver: dependencies: @@ -372,7 +372,7 @@ importers: stylelint-config-styled-components: 0.1.1 stylelint-processor-styled-components: 1.10.0 ts-jest: 26.5.6_jest@26.6.0+typescript@4.6.3 - vite: 2.9.9 + vite: 2.9.12 specifiers: '@babel/core': 7.12.3 '@babel/runtime': ^7.18.3 @@ -493,7 +493,7 @@ importers: typescript: 4.6.3 url-loader: 4.1.1 use-interval: ^1.2.1 - vite: ^2.9.9 + vite: ^2.9.12 zod: 3.14.4 frontends/bmd/prodserver: dependencies: @@ -583,7 +583,7 @@ importers: stylelint-config-styled-components: 0.1.1 stylelint-processor-styled-components: 1.10.0 type-fest: 0.18.1 - vite: 2.9.9 + vite: 2.9.12 zip-stream: 3.0.1 specifiers: '@testing-library/jest-dom': ^5.16.4 @@ -663,7 +663,7 @@ importers: type-fest: ^0.18.0 typescript: 4.6.3 use-interval: ^1.2.1 - vite: ^2.9.9 + vite: ^2.9.12 zip-stream: ^3.0.1 zod: 3.14.4 frontends/bsd/prodserver: @@ -826,7 +826,7 @@ importers: stylelint-config-prettier: 8.0.2_stylelint@13.8.0 stylelint-config-styled-components: 0.1.1 stylelint-processor-styled-components: 1.10.0 - vite: 2.9.9 + vite: 2.9.12 specifiers: '@babel/core': 7.12.3 '@codemod/parser': ^1.0.6 @@ -972,7 +972,7 @@ importers: url-loader: 4.1.1 use-interval: ^1.2.1 util: ^0.12.4 - vite: ^2.9.9 + vite: ^2.9.12 webpack: 4.44.2 webpack-dev-server: 3.11.0 webpack-manifest-plugin: 2.2.0 @@ -1010,6 +1010,7 @@ importers: base64-js: 1.5.1 buffer: 6.0.3 debug: 4.3.1 + events: 3.3.0 fetch-mock: 9.11.0 http-proxy-middleware: 1.0.6 i18next: 19.8.4 @@ -1019,6 +1020,7 @@ importers: luxon: 1.26.0 mockdate: 3.0.5 normalize.css: 8.0.1 + path: 0.12.7 pluralize: 8.0.0 react: 17.0.1 react-dom: 17.0.1_react@17.0.1 @@ -1035,6 +1037,7 @@ importers: '@codemod/parser': 1.1.0 '@testing-library/react-hooks': 7.0.2_react-dom@17.0.1+react@17.0.1 '@testing-library/user-event': 12.8.3 + '@types/connect': 3.4.35 '@types/debug': 4.1.5 '@types/kiosk-browser': link:../../libs/@types/kiosk-browser '@types/pluralize': 0.0.29 @@ -1051,17 +1054,20 @@ importers: eslint-plugin-cypress: 2.11.2_eslint@7.25.0 eslint-plugin-flowtype: 5.2.0_eslint@7.25.0 eslint-plugin-import: 2.22.1_eslint@7.25.0+typescript@4.6.3 - eslint-plugin-jest: 26.1.5_62228e5668a1e6d9610e26ca4369fbd2 + eslint-plugin-jest: 26.1.5_e4c05cae16a9d3a7bb674f2465aaffb4 eslint-plugin-jsx-a11y: 6.4.1_eslint@7.25.0 eslint-plugin-prettier: 3.4.1_7cabcd44e7cd14e2dc36d797dddf276e eslint-plugin-react: 7.22.0_eslint@7.25.0 eslint-plugin-react-hooks: 4.2.0_eslint@7.25.0 eslint-plugin-vx: link:../../libs/eslint-plugin-vx is-ci-cli: 2.1.2 - jest: 27.5.1 + jest: 26.6.3 jest-environment-jsdom-sixteen: 1.0.3 + jest-watch-typeahead: 0.6.4_jest@26.6.3 lint-staged: 10.5.4 prettier: 2.6.2 + react-app-polyfill: 3.0.0 + react-dev-utils: 12.0.1_eslint@7.25.0+typescript@4.6.3 react-refresh: 0.9.0 sort-package-json: 1.50.0 stylelint: 13.8.0 @@ -1069,7 +1075,8 @@ importers: stylelint-config-prettier: 8.0.2_stylelint@13.8.0 stylelint-config-styled-components: 0.1.1 stylelint-processor-styled-components: 1.10.0 - ts-jest: 26.5.6_jest@27.5.1+typescript@4.6.3 + ts-jest: 26.5.6_jest@26.6.3+typescript@4.6.3 + vite: 2.9.12 specifiers: '@codemod/parser': ^1.0.6 '@rooks/use-interval': ^4.11.2 @@ -1077,6 +1084,7 @@ importers: '@testing-library/react': ^12.1.5 '@testing-library/react-hooks': ^7.0.2 '@testing-library/user-event': ^12.8.3 + '@types/connect': ^3.4.35 '@types/debug': ^4.1.5 '@types/jest': ^24.0.0 '@types/kiosk-browser': workspace:* @@ -1116,22 +1124,27 @@ importers: eslint-plugin-react: ^7.18.3 eslint-plugin-react-hooks: ^4.2.0 eslint-plugin-vx: workspace:* + events: ^3.3.0 fetch-mock: ^9.11.0 http-proxy-middleware: 1.0.6 i18next: ^19.4.5 is-ci-cli: ^2.1.2 - jest: ^27.3.1 + jest: ^26.6.0 jest-environment-jsdom-sixteen: ^1.0.3 jest-fetch-mock: ^3.0.3 + jest-watch-typeahead: 0.6.4 js-file-download: ^0.4.12 js-sha256: ^0.9.0 lint-staged: ^10.5.4 luxon: ^1.26.0 mockdate: ^3.0.5 normalize.css: ^8.0.1 + path: ^0.12.7 pluralize: ^8.0.0 prettier: ^2.6.2 react: ^17.0.1 + react-app-polyfill: ^3.0.0 + react-dev-utils: ^12.0.1 react-dom: ^17.0.1 react-i18next: ^11.7.3 react-refresh: ^0.9.0 @@ -1148,6 +1161,7 @@ importers: ts-jest: ^26.5.6 typescript: 4.6.3 use-interval: ^1.3.0 + vite: ^2.9.12 web-vitals: ^1.0.1 zod: 3.14.4 frontends/precinct-scanner/prodserver: @@ -2651,7 +2665,7 @@ importers: eslint-plugin-vx: link:../../libs/eslint-plugin-vx fast-check: 2.23.2 is-ci-cli: 2.1.2 - jest: 26.6.3 + jest: 26.6.3_canvas@2.9.1 jest-watch-typeahead: 0.6.4_jest@26.6.3 lint-staged: 10.5.3 nock: 13.1.0 @@ -2791,6 +2805,7 @@ packages: resolution: integrity: sha512-kixrYn4JwfAVPa0f2yfzc2AWti6WRRyO3XjWW5PJAvtE11qhSayrrcrEnee05KAtNaPC+EwehE8Qt1UedEVB8w== /@babel/compat-data/7.16.4: + dev: true engines: node: '>=6.9.0' resolution: @@ -2882,6 +2897,7 @@ packages: json5: 2.2.0 semver: 6.3.0 source-map: 0.5.7 + dev: true engines: node: '>=6.9.0' resolution: @@ -2947,6 +2963,7 @@ packages: '@babel/types': 7.16.0 jsesc: 2.5.2 source-map: 0.5.7 + dev: true engines: node: '>=6.9.0' resolution: @@ -3015,6 +3032,7 @@ packages: '@babel/helper-validator-option': 7.14.5 browserslist: 4.18.1 semver: 6.3.0 + dev: true engines: node: '>=6.9.0' peerDependencies: @@ -3181,6 +3199,7 @@ packages: /@babel/helper-environment-visitor/7.16.5: dependencies: '@babel/types': 7.16.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -3234,6 +3253,7 @@ packages: '@babel/helper-get-function-arity': 7.16.0 '@babel/template': 7.16.0 '@babel/types': 7.16.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -3268,6 +3288,7 @@ packages: /@babel/helper-get-function-arity/7.16.0: dependencies: '@babel/types': 7.16.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -3282,6 +3303,7 @@ packages: /@babel/helper-hoist-variables/7.16.0: dependencies: '@babel/types': 7.16.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -3337,6 +3359,7 @@ packages: /@babel/helper-module-imports/7.16.0: dependencies: '@babel/types': 7.17.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -3387,6 +3410,7 @@ packages: '@babel/template': 7.16.0 '@babel/traverse': 7.16.5 '@babel/types': 7.16.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -3500,6 +3524,7 @@ packages: /@babel/helper-simple-access/7.16.0: dependencies: '@babel/types': 7.16.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -3540,6 +3565,7 @@ packages: /@babel/helper-split-export-declaration/7.16.0: dependencies: '@babel/types': 7.16.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -3622,6 +3648,7 @@ packages: '@babel/template': 7.16.0 '@babel/traverse': 7.16.5 '@babel/types': 7.16.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -3710,6 +3737,7 @@ packages: resolution: integrity: sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== /@babel/parser/7.16.6: + dev: true engines: node: '>=6.0.0' hasBin: true @@ -6641,6 +6669,7 @@ packages: '@babel/code-frame': 7.16.7 '@babel/parser': 7.16.6 '@babel/types': 7.16.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -6728,6 +6757,7 @@ packages: '@babel/types': 7.16.0 debug: 4.3.3 globals: 11.12.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -6790,6 +6820,7 @@ packages: dependencies: '@babel/helper-validator-identifier': 7.15.7 to-fast-properties: 2.0.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -6798,6 +6829,7 @@ packages: dependencies: '@babel/helper-validator-identifier': 7.16.7 to-fast-properties: 2.0.0 + dev: true engines: node: '>=6.9.0' resolution: @@ -7140,7 +7172,7 @@ packages: /@jest/console/26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 17.0.36 + '@types/node': 16.11.29 chalk: 4.1.2 jest-message-util: 26.6.2 jest-util: 26.6.2 @@ -7191,7 +7223,7 @@ packages: /@jest/console/27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 17.0.36 + '@types/node': 16.11.29 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -7235,6 +7267,43 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + /@jest/core/26.6.3_canvas@2.9.1: + dependencies: + '@jest/console': 26.6.2 + '@jest/reporters': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 17.0.36 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 26.6.2 + jest-config: 26.6.3_canvas@2.9.1 + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-resolve-dependencies: 26.6.3 + jest-runner: 26.6.3_canvas@2.9.1 + jest-runtime: 26.6.3_canvas@2.9.1 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + jest-watcher: 26.6.2 + micromatch: 4.0.5 + p-each-series: 2.2.0 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + dev: true + engines: + node: '>= 10.14.2' + peerDependencies: + canvas: '*' + resolution: + integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== /@jest/core/27.3.1: dependencies: '@jest/console': 27.3.1 @@ -7416,7 +7485,7 @@ packages: jest-regex-util: 27.5.1 jest-resolve: 27.5.1 jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1_canvas@2.9.1 + jest-runner: 27.5.1 jest-runtime: 27.5.1 jest-snapshot: 27.5.1 jest-util: 27.5.1 @@ -7861,6 +7930,20 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== + /@jest/test-sequencer/26.6.3_canvas@2.9.1: + dependencies: + '@jest/test-result': 26.6.2 + graceful-fs: 4.2.10 + jest-haste-map: 26.6.2 + jest-runner: 26.6.3_canvas@2.9.1 + jest-runtime: 26.6.3_canvas@2.9.1 + dev: true + engines: + node: '>= 10.14.2' + peerDependencies: + canvas: '*' + resolution: + integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== /@jest/test-sequencer/27.3.1: dependencies: '@jest/test-result': 27.3.1 @@ -8005,7 +8088,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 17.0.36 + '@types/node': 16.11.29 '@types/yargs': 15.0.14 chalk: 4.1.2 engines: @@ -8063,7 +8146,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 17.0.36 + '@types/node': 16.11.29 '@types/yargs': 16.0.4 chalk: 4.1.2 dev: true @@ -11435,6 +11518,11 @@ packages: node: '>= 0.12.0' resolution: integrity: sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + /address/1.2.0: + engines: + node: '>= 10.0.0' + resolution: + integrity: sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig== /adjust-sourcemap-loader/3.0.0: dependencies: loader-utils: 2.0.0 @@ -11832,7 +11920,6 @@ packages: resolution: integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== /asap/2.0.6: - dev: false resolution: integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== /asn1.js/5.4.1: @@ -11962,7 +12049,7 @@ packages: integrity: sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA== /axios/0.21.1_debug@4.3.1: dependencies: - follow-redirects: 1.14.1_debug@4.3.1 + follow-redirects: 1.14.1_debug@4.3.4 dev: true peerDependencies: debug: '*' @@ -11970,7 +12057,7 @@ packages: integrity: sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== /axios/0.21.1_debug@4.3.2: dependencies: - follow-redirects: 1.14.1_debug@4.3.4 + follow-redirects: 1.14.1_debug@4.3.2 dev: true peerDependencies: debug: '*' @@ -12585,10 +12672,8 @@ packages: resolution: integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== /binary-extensions/2.2.0: - dev: false engines: node: '>=8' - optional: true resolution: integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== /bindings/1.5.0: @@ -12800,6 +12885,7 @@ packages: escalade: 3.1.1 node-releases: 2.0.1 picocolors: 1.0.0 + dev: true engines: node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 hasBin: true @@ -12817,6 +12903,18 @@ packages: hasBin: true resolution: integrity: sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== + /browserslist/4.21.0: + dependencies: + caniuse-lite: 1.0.30001358 + electron-to-chromium: 1.4.168 + node-releases: 2.0.5 + update-browserslist-db: 1.0.4_browserslist@4.21.0 + dev: true + engines: + node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 + hasBin: true + resolution: + integrity: sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA== /bs-logger/0.2.6: dependencies: fast-json-stable-stringify: 2.1.0 @@ -13090,11 +13188,16 @@ packages: resolution: integrity: sha512-o0PRQSrSCGJKCPZcgMzl5fUaj5xHe8qA2m4QRvnyY4e1lITqoNkr7q/Oh1NcpGSy0Th97UZ35yoKcINPoq7YOQ== /caniuse-lite/1.0.30001282: + dev: true resolution: integrity: sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg== /caniuse-lite/1.0.30001341: resolution: integrity: sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA== + /caniuse-lite/1.0.30001358: + dev: true + resolution: + integrity: sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw== /canvas/2.9.1: dependencies: '@mapbox/node-pre-gyp': 1.0.8 @@ -13239,6 +13342,22 @@ packages: fsevents: 2.3.2 resolution: integrity: sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q== + /chokidar/3.5.3: + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + dev: true + engines: + node: '>= 8.10.0' + optionalDependencies: + fsevents: 2.3.2 + resolution: + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== /chownr/1.1.4: dev: false resolution: @@ -13272,6 +13391,10 @@ packages: dev: true resolution: integrity: sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg== + /ci-info/3.3.2: + dev: true + resolution: + integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== /cipher-base/1.0.4: dependencies: inherits: 2.0.4 @@ -13740,6 +13863,11 @@ packages: requiresBuild: true resolution: integrity: sha512-3s+ed8er9ahK+zJpp9ZtuVcDoFzHNiZsPbNAAE4KXgrRHbjSqqNN6xGSXq6bq7TZIbKj4NLrLb6bJ5i+vSVjHA== + /core-js/3.23.2: + dev: true + requiresBuild: true + resolution: + integrity: sha512-ELJOWxNrJfOH/WK4VJ3Qd+fOqZuOuDNDJz0xG6Bt4mGg2eO/UT9CljCrbqDGovjLKUrGajEEBcoTOc0w+yBYeQ== /core-util-is/1.0.2: resolution: integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -14520,6 +14648,12 @@ packages: node: '>=10' resolution: integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + /define-lazy-prop/2.0.0: + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== /define-properties/1.1.3: dependencies: object-keys: 1.1.1 @@ -14651,9 +14785,8 @@ packages: integrity: sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== /detect-port-alt/1.1.6: dependencies: - address: 1.1.2 + address: 1.2.0 debug: 2.6.9 - dev: false engines: node: '>= 4.2.1' hasBin: true @@ -14904,11 +15037,16 @@ packages: resolution: integrity: sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A== /electron-to-chromium/1.3.902: + dev: true resolution: integrity: sha512-zFv5jbtyIr+V9FuT9o439isXbkXQ27mJqZfLXpBKzXugWE8+3RotHbXJlli0/r+Rvdlkut0OOMzeOWLAjH0jCw== /electron-to-chromium/1.4.137: resolution: integrity: sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA== + /electron-to-chromium/1.4.168: + dev: true + resolution: + integrity: sha512-yz247hclRBaP8ABB1hf9kL7AMfa+yC2hB9F3XF8Y87VWMnYgq4QYvV6acRACcDkTDxfGQ4GYK/aZPQiuFMGbaA== /elegant-spinner/1.0.1: dev: true engines: @@ -15225,7 +15363,7 @@ packages: - android resolution: integrity: sha512-vdJ7t8A8msPfKpYUGUV/KaTQRiZ0vDa2XSTlzXVkGGVHLKPeb85PBUtYJcEgw3htW3IdX5i1t1IMdQCwJJgNAg== - /esbuild-android-64/0.14.42: + /esbuild-android-64/0.14.47: cpu: - x64 dev: true @@ -15235,7 +15373,7 @@ packages: os: - android resolution: - integrity: sha512-P4Y36VUtRhK/zivqGVMqhptSrFILAGlYp0Z8r9UQqHJ3iWztRCNWnlBzD9HRx0DbueXikzOiwyOri+ojAFfW6A== + integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g== /esbuild-android-arm64/0.13.14: cpu: - arm64 @@ -15289,7 +15427,7 @@ packages: - android resolution: integrity: sha512-BdgGfxeA5hBQNErLr7BWJUA8xjflEfyaARICy8e0OJYNSAwDbEzOf8LyiKWSrDcgV129mWhi3VpbNQvOIDEHcg== - /esbuild-android-arm64/0.14.42: + /esbuild-android-arm64/0.14.47: cpu: - arm64 dev: true @@ -15299,7 +15437,7 @@ packages: os: - android resolution: - integrity: sha512-0cOqCubq+RWScPqvtQdjXG3Czb3AWI2CaKw3HeXry2eoA2rrPr85HF7IpdU26UWdBXgPYtlTN1LUiuXbboROhg== + integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ== /esbuild-darwin-64/0.13.14: cpu: - x64 @@ -15353,7 +15491,7 @@ packages: - darwin resolution: integrity: sha512-VRaOXMMrsG5n53pl4qFZQdXy2+E0NoLP/QH3aDUI0+bQP+ZHDmbINKcDy2IX7GVFI9kqPS18iJNAs5a6/G2LZg== - /esbuild-darwin-64/0.14.42: + /esbuild-darwin-64/0.14.47: cpu: - x64 dev: true @@ -15363,7 +15501,7 @@ packages: os: - darwin resolution: - integrity: sha512-ipiBdCA3ZjYgRfRLdQwP82rTiv/YVMtW36hTvAN5ZKAIfxBOyPXY7Cejp3bMXWgzKD8B6O+zoMzh01GZsCuEIA== + integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA== /esbuild-darwin-arm64/0.13.14: cpu: - arm64 @@ -15417,7 +15555,7 @@ packages: - darwin resolution: integrity: sha512-qDez+fHMOrO9Oc9qjt/x+sy09RJVh62kik5tVybKRLmezeV4qczM9/sAYY57YN0aWLdHbcCj2YqJUWYJNsgKnw== - /esbuild-darwin-arm64/0.14.42: + /esbuild-darwin-arm64/0.14.47: cpu: - arm64 dev: true @@ -15427,7 +15565,7 @@ packages: os: - darwin resolution: - integrity: sha512-bU2tHRqTPOaoH/4m0zYHbFWpiYDmaA0gt90/3BMEFaM0PqVK/a6MA2V/ypV5PO0v8QxN6gH5hBPY4YJ2lopXgA== + integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw== /esbuild-freebsd-64/0.13.14: cpu: - x64 @@ -15481,7 +15619,7 @@ packages: - freebsd resolution: integrity: sha512-mec1jENcImVVagddZlGWsdAUwBnzR5cgnhzCxv+9fSMxKbx1uZYLLUAnLPp8m/i934zrumR1xGjJ5VoWdPlI2w== - /esbuild-freebsd-64/0.14.42: + /esbuild-freebsd-64/0.14.47: cpu: - x64 dev: true @@ -15491,7 +15629,7 @@ packages: os: - freebsd resolution: - integrity: sha512-75h1+22Ivy07+QvxHyhVqOdekupiTZVLN1PMwCDonAqyXd8TVNJfIRFrdL8QmSJrOJJ5h8H1I9ETyl2L8LQDaw== + integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ== /esbuild-freebsd-arm64/0.13.14: cpu: - arm64 @@ -15545,7 +15683,7 @@ packages: - freebsd resolution: integrity: sha512-cpjbTs6Iok/AfeB0JgTzyUJTMStC1SQULmany5nHx6S4GTkSgaAHuJzZO0GcVWqghI4e0YL/bjXAhN5Mn6feNw== - /esbuild-freebsd-arm64/0.14.42: + /esbuild-freebsd-arm64/0.14.47: cpu: - arm64 dev: true @@ -15555,7 +15693,7 @@ packages: os: - freebsd resolution: - integrity: sha512-W6Jebeu5TTDQMJUJVarEzRU9LlKpNkPBbjqSu+GUPTHDCly5zZEQq9uHkmHHl7OKm+mQ2zFySN83nmfCeZCyNA== + integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ== /esbuild-linux-32/0.13.14: cpu: - ia32 @@ -15609,7 +15747,7 @@ packages: - linux resolution: integrity: sha512-liIONVT4F2kZmOMwtwASqZ8WkIjb5HHBR9HUffdHiuotSTF3CyZO+EJf+Og+SYYuuVIvt0qHNSFjBA/iSESteQ== - /esbuild-linux-32/0.14.42: + /esbuild-linux-32/0.14.47: cpu: - ia32 dev: true @@ -15619,7 +15757,7 @@ packages: os: - linux resolution: - integrity: sha512-Ooy/Bj+mJ1z4jlWcK5Dl6SlPlCgQB9zg1UrTCeY8XagvuWZ4qGPyYEWGkT94HUsRi2hKsXvcs6ThTOjBaJSMfg== + integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw== /esbuild-linux-64/0.13.14: cpu: - x64 @@ -15673,7 +15811,7 @@ packages: - linux resolution: integrity: sha512-LUnpzoMpRqFON5En4qEj6NWiyH6a1K+Y2qYNKrCy5qPTjDoG/EWeqMz69n8Uv7pRuvDKl3FNGJ1dufTrA5i0sw== - /esbuild-linux-64/0.14.42: + /esbuild-linux-64/0.14.47: cpu: - x64 dev: true @@ -15683,7 +15821,7 @@ packages: os: - linux resolution: - integrity: sha512-2L0HbzQfbTuemUWfVqNIjOfaTRt9zsvjnme6lnr7/MO9toz/MJ5tZhjqrG6uDWDxhsaHI2/nsDgrv8uEEN2eoA== + integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw== /esbuild-linux-arm/0.13.14: cpu: - arm @@ -15737,7 +15875,7 @@ packages: - linux resolution: integrity: sha512-97T+bbXnpqf7mfIG49UR7ZSJFGgvc22byn74qw3Kx2GDCBSQoVFjyWuKOHGXp8nXk3XYrdFF+mQ8yQ7aNsgQvg== - /esbuild-linux-arm/0.14.42: + /esbuild-linux-arm/0.14.47: cpu: - arm dev: true @@ -15747,7 +15885,7 @@ packages: os: - linux resolution: - integrity: sha512-STq69yzCMhdRaWnh29UYrLSr/qaWMm/KqwaRF1pMEK7kDiagaXhSL1zQGXbYv94GuGY/zAwzK98+6idCMUOOCg== + integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA== /esbuild-linux-arm64/0.13.14: cpu: - arm64 @@ -15801,7 +15939,7 @@ packages: - linux resolution: integrity: sha512-DHZHn6FK5q/KL0fpNT/0jE38Nnyk2rXxKE9WENi95EXtqfOLPgE8tzjTZQNgpr61R95QX4ymQU26ni3IZk8buQ== - /esbuild-linux-arm64/0.14.42: + /esbuild-linux-arm64/0.14.47: cpu: - arm64 dev: true @@ -15811,7 +15949,7 @@ packages: os: - linux resolution: - integrity: sha512-c3Ug3e9JpVr8jAcfbhirtpBauLxzYPpycjWulD71CF6ZSY26tvzmXMJYooQ2YKqDY4e/fPu5K8bm7MiXMnyxuA== + integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw== /esbuild-linux-mips64le/0.13.14: cpu: - mips64el @@ -15865,7 +16003,7 @@ packages: - linux resolution: integrity: sha512-fLUzTFZ7uknC0aPTk7/lM7NmaG/9ZqE3SaHEphcaM009SZK/mDOvZugWi1ss6WGNhk13dUrhkfHcc4FSb9hYhg== - /esbuild-linux-mips64le/0.14.42: + /esbuild-linux-mips64le/0.14.47: cpu: - mips64el dev: true @@ -15875,7 +16013,7 @@ packages: os: - linux resolution: - integrity: sha512-QuvpHGbYlkyXWf2cGm51LBCHx6eUakjaSrRpUqhPwjh/uvNUYvLmz2LgPTTPwCqaKt0iwL+OGVL0tXA5aDbAbg== + integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg== /esbuild-linux-ppc64le/0.13.14: cpu: - ppc64 @@ -15929,7 +16067,7 @@ packages: - linux resolution: integrity: sha512-2Oudm2WEfj0dNU9bzIl5L/LrsMEmHWsOsYgJJqu8fDyUDgER+J1d33qz3cUdjsJk7gAENayIxDSpsuCszx0w3A== - /esbuild-linux-ppc64le/0.14.42: + /esbuild-linux-ppc64le/0.14.47: cpu: - ppc64 dev: true @@ -15939,7 +16077,7 @@ packages: os: - linux resolution: - integrity: sha512-8ohIVIWDbDT+i7lCx44YCyIRrOW1MYlks9fxTo0ME2LS/fxxdoJBwHWzaDYhjvf8kNpA+MInZvyOEAGoVDrMHg== + integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w== /esbuild-linux-riscv64/0.14.25: cpu: - riscv64 @@ -15984,7 +16122,7 @@ packages: - linux resolution: integrity: sha512-RPMucPW47rV4t2jlelaE948iCRtbZf5RhifxSwzlpM1Mqdyu99MMNK0w4jFreGTmLN+oGomxIOxD6n+2E/XqHw== - /esbuild-linux-riscv64/0.14.42: + /esbuild-linux-riscv64/0.14.47: cpu: - riscv64 dev: true @@ -15994,7 +16132,7 @@ packages: os: - linux resolution: - integrity: sha512-DzDqK3TuoXktPyG1Lwx7vhaF49Onv3eR61KwQyxYo4y5UKTpL3NmuarHSIaSVlTFDDpcIajCDwz5/uwKLLgKiQ== + integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g== /esbuild-linux-s390x/0.14.25: cpu: - s390x @@ -16039,7 +16177,7 @@ packages: - linux resolution: integrity: sha512-OZ68r7ok6qO7hdwrwQn2p5jbIRRcUcVaAykB7e0uCA0ODwfeGunILM6phJtq2Oz4dlEEFvd+tSuma3paQKwt+A== - /esbuild-linux-s390x/0.14.42: + /esbuild-linux-s390x/0.14.47: cpu: - s390x dev: true @@ -16049,7 +16187,7 @@ packages: os: - linux resolution: - integrity: sha512-YFRhPCxl8nb//Wn6SiS5pmtplBi4z9yC2gLrYoYI/tvwuB1jldir9r7JwAGy1Ck4D7sE7wBN9GFtUUX/DLdcEQ== + integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw== /esbuild-netbsd-64/0.13.14: cpu: - x64 @@ -16103,7 +16241,7 @@ packages: - netbsd resolution: integrity: sha512-iyejQUKn0TzpPkufq8pSCxOg9NheycQbMbPCmjefTe9wYuUlBt1TcHvdoJnYbQzsAhAh1BNq+s0ycRsIJFZzaQ== - /esbuild-netbsd-64/0.14.42: + /esbuild-netbsd-64/0.14.47: cpu: - x64 dev: true @@ -16113,7 +16251,7 @@ packages: os: - netbsd resolution: - integrity: sha512-QYSD2k+oT9dqB/4eEM9c+7KyNYsIPgzYOSrmfNGDIyJrbT1d+CFVKvnKahDKNJLfOYj8N4MgyFaU9/Ytc6w5Vw== + integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ== /esbuild-openbsd-64/0.13.14: cpu: - x64 @@ -16167,7 +16305,7 @@ packages: - openbsd resolution: integrity: sha512-UyK1MTMcy4j5fH260fsE1o6MVgWNhb62eCK2yCKCRazZv8Nqdc2WiP9ygjWidmEdCDS+A6MuVp9ozk9uoQtQpA== - /esbuild-openbsd-64/0.14.42: + /esbuild-openbsd-64/0.14.47: cpu: - x64 dev: true @@ -16177,7 +16315,7 @@ packages: os: - openbsd resolution: - integrity: sha512-M2meNVIKWsm2HMY7+TU9AxM7ZVwI9havdsw6m/6EzdXysyCFFSoaTQ/Jg03izjCsK17FsVRHqRe26Llj6x0MNA== + integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw== /esbuild-runner/2.2.1_esbuild@0.13.14: dependencies: esbuild: 0.13.14 @@ -16286,7 +16424,7 @@ packages: - sunos resolution: integrity: sha512-aQRtRTNKHB4YuG+xXATe5AoRTNY48IJg5vjE8ElxfmjO9+KdX7MHFkTLhlKevCD6rNANtB3qOlSIeAiXTwHNqw== - /esbuild-sunos-64/0.14.42: + /esbuild-sunos-64/0.14.47: cpu: - x64 dev: true @@ -16296,7 +16434,7 @@ packages: os: - sunos resolution: - integrity: sha512-uXV8TAZEw36DkgW8Ak3MpSJs1ofBb3Smkc/6pZ29sCAN1KzCAQzsje4sUwugf+FVicrHvlamCOlFZIXgct+iqQ== + integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ== /esbuild-windows-32/0.13.14: cpu: - ia32 @@ -16350,7 +16488,7 @@ packages: - win32 resolution: integrity: sha512-9/fb1tPtpacMqxAXp3fGHowUDg/l9dVch5hKmCLEZC6PdGljh6h372zMdJwYfH0Bd5CCPT0Wx95uycBLJiqpXA== - /esbuild-windows-32/0.14.42: + /esbuild-windows-32/0.14.47: cpu: - ia32 dev: true @@ -16360,7 +16498,7 @@ packages: os: - win32 resolution: - integrity: sha512-4iw/8qWmRICWi9ZOnJJf9sYt6wmtp3hsN4TdI5NqgjfOkBVMxNdM9Vt3626G1Rda9ya2Q0hjQRD9W1o+m6Lz6g== + integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ== /esbuild-windows-64/0.13.14: cpu: - x64 @@ -16414,7 +16552,7 @@ packages: - win32 resolution: integrity: sha512-DHgITeUhPAnN9I5O6QBa1GVyPOhiYCn4S4TtQr7sO4+X0LNyqnlmA1M0qmGkUdDC1QQfjI8uQ4G/whdWb2pWIQ== - /esbuild-windows-64/0.14.42: + /esbuild-windows-64/0.14.47: cpu: - x64 dev: true @@ -16424,7 +16562,7 @@ packages: os: - win32 resolution: - integrity: sha512-j3cdK+Y3+a5H0wHKmLGTJcq0+/2mMBHPWkItR3vytp/aUGD/ua/t2BLdfBIzbNN9nLCRL9sywCRpOpFMx3CxzA== + integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ== /esbuild-windows-arm64/0.13.14: cpu: - arm64 @@ -16478,7 +16616,7 @@ packages: - win32 resolution: integrity: sha512-F1kLyQH7zSgjh5eLxogGZN7C9+KNs9m+s7Q6WZoMmCWT/6j998zlaoECHyM8izJRRfsvw2eZlEa1jO6/IOU1AQ== - /esbuild-windows-arm64/0.14.42: + /esbuild-windows-arm64/0.14.47: cpu: - arm64 dev: true @@ -16488,7 +16626,7 @@ packages: os: - win32 resolution: - integrity: sha512-+lRAARnF+hf8J0mN27ujO+VbhPbDqJ8rCcJKye4y7YZLV6C4n3pTRThAb388k/zqF5uM0lS5O201u0OqoWSicw== + integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ== /esbuild/0.13.14: dev: true hasBin: true @@ -16629,35 +16767,35 @@ packages: requiresBuild: true resolution: integrity: sha512-wCecQSBkIjp2xjuXY+wcXS/PpOQo9rFh4NAKPh4Pm9f3fuLcnxkR0rDzA+mYP88FtXIUcXUyYmaIgfrzRl55jA== - /esbuild/0.14.42: + /esbuild/0.14.47: dev: true engines: node: '>=12' hasBin: true optionalDependencies: - esbuild-android-64: 0.14.42 - esbuild-android-arm64: 0.14.42 - esbuild-darwin-64: 0.14.42 - esbuild-darwin-arm64: 0.14.42 - esbuild-freebsd-64: 0.14.42 - esbuild-freebsd-arm64: 0.14.42 - esbuild-linux-32: 0.14.42 - esbuild-linux-64: 0.14.42 - esbuild-linux-arm: 0.14.42 - esbuild-linux-arm64: 0.14.42 - esbuild-linux-mips64le: 0.14.42 - esbuild-linux-ppc64le: 0.14.42 - esbuild-linux-riscv64: 0.14.42 - esbuild-linux-s390x: 0.14.42 - esbuild-netbsd-64: 0.14.42 - esbuild-openbsd-64: 0.14.42 - esbuild-sunos-64: 0.14.42 - esbuild-windows-32: 0.14.42 - esbuild-windows-64: 0.14.42 - esbuild-windows-arm64: 0.14.42 + esbuild-android-64: 0.14.47 + esbuild-android-arm64: 0.14.47 + esbuild-darwin-64: 0.14.47 + esbuild-darwin-arm64: 0.14.47 + esbuild-freebsd-64: 0.14.47 + esbuild-freebsd-arm64: 0.14.47 + esbuild-linux-32: 0.14.47 + esbuild-linux-64: 0.14.47 + esbuild-linux-arm: 0.14.47 + esbuild-linux-arm64: 0.14.47 + esbuild-linux-mips64le: 0.14.47 + esbuild-linux-ppc64le: 0.14.47 + esbuild-linux-riscv64: 0.14.47 + esbuild-linux-s390x: 0.14.47 + esbuild-netbsd-64: 0.14.47 + esbuild-openbsd-64: 0.14.47 + esbuild-sunos-64: 0.14.47 + esbuild-windows-32: 0.14.47 + esbuild-windows-64: 0.14.47 + esbuild-windows-arm64: 0.14.47 requiresBuild: true resolution: - integrity: sha512-V0uPZotCEHokJdNqyozH6qsaQXqmZEOiZWrXnds/zaH/0SyrIayRXWRB98CENO73MIZ9T3HBIOsmds5twWtmgw== + integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA== /escalade/3.1.1: engines: node: '>=6' @@ -18091,27 +18229,6 @@ packages: optional: true resolution: integrity: sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw== - /eslint-plugin-jest/26.1.5_62228e5668a1e6d9610e26ca4369fbd2: - dependencies: - '@typescript-eslint/eslint-plugin': 5.21.0_862063063b41111bfe9123e9a3f05250 - '@typescript-eslint/utils': 5.22.0_eslint@7.25.0+typescript@4.6.3 - eslint: 7.25.0 - jest: 27.5.1 - dev: true - engines: - node: ^12.22.0 || ^14.17.0 || >=16.0.0 - peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - jest: '*' - typescript: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - jest: - optional: true - resolution: - integrity: sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw== /eslint-plugin-jest/26.1.5_8e7c9a65a1014775b76f699606a1f49e: dependencies: '@typescript-eslint/eslint-plugin': 5.21.0_c97b361d9c42da5fca56fcc255a4a95c @@ -18138,7 +18255,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.21.0_4059d5ee7aba256d5e330151ee3418c0 '@typescript-eslint/utils': 5.22.0_eslint@7.17.0+typescript@4.6.3 eslint: 7.17.0 - jest: 26.6.3 + jest: 26.6.3_canvas@2.9.1 dev: true engines: node: ^12.22.0 || ^14.17.0 || >=16.0.0 @@ -18242,7 +18359,28 @@ packages: '@typescript-eslint/eslint-plugin': 5.21.0_bb9518338a760ece3e1b033a5f6af62e '@typescript-eslint/utils': 5.22.0_eslint@7.32.0+typescript@4.6.3 eslint: 7.32.0 - jest: 27.5.1_canvas@2.9.1 + jest: 27.5.1 + dev: true + engines: + node: ^12.22.0 || ^14.17.0 || >=16.0.0 + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + typescript: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + resolution: + integrity: sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw== + /eslint-plugin-jest/26.1.5_e4c05cae16a9d3a7bb674f2465aaffb4: + dependencies: + '@typescript-eslint/eslint-plugin': 5.21.0_862063063b41111bfe9123e9a3f05250 + '@typescript-eslint/utils': 5.22.0_eslint@7.25.0+typescript@4.6.3 + eslint: 7.25.0 + jest: 26.6.3 dev: true engines: node: ^12.22.0 || ^14.17.0 || >=16.0.0 @@ -20196,6 +20334,12 @@ packages: node: '>= 0.4.0' resolution: integrity: sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== + /filesize/8.0.7: + dev: true + engines: + node: '>= 0.4.0' + resolution: + integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== /fill-range/4.0.0: dependencies: extend-shallow: 2.0.1 @@ -20329,6 +20473,20 @@ packages: /follow-redirects/1.14.1_debug@4.3.1: dependencies: debug: 4.3.1 + dev: false + engines: + node: '>=4.0' + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + resolution: + integrity: sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== + /follow-redirects/1.14.1_debug@4.3.2: + dependencies: + debug: 4.3.2 + dev: true engines: node: '>=4.0' peerDependencies: @@ -20380,6 +20538,39 @@ packages: yarn: '>=1.0.0' resolution: integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== + /fork-ts-checker-webpack-plugin/6.5.2_eslint@7.25.0+typescript@4.6.3: + dependencies: + '@babel/code-frame': 7.16.7 + '@types/json-schema': 7.0.11 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.2.2 + eslint: 7.25.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.4.6 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.3.7 + tapable: 1.1.3 + typescript: 4.6.3 + dev: true + engines: + node: '>=10' + yarn: '>=1.0.0' + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + resolution: + integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA== /form-data/2.3.3: dependencies: asynckit: 0.4.0 @@ -20530,6 +20721,10 @@ packages: node: '>= 8' resolution: integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + /fs-monkey/1.0.3: + dev: true + resolution: + integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== /fs-write-stream-atomic/1.0.10: dependencies: graceful-fs: 4.2.10 @@ -20990,6 +21185,14 @@ packages: node: '>=6' resolution: integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + /gzip-size/6.0.0: + dependencies: + duplexer: 0.1.2 + dev: true + engines: + node: '>=10' + resolution: + integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== /handle-thing/2.0.1: dev: false resolution: @@ -21511,6 +21714,10 @@ packages: dev: false resolution: integrity: sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== + /immer/9.0.15: + dev: true + resolution: + integrity: sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ== /import-cwd/2.1.0: dependencies: import-from: 2.1.0 @@ -21737,10 +21944,8 @@ packages: /is-binary-path/2.1.0: dependencies: binary-extensions: 2.2.0 - dev: false engines: node: '>=8' - optional: true resolution: integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== /is-boolean-object/1.1.2: @@ -22167,7 +22372,6 @@ packages: resolution: integrity: sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== /is-root/2.1.0: - dev: false engines: node: '>=6' resolution: @@ -22302,7 +22506,7 @@ packages: integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== /istanbul-lib-instrument/4.0.3: dependencies: - '@babel/core': 7.16.5 + '@babel/core': 7.18.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -22533,6 +22737,29 @@ packages: hasBin: true resolution: integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== + /jest-cli/26.6.3_canvas@2.9.1: + dependencies: + '@jest/core': 26.6.3_canvas@2.9.1 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + is-ci: 2.0.0 + jest-config: 26.6.3_canvas@2.9.1 + jest-util: 26.6.2 + jest-validate: 26.6.2 + prompts: 2.4.2 + yargs: 15.4.1 + dev: true + engines: + node: '>= 10.14.2' + hasBin: true + peerDependencies: + canvas: '*' + resolution: + integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== /jest-cli/27.3.1: dependencies: '@jest/core': 27.3.1 @@ -22689,6 +22916,37 @@ packages: optional: true resolution: integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== + /jest-config/26.6.3_canvas@2.9.1: + dependencies: + '@babel/core': 7.18.2 + '@jest/test-sequencer': 26.6.3_canvas@2.9.1 + '@jest/types': 26.6.2 + babel-jest: 26.6.3_@babel+core@7.18.2 + chalk: 4.1.2 + deepmerge: 4.2.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-environment-jsdom: 26.6.2_canvas@2.9.1 + jest-environment-node: 26.6.2 + jest-get-type: 26.3.0 + jest-jasmine2: 26.6.3_canvas@2.9.1 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + micromatch: 4.0.5 + pretty-format: 26.6.2 + dev: true + engines: + node: '>= 10.14.2' + peerDependencies: + canvas: '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + resolution: + integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== /jest-config/27.3.1: dependencies: '@babel/core': 7.16.0 @@ -22844,7 +23102,7 @@ packages: jest-jasmine2: 27.5.1 jest-regex-util: 27.5.1 jest-resolve: 27.5.1 - jest-runner: 27.5.1_canvas@2.9.1 + jest-runner: 27.5.1 jest-util: 27.5.1 jest-validate: 27.5.1 micromatch: 4.0.5 @@ -23057,6 +23315,22 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + /jest-environment-jsdom/26.6.2_canvas@2.9.1: + dependencies: + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 17.0.36 + jest-mock: 26.6.2 + jest-util: 26.6.2 + jsdom: 16.7.0_canvas@2.9.1 + dev: true + engines: + node: '>= 10.14.2' + peerDependencies: + canvas: '*' + resolution: + integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== /jest-environment-jsdom/27.3.1: dependencies: '@jest/environment': 27.3.1 @@ -23349,6 +23623,33 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== + /jest-jasmine2/26.6.3_canvas@2.9.1: + dependencies: + '@babel/traverse': 7.18.2 + '@jest/environment': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 17.0.36 + chalk: 4.1.2 + co: 4.6.0 + expect: 26.6.2 + is-generator-fn: 2.1.0 + jest-each: 26.6.2 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-runtime: 26.6.3_canvas@2.9.1 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + pretty-format: 26.6.2 + throat: 5.0.0 + dev: true + engines: + node: '>= 10.14.2' + peerDependencies: + canvas: '*' + resolution: + integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== /jest-jasmine2/27.3.1: dependencies: '@babel/traverse': 7.16.3 @@ -23800,7 +24101,7 @@ packages: jest-pnp-resolver: 1.2.2_jest-resolve@26.6.2 jest-util: 26.6.2 read-pkg-up: 7.0.1 - resolve: 1.22.0 + resolve: 1.22.1 slash: 3.0.0 engines: node: '>= 10.14.2' @@ -23883,6 +24184,35 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + /jest-runner/26.6.3_canvas@2.9.1: + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 17.0.36 + chalk: 4.1.2 + emittery: 0.7.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-config: 26.6.3_canvas@2.9.1 + jest-docblock: 26.0.0 + jest-haste-map: 26.6.2 + jest-leak-detector: 26.6.2 + jest-message-util: 26.6.2 + jest-resolve: 26.6.2 + jest-runtime: 26.6.3_canvas@2.9.1 + jest-util: 26.6.2 + jest-worker: 26.6.2 + source-map-support: 0.5.21 + throat: 5.0.0 + dev: true + engines: + node: '>= 10.14.2' + peerDependencies: + canvas: '*' + resolution: + integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== /jest-runner/27.3.1: dependencies: '@jest/console': 27.3.1 @@ -23969,37 +24299,41 @@ packages: node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 resolution: integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - /jest-runner/27.5.1_canvas@2.9.1: + /jest-runtime/26.6.3: dependencies: - '@jest/console': 27.5.1 - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.36 + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/globals': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/yargs': 15.0.14 chalk: 4.1.2 - emittery: 0.8.1 + cjs-module-lexer: 0.6.0 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 graceful-fs: 4.2.10 - jest-docblock: 27.5.1 - jest-environment-jsdom: 27.5.1_canvas@2.9.1 - jest-environment-node: 27.5.1 - jest-haste-map: 27.5.1 - jest-leak-detector: 27.5.1 - jest-message-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runtime: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - source-map-support: 0.5.21 - throat: 6.0.1 - dev: true + jest-config: 26.6.3 + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-mock: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + slash: 3.0.0 + strip-bom: 4.0.0 + yargs: 15.4.1 engines: - node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 - peerDependencies: - canvas: '*' + node: '>= 10.14.2' + hasBin: true resolution: - integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - /jest-runtime/26.6.3: + integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + /jest-runtime/26.6.3_canvas@2.9.1: dependencies: '@jest/console': 26.6.2 '@jest/environment': 26.6.2 @@ -24016,7 +24350,7 @@ packages: exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.10 - jest-config: 26.6.3 + jest-config: 26.6.3_canvas@2.9.1 jest-haste-map: 26.6.2 jest-message-util: 26.6.2 jest-mock: 26.6.2 @@ -24028,9 +24362,12 @@ packages: slash: 3.0.0 strip-bom: 4.0.0 yargs: 15.4.1 + dev: true engines: node: '>= 10.14.2' hasBin: true + peerDependencies: + canvas: '*' resolution: integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== /jest-runtime/27.3.1: @@ -24362,9 +24699,9 @@ packages: /jest-util/27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 17.0.36 + '@types/node': 16.11.29 chalk: 4.1.2 - ci-info: 3.3.1 + ci-info: 3.3.2 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: true @@ -24476,13 +24813,13 @@ packages: /jest-watch-typeahead/0.6.4_jest@26.6.3: dependencies: ansi-escapes: 4.3.2 - chalk: 4.1.1 + chalk: 4.1.2 jest: 26.6.3 - jest-regex-util: 27.0.1 - jest-watcher: 27.0.2 + jest-regex-util: 27.5.1 + jest-watcher: 27.5.1 slash: 3.0.0 string-length: 4.0.2 - strip-ansi: 6.0.0 + strip-ansi: 6.0.1 dev: true engines: node: '>=10' @@ -24562,7 +24899,7 @@ packages: dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 - jest: 27.5.1_canvas@2.9.1 + jest: 27.5.1 jest-regex-util: 27.5.1 jest-watcher: 27.5.1 slash: 3.0.0 @@ -24579,7 +24916,7 @@ packages: dependencies: '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 17.0.36 + '@types/node': 16.11.29 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 26.6.2 @@ -24705,7 +25042,7 @@ packages: /jest/26.6.3: dependencies: '@jest/core': 26.6.3 - import-local: 3.0.3 + import-local: 3.1.0 jest-cli: 26.6.3 dev: true engines: @@ -24713,6 +25050,19 @@ packages: hasBin: true resolution: integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== + /jest/26.6.3_canvas@2.9.1: + dependencies: + '@jest/core': 26.6.3_canvas@2.9.1 + import-local: 3.1.0 + jest-cli: 26.6.3_canvas@2.9.1 + dev: true + engines: + node: '>= 10.14.2' + hasBin: true + peerDependencies: + canvas: '*' + resolution: + integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== /jest/27.3.1: dependencies: '@jest/core': 27.3.1 @@ -25434,6 +25784,12 @@ packages: node: '>=8.9.0' resolution: integrity: sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + /loader-utils/3.2.0: + dev: true + engines: + node: '>= 12.13.0' + resolution: + integrity: sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== /locate-path/2.0.0: dependencies: p-locate: 2.0.0 @@ -25779,6 +26135,14 @@ packages: node: '>= 0.6' resolution: integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + /memfs/3.4.6: + dependencies: + fs-monkey: 1.0.3 + dev: true + engines: + node: '>= 4.0.0' + resolution: + integrity: sha512-rH9mjopto6Wkr7RFuH9l9dk3qb2XGOcYKr7xMhaYqfzuJqOqhRrcFvfD7JMuPj6SLmPreh5+6eAuv36NFAU+Mw== /memoize-one/5.1.1: dev: false resolution: @@ -26431,11 +26795,16 @@ packages: resolution: integrity: sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== /node-releases/2.0.1: + dev: true resolution: integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== /node-releases/2.0.4: resolution: integrity: sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== + /node-releases/2.0.5: + dev: true + resolution: + integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== /nopt/5.0.0: dependencies: abbrev: 1.1.1 @@ -26584,7 +26953,7 @@ packages: engines: node: '>=0.10.0' resolution: - integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== /object-copy/0.1.0: dependencies: copy-descriptor: 0.1.1 @@ -26783,6 +27152,16 @@ packages: node: '>=8' resolution: integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + /open/8.4.0: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + engines: + node: '>=12' + resolution: + integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== /opn/5.5.0: dependencies: is-wsl: 1.1.0 @@ -27287,7 +27666,6 @@ packages: /pkg-up/3.1.0: dependencies: find-up: 3.0.0 - dev: false engines: node: '>=8' resolution: @@ -28327,7 +28705,6 @@ packages: /promise/8.1.0: dependencies: asap: 2.0.6 - dev: false resolution: integrity: sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== /prompts/2.4.0: @@ -28550,7 +28927,6 @@ packages: /raf/3.4.1: dependencies: performance-now: 2.1.0 - dev: false resolution: integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== /randombytes/2.1.0: @@ -28615,6 +28991,19 @@ packages: node: '>=10' resolution: integrity: sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA== + /react-app-polyfill/3.0.0: + dependencies: + core-js: 3.23.2 + object-assign: 4.1.1 + promise: 8.1.0 + raf: 3.4.1 + regenerator-runtime: 0.13.9 + whatwg-fetch: 3.6.2 + dev: true + engines: + node: '>=14' + resolution: + integrity: sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== /react-dev-utils/11.0.3: dependencies: '@babel/code-frame': 7.10.4 @@ -28646,6 +29035,40 @@ packages: node: '>=10' resolution: integrity: sha512-4lEA5gF4OHrcJLMUV1t+4XbNDiJbsAWCH5Z2uqlTqW6dD7Cf5nEASkeXrCI/Mz83sI2o527oBIFKVMXtRf1Vtg== + /react-dev-utils/12.0.1_eslint@7.25.0+typescript@4.6.3: + dependencies: + '@babel/code-frame': 7.16.7 + address: 1.2.0 + browserslist: 4.21.0 + chalk: 4.1.2 + cross-spawn: 7.0.3 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.2_eslint@7.25.0+typescript@4.6.3 + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.15 + is-root: 2.1.0 + loader-utils: 3.2.0 + open: 8.4.0 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.2 + shell-quote: 1.7.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + dev: true + engines: + node: '>=14' + peerDependencies: + eslint: '*' + typescript: '*' + resolution: + integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== /react-dom/17.0.1_react@17.0.1: dependencies: loose-envify: 1.4.0 @@ -28693,6 +29116,10 @@ packages: react: '>=16.13.1' resolution: integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA== + /react-error-overlay/6.0.11: + dev: true + resolution: + integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== /react-error-overlay/6.0.9: dev: false resolution: @@ -29107,6 +29534,14 @@ packages: optional: true resolution: integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + /readdirp/3.6.0: + dependencies: + picomatch: 2.3.1 + dev: true + engines: + node: '>=8.10.0' + resolution: + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== /recast/0.19.1: dependencies: ast-types: 0.13.3 @@ -29121,7 +29556,6 @@ packages: /recursive-readdir/2.2.2: dependencies: minimatch: 3.0.4 - dev: false engines: node: '>=0.10.0' resolution: @@ -29263,7 +29697,7 @@ packages: integrity: sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA== /remove-trailing-separator/1.1.0: resolution: - integrity: sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== /renderkid/2.0.5: dependencies: css-select: 2.1.0 @@ -29294,7 +29728,7 @@ packages: engines: node: '>=0.10.0' resolution: - integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== /require-from-string/2.0.2: engines: node: '>=0.10.0' @@ -29398,6 +29832,14 @@ packages: hasBin: true resolution: integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + /resolve/1.22.1: + dependencies: + is-core-module: 2.9.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + hasBin: true + resolution: + integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== /resolve/2.0.0-next.3: dependencies: is-core-module: 2.6.0 @@ -29531,7 +29973,7 @@ packages: hasBin: true resolution: integrity: sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - /rollup/2.75.5: + /rollup/2.75.7: dev: true engines: node: '>=10.0.0' @@ -29539,7 +29981,7 @@ packages: optionalDependencies: fsevents: 2.3.2 resolution: - integrity: sha512-JzNlJZDison3o2mOxVmb44Oz7t74EfSd1SQrplQk0wSaXV7uLQXtVdHbxlcT3w+8tZ1TL4r/eLfc7nAbz38BBA== + integrity: sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== /rsvp/4.8.5: engines: node: 6.* || >= 7.* @@ -29717,6 +30159,16 @@ packages: node: '>= 4' resolution: integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + /schema-utils/2.7.0: + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + engines: + node: '>= 8.9.0' + resolution: + integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== /schema-utils/2.7.1: dependencies: '@types/json-schema': 7.0.11 @@ -29881,7 +30333,7 @@ packages: integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== /set-blocking/2.0.0: resolution: - integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== /set-immediate-shim/1.0.1: dev: false engines: @@ -29961,6 +30413,10 @@ packages: dev: false resolution: integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + /shell-quote/1.7.3: + dev: true + resolution: + integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== /shellwords/0.1.1: optional: true resolution: @@ -31182,7 +31638,6 @@ packages: resolution: integrity: sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw== /tapable/1.1.3: - dev: false engines: node: '>=6' resolution: @@ -31536,7 +31991,7 @@ packages: bs-logger: 0.2.6 buffer-from: 1.1.1 fast-json-stable-stringify: 2.1.0 - jest: 26.6.3 + jest: 26.6.3_canvas@2.9.1 jest-util: 26.6.2 json5: 2.1.3 lodash.memoize: 4.1.2 @@ -31623,29 +32078,6 @@ packages: typescript: '>=3.8 <5.0' resolution: integrity: sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA== - /ts-jest/26.5.6_jest@27.5.1+typescript@4.6.3: - dependencies: - bs-logger: 0.2.6 - buffer-from: 1.1.2 - fast-json-stable-stringify: 2.1.0 - jest: 27.5.1 - jest-util: 26.6.2 - json5: 2.2.0 - lodash: 4.17.21 - make-error: 1.3.6 - mkdirp: 1.0.4 - semver: 7.3.5 - typescript: 4.6.3 - yargs-parser: 20.2.9 - dev: true - engines: - node: '>= 10' - hasBin: true - peerDependencies: - jest: '>=26 <27' - typescript: '>=3.8 <5.0' - resolution: - integrity: sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA== /ts-jest/27.0.7_1dcf3a5c8307703c73427a631f3faf30: dependencies: '@types/jest': 27.0.3 @@ -32253,6 +32685,17 @@ packages: node: '>=4' resolution: integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + /update-browserslist-db/1.0.4_browserslist@4.21.0: + dependencies: + browserslist: 4.21.0 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + resolution: + integrity: sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== /uri-js/4.4.1: dependencies: punycode: 2.1.1 @@ -32520,12 +32963,12 @@ packages: dev: true resolution: integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== - /vite/2.9.9: + /vite/2.9.12: dependencies: - esbuild: 0.14.42 + esbuild: 0.14.47 postcss: 8.4.14 - resolve: 1.22.0 - rollup: 2.75.5 + resolve: 1.22.1 + rollup: 2.75.7 dev: true engines: node: '>=12.2.0' @@ -32544,7 +32987,7 @@ packages: stylus: optional: true resolution: - integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew== + integrity: sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew== /vm-browserify/1.1.2: dev: false resolution: @@ -32844,6 +33287,10 @@ packages: dev: false resolution: integrity: sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A== + /whatwg-fetch/3.6.2: + dev: true + resolution: + integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== /whatwg-mimetype/2.3.0: resolution: integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== @@ -32905,7 +33352,7 @@ packages: integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== /which-module/2.0.0: resolution: - integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== /which-typed-array/1.1.8: dependencies: available-typed-arrays: 1.0.5 @@ -33159,7 +33606,7 @@ packages: integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== /wrappy/1.0.2: resolution: - integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== /write-file-atomic/3.0.3: dependencies: imurmurhash: 0.1.4