├── .editorconfig
├── .gitignore
├── README.md
├── create-rss-app
├── README.md
├── index.js
├── out.js
├── package-lock.json
├── package.json
├── packagejson.js
└── template
│ ├── .gitignore
│ ├── jsconfig.json
│ ├── modules.d.ts
│ ├── package.json
│ ├── src
│ ├── images
│ │ └── lazy.png
│ ├── index.html
│ ├── index.js
│ ├── index.ts
│ └── style.css
│ ├── tsconfig.json
│ ├── webpack.config.js
│ └── webpack.config.ts
└── rss-scripts
├── README.md
├── index.js
├── modules.d.ts
├── package-lock.json
├── package.json
├── tsconfig.json
└── webpack.config.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | [*.{js,ts}]
12 | quote_type = single
13 |
14 | [*.md]
15 | trim_trailing_whitespace = false
16 |
17 | [*.json]
18 | insert_final_newline = false
19 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.*~
2 |
3 | .vscode
4 | .vs
5 | .idea
6 |
7 | # User-specific files
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # Logs
14 | logs
15 | *.log
16 | npm-debug.log*
17 |
18 | # Dependency directories
19 | node_modules/
20 |
21 | # TypeScript cache
22 | *.tsbuildinfo
23 |
24 | # Optional npm cache directory
25 | .npm
26 |
27 | # Optional eslint cache
28 | .eslintcache
29 |
30 | # Build results
31 | dist
32 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Create RSS App
2 |
3 | CLI for create a simple JS (or TS) application without webpack configuration.
4 |
5 | Simpliest wat to start using js modules and bundle your scripts to single result file.
6 |
7 | ### [Read about create-rss-app here](https://github.com/ai297/create-rss-app/blob/main/create-rss-app/README.md)
8 |
9 | RSS means [Rolling Scopes School](https://github.com/rolling-scopes-school/) - community school of frontend developers.
10 | This package was created for students by student.
11 |
--------------------------------------------------------------------------------
/create-rss-app/README.md:
--------------------------------------------------------------------------------
1 | # Create Rss App
2 |
3 |
4 |
5 | CLI for create simple JS or TS project without webpack configuration
6 |
7 | Easiest way to start use modules in your js app
8 |
9 | ## Quick start
10 | ```sh
11 | npx create-rss-app my-app
12 | cd my-app
13 | npm start
14 | ```
15 |
16 | ## NPM Scripts
17 | + `npm start` - Starts the development server.
18 | + `npm run build` - Boundles your app into static files for deployment.
19 | --------------
20 |
21 | ## About webpack configuration
22 | This package use webpack with simpliest configuration.
23 | + You should place your source files to `src` folder in project directory. Includes styles, images, etc..
24 | + `src` folder should contains `index.html`
25 | + `src` folder should contains `index.js` (or `index.ts` if TypeScript is used) - it will be entry point to your app.
26 | + If you want to use css files, you should add <link> tag to index.html. But you don't need add links for script files.
27 | + If you want to use **scss** or **sass** pre-processor - you should import this files into your scripts, like `import 'styles.scss';`. **But**, if your scss/sass file and html have a same name (like `index.html` and `index.scss`), <link> tag will be added to html automatically, you don't need to use import in js (but you still need to add links to **css** manually).
28 | + This configuration supports multi-page apps. You can add a few html files to your project, it will work. Make js file with the same name and in the same directory, and it will automatically used as entrypoint for this html page.
29 | + When you run `npm run build`, project bundle will be created in `dist` directory.
30 | --------------
31 |
32 | ## Options
33 | You can configure options by using different flags.
34 |
35 | ### Add configs
36 | You can use `--configs` or `-c` flags if you want to add webpack config to your project directory. It will give you more control.
37 | ```sh
38 | npx create-rss-app my-app --configs
39 | ```
40 |
41 | ### Use TypeScript
42 | This package use typescript compiller by default and you can code your app with both languages - JS and TS.
43 |
44 | But if you want to code with TS (and don't want to eject configs) - you can use flags `--typescript` or `-ts` for add tsconfig.json to your project directory.
45 | ```sh
46 | npx create-rss-app my-app -ts
47 | ```
48 | ### Boilerplate
49 | By default, create-rss-app add simple example of html, css and js files to your project, if there are not exists. But, if you don't need it, use the flag `--empty`.
50 |
--------------------------------------------------------------------------------
/create-rss-app/index.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | 'use strict';
4 | const requiredNodeVersion = 12;
5 | const nodeVersion = process.versions.node.split('.')[0];
6 |
7 | if (nodeVersion < requiredNodeVersion) {
8 | console.error(
9 | `You are running NodeJS ${nodeVersion}.\n`
10 | `Please update your version of NodeJS up to ${requiredNodeVersion} or later.`
11 | );
12 | process.exit(0);
13 | }
14 |
15 | const fs = require('fs');
16 | const { spawn } = require('child_process');
17 | const path = require('path');
18 | const out = require('./out');
19 | const createPackageJson = require('./packagejson');
20 |
21 | const run = (cmd, ...args) => new Promise((res, rej) => {
22 | const chp = spawn(cmd, args, { shell: true });
23 | chp.stdout.on('data', (d) => console.log(d.toString()));
24 | chp.stderr.on('data', (d) => console.error(d.toString()));
25 | chp.on('error', (e) => rej(e.toString()));
26 | chp.on('close', (code) => code === 0 ? res() : rej());
27 | });
28 |
29 | (async function() {
30 | const args = process.argv.slice(2);
31 | const projectNameIndex = args.findIndex(v => /^[a-z0-9]+[a-z0-9-_]{1,64}$/i.test(v));
32 | const projectDirName = projectNameIndex < 0 ? '.' : args.splice(projectNameIndex, 1)[0];
33 | const projectRoot = path.resolve(projectDirName);
34 |
35 | if (projectRoot.includes(' ')) {
36 | out.error('Project path should not contains spaces.');
37 | out.info('...Also using of cyrillic chars is not recommended too.');
38 | return 1;
39 | }
40 |
41 | const projectName = path.basename(projectRoot);
42 | const projectSrc = path.join(projectRoot, 'src');
43 | const projectSrcImages = path.join(projectSrc, 'images');
44 | const isNewDir = !fs.existsSync(projectRoot);
45 | const removeProjectDir = () => isNewDir ? fs.rmdirSync(projectRoot, { recursive: true, force: true }) : undefined;
46 |
47 | const flags = args.filter(v => /^-(-)?[a-z]{1,10}$/i.test(v)).map(v => v.toLowerCase());
48 | const isConfigs = flags.includes('--configs') || flags.includes('-c');
49 | const isUseTs = flags.includes('--typescript') || flags.includes('-ts');
50 | const isEmpty = flags.includes('--empty');
51 |
52 | const templatePath = path.resolve(__dirname, 'template');
53 | const templateSrcPath = path.join(templatePath, 'src');
54 | out.startProcessing();
55 |
56 | // Create project directories.
57 | try {
58 | if (isNewDir) fs.mkdirSync(projectRoot);
59 | if (!isEmpty && !fs.existsSync(projectSrc)) fs.mkdirSync(projectSrc);
60 | if (!isEmpty && !fs.existsSync(projectSrcImages)) fs.mkdirSync(projectSrcImages);
61 | out.info(' + Directories created.');
62 | } catch {
63 | out.error(' - Failed to create directories.');
64 | return 1;
65 | }
66 |
67 | // Create package.json.
68 | try {
69 | createPackageJson(projectRoot, projectName, !isConfigs, isUseTs);
70 | out.info(' + The package.json created.')
71 | } catch {
72 | out.error(' - Failed to create package.json');
73 | removeProjectDir();
74 | return 1;
75 | }
76 |
77 | // Create configs.
78 | if (isConfigs) {
79 | try {
80 | fs.copyFileSync(
81 | path.join(templatePath, isUseTs ? 'webpack.config.ts' : 'webpack.config.js'),
82 | path.join(projectRoot, 'webpack.config.js'),
83 | );
84 | } catch {
85 | out.error(' - Failed to create webpack config...');
86 | removeProjectDir();
87 | return 1;
88 | }
89 | out.info(' + Webpack config created.');
90 | }
91 |
92 | if (isUseTs) {
93 | try {
94 | fs.copyFileSync(path.join(templatePath, 'tsconfig.json'), path.join(projectRoot, 'tsconfig.json'));
95 | fs.copyFileSync(path.join(templatePath, 'modules.d.ts'), path.join(projectRoot, 'modules.d.ts'));
96 | } catch {
97 | out.error(' - Failed to create tsconfig...');
98 | removeProjectDir();
99 | return 1;
100 | }
101 | out.info(' + TS config created.');
102 | }
103 |
104 | if (!isUseTs) {
105 | try {
106 | fs.copyFileSync(path.join(templatePath, 'jsconfig.json'), path.join(projectRoot, 'jsconfig.json'));
107 | } catch {
108 | out.error(' - Failed to create jsconfig...');
109 | removeProjectDir();
110 | return 1;
111 | }
112 | out.info(' + JS config created.');
113 | }
114 |
115 | // Copy template files.
116 | if (!isEmpty) try {
117 | const indexFile = path.join(projectSrc, 'index.html');
118 | const scriptFile = path.join(projectSrc, isUseTs ? 'index.ts' : 'index.js');
119 | const styleFile = path.join(projectSrc, 'style.css');
120 | if (!fs.existsSync(indexFile) && !fs.existsSync(scriptFile)) {
121 | fs.copyFileSync(path.join(templateSrcPath, 'images', 'lazy.png'), path.join(projectSrcImages, 'lazy.png'));
122 | }
123 | if (!fs.existsSync(indexFile)) fs.copyFileSync(path.join(templateSrcPath, 'index.html'), indexFile);
124 | if (!fs.existsSync(scriptFile)) fs.copyFileSync(path.join(templateSrcPath, `index.${isUseTs ? 't' : 'j'}s`), scriptFile);
125 | if (!fs.existsSync(styleFile)) fs.copyFileSync(path.join(templateSrcPath, 'style.css'), styleFile);
126 | out.info(' + Template created.');
127 | } catch {
128 | out.error(' - Failed to create project files.');
129 | removeProjectDir();
130 | return 1;
131 | }
132 |
133 | // Insatall dependencies.
134 | out.installDependencies();
135 | try {
136 | process.chdir(projectRoot);
137 | const installProcess = isConfigs
138 | ? run('npm', 'i')
139 | : run('npm', 'i', 'rss-scripts', '--save-dev');
140 | await installProcess;
141 | out.info(' + Dependencies installed.');
142 | } catch {
143 | out.error(' - Failed to install dependencies.');
144 | removeProjectDir();
145 | return 1;
146 | }
147 |
148 | out.successfullyCreated(projectDirName);
149 | return 0;
150 | })().then(exitCode => process.exit(exitCode));
151 |
--------------------------------------------------------------------------------
/create-rss-app/out.js:
--------------------------------------------------------------------------------
1 | const chalk = require('chalk');
2 |
3 | const error = (message) => console.error(chalk.bold(chalk.red(message)));
4 | const success = (message) => console.log(chalk.bold(chalk.green(message)));
5 | const info = (message) => console.log(chalk.grey(message));
6 | const def = (def = '', val = '') => console.log(chalk.blueBright(def), chalk.greenBright(val));
7 | const newLine = (lines = 1, str = '') => lines > 0 && console.log(Array(lines - 1).fill(`${str}\n`).join(''));
8 |
9 | const startProcessing = () => success('Createing a new simple js project...');
10 | const installDependencies = () => console.log('Installing packages... This might take a couple of minutes.');
11 |
12 | const successfullyCreated = (projectDir) => {
13 | newLine();
14 | success('Your new js project successfully created!');
15 | info(`Now, you can start hucking ;)`)
16 | newLine();
17 | def(' npm start');
18 | info(' Starts the development server.')
19 | newLine();
20 | def(' npm run build');
21 | info(' Boundles your app into static files for deployment.');
22 | newLine(2);
23 | if (projectDir != '.') info(` But before, you should go to project dir: ${chalk.yellow('cd ' + projectDir)}`);
24 | success(' Good luck!');
25 | newLine();
26 | };
27 |
28 | module.exports = {
29 | error,
30 | info,
31 | success,
32 | startProcessing,
33 | installDependencies,
34 | successfullyCreated,
35 | }
36 |
--------------------------------------------------------------------------------
/create-rss-app/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "create-rss-app",
3 | "version": "0.2.3",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "ansi-styles": {
8 | "version": "4.3.0",
9 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
10 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
11 | "requires": {
12 | "color-convert": "^2.0.1"
13 | }
14 | },
15 | "chalk": {
16 | "version": "4.1.1",
17 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
18 | "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
19 | "requires": {
20 | "ansi-styles": "^4.1.0",
21 | "supports-color": "^7.1.0"
22 | }
23 | },
24 | "color-convert": {
25 | "version": "2.0.1",
26 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
27 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
28 | "requires": {
29 | "color-name": "~1.1.4"
30 | }
31 | },
32 | "color-name": {
33 | "version": "1.1.4",
34 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
35 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
36 | },
37 | "has-flag": {
38 | "version": "4.0.0",
39 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
40 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
41 | },
42 | "supports-color": {
43 | "version": "7.2.0",
44 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
45 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
46 | "requires": {
47 | "has-flag": "^4.0.0"
48 | }
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/create-rss-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "create-rss-app",
3 | "version": "0.2.4",
4 | "description": "CLI for create simple js (or ts) SPA application",
5 | "author": "Kris Casper",
6 | "license": "ISC",
7 | "repository": {
8 | "type": "git",
9 | "url": "https://github.com/ai297/create-rss-app.git",
10 | "directory": "create-rss-app"
11 | },
12 | "bin": {
13 | "create-rss-app": "./index.js"
14 | },
15 | "engines": {
16 | "node": ">= 12"
17 | },
18 | "bugs": {
19 | "url": "https://github.com/ai297/create-rss-app/issues"
20 | },
21 | "dependencies": {
22 | "chalk": "^4.1.1"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/create-rss-app/packagejson.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 | const path = require('path');
3 | const template = require('./template/package.json');
4 |
5 | const getScripts = (configs, useTs) => configs
6 | ? {
7 | start: 'webpack serve --env development',
8 | build: 'webpack',
9 | }
10 | : {
11 | start: `rss-scripts start${useTs ? ' -ts' : ''}`,
12 | build: `rss-scripts build${useTs ? ' -ts' : ''}`,
13 | };
14 |
15 | const getDevDependencies = (useTs) => Object.assign(
16 | {
17 | 'clean-webpack-plugin': '^4.0.0',
18 | 'copy-webpack-plugin': '^8.1.1',
19 | 'css-loader': '^5.2.7',
20 | 'html-webpack-plugin': '^5.3.2',
21 | 'mini-css-extract-plugin': '^1.6.2',
22 | 'sass': '^1.42.1',
23 | 'sass-loader': '^11.1.1',
24 | 'webpack': '^5.58.1',
25 | 'webpack-cli': '^4.9.0',
26 | 'webpack-dev-server': '^4.3.1',
27 | 'webpack-remove-empty-scripts': '^0.7.1',
28 | }, useTs ? {
29 | 'ts-loader': '^9.2.6',
30 | 'typescript': '^4.4.3',
31 | } : {});
32 |
33 | function getPackageJson(baseConfig, name, isNoConfigs, isUseTs) {
34 | baseConfig.name = baseConfig.name || name || 'my-new-app';
35 | baseConfig.scripts = baseConfig.scripts || {};
36 | baseConfig.scripts = Object.assign(baseConfig.scripts, getScripts(!isNoConfigs, isUseTs));
37 |
38 | if (isNoConfigs) return baseConfig;
39 |
40 | baseConfig.devDependencies = baseConfig.devDependencies || {};
41 | baseConfig.devDependencies = Object.assign(baseConfig.devDependencies, getDevDependencies(isUseTs));
42 |
43 | return baseConfig;
44 | }
45 |
46 | function createPackageJson(projectRoot, projectName, isNoScript, isUseTs) {
47 | const filePath = path.join(projectRoot, 'package.json');
48 | const baseConfig = fs.existsSync(filePath)
49 | ? JSON.parse(fs.readFileSync(filePath, 'utf8'))
50 | : template;
51 | fs.writeFileSync(filePath, JSON.stringify(
52 | getPackageJson(baseConfig, projectName, isNoScript, isUseTs), undefined, 2));
53 | }
54 |
55 | module.exports = createPackageJson;
56 |
--------------------------------------------------------------------------------
/create-rss-app/template/.gitignore:
--------------------------------------------------------------------------------
1 | *.*~
2 |
3 | .vscode
4 | .vs
5 | .idea
6 |
7 | # User-specific files
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # Logs
14 | logs
15 | *.log
16 | npm-debug.log*
17 |
18 | # Dependency directories
19 | node_modules/
20 |
21 | # TypeScript cache
22 | *.tsbuildinfo
23 |
24 | # Optional npm cache directory
25 | .npm
26 |
27 | # Optional eslint cache
28 | .eslintcache
29 |
30 | # Build results
31 | dist
32 |
--------------------------------------------------------------------------------
/create-rss-app/template/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es6",
4 | "module": "commonjs"
5 | },
6 | "exclude": ["node_modules", "dist"],
7 | "include": ["src/**/*"]
8 | }
9 |
--------------------------------------------------------------------------------
/create-rss-app/template/modules.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.jpg';
2 | declare module '*.jpeg';
3 | declare module '*.gif';
4 | declare module '*.png';
5 | declare module '*.svg';
6 | declare module '*.webp';
7 | declare module '*.mp3';
8 | declare module '*.wav';
9 | declare module '*.ogg';
10 | declare module '*.mp4';
11 |
--------------------------------------------------------------------------------
/create-rss-app/template/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.1.0",
3 | "description": "My new js application",
4 | "private": true
5 | }
6 |
--------------------------------------------------------------------------------
/create-rss-app/template/src/images/lazy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ai297/create-rss-app/0154f24d359dc6f4d907a7e58f571c469ce53120/create-rss-app/template/src/images/lazy.png
--------------------------------------------------------------------------------
/create-rss-app/template/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | My JS App
8 |
9 |
10 |
11 | My JS App
12 |
13 |
--------------------------------------------------------------------------------
/create-rss-app/template/src/index.js:
--------------------------------------------------------------------------------
1 | import image from './images/lazy.png';
2 |
3 | const createImage = (src) => new Promise((res, rej) => {
4 | const img = new Image();
5 | img.onload = () => res(img);
6 | img.onerror = rej;
7 | img.src = src;
8 | });
9 |
10 | async function render() {
11 | const subHeader = document.createElement('h2');
12 | subHeader.innerHTML = 'This elements was created by js';
13 | const myImage = await createImage(image);
14 | document.body.appendChild(subHeader);
15 | document.body.appendChild(myImage);
16 | }
17 |
18 | render();
19 |
--------------------------------------------------------------------------------
/create-rss-app/template/src/index.ts:
--------------------------------------------------------------------------------
1 | import image from './images/lazy.png';
2 |
3 | const createImage = (src: string) => new Promise((res, rej) => {
4 | const img = new Image();
5 | img.onload = () => res(img);
6 | img.onerror = rej;
7 | img.src = src;
8 | });
9 |
10 | async function render() {
11 | const subHeader = document.createElement('h2');
12 | subHeader.innerHTML = 'This elements was created by js';
13 | const myImage = await createImage(image);
14 | document.body.appendChild(subHeader);
15 | document.body.appendChild(myImage);
16 | }
17 |
18 | render();
19 |
--------------------------------------------------------------------------------
/create-rss-app/template/src/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | min-height: 100vh;
3 | display: flex;
4 | flex-direction: column;
5 | align-items: center;
6 | justify-content: center;
7 | color: white;
8 | text-transform: uppercase;
9 | background-color: #363636;
10 | }
11 |
12 | h1 { color: #e6c300; }
13 |
14 | img {
15 | width: 90vw;
16 | max-width: 256px;
17 | }
18 |
--------------------------------------------------------------------------------
/create-rss-app/template/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es6",
4 | "module": "commonjs",
5 | "allowJs": true,
6 | "checkJs": false,
7 | "removeComments": true,
8 | "downlevelIteration": true,
9 | "strict": true,
10 | "noImplicitAny": false,
11 | "moduleResolution": "node",
12 | "esModuleInterop": true,
13 | "resolveJsonModule": true,
14 | "experimentalDecorators": true,
15 | "skipLibCheck": true,
16 | "forceConsistentCasingInFileNames": true,
17 | "outDir": "./dist"
18 | },
19 | "exclude": ["node_modules", "/"],
20 | "include": ["src/**/*", "modules.d.ts"]
21 | }
22 |
--------------------------------------------------------------------------------
/create-rss-app/template/webpack.config.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 | const path = require('path');
3 | const HtmlWebpackPlugin = require('html-webpack-plugin');
4 | const MiniCssExtractPlugin = require('mini-css-extract-plugin');
5 | const CopyPlugin = require('copy-webpack-plugin');
6 | const { CleanWebpackPlugin } = require('clean-webpack-plugin');
7 | const RemoveEmptyScriptsPlugin = require('webpack-remove-empty-scripts');
8 |
9 | const htmlFile = /^([-_\d\w]+).html$/i;
10 | const srcPath = path.resolve(__dirname, 'src');
11 |
12 | const devServer = (isDev) => !isDev ? {} : {
13 | devServer: {
14 | open: true,
15 | port: 'auto',
16 | static: {
17 | directory: srcPath,
18 | watch: true,
19 | },
20 | },
21 | };
22 |
23 | const getRelative = (absolutePath) => path.relative(srcPath, absolutePath);
24 | const makePath = (relativePath) => './' + relativePath.replace(/\\+/g, '/');
25 |
26 | const getPages = (dir, n) => {
27 | const dirContent = fs.readdirSync(dir);
28 | const pages = dirContent
29 | .filter(f => htmlFile.test(f))
30 | .reduce((res, f, i) => {
31 | const name = path.basename(f, path.extname(f));
32 | res.push({
33 | name: `p${n += i}`,
34 | dir: getRelative(dir),
35 | html: makePath(getRelative(path.join(dir, f))),
36 | script: dirContent.find(f => new RegExp(`^${name}\.js$`, 'i').test(f)),
37 | style: dirContent.find(f => new RegExp(`^${name}\.s(c|a)ss$`, 'i').test(f)),
38 | });
39 | return res;
40 | }, [])
41 | .concat(dirContent
42 | .filter(f => fs.lstatSync(path.resolve(dir, f)).isDirectory())
43 | .reduce((res, f) => [...res, ...getPages(path.resolve(dir, f), n + 1)], [])
44 | );
45 |
46 | return pages;
47 | };
48 |
49 | const getEntryPoints = (pages) => pages.reduce((entry, {name, dir, script, style}) => Object.assign(entry,
50 | script ? { [name]: makePath(path.join(dir, script)) } : {},
51 | style ? { [`${name}-styles`]: makePath(path.join(dir, style)) } : {},
52 | ), {});
53 |
54 | const getHtmlPlugins = (pages) => pages.map(({html, name, script, style}) => new HtmlWebpackPlugin({
55 | template: html,
56 | filename: html,
57 | chunks: [ script ? name : null, style ? `${name}-styles` : null ].filter(c => !!c),
58 | }));
59 |
60 | module.exports = ({ development }) => {
61 | const pages = getPages(srcPath, 1);
62 | return {
63 | mode: development ? 'development' : 'production',
64 | devtool: development ? 'inline-source-map' : false,
65 | entry: getEntryPoints(pages),
66 | context: srcPath,
67 | output: {
68 | filename: 'js/[name].[contenthash].js',
69 | path: path.resolve(__dirname, 'dist'),
70 | assetModuleFilename: '[file]',
71 | },
72 | target: ['web', 'es6'],
73 | module: {
74 | rules: [
75 | {
76 | test: /\.(?:ico|gif|png|jpg|jpeg|svg|webp)$/i,
77 | type: 'asset/resource',
78 | },
79 | {
80 | test: /\.(?:mp3|wav|ogg|mp4)$/i,
81 | type: 'asset/resource',
82 | },
83 | {
84 | test: /\.(woff(2)?|eot|ttf|otf)$/i,
85 | type: 'asset/resource',
86 | },
87 | {
88 | test: /\.css$/i,
89 | use: [{loader: MiniCssExtractPlugin.loader, options: { publicPath: '../' }}, 'css-loader'],
90 | },
91 | {
92 | test: /\.s[ac]ss$/i,
93 | use: [{loader: MiniCssExtractPlugin.loader, options: { publicPath: '../' }}, 'css-loader', 'sass-loader']
94 | }
95 | ],
96 | },
97 | plugins: [
98 | new MiniCssExtractPlugin({ filename: 'css/[name].[contenthash].css' }),
99 | ...getHtmlPlugins(pages),
100 | new CopyPlugin({
101 | patterns: [
102 | {
103 | from: '**/*',
104 | context: srcPath,
105 | globOptions: {
106 | ignore: [
107 | '**/*.js',
108 | '**/*.ts',
109 | '**/*.scss',
110 | '**/*.sass',
111 | '**/*.html',
112 | ],
113 | },
114 | noErrorOnMissing: true,
115 | force: true,
116 | }
117 | ],
118 | }),
119 | new CleanWebpackPlugin(),
120 | new RemoveEmptyScriptsPlugin(),
121 | ],
122 | resolve: {
123 | extensions: ['.js'],
124 | },
125 | ...devServer(development)
126 | };
127 | }
128 |
--------------------------------------------------------------------------------
/create-rss-app/template/webpack.config.ts:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 | const path = require('path');
3 | const HtmlWebpackPlugin = require('html-webpack-plugin');
4 | const MiniCssExtractPlugin = require('mini-css-extract-plugin');
5 | const CopyPlugin = require('copy-webpack-plugin');
6 | const { CleanWebpackPlugin } = require('clean-webpack-plugin');
7 | const RemoveEmptyScriptsPlugin = require('webpack-remove-empty-scripts');
8 |
9 | const htmlFile = /^([-_\d\w]+).html$/i;
10 | const srcPath = path.resolve(__dirname, 'src');
11 |
12 | const devServer = (isDev) => !isDev ? {} : {
13 | devServer: {
14 | open: true,
15 | port: 'auto',
16 | static: {
17 | directory: srcPath,
18 | watch: true,
19 | },
20 | },
21 | };
22 |
23 | const getRelative = (absolutePath) => path.relative(srcPath, absolutePath);
24 | const makePath = (relativePath) => './' + relativePath.replace(/\\+/g, '/');
25 |
26 | const getPages = (dir, n) => {
27 | const dirContent = fs.readdirSync(dir);
28 | const pages = dirContent
29 | .filter(f => htmlFile.test(f))
30 | .reduce((res, f, i) => {
31 | const name = path.basename(f, path.extname(f));
32 | res.push({
33 | name: `p${n += i}`,
34 | dir: getRelative(dir),
35 | html: makePath(getRelative(path.join(dir, f))),
36 | script: dirContent.find(f => new RegExp(`^${name}\.[tj]s$`, 'i').test(f)),
37 | style: dirContent.find(f => new RegExp(`^${name}\.s(c|a)ss$`, 'i').test(f)),
38 | });
39 | return res;
40 | }, [])
41 | .concat(dirContent
42 | .filter(f => fs.lstatSync(path.resolve(dir, f)).isDirectory())
43 | .reduce((res, f) => [...res, ...getPages(path.resolve(dir, f), n + 1)], [])
44 | );
45 |
46 | return pages;
47 | };
48 |
49 | const getEntryPoints = (pages) => pages.reduce((entry, {name, dir, script, style}) => Object.assign(entry,
50 | script ? { [name]: makePath(path.join(dir, script)) } : {},
51 | style ? { [`${name}-styles`]: makePath(path.join(dir, style)) } : {},
52 | ), {});
53 |
54 | const getHtmlPlugins = (pages) => pages.map(({html, name, script, style}) => new HtmlWebpackPlugin({
55 | template: html,
56 | filename: html,
57 | chunks: [ script ? name : null, style ? `${name}-styles` : null ].filter(c => !!c),
58 | }));
59 |
60 | module.exports = ({ development }) => {
61 | const pages = getPages(srcPath, 1);
62 | return {
63 | mode: development ? 'development' : 'production',
64 | devtool: development ? 'inline-source-map' : false,
65 | entry: getEntryPoints(pages),
66 | context: srcPath,
67 | output: {
68 | filename: 'js/[name].[contenthash].js',
69 | path: path.resolve(__dirname, 'dist'),
70 | assetModuleFilename: '[file]',
71 | },
72 | target: ['web', 'es6'],
73 | module: {
74 | rules: [
75 | {
76 | test: /\.[tj]s$/,
77 | use: 'ts-loader',
78 | exclude: /node_modules/,
79 | },
80 | {
81 | test: /\.(?:ico|gif|png|jpg|jpeg|svg|webp)$/i,
82 | type: 'asset/resource',
83 | },
84 | {
85 | test: /\.(?:mp3|wav|ogg|mp4)$/i,
86 | type: 'asset/resource',
87 | },
88 | {
89 | test: /\.(woff(2)?|eot|ttf|otf)$/i,
90 | type: 'asset/resource',
91 | },
92 | {
93 | test: /\.css$/i,
94 | use: [{loader: MiniCssExtractPlugin.loader, options: { publicPath: '../' }}, 'css-loader'],
95 | },
96 | {
97 | test: /\.s[ac]ss$/i,
98 | use: [{loader: MiniCssExtractPlugin.loader, options: { publicPath: '../' }}, 'css-loader', 'sass-loader']
99 | }
100 | ],
101 | },
102 | plugins: [
103 | new MiniCssExtractPlugin({ filename: 'css/[name].[contenthash].css' }),
104 | ...getHtmlPlugins(pages),
105 | new CopyPlugin({
106 | patterns: [
107 | {
108 | from: '**/*',
109 | context: srcPath,
110 | globOptions: {
111 | ignore: [
112 | '**/*.js',
113 | '**/*.ts',
114 | '**/*.scss',
115 | '**/*.sass',
116 | '**/*.html',
117 | ],
118 | },
119 | noErrorOnMissing: true,
120 | force: true,
121 | }
122 | ],
123 | }),
124 | new CleanWebpackPlugin(),
125 | new RemoveEmptyScriptsPlugin(),
126 | ],
127 | resolve: {
128 | extensions: ['.js', '.ts'],
129 | },
130 | ...devServer(development)
131 | };
132 | }
133 |
--------------------------------------------------------------------------------
/rss-scripts/README.md:
--------------------------------------------------------------------------------
1 | # RSS Scripts
2 | Webpack configuration for create-rss-app
3 |
4 | ## Usage
5 | 1. Install package as dev-dependency
6 | ```sh
7 | npm install rss-scripts --save-dev
8 | ```
9 | 2. Add this scripts for package.json:
10 | ```json
11 | "scripts": {
12 | "start": "rss-scripts start",
13 | "build": "rss-scripts build"
14 | }
15 | ```
16 | 3. If you want to use TypeScript - add tsconfig.json to root folder of project.
17 | 4. Add your source code to `src` directory.
18 | 5. src dir has to contains index.html and index.js (or index.ts)
19 |
--------------------------------------------------------------------------------
/rss-scripts/index.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | 'use strict';
4 |
5 | const path = require('path');
6 | const { spawn } = require('child_process');
7 |
8 | const run = (cmd, ...args) => new Promise((res, rej) => {
9 | const chp = spawn(cmd, args, { shell: true });
10 | chp.stdout.on('data', (d) => console.log(d.toString()));
11 | chp.stderr.on('data', (d) => console.error(d.toString()));
12 | chp.on('error', (e) => rej(e.toString()));
13 | chp.on('close', (code) => code === 0 ? res() : rej());
14 | });
15 |
16 | const projectRoot = path.resolve();
17 | const dirname = `dirname="${projectRoot}"`;
18 |
19 | const getEnv = (flags) => {
20 | const env = [ dirname ];
21 | if (flags.includes('-ts')) env.push('isUseTs=true');
22 | return env;
23 | };
24 |
25 | const scripts = {
26 | start: (flags) => run('npx', 'webpack', 'serve', '--env', 'development=true', ...getEnv(flags)),
27 | build: (flags) => run('npx', 'webpack', '--env', ...getEnv(flags)),
28 | };
29 |
30 | const [ script, ...flags ] = process.argv.slice(2).map(s => s.toLowerCase());
31 | if (!script || !scripts[script]) process.exit(1);
32 |
33 | process.chdir(__dirname);
34 | scripts[script](flags)
35 | .then(() => process.exit(0))
36 | .catch(() => process.exit(1));
37 |
--------------------------------------------------------------------------------
/rss-scripts/modules.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.jpg';
2 | declare module '*.jpeg';
3 | declare module '*.gif';
4 | declare module '*.png';
5 | declare module '*.svg';
6 | declare module '*.webp';
7 | declare module '*.mp3';
8 | declare module '*.wav';
9 | declare module '*.ogg';
10 | declare module '*.mp4';
11 |
--------------------------------------------------------------------------------
/rss-scripts/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "rss-scripts",
3 | "version": "0.2.3",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@discoveryjs/json-ext": {
8 | "version": "0.5.5",
9 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz",
10 | "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA=="
11 | },
12 | "@nodelib/fs.scandir": {
13 | "version": "2.1.5",
14 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
15 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
16 | "requires": {
17 | "@nodelib/fs.stat": "2.0.5",
18 | "run-parallel": "^1.1.9"
19 | }
20 | },
21 | "@nodelib/fs.stat": {
22 | "version": "2.0.5",
23 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
24 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
25 | },
26 | "@nodelib/fs.walk": {
27 | "version": "1.2.7",
28 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz",
29 | "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==",
30 | "requires": {
31 | "@nodelib/fs.scandir": "2.1.5",
32 | "fastq": "^1.6.0"
33 | }
34 | },
35 | "@types/eslint": {
36 | "version": "7.28.1",
37 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.1.tgz",
38 | "integrity": "sha512-XhZKznR3i/W5dXqUhgU9fFdJekufbeBd5DALmkuXoeFcjbQcPk+2cL+WLHf6Q81HWAnM2vrslIHpGVyCAviRwg==",
39 | "requires": {
40 | "@types/estree": "*",
41 | "@types/json-schema": "*"
42 | }
43 | },
44 | "@types/eslint-scope": {
45 | "version": "3.7.1",
46 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz",
47 | "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==",
48 | "requires": {
49 | "@types/eslint": "*",
50 | "@types/estree": "*"
51 | }
52 | },
53 | "@types/estree": {
54 | "version": "0.0.50",
55 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz",
56 | "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw=="
57 | },
58 | "@types/glob": {
59 | "version": "7.1.4",
60 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz",
61 | "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==",
62 | "requires": {
63 | "@types/minimatch": "*",
64 | "@types/node": "*"
65 | }
66 | },
67 | "@types/html-minifier-terser": {
68 | "version": "5.1.2",
69 | "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz",
70 | "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w=="
71 | },
72 | "@types/http-proxy": {
73 | "version": "1.17.7",
74 | "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz",
75 | "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==",
76 | "requires": {
77 | "@types/node": "*"
78 | }
79 | },
80 | "@types/json-schema": {
81 | "version": "7.0.9",
82 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
83 | "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ=="
84 | },
85 | "@types/minimatch": {
86 | "version": "3.0.5",
87 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
88 | "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ=="
89 | },
90 | "@types/node": {
91 | "version": "16.10.3",
92 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz",
93 | "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ=="
94 | },
95 | "@types/retry": {
96 | "version": "0.12.1",
97 | "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz",
98 | "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g=="
99 | },
100 | "@webassemblyjs/ast": {
101 | "version": "1.11.1",
102 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
103 | "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
104 | "requires": {
105 | "@webassemblyjs/helper-numbers": "1.11.1",
106 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
107 | }
108 | },
109 | "@webassemblyjs/floating-point-hex-parser": {
110 | "version": "1.11.1",
111 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
112 | "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ=="
113 | },
114 | "@webassemblyjs/helper-api-error": {
115 | "version": "1.11.1",
116 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
117 | "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg=="
118 | },
119 | "@webassemblyjs/helper-buffer": {
120 | "version": "1.11.1",
121 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
122 | "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA=="
123 | },
124 | "@webassemblyjs/helper-numbers": {
125 | "version": "1.11.1",
126 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
127 | "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
128 | "requires": {
129 | "@webassemblyjs/floating-point-hex-parser": "1.11.1",
130 | "@webassemblyjs/helper-api-error": "1.11.1",
131 | "@xtuc/long": "4.2.2"
132 | }
133 | },
134 | "@webassemblyjs/helper-wasm-bytecode": {
135 | "version": "1.11.1",
136 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
137 | "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q=="
138 | },
139 | "@webassemblyjs/helper-wasm-section": {
140 | "version": "1.11.1",
141 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
142 | "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
143 | "requires": {
144 | "@webassemblyjs/ast": "1.11.1",
145 | "@webassemblyjs/helper-buffer": "1.11.1",
146 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
147 | "@webassemblyjs/wasm-gen": "1.11.1"
148 | }
149 | },
150 | "@webassemblyjs/ieee754": {
151 | "version": "1.11.1",
152 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
153 | "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
154 | "requires": {
155 | "@xtuc/ieee754": "^1.2.0"
156 | }
157 | },
158 | "@webassemblyjs/leb128": {
159 | "version": "1.11.1",
160 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
161 | "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
162 | "requires": {
163 | "@xtuc/long": "4.2.2"
164 | }
165 | },
166 | "@webassemblyjs/utf8": {
167 | "version": "1.11.1",
168 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
169 | "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ=="
170 | },
171 | "@webassemblyjs/wasm-edit": {
172 | "version": "1.11.1",
173 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
174 | "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
175 | "requires": {
176 | "@webassemblyjs/ast": "1.11.1",
177 | "@webassemblyjs/helper-buffer": "1.11.1",
178 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
179 | "@webassemblyjs/helper-wasm-section": "1.11.1",
180 | "@webassemblyjs/wasm-gen": "1.11.1",
181 | "@webassemblyjs/wasm-opt": "1.11.1",
182 | "@webassemblyjs/wasm-parser": "1.11.1",
183 | "@webassemblyjs/wast-printer": "1.11.1"
184 | }
185 | },
186 | "@webassemblyjs/wasm-gen": {
187 | "version": "1.11.1",
188 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
189 | "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
190 | "requires": {
191 | "@webassemblyjs/ast": "1.11.1",
192 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
193 | "@webassemblyjs/ieee754": "1.11.1",
194 | "@webassemblyjs/leb128": "1.11.1",
195 | "@webassemblyjs/utf8": "1.11.1"
196 | }
197 | },
198 | "@webassemblyjs/wasm-opt": {
199 | "version": "1.11.1",
200 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
201 | "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
202 | "requires": {
203 | "@webassemblyjs/ast": "1.11.1",
204 | "@webassemblyjs/helper-buffer": "1.11.1",
205 | "@webassemblyjs/wasm-gen": "1.11.1",
206 | "@webassemblyjs/wasm-parser": "1.11.1"
207 | }
208 | },
209 | "@webassemblyjs/wasm-parser": {
210 | "version": "1.11.1",
211 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
212 | "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
213 | "requires": {
214 | "@webassemblyjs/ast": "1.11.1",
215 | "@webassemblyjs/helper-api-error": "1.11.1",
216 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
217 | "@webassemblyjs/ieee754": "1.11.1",
218 | "@webassemblyjs/leb128": "1.11.1",
219 | "@webassemblyjs/utf8": "1.11.1"
220 | }
221 | },
222 | "@webassemblyjs/wast-printer": {
223 | "version": "1.11.1",
224 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
225 | "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
226 | "requires": {
227 | "@webassemblyjs/ast": "1.11.1",
228 | "@xtuc/long": "4.2.2"
229 | }
230 | },
231 | "@webpack-cli/configtest": {
232 | "version": "1.1.0",
233 | "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz",
234 | "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg=="
235 | },
236 | "@webpack-cli/info": {
237 | "version": "1.4.0",
238 | "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz",
239 | "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==",
240 | "requires": {
241 | "envinfo": "^7.7.3"
242 | }
243 | },
244 | "@webpack-cli/serve": {
245 | "version": "1.6.0",
246 | "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz",
247 | "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA=="
248 | },
249 | "@xtuc/ieee754": {
250 | "version": "1.2.0",
251 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
252 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
253 | },
254 | "@xtuc/long": {
255 | "version": "4.2.2",
256 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
257 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
258 | },
259 | "accepts": {
260 | "version": "1.3.7",
261 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
262 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
263 | "requires": {
264 | "mime-types": "~2.1.24",
265 | "negotiator": "0.6.2"
266 | }
267 | },
268 | "acorn": {
269 | "version": "8.5.0",
270 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
271 | "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q=="
272 | },
273 | "acorn-import-assertions": {
274 | "version": "1.8.0",
275 | "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
276 | "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw=="
277 | },
278 | "aggregate-error": {
279 | "version": "3.1.0",
280 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
281 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
282 | "requires": {
283 | "clean-stack": "^2.0.0",
284 | "indent-string": "^4.0.0"
285 | }
286 | },
287 | "ajv": {
288 | "version": "6.12.6",
289 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
290 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
291 | "requires": {
292 | "fast-deep-equal": "^3.1.1",
293 | "fast-json-stable-stringify": "^2.0.0",
294 | "json-schema-traverse": "^0.4.1",
295 | "uri-js": "^4.2.2"
296 | }
297 | },
298 | "ajv-keywords": {
299 | "version": "3.5.2",
300 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
301 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
302 | },
303 | "ansi-html-community": {
304 | "version": "0.0.8",
305 | "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
306 | "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw=="
307 | },
308 | "ansi-regex": {
309 | "version": "2.1.1",
310 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
311 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
312 | },
313 | "ansi-styles": {
314 | "version": "4.3.0",
315 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
316 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
317 | "requires": {
318 | "color-convert": "^2.0.1"
319 | }
320 | },
321 | "anymatch": {
322 | "version": "3.1.2",
323 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
324 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
325 | "requires": {
326 | "normalize-path": "^3.0.0",
327 | "picomatch": "^2.0.4"
328 | }
329 | },
330 | "array-flatten": {
331 | "version": "2.1.2",
332 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
333 | "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="
334 | },
335 | "array-union": {
336 | "version": "2.1.0",
337 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
338 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
339 | },
340 | "array-uniq": {
341 | "version": "1.0.3",
342 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
343 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
344 | },
345 | "async": {
346 | "version": "2.6.3",
347 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
348 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
349 | "requires": {
350 | "lodash": "^4.17.14"
351 | }
352 | },
353 | "balanced-match": {
354 | "version": "1.0.2",
355 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
356 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
357 | },
358 | "batch": {
359 | "version": "0.6.1",
360 | "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
361 | "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY="
362 | },
363 | "big.js": {
364 | "version": "5.2.2",
365 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
366 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
367 | },
368 | "binary-extensions": {
369 | "version": "2.2.0",
370 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
371 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
372 | },
373 | "body-parser": {
374 | "version": "1.19.0",
375 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
376 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
377 | "requires": {
378 | "bytes": "3.1.0",
379 | "content-type": "~1.0.4",
380 | "debug": "2.6.9",
381 | "depd": "~1.1.2",
382 | "http-errors": "1.7.2",
383 | "iconv-lite": "0.4.24",
384 | "on-finished": "~2.3.0",
385 | "qs": "6.7.0",
386 | "raw-body": "2.4.0",
387 | "type-is": "~1.6.17"
388 | },
389 | "dependencies": {
390 | "bytes": {
391 | "version": "3.1.0",
392 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
393 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
394 | }
395 | }
396 | },
397 | "bonjour": {
398 | "version": "3.5.0",
399 | "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
400 | "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
401 | "requires": {
402 | "array-flatten": "^2.1.0",
403 | "deep-equal": "^1.0.1",
404 | "dns-equal": "^1.0.0",
405 | "dns-txt": "^2.0.2",
406 | "multicast-dns": "^6.0.1",
407 | "multicast-dns-service-types": "^1.1.0"
408 | }
409 | },
410 | "boolbase": {
411 | "version": "1.0.0",
412 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
413 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
414 | },
415 | "brace-expansion": {
416 | "version": "1.1.11",
417 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
418 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
419 | "requires": {
420 | "balanced-match": "^1.0.0",
421 | "concat-map": "0.0.1"
422 | }
423 | },
424 | "braces": {
425 | "version": "3.0.2",
426 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
427 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
428 | "requires": {
429 | "fill-range": "^7.0.1"
430 | }
431 | },
432 | "browserslist": {
433 | "version": "4.17.3",
434 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz",
435 | "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==",
436 | "requires": {
437 | "caniuse-lite": "^1.0.30001264",
438 | "electron-to-chromium": "^1.3.857",
439 | "escalade": "^3.1.1",
440 | "node-releases": "^1.1.77",
441 | "picocolors": "^0.2.1"
442 | }
443 | },
444 | "buffer-from": {
445 | "version": "1.1.2",
446 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
447 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
448 | },
449 | "buffer-indexof": {
450 | "version": "1.1.1",
451 | "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
452 | "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g=="
453 | },
454 | "bytes": {
455 | "version": "3.0.0",
456 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
457 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
458 | },
459 | "call-bind": {
460 | "version": "1.0.2",
461 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
462 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
463 | "requires": {
464 | "function-bind": "^1.1.1",
465 | "get-intrinsic": "^1.0.2"
466 | }
467 | },
468 | "camel-case": {
469 | "version": "4.1.2",
470 | "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
471 | "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
472 | "requires": {
473 | "pascal-case": "^3.1.2",
474 | "tslib": "^2.0.3"
475 | }
476 | },
477 | "caniuse-lite": {
478 | "version": "1.0.30001265",
479 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz",
480 | "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw=="
481 | },
482 | "chalk": {
483 | "version": "4.1.2",
484 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
485 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
486 | "requires": {
487 | "ansi-styles": "^4.1.0",
488 | "supports-color": "^7.1.0"
489 | }
490 | },
491 | "chokidar": {
492 | "version": "3.5.2",
493 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
494 | "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
495 | "requires": {
496 | "anymatch": "~3.1.2",
497 | "braces": "~3.0.2",
498 | "fsevents": "~2.3.2",
499 | "glob-parent": "~5.1.2",
500 | "is-binary-path": "~2.1.0",
501 | "is-glob": "~4.0.1",
502 | "normalize-path": "~3.0.0",
503 | "readdirp": "~3.6.0"
504 | }
505 | },
506 | "chrome-trace-event": {
507 | "version": "1.0.3",
508 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
509 | "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg=="
510 | },
511 | "clean-css": {
512 | "version": "4.2.3",
513 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
514 | "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==",
515 | "requires": {
516 | "source-map": "~0.6.0"
517 | }
518 | },
519 | "clean-stack": {
520 | "version": "2.2.0",
521 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
522 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="
523 | },
524 | "clean-webpack-plugin": {
525 | "version": "4.0.0",
526 | "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz",
527 | "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==",
528 | "requires": {
529 | "del": "^4.1.1"
530 | }
531 | },
532 | "clone-deep": {
533 | "version": "4.0.1",
534 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
535 | "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
536 | "requires": {
537 | "is-plain-object": "^2.0.4",
538 | "kind-of": "^6.0.2",
539 | "shallow-clone": "^3.0.0"
540 | }
541 | },
542 | "color-convert": {
543 | "version": "2.0.1",
544 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
545 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
546 | "requires": {
547 | "color-name": "~1.1.4"
548 | }
549 | },
550 | "color-name": {
551 | "version": "1.1.4",
552 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
553 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
554 | },
555 | "colorette": {
556 | "version": "2.0.16",
557 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
558 | "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g=="
559 | },
560 | "commander": {
561 | "version": "4.1.1",
562 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
563 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="
564 | },
565 | "compressible": {
566 | "version": "2.0.18",
567 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
568 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
569 | "requires": {
570 | "mime-db": ">= 1.43.0 < 2"
571 | }
572 | },
573 | "compression": {
574 | "version": "1.7.4",
575 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
576 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
577 | "requires": {
578 | "accepts": "~1.3.5",
579 | "bytes": "3.0.0",
580 | "compressible": "~2.0.16",
581 | "debug": "2.6.9",
582 | "on-headers": "~1.0.2",
583 | "safe-buffer": "5.1.2",
584 | "vary": "~1.1.2"
585 | }
586 | },
587 | "concat-map": {
588 | "version": "0.0.1",
589 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
590 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
591 | },
592 | "connect-history-api-fallback": {
593 | "version": "1.6.0",
594 | "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
595 | "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg=="
596 | },
597 | "content-disposition": {
598 | "version": "0.5.3",
599 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
600 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
601 | "requires": {
602 | "safe-buffer": "5.1.2"
603 | }
604 | },
605 | "content-type": {
606 | "version": "1.0.4",
607 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
608 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
609 | },
610 | "cookie": {
611 | "version": "0.4.0",
612 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
613 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
614 | },
615 | "cookie-signature": {
616 | "version": "1.0.6",
617 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
618 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
619 | },
620 | "copy-webpack-plugin": {
621 | "version": "8.1.1",
622 | "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-8.1.1.tgz",
623 | "integrity": "sha512-rYM2uzRxrLRpcyPqGceRBDpxxUV8vcDqIKxAUKfcnFpcrPxT5+XvhTxv7XLjo5AvEJFPdAE3zCogG2JVahqgSQ==",
624 | "requires": {
625 | "fast-glob": "^3.2.5",
626 | "glob-parent": "^5.1.1",
627 | "globby": "^11.0.3",
628 | "normalize-path": "^3.0.0",
629 | "p-limit": "^3.1.0",
630 | "schema-utils": "^3.0.0",
631 | "serialize-javascript": "^5.0.1"
632 | }
633 | },
634 | "core-util-is": {
635 | "version": "1.0.3",
636 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
637 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
638 | },
639 | "cross-spawn": {
640 | "version": "7.0.3",
641 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
642 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
643 | "requires": {
644 | "path-key": "^3.1.0",
645 | "shebang-command": "^2.0.0",
646 | "which": "^2.0.1"
647 | }
648 | },
649 | "css-loader": {
650 | "version": "5.2.7",
651 | "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz",
652 | "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==",
653 | "requires": {
654 | "icss-utils": "^5.1.0",
655 | "loader-utils": "^2.0.0",
656 | "postcss": "^8.2.15",
657 | "postcss-modules-extract-imports": "^3.0.0",
658 | "postcss-modules-local-by-default": "^4.0.0",
659 | "postcss-modules-scope": "^3.0.0",
660 | "postcss-modules-values": "^4.0.0",
661 | "postcss-value-parser": "^4.1.0",
662 | "schema-utils": "^3.0.0",
663 | "semver": "^7.3.5"
664 | }
665 | },
666 | "css-select": {
667 | "version": "4.1.3",
668 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
669 | "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
670 | "requires": {
671 | "boolbase": "^1.0.0",
672 | "css-what": "^5.0.0",
673 | "domhandler": "^4.2.0",
674 | "domutils": "^2.6.0",
675 | "nth-check": "^2.0.0"
676 | }
677 | },
678 | "css-what": {
679 | "version": "5.1.0",
680 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
681 | "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw=="
682 | },
683 | "cssesc": {
684 | "version": "3.0.0",
685 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
686 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
687 | },
688 | "debug": {
689 | "version": "2.6.9",
690 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
691 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
692 | "requires": {
693 | "ms": "2.0.0"
694 | }
695 | },
696 | "deep-equal": {
697 | "version": "1.1.1",
698 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
699 | "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
700 | "requires": {
701 | "is-arguments": "^1.0.4",
702 | "is-date-object": "^1.0.1",
703 | "is-regex": "^1.0.4",
704 | "object-is": "^1.0.1",
705 | "object-keys": "^1.1.1",
706 | "regexp.prototype.flags": "^1.2.0"
707 | }
708 | },
709 | "default-gateway": {
710 | "version": "6.0.3",
711 | "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
712 | "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
713 | "requires": {
714 | "execa": "^5.0.0"
715 | }
716 | },
717 | "define-lazy-prop": {
718 | "version": "2.0.0",
719 | "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
720 | "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="
721 | },
722 | "define-properties": {
723 | "version": "1.1.3",
724 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
725 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
726 | "requires": {
727 | "object-keys": "^1.0.12"
728 | }
729 | },
730 | "del": {
731 | "version": "4.1.1",
732 | "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
733 | "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
734 | "requires": {
735 | "@types/glob": "^7.1.1",
736 | "globby": "^6.1.0",
737 | "is-path-cwd": "^2.0.0",
738 | "is-path-in-cwd": "^2.0.0",
739 | "p-map": "^2.0.0",
740 | "pify": "^4.0.1",
741 | "rimraf": "^2.6.3"
742 | },
743 | "dependencies": {
744 | "array-union": {
745 | "version": "1.0.2",
746 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
747 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
748 | "requires": {
749 | "array-uniq": "^1.0.1"
750 | }
751 | },
752 | "globby": {
753 | "version": "6.1.0",
754 | "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
755 | "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
756 | "requires": {
757 | "array-union": "^1.0.1",
758 | "glob": "^7.0.3",
759 | "object-assign": "^4.0.1",
760 | "pify": "^2.0.0",
761 | "pinkie-promise": "^2.0.0"
762 | },
763 | "dependencies": {
764 | "pify": {
765 | "version": "2.3.0",
766 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
767 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
768 | }
769 | }
770 | }
771 | }
772 | },
773 | "depd": {
774 | "version": "1.1.2",
775 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
776 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
777 | },
778 | "destroy": {
779 | "version": "1.0.4",
780 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
781 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
782 | },
783 | "detect-node": {
784 | "version": "2.1.0",
785 | "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
786 | "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
787 | },
788 | "dir-glob": {
789 | "version": "3.0.1",
790 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
791 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
792 | "requires": {
793 | "path-type": "^4.0.0"
794 | }
795 | },
796 | "dns-equal": {
797 | "version": "1.0.0",
798 | "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
799 | "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0="
800 | },
801 | "dns-packet": {
802 | "version": "1.3.4",
803 | "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz",
804 | "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
805 | "requires": {
806 | "ip": "^1.1.0",
807 | "safe-buffer": "^5.0.1"
808 | }
809 | },
810 | "dns-txt": {
811 | "version": "2.0.2",
812 | "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
813 | "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
814 | "requires": {
815 | "buffer-indexof": "^1.0.0"
816 | }
817 | },
818 | "dom-converter": {
819 | "version": "0.2.0",
820 | "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
821 | "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
822 | "requires": {
823 | "utila": "~0.4"
824 | }
825 | },
826 | "dom-serializer": {
827 | "version": "1.3.2",
828 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
829 | "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
830 | "requires": {
831 | "domelementtype": "^2.0.1",
832 | "domhandler": "^4.2.0",
833 | "entities": "^2.0.0"
834 | }
835 | },
836 | "domelementtype": {
837 | "version": "2.2.0",
838 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
839 | "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
840 | },
841 | "domhandler": {
842 | "version": "4.2.2",
843 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz",
844 | "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
845 | "requires": {
846 | "domelementtype": "^2.2.0"
847 | }
848 | },
849 | "domutils": {
850 | "version": "2.8.0",
851 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
852 | "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
853 | "requires": {
854 | "dom-serializer": "^1.0.1",
855 | "domelementtype": "^2.2.0",
856 | "domhandler": "^4.2.0"
857 | }
858 | },
859 | "dot-case": {
860 | "version": "3.0.4",
861 | "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
862 | "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
863 | "requires": {
864 | "no-case": "^3.0.4",
865 | "tslib": "^2.0.3"
866 | }
867 | },
868 | "ee-first": {
869 | "version": "1.1.1",
870 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
871 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
872 | },
873 | "electron-to-chromium": {
874 | "version": "1.3.864",
875 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.864.tgz",
876 | "integrity": "sha512-v4rbad8GO6/yVI92WOeU9Wgxc4NA0n4f6P1FvZTY+jyY7JHEhw3bduYu60v3Q1h81Cg6eo4ApZrFPuycwd5hGw=="
877 | },
878 | "emojis-list": {
879 | "version": "3.0.0",
880 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
881 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
882 | },
883 | "encodeurl": {
884 | "version": "1.0.2",
885 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
886 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
887 | },
888 | "enhanced-resolve": {
889 | "version": "5.8.3",
890 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz",
891 | "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==",
892 | "requires": {
893 | "graceful-fs": "^4.2.4",
894 | "tapable": "^2.2.0"
895 | }
896 | },
897 | "entities": {
898 | "version": "2.2.0",
899 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
900 | "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
901 | },
902 | "envinfo": {
903 | "version": "7.8.1",
904 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
905 | "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw=="
906 | },
907 | "es-module-lexer": {
908 | "version": "0.9.3",
909 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
910 | "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="
911 | },
912 | "escalade": {
913 | "version": "3.1.1",
914 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
915 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
916 | },
917 | "escape-html": {
918 | "version": "1.0.3",
919 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
920 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
921 | },
922 | "eslint-scope": {
923 | "version": "5.1.1",
924 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
925 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
926 | "requires": {
927 | "esrecurse": "^4.3.0",
928 | "estraverse": "^4.1.1"
929 | }
930 | },
931 | "esrecurse": {
932 | "version": "4.3.0",
933 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
934 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
935 | "requires": {
936 | "estraverse": "^5.2.0"
937 | },
938 | "dependencies": {
939 | "estraverse": {
940 | "version": "5.2.0",
941 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
942 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ=="
943 | }
944 | }
945 | },
946 | "estraverse": {
947 | "version": "4.3.0",
948 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
949 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
950 | },
951 | "etag": {
952 | "version": "1.8.1",
953 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
954 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
955 | },
956 | "eventemitter3": {
957 | "version": "4.0.7",
958 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
959 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
960 | },
961 | "events": {
962 | "version": "3.3.0",
963 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
964 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
965 | },
966 | "execa": {
967 | "version": "5.1.1",
968 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
969 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
970 | "requires": {
971 | "cross-spawn": "^7.0.3",
972 | "get-stream": "^6.0.0",
973 | "human-signals": "^2.1.0",
974 | "is-stream": "^2.0.0",
975 | "merge-stream": "^2.0.0",
976 | "npm-run-path": "^4.0.1",
977 | "onetime": "^5.1.2",
978 | "signal-exit": "^3.0.3",
979 | "strip-final-newline": "^2.0.0"
980 | }
981 | },
982 | "express": {
983 | "version": "4.17.1",
984 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
985 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
986 | "requires": {
987 | "accepts": "~1.3.7",
988 | "array-flatten": "1.1.1",
989 | "body-parser": "1.19.0",
990 | "content-disposition": "0.5.3",
991 | "content-type": "~1.0.4",
992 | "cookie": "0.4.0",
993 | "cookie-signature": "1.0.6",
994 | "debug": "2.6.9",
995 | "depd": "~1.1.2",
996 | "encodeurl": "~1.0.2",
997 | "escape-html": "~1.0.3",
998 | "etag": "~1.8.1",
999 | "finalhandler": "~1.1.2",
1000 | "fresh": "0.5.2",
1001 | "merge-descriptors": "1.0.1",
1002 | "methods": "~1.1.2",
1003 | "on-finished": "~2.3.0",
1004 | "parseurl": "~1.3.3",
1005 | "path-to-regexp": "0.1.7",
1006 | "proxy-addr": "~2.0.5",
1007 | "qs": "6.7.0",
1008 | "range-parser": "~1.2.1",
1009 | "safe-buffer": "5.1.2",
1010 | "send": "0.17.1",
1011 | "serve-static": "1.14.1",
1012 | "setprototypeof": "1.1.1",
1013 | "statuses": "~1.5.0",
1014 | "type-is": "~1.6.18",
1015 | "utils-merge": "1.0.1",
1016 | "vary": "~1.1.2"
1017 | },
1018 | "dependencies": {
1019 | "array-flatten": {
1020 | "version": "1.1.1",
1021 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
1022 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
1023 | }
1024 | }
1025 | },
1026 | "fast-deep-equal": {
1027 | "version": "3.1.3",
1028 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1029 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
1030 | },
1031 | "fast-glob": {
1032 | "version": "3.2.5",
1033 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
1034 | "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==",
1035 | "requires": {
1036 | "@nodelib/fs.stat": "^2.0.2",
1037 | "@nodelib/fs.walk": "^1.2.3",
1038 | "glob-parent": "^5.1.0",
1039 | "merge2": "^1.3.0",
1040 | "micromatch": "^4.0.2",
1041 | "picomatch": "^2.2.1"
1042 | }
1043 | },
1044 | "fast-json-stable-stringify": {
1045 | "version": "2.1.0",
1046 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1047 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
1048 | },
1049 | "fastest-levenshtein": {
1050 | "version": "1.0.12",
1051 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
1052 | "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow=="
1053 | },
1054 | "fastq": {
1055 | "version": "1.11.0",
1056 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz",
1057 | "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==",
1058 | "requires": {
1059 | "reusify": "^1.0.4"
1060 | }
1061 | },
1062 | "faye-websocket": {
1063 | "version": "0.11.4",
1064 | "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
1065 | "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
1066 | "requires": {
1067 | "websocket-driver": ">=0.5.1"
1068 | }
1069 | },
1070 | "fill-range": {
1071 | "version": "7.0.1",
1072 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1073 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1074 | "requires": {
1075 | "to-regex-range": "^5.0.1"
1076 | }
1077 | },
1078 | "finalhandler": {
1079 | "version": "1.1.2",
1080 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
1081 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
1082 | "requires": {
1083 | "debug": "2.6.9",
1084 | "encodeurl": "~1.0.2",
1085 | "escape-html": "~1.0.3",
1086 | "on-finished": "~2.3.0",
1087 | "parseurl": "~1.3.3",
1088 | "statuses": "~1.5.0",
1089 | "unpipe": "~1.0.0"
1090 | }
1091 | },
1092 | "find-up": {
1093 | "version": "4.1.0",
1094 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
1095 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
1096 | "requires": {
1097 | "locate-path": "^5.0.0",
1098 | "path-exists": "^4.0.0"
1099 | }
1100 | },
1101 | "follow-redirects": {
1102 | "version": "1.14.4",
1103 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz",
1104 | "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g=="
1105 | },
1106 | "forwarded": {
1107 | "version": "0.2.0",
1108 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
1109 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
1110 | },
1111 | "fresh": {
1112 | "version": "0.5.2",
1113 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
1114 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
1115 | },
1116 | "fs-monkey": {
1117 | "version": "1.0.3",
1118 | "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
1119 | "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q=="
1120 | },
1121 | "fs.realpath": {
1122 | "version": "1.0.0",
1123 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1124 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
1125 | },
1126 | "fsevents": {
1127 | "version": "2.3.2",
1128 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1129 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1130 | "optional": true
1131 | },
1132 | "function-bind": {
1133 | "version": "1.1.1",
1134 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1135 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
1136 | },
1137 | "get-intrinsic": {
1138 | "version": "1.1.1",
1139 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
1140 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
1141 | "requires": {
1142 | "function-bind": "^1.1.1",
1143 | "has": "^1.0.3",
1144 | "has-symbols": "^1.0.1"
1145 | }
1146 | },
1147 | "get-stream": {
1148 | "version": "6.0.1",
1149 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
1150 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="
1151 | },
1152 | "glob": {
1153 | "version": "7.2.0",
1154 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
1155 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
1156 | "requires": {
1157 | "fs.realpath": "^1.0.0",
1158 | "inflight": "^1.0.4",
1159 | "inherits": "2",
1160 | "minimatch": "^3.0.4",
1161 | "once": "^1.3.0",
1162 | "path-is-absolute": "^1.0.0"
1163 | }
1164 | },
1165 | "glob-parent": {
1166 | "version": "5.1.2",
1167 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1168 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1169 | "requires": {
1170 | "is-glob": "^4.0.1"
1171 | }
1172 | },
1173 | "glob-to-regexp": {
1174 | "version": "0.4.1",
1175 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
1176 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
1177 | },
1178 | "globby": {
1179 | "version": "11.0.4",
1180 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz",
1181 | "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
1182 | "requires": {
1183 | "array-union": "^2.1.0",
1184 | "dir-glob": "^3.0.1",
1185 | "fast-glob": "^3.1.1",
1186 | "ignore": "^5.1.4",
1187 | "merge2": "^1.3.0",
1188 | "slash": "^3.0.0"
1189 | }
1190 | },
1191 | "graceful-fs": {
1192 | "version": "4.2.8",
1193 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
1194 | "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
1195 | },
1196 | "handle-thing": {
1197 | "version": "2.0.1",
1198 | "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
1199 | "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg=="
1200 | },
1201 | "has": {
1202 | "version": "1.0.3",
1203 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1204 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1205 | "requires": {
1206 | "function-bind": "^1.1.1"
1207 | }
1208 | },
1209 | "has-flag": {
1210 | "version": "4.0.0",
1211 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1212 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
1213 | },
1214 | "has-symbols": {
1215 | "version": "1.0.2",
1216 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
1217 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
1218 | },
1219 | "has-tostringtag": {
1220 | "version": "1.0.0",
1221 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
1222 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
1223 | "requires": {
1224 | "has-symbols": "^1.0.2"
1225 | }
1226 | },
1227 | "he": {
1228 | "version": "1.2.0",
1229 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
1230 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
1231 | },
1232 | "hpack.js": {
1233 | "version": "2.1.6",
1234 | "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
1235 | "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
1236 | "requires": {
1237 | "inherits": "^2.0.1",
1238 | "obuf": "^1.0.0",
1239 | "readable-stream": "^2.0.1",
1240 | "wbuf": "^1.1.0"
1241 | },
1242 | "dependencies": {
1243 | "readable-stream": {
1244 | "version": "2.3.7",
1245 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
1246 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
1247 | "requires": {
1248 | "core-util-is": "~1.0.0",
1249 | "inherits": "~2.0.3",
1250 | "isarray": "~1.0.0",
1251 | "process-nextick-args": "~2.0.0",
1252 | "safe-buffer": "~5.1.1",
1253 | "string_decoder": "~1.1.1",
1254 | "util-deprecate": "~1.0.1"
1255 | }
1256 | }
1257 | }
1258 | },
1259 | "html-entities": {
1260 | "version": "2.3.2",
1261 | "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz",
1262 | "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ=="
1263 | },
1264 | "html-minifier-terser": {
1265 | "version": "5.1.1",
1266 | "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
1267 | "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==",
1268 | "requires": {
1269 | "camel-case": "^4.1.1",
1270 | "clean-css": "^4.2.3",
1271 | "commander": "^4.1.1",
1272 | "he": "^1.2.0",
1273 | "param-case": "^3.0.3",
1274 | "relateurl": "^0.2.7",
1275 | "terser": "^4.6.3"
1276 | }
1277 | },
1278 | "html-webpack-plugin": {
1279 | "version": "5.3.2",
1280 | "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz",
1281 | "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==",
1282 | "requires": {
1283 | "@types/html-minifier-terser": "^5.0.0",
1284 | "html-minifier-terser": "^5.0.1",
1285 | "lodash": "^4.17.21",
1286 | "pretty-error": "^3.0.4",
1287 | "tapable": "^2.0.0"
1288 | }
1289 | },
1290 | "htmlparser2": {
1291 | "version": "6.1.0",
1292 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
1293 | "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
1294 | "requires": {
1295 | "domelementtype": "^2.0.1",
1296 | "domhandler": "^4.0.0",
1297 | "domutils": "^2.5.2",
1298 | "entities": "^2.0.0"
1299 | }
1300 | },
1301 | "http-deceiver": {
1302 | "version": "1.2.7",
1303 | "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
1304 | "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc="
1305 | },
1306 | "http-errors": {
1307 | "version": "1.7.2",
1308 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
1309 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
1310 | "requires": {
1311 | "depd": "~1.1.2",
1312 | "inherits": "2.0.3",
1313 | "setprototypeof": "1.1.1",
1314 | "statuses": ">= 1.5.0 < 2",
1315 | "toidentifier": "1.0.0"
1316 | },
1317 | "dependencies": {
1318 | "inherits": {
1319 | "version": "2.0.3",
1320 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1321 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
1322 | }
1323 | }
1324 | },
1325 | "http-parser-js": {
1326 | "version": "0.5.3",
1327 | "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz",
1328 | "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg=="
1329 | },
1330 | "http-proxy": {
1331 | "version": "1.18.1",
1332 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
1333 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
1334 | "requires": {
1335 | "eventemitter3": "^4.0.0",
1336 | "follow-redirects": "^1.0.0",
1337 | "requires-port": "^1.0.0"
1338 | }
1339 | },
1340 | "http-proxy-middleware": {
1341 | "version": "2.0.1",
1342 | "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz",
1343 | "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==",
1344 | "requires": {
1345 | "@types/http-proxy": "^1.17.5",
1346 | "http-proxy": "^1.18.1",
1347 | "is-glob": "^4.0.1",
1348 | "is-plain-obj": "^3.0.0",
1349 | "micromatch": "^4.0.2"
1350 | }
1351 | },
1352 | "human-signals": {
1353 | "version": "2.1.0",
1354 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
1355 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
1356 | },
1357 | "iconv-lite": {
1358 | "version": "0.4.24",
1359 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1360 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1361 | "requires": {
1362 | "safer-buffer": ">= 2.1.2 < 3"
1363 | }
1364 | },
1365 | "icss-utils": {
1366 | "version": "5.1.0",
1367 | "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
1368 | "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA=="
1369 | },
1370 | "ignore": {
1371 | "version": "5.1.8",
1372 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
1373 | "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw=="
1374 | },
1375 | "import-local": {
1376 | "version": "3.0.3",
1377 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz",
1378 | "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==",
1379 | "requires": {
1380 | "pkg-dir": "^4.2.0",
1381 | "resolve-cwd": "^3.0.0"
1382 | }
1383 | },
1384 | "indent-string": {
1385 | "version": "4.0.0",
1386 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
1387 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
1388 | },
1389 | "inflight": {
1390 | "version": "1.0.6",
1391 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1392 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1393 | "requires": {
1394 | "once": "^1.3.0",
1395 | "wrappy": "1"
1396 | }
1397 | },
1398 | "inherits": {
1399 | "version": "2.0.4",
1400 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1401 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1402 | },
1403 | "internal-ip": {
1404 | "version": "6.2.0",
1405 | "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz",
1406 | "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==",
1407 | "requires": {
1408 | "default-gateway": "^6.0.0",
1409 | "ipaddr.js": "^1.9.1",
1410 | "is-ip": "^3.1.0",
1411 | "p-event": "^4.2.0"
1412 | },
1413 | "dependencies": {
1414 | "ipaddr.js": {
1415 | "version": "1.9.1",
1416 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1417 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
1418 | }
1419 | }
1420 | },
1421 | "interpret": {
1422 | "version": "2.2.0",
1423 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
1424 | "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw=="
1425 | },
1426 | "ip": {
1427 | "version": "1.1.5",
1428 | "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
1429 | "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
1430 | },
1431 | "ip-regex": {
1432 | "version": "4.3.0",
1433 | "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz",
1434 | "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q=="
1435 | },
1436 | "ipaddr.js": {
1437 | "version": "2.0.1",
1438 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz",
1439 | "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng=="
1440 | },
1441 | "is-arguments": {
1442 | "version": "1.1.1",
1443 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
1444 | "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
1445 | "requires": {
1446 | "call-bind": "^1.0.2",
1447 | "has-tostringtag": "^1.0.0"
1448 | }
1449 | },
1450 | "is-binary-path": {
1451 | "version": "2.1.0",
1452 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1453 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1454 | "requires": {
1455 | "binary-extensions": "^2.0.0"
1456 | }
1457 | },
1458 | "is-core-module": {
1459 | "version": "2.7.0",
1460 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz",
1461 | "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==",
1462 | "requires": {
1463 | "has": "^1.0.3"
1464 | }
1465 | },
1466 | "is-date-object": {
1467 | "version": "1.0.5",
1468 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
1469 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
1470 | "requires": {
1471 | "has-tostringtag": "^1.0.0"
1472 | }
1473 | },
1474 | "is-docker": {
1475 | "version": "2.2.1",
1476 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
1477 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
1478 | },
1479 | "is-extglob": {
1480 | "version": "2.1.1",
1481 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1482 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
1483 | },
1484 | "is-glob": {
1485 | "version": "4.0.1",
1486 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
1487 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
1488 | "requires": {
1489 | "is-extglob": "^2.1.1"
1490 | }
1491 | },
1492 | "is-ip": {
1493 | "version": "3.1.0",
1494 | "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz",
1495 | "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==",
1496 | "requires": {
1497 | "ip-regex": "^4.0.0"
1498 | }
1499 | },
1500 | "is-number": {
1501 | "version": "7.0.0",
1502 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1503 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
1504 | },
1505 | "is-path-cwd": {
1506 | "version": "2.2.0",
1507 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
1508 | "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ=="
1509 | },
1510 | "is-path-in-cwd": {
1511 | "version": "2.1.0",
1512 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
1513 | "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
1514 | "requires": {
1515 | "is-path-inside": "^2.1.0"
1516 | }
1517 | },
1518 | "is-path-inside": {
1519 | "version": "2.1.0",
1520 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
1521 | "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
1522 | "requires": {
1523 | "path-is-inside": "^1.0.2"
1524 | }
1525 | },
1526 | "is-plain-obj": {
1527 | "version": "3.0.0",
1528 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
1529 | "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA=="
1530 | },
1531 | "is-plain-object": {
1532 | "version": "2.0.4",
1533 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
1534 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
1535 | "requires": {
1536 | "isobject": "^3.0.1"
1537 | }
1538 | },
1539 | "is-regex": {
1540 | "version": "1.1.4",
1541 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
1542 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
1543 | "requires": {
1544 | "call-bind": "^1.0.2",
1545 | "has-tostringtag": "^1.0.0"
1546 | }
1547 | },
1548 | "is-stream": {
1549 | "version": "2.0.1",
1550 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
1551 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
1552 | },
1553 | "is-wsl": {
1554 | "version": "2.2.0",
1555 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
1556 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
1557 | "requires": {
1558 | "is-docker": "^2.0.0"
1559 | }
1560 | },
1561 | "isarray": {
1562 | "version": "1.0.0",
1563 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1564 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
1565 | },
1566 | "isexe": {
1567 | "version": "2.0.0",
1568 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1569 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
1570 | },
1571 | "isobject": {
1572 | "version": "3.0.1",
1573 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
1574 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
1575 | },
1576 | "jest-worker": {
1577 | "version": "27.2.5",
1578 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.5.tgz",
1579 | "integrity": "sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw==",
1580 | "requires": {
1581 | "@types/node": "*",
1582 | "merge-stream": "^2.0.0",
1583 | "supports-color": "^8.0.0"
1584 | },
1585 | "dependencies": {
1586 | "supports-color": {
1587 | "version": "8.1.1",
1588 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
1589 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
1590 | "requires": {
1591 | "has-flag": "^4.0.0"
1592 | }
1593 | }
1594 | }
1595 | },
1596 | "json-parse-better-errors": {
1597 | "version": "1.0.2",
1598 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
1599 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
1600 | },
1601 | "json-schema-traverse": {
1602 | "version": "0.4.1",
1603 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1604 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
1605 | },
1606 | "json5": {
1607 | "version": "2.2.0",
1608 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
1609 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
1610 | "requires": {
1611 | "minimist": "^1.2.5"
1612 | }
1613 | },
1614 | "kind-of": {
1615 | "version": "6.0.3",
1616 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
1617 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
1618 | },
1619 | "klona": {
1620 | "version": "2.0.4",
1621 | "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz",
1622 | "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA=="
1623 | },
1624 | "loader-runner": {
1625 | "version": "4.2.0",
1626 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
1627 | "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw=="
1628 | },
1629 | "loader-utils": {
1630 | "version": "2.0.0",
1631 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
1632 | "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
1633 | "requires": {
1634 | "big.js": "^5.2.2",
1635 | "emojis-list": "^3.0.0",
1636 | "json5": "^2.1.2"
1637 | }
1638 | },
1639 | "locate-path": {
1640 | "version": "5.0.0",
1641 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
1642 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
1643 | "requires": {
1644 | "p-locate": "^4.1.0"
1645 | }
1646 | },
1647 | "lodash": {
1648 | "version": "4.17.21",
1649 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1650 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
1651 | },
1652 | "lower-case": {
1653 | "version": "2.0.2",
1654 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
1655 | "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
1656 | "requires": {
1657 | "tslib": "^2.0.3"
1658 | }
1659 | },
1660 | "lru-cache": {
1661 | "version": "6.0.0",
1662 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1663 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1664 | "requires": {
1665 | "yallist": "^4.0.0"
1666 | }
1667 | },
1668 | "media-typer": {
1669 | "version": "0.3.0",
1670 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1671 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
1672 | },
1673 | "memfs": {
1674 | "version": "3.3.0",
1675 | "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz",
1676 | "integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==",
1677 | "requires": {
1678 | "fs-monkey": "1.0.3"
1679 | }
1680 | },
1681 | "merge-descriptors": {
1682 | "version": "1.0.1",
1683 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1684 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
1685 | },
1686 | "merge-stream": {
1687 | "version": "2.0.0",
1688 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1689 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
1690 | },
1691 | "merge2": {
1692 | "version": "1.4.1",
1693 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1694 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
1695 | },
1696 | "methods": {
1697 | "version": "1.1.2",
1698 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1699 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
1700 | },
1701 | "micromatch": {
1702 | "version": "4.0.4",
1703 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
1704 | "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
1705 | "requires": {
1706 | "braces": "^3.0.1",
1707 | "picomatch": "^2.2.3"
1708 | }
1709 | },
1710 | "mime": {
1711 | "version": "1.6.0",
1712 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1713 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
1714 | },
1715 | "mime-db": {
1716 | "version": "1.50.0",
1717 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz",
1718 | "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A=="
1719 | },
1720 | "mime-types": {
1721 | "version": "2.1.33",
1722 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz",
1723 | "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==",
1724 | "requires": {
1725 | "mime-db": "1.50.0"
1726 | }
1727 | },
1728 | "mimic-fn": {
1729 | "version": "2.1.0",
1730 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1731 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
1732 | },
1733 | "mini-css-extract-plugin": {
1734 | "version": "1.6.2",
1735 | "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz",
1736 | "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==",
1737 | "requires": {
1738 | "loader-utils": "^2.0.0",
1739 | "schema-utils": "^3.0.0",
1740 | "webpack-sources": "^1.1.0"
1741 | }
1742 | },
1743 | "minimalistic-assert": {
1744 | "version": "1.0.1",
1745 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
1746 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
1747 | },
1748 | "minimatch": {
1749 | "version": "3.0.4",
1750 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1751 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1752 | "requires": {
1753 | "brace-expansion": "^1.1.7"
1754 | }
1755 | },
1756 | "minimist": {
1757 | "version": "1.2.5",
1758 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
1759 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
1760 | },
1761 | "mkdirp": {
1762 | "version": "0.5.5",
1763 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
1764 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
1765 | "requires": {
1766 | "minimist": "^1.2.5"
1767 | }
1768 | },
1769 | "ms": {
1770 | "version": "2.0.0",
1771 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1772 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1773 | },
1774 | "multicast-dns": {
1775 | "version": "6.2.3",
1776 | "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
1777 | "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
1778 | "requires": {
1779 | "dns-packet": "^1.3.1",
1780 | "thunky": "^1.0.2"
1781 | }
1782 | },
1783 | "multicast-dns-service-types": {
1784 | "version": "1.1.0",
1785 | "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
1786 | "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE="
1787 | },
1788 | "nanoid": {
1789 | "version": "3.1.29",
1790 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz",
1791 | "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg=="
1792 | },
1793 | "negotiator": {
1794 | "version": "0.6.2",
1795 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
1796 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
1797 | },
1798 | "neo-async": {
1799 | "version": "2.6.2",
1800 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
1801 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
1802 | },
1803 | "no-case": {
1804 | "version": "3.0.4",
1805 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
1806 | "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
1807 | "requires": {
1808 | "lower-case": "^2.0.2",
1809 | "tslib": "^2.0.3"
1810 | }
1811 | },
1812 | "node-forge": {
1813 | "version": "0.10.0",
1814 | "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
1815 | "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA=="
1816 | },
1817 | "node-releases": {
1818 | "version": "1.1.77",
1819 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz",
1820 | "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ=="
1821 | },
1822 | "normalize-path": {
1823 | "version": "3.0.0",
1824 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1825 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
1826 | },
1827 | "npm-run-path": {
1828 | "version": "4.0.1",
1829 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
1830 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
1831 | "requires": {
1832 | "path-key": "^3.0.0"
1833 | }
1834 | },
1835 | "nth-check": {
1836 | "version": "2.0.1",
1837 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
1838 | "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
1839 | "requires": {
1840 | "boolbase": "^1.0.0"
1841 | }
1842 | },
1843 | "object-assign": {
1844 | "version": "4.1.1",
1845 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1846 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
1847 | },
1848 | "object-is": {
1849 | "version": "1.1.5",
1850 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
1851 | "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
1852 | "requires": {
1853 | "call-bind": "^1.0.2",
1854 | "define-properties": "^1.1.3"
1855 | }
1856 | },
1857 | "object-keys": {
1858 | "version": "1.1.1",
1859 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
1860 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
1861 | },
1862 | "obuf": {
1863 | "version": "1.1.2",
1864 | "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
1865 | "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
1866 | },
1867 | "on-finished": {
1868 | "version": "2.3.0",
1869 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
1870 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
1871 | "requires": {
1872 | "ee-first": "1.1.1"
1873 | }
1874 | },
1875 | "on-headers": {
1876 | "version": "1.0.2",
1877 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
1878 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
1879 | },
1880 | "once": {
1881 | "version": "1.4.0",
1882 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1883 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1884 | "requires": {
1885 | "wrappy": "1"
1886 | }
1887 | },
1888 | "onetime": {
1889 | "version": "5.1.2",
1890 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
1891 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
1892 | "requires": {
1893 | "mimic-fn": "^2.1.0"
1894 | }
1895 | },
1896 | "open": {
1897 | "version": "8.3.0",
1898 | "resolved": "https://registry.npmjs.org/open/-/open-8.3.0.tgz",
1899 | "integrity": "sha512-7INcPWb1UcOwSQxAXTnBJ+FxVV4MPs/X++FWWBtgY69/J5lc+tCteMt/oFK1MnkyHC4VILLa9ntmwKTwDR4Q9w==",
1900 | "requires": {
1901 | "define-lazy-prop": "^2.0.0",
1902 | "is-docker": "^2.1.1",
1903 | "is-wsl": "^2.2.0"
1904 | }
1905 | },
1906 | "p-event": {
1907 | "version": "4.2.0",
1908 | "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz",
1909 | "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==",
1910 | "requires": {
1911 | "p-timeout": "^3.1.0"
1912 | }
1913 | },
1914 | "p-finally": {
1915 | "version": "1.0.0",
1916 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
1917 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
1918 | },
1919 | "p-limit": {
1920 | "version": "3.1.0",
1921 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
1922 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
1923 | "requires": {
1924 | "yocto-queue": "^0.1.0"
1925 | }
1926 | },
1927 | "p-locate": {
1928 | "version": "4.1.0",
1929 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
1930 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
1931 | "requires": {
1932 | "p-limit": "^2.2.0"
1933 | },
1934 | "dependencies": {
1935 | "p-limit": {
1936 | "version": "2.3.0",
1937 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
1938 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
1939 | "requires": {
1940 | "p-try": "^2.0.0"
1941 | }
1942 | }
1943 | }
1944 | },
1945 | "p-map": {
1946 | "version": "2.1.0",
1947 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
1948 | "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="
1949 | },
1950 | "p-retry": {
1951 | "version": "4.6.1",
1952 | "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz",
1953 | "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==",
1954 | "requires": {
1955 | "@types/retry": "^0.12.0",
1956 | "retry": "^0.13.1"
1957 | }
1958 | },
1959 | "p-timeout": {
1960 | "version": "3.2.0",
1961 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
1962 | "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
1963 | "requires": {
1964 | "p-finally": "^1.0.0"
1965 | }
1966 | },
1967 | "p-try": {
1968 | "version": "2.2.0",
1969 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
1970 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
1971 | },
1972 | "param-case": {
1973 | "version": "3.0.4",
1974 | "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
1975 | "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
1976 | "requires": {
1977 | "dot-case": "^3.0.4",
1978 | "tslib": "^2.0.3"
1979 | }
1980 | },
1981 | "parseurl": {
1982 | "version": "1.3.3",
1983 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1984 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
1985 | },
1986 | "pascal-case": {
1987 | "version": "3.1.2",
1988 | "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
1989 | "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
1990 | "requires": {
1991 | "no-case": "^3.0.4",
1992 | "tslib": "^2.0.3"
1993 | }
1994 | },
1995 | "path-exists": {
1996 | "version": "4.0.0",
1997 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
1998 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
1999 | },
2000 | "path-is-absolute": {
2001 | "version": "1.0.1",
2002 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2003 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
2004 | },
2005 | "path-is-inside": {
2006 | "version": "1.0.2",
2007 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
2008 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
2009 | },
2010 | "path-key": {
2011 | "version": "3.1.1",
2012 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
2013 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
2014 | },
2015 | "path-parse": {
2016 | "version": "1.0.7",
2017 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2018 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
2019 | },
2020 | "path-to-regexp": {
2021 | "version": "0.1.7",
2022 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
2023 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
2024 | },
2025 | "path-type": {
2026 | "version": "4.0.0",
2027 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
2028 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
2029 | },
2030 | "picocolors": {
2031 | "version": "0.2.1",
2032 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
2033 | "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA=="
2034 | },
2035 | "picomatch": {
2036 | "version": "2.3.0",
2037 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
2038 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw=="
2039 | },
2040 | "pify": {
2041 | "version": "4.0.1",
2042 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
2043 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
2044 | },
2045 | "pinkie": {
2046 | "version": "2.0.4",
2047 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
2048 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
2049 | },
2050 | "pinkie-promise": {
2051 | "version": "2.0.1",
2052 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
2053 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
2054 | "requires": {
2055 | "pinkie": "^2.0.0"
2056 | }
2057 | },
2058 | "pkg-dir": {
2059 | "version": "4.2.0",
2060 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
2061 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
2062 | "requires": {
2063 | "find-up": "^4.0.0"
2064 | }
2065 | },
2066 | "portfinder": {
2067 | "version": "1.0.28",
2068 | "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
2069 | "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
2070 | "requires": {
2071 | "async": "^2.6.2",
2072 | "debug": "^3.1.1",
2073 | "mkdirp": "^0.5.5"
2074 | },
2075 | "dependencies": {
2076 | "debug": {
2077 | "version": "3.2.7",
2078 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
2079 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
2080 | "requires": {
2081 | "ms": "^2.1.1"
2082 | }
2083 | },
2084 | "ms": {
2085 | "version": "2.1.3",
2086 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2087 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
2088 | }
2089 | }
2090 | },
2091 | "postcss": {
2092 | "version": "8.3.9",
2093 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz",
2094 | "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==",
2095 | "requires": {
2096 | "nanoid": "^3.1.28",
2097 | "picocolors": "^0.2.1",
2098 | "source-map-js": "^0.6.2"
2099 | }
2100 | },
2101 | "postcss-modules-extract-imports": {
2102 | "version": "3.0.0",
2103 | "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
2104 | "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw=="
2105 | },
2106 | "postcss-modules-local-by-default": {
2107 | "version": "4.0.0",
2108 | "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
2109 | "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
2110 | "requires": {
2111 | "icss-utils": "^5.0.0",
2112 | "postcss-selector-parser": "^6.0.2",
2113 | "postcss-value-parser": "^4.1.0"
2114 | }
2115 | },
2116 | "postcss-modules-scope": {
2117 | "version": "3.0.0",
2118 | "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
2119 | "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
2120 | "requires": {
2121 | "postcss-selector-parser": "^6.0.4"
2122 | }
2123 | },
2124 | "postcss-modules-values": {
2125 | "version": "4.0.0",
2126 | "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
2127 | "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
2128 | "requires": {
2129 | "icss-utils": "^5.0.0"
2130 | }
2131 | },
2132 | "postcss-selector-parser": {
2133 | "version": "6.0.6",
2134 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz",
2135 | "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==",
2136 | "requires": {
2137 | "cssesc": "^3.0.0",
2138 | "util-deprecate": "^1.0.2"
2139 | }
2140 | },
2141 | "postcss-value-parser": {
2142 | "version": "4.1.0",
2143 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
2144 | "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ=="
2145 | },
2146 | "pretty-error": {
2147 | "version": "3.0.4",
2148 | "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-3.0.4.tgz",
2149 | "integrity": "sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ==",
2150 | "requires": {
2151 | "lodash": "^4.17.20",
2152 | "renderkid": "^2.0.6"
2153 | }
2154 | },
2155 | "process-nextick-args": {
2156 | "version": "2.0.1",
2157 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
2158 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
2159 | },
2160 | "proxy-addr": {
2161 | "version": "2.0.7",
2162 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
2163 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
2164 | "requires": {
2165 | "forwarded": "0.2.0",
2166 | "ipaddr.js": "1.9.1"
2167 | },
2168 | "dependencies": {
2169 | "ipaddr.js": {
2170 | "version": "1.9.1",
2171 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
2172 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
2173 | }
2174 | }
2175 | },
2176 | "punycode": {
2177 | "version": "2.1.1",
2178 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
2179 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
2180 | },
2181 | "qs": {
2182 | "version": "6.7.0",
2183 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
2184 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
2185 | },
2186 | "querystring": {
2187 | "version": "0.2.0",
2188 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
2189 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
2190 | },
2191 | "queue-microtask": {
2192 | "version": "1.2.3",
2193 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2194 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
2195 | },
2196 | "randombytes": {
2197 | "version": "2.1.0",
2198 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
2199 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
2200 | "requires": {
2201 | "safe-buffer": "^5.1.0"
2202 | }
2203 | },
2204 | "range-parser": {
2205 | "version": "1.2.1",
2206 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
2207 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
2208 | },
2209 | "raw-body": {
2210 | "version": "2.4.0",
2211 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
2212 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
2213 | "requires": {
2214 | "bytes": "3.1.0",
2215 | "http-errors": "1.7.2",
2216 | "iconv-lite": "0.4.24",
2217 | "unpipe": "1.0.0"
2218 | },
2219 | "dependencies": {
2220 | "bytes": {
2221 | "version": "3.1.0",
2222 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
2223 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
2224 | }
2225 | }
2226 | },
2227 | "readable-stream": {
2228 | "version": "3.6.0",
2229 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
2230 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
2231 | "requires": {
2232 | "inherits": "^2.0.3",
2233 | "string_decoder": "^1.1.1",
2234 | "util-deprecate": "^1.0.1"
2235 | }
2236 | },
2237 | "readdirp": {
2238 | "version": "3.6.0",
2239 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2240 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2241 | "requires": {
2242 | "picomatch": "^2.2.1"
2243 | }
2244 | },
2245 | "rechoir": {
2246 | "version": "0.7.1",
2247 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
2248 | "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
2249 | "requires": {
2250 | "resolve": "^1.9.0"
2251 | }
2252 | },
2253 | "regexp.prototype.flags": {
2254 | "version": "1.3.1",
2255 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
2256 | "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
2257 | "requires": {
2258 | "call-bind": "^1.0.2",
2259 | "define-properties": "^1.1.3"
2260 | }
2261 | },
2262 | "relateurl": {
2263 | "version": "0.2.7",
2264 | "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
2265 | "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk="
2266 | },
2267 | "renderkid": {
2268 | "version": "2.0.7",
2269 | "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz",
2270 | "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==",
2271 | "requires": {
2272 | "css-select": "^4.1.3",
2273 | "dom-converter": "^0.2.0",
2274 | "htmlparser2": "^6.1.0",
2275 | "lodash": "^4.17.21",
2276 | "strip-ansi": "^3.0.1"
2277 | }
2278 | },
2279 | "requires-port": {
2280 | "version": "1.0.0",
2281 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
2282 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
2283 | },
2284 | "resolve": {
2285 | "version": "1.20.0",
2286 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
2287 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
2288 | "requires": {
2289 | "is-core-module": "^2.2.0",
2290 | "path-parse": "^1.0.6"
2291 | }
2292 | },
2293 | "resolve-cwd": {
2294 | "version": "3.0.0",
2295 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
2296 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
2297 | "requires": {
2298 | "resolve-from": "^5.0.0"
2299 | }
2300 | },
2301 | "resolve-from": {
2302 | "version": "5.0.0",
2303 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
2304 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
2305 | },
2306 | "retry": {
2307 | "version": "0.13.1",
2308 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
2309 | "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="
2310 | },
2311 | "reusify": {
2312 | "version": "1.0.4",
2313 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
2314 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
2315 | },
2316 | "rimraf": {
2317 | "version": "2.7.1",
2318 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
2319 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
2320 | "requires": {
2321 | "glob": "^7.1.3"
2322 | }
2323 | },
2324 | "run-parallel": {
2325 | "version": "1.2.0",
2326 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
2327 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
2328 | "requires": {
2329 | "queue-microtask": "^1.2.2"
2330 | }
2331 | },
2332 | "safe-buffer": {
2333 | "version": "5.1.2",
2334 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2335 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
2336 | },
2337 | "safer-buffer": {
2338 | "version": "2.1.2",
2339 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
2340 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
2341 | },
2342 | "sass": {
2343 | "version": "1.42.1",
2344 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz",
2345 | "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==",
2346 | "requires": {
2347 | "chokidar": ">=3.0.0 <4.0.0"
2348 | }
2349 | },
2350 | "sass-loader": {
2351 | "version": "11.1.1",
2352 | "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-11.1.1.tgz",
2353 | "integrity": "sha512-fOCp/zLmj1V1WHDZbUbPgrZhA7HKXHEqkslzB+05U5K9SbSbcmH91C7QLW31AsXikxUMaxXRhhcqWZAxUMLDyA==",
2354 | "requires": {
2355 | "klona": "^2.0.4",
2356 | "neo-async": "^2.6.2"
2357 | }
2358 | },
2359 | "schema-utils": {
2360 | "version": "3.1.1",
2361 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
2362 | "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
2363 | "requires": {
2364 | "@types/json-schema": "^7.0.8",
2365 | "ajv": "^6.12.5",
2366 | "ajv-keywords": "^3.5.2"
2367 | }
2368 | },
2369 | "select-hose": {
2370 | "version": "2.0.0",
2371 | "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
2372 | "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo="
2373 | },
2374 | "selfsigned": {
2375 | "version": "1.10.11",
2376 | "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz",
2377 | "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==",
2378 | "requires": {
2379 | "node-forge": "^0.10.0"
2380 | }
2381 | },
2382 | "semver": {
2383 | "version": "7.3.5",
2384 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
2385 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
2386 | "requires": {
2387 | "lru-cache": "^6.0.0"
2388 | }
2389 | },
2390 | "send": {
2391 | "version": "0.17.1",
2392 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
2393 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
2394 | "requires": {
2395 | "debug": "2.6.9",
2396 | "depd": "~1.1.2",
2397 | "destroy": "~1.0.4",
2398 | "encodeurl": "~1.0.2",
2399 | "escape-html": "~1.0.3",
2400 | "etag": "~1.8.1",
2401 | "fresh": "0.5.2",
2402 | "http-errors": "~1.7.2",
2403 | "mime": "1.6.0",
2404 | "ms": "2.1.1",
2405 | "on-finished": "~2.3.0",
2406 | "range-parser": "~1.2.1",
2407 | "statuses": "~1.5.0"
2408 | },
2409 | "dependencies": {
2410 | "ms": {
2411 | "version": "2.1.1",
2412 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
2413 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
2414 | }
2415 | }
2416 | },
2417 | "serialize-javascript": {
2418 | "version": "5.0.1",
2419 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
2420 | "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
2421 | "requires": {
2422 | "randombytes": "^2.1.0"
2423 | }
2424 | },
2425 | "serve-index": {
2426 | "version": "1.9.1",
2427 | "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
2428 | "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
2429 | "requires": {
2430 | "accepts": "~1.3.4",
2431 | "batch": "0.6.1",
2432 | "debug": "2.6.9",
2433 | "escape-html": "~1.0.3",
2434 | "http-errors": "~1.6.2",
2435 | "mime-types": "~2.1.17",
2436 | "parseurl": "~1.3.2"
2437 | },
2438 | "dependencies": {
2439 | "http-errors": {
2440 | "version": "1.6.3",
2441 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
2442 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
2443 | "requires": {
2444 | "depd": "~1.1.2",
2445 | "inherits": "2.0.3",
2446 | "setprototypeof": "1.1.0",
2447 | "statuses": ">= 1.4.0 < 2"
2448 | }
2449 | },
2450 | "inherits": {
2451 | "version": "2.0.3",
2452 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
2453 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
2454 | },
2455 | "setprototypeof": {
2456 | "version": "1.1.0",
2457 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
2458 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
2459 | }
2460 | }
2461 | },
2462 | "serve-static": {
2463 | "version": "1.14.1",
2464 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
2465 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
2466 | "requires": {
2467 | "encodeurl": "~1.0.2",
2468 | "escape-html": "~1.0.3",
2469 | "parseurl": "~1.3.3",
2470 | "send": "0.17.1"
2471 | }
2472 | },
2473 | "setprototypeof": {
2474 | "version": "1.1.1",
2475 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
2476 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
2477 | },
2478 | "shallow-clone": {
2479 | "version": "3.0.1",
2480 | "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
2481 | "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
2482 | "requires": {
2483 | "kind-of": "^6.0.2"
2484 | }
2485 | },
2486 | "shebang-command": {
2487 | "version": "2.0.0",
2488 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2489 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2490 | "requires": {
2491 | "shebang-regex": "^3.0.0"
2492 | }
2493 | },
2494 | "shebang-regex": {
2495 | "version": "3.0.0",
2496 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2497 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
2498 | },
2499 | "signal-exit": {
2500 | "version": "3.0.5",
2501 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz",
2502 | "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ=="
2503 | },
2504 | "slash": {
2505 | "version": "3.0.0",
2506 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
2507 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
2508 | },
2509 | "sockjs": {
2510 | "version": "0.3.21",
2511 | "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz",
2512 | "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==",
2513 | "requires": {
2514 | "faye-websocket": "^0.11.3",
2515 | "uuid": "^3.4.0",
2516 | "websocket-driver": "^0.7.4"
2517 | }
2518 | },
2519 | "source-list-map": {
2520 | "version": "2.0.1",
2521 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
2522 | "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw=="
2523 | },
2524 | "source-map": {
2525 | "version": "0.6.1",
2526 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2527 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
2528 | },
2529 | "source-map-js": {
2530 | "version": "0.6.2",
2531 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
2532 | "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug=="
2533 | },
2534 | "source-map-support": {
2535 | "version": "0.5.20",
2536 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
2537 | "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
2538 | "requires": {
2539 | "buffer-from": "^1.0.0",
2540 | "source-map": "^0.6.0"
2541 | }
2542 | },
2543 | "spdy": {
2544 | "version": "4.0.2",
2545 | "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
2546 | "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
2547 | "requires": {
2548 | "debug": "^4.1.0",
2549 | "handle-thing": "^2.0.0",
2550 | "http-deceiver": "^1.2.7",
2551 | "select-hose": "^2.0.0",
2552 | "spdy-transport": "^3.0.0"
2553 | },
2554 | "dependencies": {
2555 | "debug": {
2556 | "version": "4.3.2",
2557 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
2558 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
2559 | "requires": {
2560 | "ms": "2.1.2"
2561 | }
2562 | },
2563 | "ms": {
2564 | "version": "2.1.2",
2565 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2566 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
2567 | }
2568 | }
2569 | },
2570 | "spdy-transport": {
2571 | "version": "3.0.0",
2572 | "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
2573 | "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
2574 | "requires": {
2575 | "debug": "^4.1.0",
2576 | "detect-node": "^2.0.4",
2577 | "hpack.js": "^2.1.6",
2578 | "obuf": "^1.1.2",
2579 | "readable-stream": "^3.0.6",
2580 | "wbuf": "^1.7.3"
2581 | },
2582 | "dependencies": {
2583 | "debug": {
2584 | "version": "4.3.2",
2585 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
2586 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
2587 | "requires": {
2588 | "ms": "2.1.2"
2589 | }
2590 | },
2591 | "ms": {
2592 | "version": "2.1.2",
2593 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2594 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
2595 | }
2596 | }
2597 | },
2598 | "statuses": {
2599 | "version": "1.5.0",
2600 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
2601 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
2602 | },
2603 | "string_decoder": {
2604 | "version": "1.1.1",
2605 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2606 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2607 | "requires": {
2608 | "safe-buffer": "~5.1.0"
2609 | }
2610 | },
2611 | "strip-ansi": {
2612 | "version": "3.0.1",
2613 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
2614 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
2615 | "requires": {
2616 | "ansi-regex": "^2.0.0"
2617 | }
2618 | },
2619 | "strip-final-newline": {
2620 | "version": "2.0.0",
2621 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
2622 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
2623 | },
2624 | "supports-color": {
2625 | "version": "7.2.0",
2626 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2627 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2628 | "requires": {
2629 | "has-flag": "^4.0.0"
2630 | }
2631 | },
2632 | "tapable": {
2633 | "version": "2.2.1",
2634 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
2635 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="
2636 | },
2637 | "terser": {
2638 | "version": "4.8.0",
2639 | "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
2640 | "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
2641 | "requires": {
2642 | "commander": "^2.20.0",
2643 | "source-map": "~0.6.1",
2644 | "source-map-support": "~0.5.12"
2645 | },
2646 | "dependencies": {
2647 | "commander": {
2648 | "version": "2.20.3",
2649 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
2650 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
2651 | }
2652 | }
2653 | },
2654 | "terser-webpack-plugin": {
2655 | "version": "5.2.4",
2656 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz",
2657 | "integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==",
2658 | "requires": {
2659 | "jest-worker": "^27.0.6",
2660 | "p-limit": "^3.1.0",
2661 | "schema-utils": "^3.1.1",
2662 | "serialize-javascript": "^6.0.0",
2663 | "source-map": "^0.6.1",
2664 | "terser": "^5.7.2"
2665 | },
2666 | "dependencies": {
2667 | "commander": {
2668 | "version": "2.20.3",
2669 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
2670 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
2671 | },
2672 | "serialize-javascript": {
2673 | "version": "6.0.0",
2674 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
2675 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
2676 | "requires": {
2677 | "randombytes": "^2.1.0"
2678 | }
2679 | },
2680 | "terser": {
2681 | "version": "5.9.0",
2682 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz",
2683 | "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==",
2684 | "requires": {
2685 | "commander": "^2.20.0",
2686 | "source-map": "~0.7.2",
2687 | "source-map-support": "~0.5.20"
2688 | },
2689 | "dependencies": {
2690 | "source-map": {
2691 | "version": "0.7.3",
2692 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
2693 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
2694 | }
2695 | }
2696 | }
2697 | }
2698 | },
2699 | "thunky": {
2700 | "version": "1.1.0",
2701 | "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
2702 | "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
2703 | },
2704 | "to-regex-range": {
2705 | "version": "5.0.1",
2706 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2707 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2708 | "requires": {
2709 | "is-number": "^7.0.0"
2710 | }
2711 | },
2712 | "toidentifier": {
2713 | "version": "1.0.0",
2714 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
2715 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
2716 | },
2717 | "ts-loader": {
2718 | "version": "9.2.6",
2719 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz",
2720 | "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==",
2721 | "requires": {
2722 | "chalk": "^4.1.0",
2723 | "enhanced-resolve": "^5.0.0",
2724 | "micromatch": "^4.0.0",
2725 | "semver": "^7.3.4"
2726 | }
2727 | },
2728 | "tslib": {
2729 | "version": "2.3.1",
2730 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
2731 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
2732 | },
2733 | "type-is": {
2734 | "version": "1.6.18",
2735 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
2736 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
2737 | "requires": {
2738 | "media-typer": "0.3.0",
2739 | "mime-types": "~2.1.24"
2740 | }
2741 | },
2742 | "typescript": {
2743 | "version": "4.4.3",
2744 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz",
2745 | "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA=="
2746 | },
2747 | "unpipe": {
2748 | "version": "1.0.0",
2749 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
2750 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
2751 | },
2752 | "uri-js": {
2753 | "version": "4.4.1",
2754 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
2755 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
2756 | "requires": {
2757 | "punycode": "^2.1.0"
2758 | }
2759 | },
2760 | "url": {
2761 | "version": "0.11.0",
2762 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
2763 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
2764 | "requires": {
2765 | "punycode": "1.3.2",
2766 | "querystring": "0.2.0"
2767 | },
2768 | "dependencies": {
2769 | "punycode": {
2770 | "version": "1.3.2",
2771 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
2772 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
2773 | }
2774 | }
2775 | },
2776 | "util-deprecate": {
2777 | "version": "1.0.2",
2778 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2779 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
2780 | },
2781 | "utila": {
2782 | "version": "0.4.0",
2783 | "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
2784 | "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw="
2785 | },
2786 | "utils-merge": {
2787 | "version": "1.0.1",
2788 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
2789 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
2790 | },
2791 | "uuid": {
2792 | "version": "3.4.0",
2793 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
2794 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
2795 | },
2796 | "v8-compile-cache": {
2797 | "version": "2.3.0",
2798 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
2799 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
2800 | },
2801 | "vary": {
2802 | "version": "1.1.2",
2803 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
2804 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
2805 | },
2806 | "watchpack": {
2807 | "version": "2.2.0",
2808 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz",
2809 | "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==",
2810 | "requires": {
2811 | "glob-to-regexp": "^0.4.1",
2812 | "graceful-fs": "^4.1.2"
2813 | }
2814 | },
2815 | "wbuf": {
2816 | "version": "1.7.3",
2817 | "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
2818 | "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
2819 | "requires": {
2820 | "minimalistic-assert": "^1.0.0"
2821 | }
2822 | },
2823 | "webpack": {
2824 | "version": "5.58.1",
2825 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.58.1.tgz",
2826 | "integrity": "sha512-4Z/dmbTU+VmkCb2XNgW7wkE5TfEcSooclprn/UEuVeAkwHhn07OcgUsyaKHGtCY/VobjnsYBlyhKeMLiSoOqPg==",
2827 | "requires": {
2828 | "@types/eslint-scope": "^3.7.0",
2829 | "@types/estree": "^0.0.50",
2830 | "@webassemblyjs/ast": "1.11.1",
2831 | "@webassemblyjs/wasm-edit": "1.11.1",
2832 | "@webassemblyjs/wasm-parser": "1.11.1",
2833 | "acorn": "^8.4.1",
2834 | "acorn-import-assertions": "^1.7.6",
2835 | "browserslist": "^4.14.5",
2836 | "chrome-trace-event": "^1.0.2",
2837 | "enhanced-resolve": "^5.8.3",
2838 | "es-module-lexer": "^0.9.0",
2839 | "eslint-scope": "5.1.1",
2840 | "events": "^3.2.0",
2841 | "glob-to-regexp": "^0.4.1",
2842 | "graceful-fs": "^4.2.4",
2843 | "json-parse-better-errors": "^1.0.2",
2844 | "loader-runner": "^4.2.0",
2845 | "mime-types": "^2.1.27",
2846 | "neo-async": "^2.6.2",
2847 | "schema-utils": "^3.1.0",
2848 | "tapable": "^2.1.1",
2849 | "terser-webpack-plugin": "^5.1.3",
2850 | "watchpack": "^2.2.0",
2851 | "webpack-sources": "^3.2.0"
2852 | },
2853 | "dependencies": {
2854 | "webpack-sources": {
2855 | "version": "3.2.1",
2856 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz",
2857 | "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA=="
2858 | }
2859 | }
2860 | },
2861 | "webpack-cli": {
2862 | "version": "4.9.0",
2863 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.0.tgz",
2864 | "integrity": "sha512-n/jZZBMzVEl4PYIBs+auy2WI0WTQ74EnJDiyD98O2JZY6IVIHJNitkYp/uTXOviIOMfgzrNvC9foKv/8o8KSZw==",
2865 | "requires": {
2866 | "@discoveryjs/json-ext": "^0.5.0",
2867 | "@webpack-cli/configtest": "^1.1.0",
2868 | "@webpack-cli/info": "^1.4.0",
2869 | "@webpack-cli/serve": "^1.6.0",
2870 | "colorette": "^2.0.14",
2871 | "commander": "^7.0.0",
2872 | "execa": "^5.0.0",
2873 | "fastest-levenshtein": "^1.0.12",
2874 | "import-local": "^3.0.2",
2875 | "interpret": "^2.2.0",
2876 | "rechoir": "^0.7.0",
2877 | "v8-compile-cache": "^2.2.0",
2878 | "webpack-merge": "^5.7.3"
2879 | },
2880 | "dependencies": {
2881 | "commander": {
2882 | "version": "7.2.0",
2883 | "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
2884 | "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
2885 | }
2886 | }
2887 | },
2888 | "webpack-dev-middleware": {
2889 | "version": "5.2.1",
2890 | "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz",
2891 | "integrity": "sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==",
2892 | "requires": {
2893 | "colorette": "^2.0.10",
2894 | "memfs": "^3.2.2",
2895 | "mime-types": "^2.1.31",
2896 | "range-parser": "^1.2.1",
2897 | "schema-utils": "^3.1.0"
2898 | }
2899 | },
2900 | "webpack-dev-server": {
2901 | "version": "4.3.1",
2902 | "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.3.1.tgz",
2903 | "integrity": "sha512-qNXQCVYo1kYhH9pgLtm8LRNkXX3XzTfHSj/zqzaqYzGPca+Qjr+81wj1jgPMCHhIhso9WEQ+kX9z23iG9PzQ7w==",
2904 | "requires": {
2905 | "ansi-html-community": "^0.0.8",
2906 | "bonjour": "^3.5.0",
2907 | "chokidar": "^3.5.1",
2908 | "colorette": "^2.0.10",
2909 | "compression": "^1.7.4",
2910 | "connect-history-api-fallback": "^1.6.0",
2911 | "del": "^6.0.0",
2912 | "express": "^4.17.1",
2913 | "graceful-fs": "^4.2.6",
2914 | "html-entities": "^2.3.2",
2915 | "http-proxy-middleware": "^2.0.0",
2916 | "internal-ip": "^6.2.0",
2917 | "ipaddr.js": "^2.0.1",
2918 | "open": "^8.0.9",
2919 | "p-retry": "^4.5.0",
2920 | "portfinder": "^1.0.28",
2921 | "schema-utils": "^3.1.0",
2922 | "selfsigned": "^1.10.11",
2923 | "serve-index": "^1.9.1",
2924 | "sockjs": "^0.3.21",
2925 | "spdy": "^4.0.2",
2926 | "strip-ansi": "^7.0.0",
2927 | "url": "^0.11.0",
2928 | "webpack-dev-middleware": "^5.2.1",
2929 | "ws": "^8.1.0"
2930 | },
2931 | "dependencies": {
2932 | "ansi-regex": {
2933 | "version": "6.0.1",
2934 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
2935 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
2936 | },
2937 | "del": {
2938 | "version": "6.0.0",
2939 | "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz",
2940 | "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==",
2941 | "requires": {
2942 | "globby": "^11.0.1",
2943 | "graceful-fs": "^4.2.4",
2944 | "is-glob": "^4.0.1",
2945 | "is-path-cwd": "^2.2.0",
2946 | "is-path-inside": "^3.0.2",
2947 | "p-map": "^4.0.0",
2948 | "rimraf": "^3.0.2",
2949 | "slash": "^3.0.0"
2950 | }
2951 | },
2952 | "is-path-inside": {
2953 | "version": "3.0.3",
2954 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
2955 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
2956 | },
2957 | "p-map": {
2958 | "version": "4.0.0",
2959 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
2960 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
2961 | "requires": {
2962 | "aggregate-error": "^3.0.0"
2963 | }
2964 | },
2965 | "rimraf": {
2966 | "version": "3.0.2",
2967 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
2968 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
2969 | "requires": {
2970 | "glob": "^7.1.3"
2971 | }
2972 | },
2973 | "strip-ansi": {
2974 | "version": "7.0.1",
2975 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
2976 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
2977 | "requires": {
2978 | "ansi-regex": "^6.0.1"
2979 | }
2980 | }
2981 | }
2982 | },
2983 | "webpack-merge": {
2984 | "version": "5.8.0",
2985 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
2986 | "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==",
2987 | "requires": {
2988 | "clone-deep": "^4.0.1",
2989 | "wildcard": "^2.0.0"
2990 | }
2991 | },
2992 | "webpack-remove-empty-scripts": {
2993 | "version": "0.7.1",
2994 | "resolved": "https://registry.npmjs.org/webpack-remove-empty-scripts/-/webpack-remove-empty-scripts-0.7.1.tgz",
2995 | "integrity": "sha512-9GWBe8TxKUYMalR84L99QjME6W0ptd/pupNqB4Ad4NazouwT+9QJLcfJjl7PDhR/L+qY9JHlzIGdgj0Vv1f3zA=="
2996 | },
2997 | "webpack-sources": {
2998 | "version": "1.4.3",
2999 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
3000 | "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
3001 | "requires": {
3002 | "source-list-map": "^2.0.0",
3003 | "source-map": "~0.6.1"
3004 | }
3005 | },
3006 | "websocket-driver": {
3007 | "version": "0.7.4",
3008 | "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
3009 | "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
3010 | "requires": {
3011 | "http-parser-js": ">=0.5.1",
3012 | "safe-buffer": ">=5.1.0",
3013 | "websocket-extensions": ">=0.1.1"
3014 | }
3015 | },
3016 | "websocket-extensions": {
3017 | "version": "0.1.4",
3018 | "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
3019 | "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
3020 | },
3021 | "which": {
3022 | "version": "2.0.2",
3023 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
3024 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
3025 | "requires": {
3026 | "isexe": "^2.0.0"
3027 | }
3028 | },
3029 | "wildcard": {
3030 | "version": "2.0.0",
3031 | "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
3032 | "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw=="
3033 | },
3034 | "wrappy": {
3035 | "version": "1.0.2",
3036 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3037 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
3038 | },
3039 | "ws": {
3040 | "version": "8.2.3",
3041 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
3042 | "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA=="
3043 | },
3044 | "yallist": {
3045 | "version": "4.0.0",
3046 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
3047 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
3048 | },
3049 | "yocto-queue": {
3050 | "version": "0.1.0",
3051 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
3052 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
3053 | }
3054 | }
3055 | }
3056 |
--------------------------------------------------------------------------------
/rss-scripts/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "rss-scripts",
3 | "version": "0.2.4",
4 | "description": "Scripts for create-rss-app",
5 | "author": "Kris Casper",
6 | "license": "ISC",
7 | "repository": {
8 | "type": "git",
9 | "url": "https://github.com/ai297/create-rss-app.git",
10 | "directory": "rss-scripts"
11 | },
12 | "bin": {
13 | "rss-scripts": "./index.js"
14 | },
15 | "engines": {
16 | "node": ">= 12"
17 | },
18 | "bugs": {
19 | "url": "https://github.com/ai297/create-rss-app/issues"
20 | },
21 | "dependencies": {
22 | "clean-webpack-plugin": "^4.0.0",
23 | "copy-webpack-plugin": "^8.1.1",
24 | "css-loader": "^5.2.7",
25 | "html-webpack-plugin": "^5.3.2",
26 | "mini-css-extract-plugin": "^1.6.2",
27 | "sass": "^1.42.1",
28 | "sass-loader": "^11.1.1",
29 | "ts-loader": "^9.2.6",
30 | "typescript": "^4.4.3",
31 | "webpack": "^5.58.1",
32 | "webpack-cli": "^4.9.0",
33 | "webpack-dev-server": "^4.3.1",
34 | "webpack-remove-empty-scripts": "^0.7.1"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/rss-scripts/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2015", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
4 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
5 | "allowJs": true, /* Allow javascript files to be compiled. */
6 | "checkJs": false, /* Report errors in .js files. */
7 | "outDir": "./dist/", /* Redirect output structure to the directory. */
8 | "removeComments": true, /* Do not emit comments to output. */
9 | "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
10 | "strict": true, /* Enable all strict type-checking options. */
11 | "noImplicitAny": false, /* Raise error on expressions and declarations with an implied 'any' type. */
12 | "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
13 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
14 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
15 | "resolveJsonModule": true,
16 | "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
17 | "skipLibCheck": true, /* Skip type checking of declaration files. */
18 | "forceConsistentCasingInFileNames": true, /* Disallow inconsistently-cased references to the same file. */
19 | "sourceMap": true
20 | },
21 | "exclude": ["node_modules"],
22 | "include": ["modules.d.ts"]
23 | }
24 |
--------------------------------------------------------------------------------
/rss-scripts/webpack.config.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 | const path = require('path');
3 | const HtmlWebpackPlugin = require('html-webpack-plugin');
4 | const MiniCssExtractPlugin = require('mini-css-extract-plugin');
5 | const CopyPlugin = require('copy-webpack-plugin');
6 | const { CleanWebpackPlugin } = require('clean-webpack-plugin');
7 | const RemoveEmptyScriptsPlugin = require('webpack-remove-empty-scripts');
8 |
9 | const getTsConfigPath = (projectDir) => {
10 | const projectTsConfigPath = path.join(projectDir, 'tsconfig.json');
11 | return fs.existsSync(projectTsConfigPath)
12 | ? projectTsConfigPath
13 | : path.resolve(__dirname, './tsconfig.json');
14 | };
15 |
16 | const tsLoader = (isUseTs, projectDir) => isUseTs
17 | ? [{
18 | test: /\.[tj]s$/,
19 | loader: require.resolve('ts-loader'),
20 | options: {
21 | configFile: getTsConfigPath(projectDir),
22 | },
23 | exclude: /node_modules/,
24 | }]
25 | : [];
26 |
27 | const devServer = (isDev, projectDir) => !isDev ? {} : {
28 | devServer: {
29 | open: true,
30 | port: 'auto',
31 | static: {
32 | directory: path.join(projectDir, 'src'),
33 | watch: true,
34 | },
35 | },
36 | };
37 |
38 | const htmlFile = /^([-_\d\w]+).html$/i;
39 | const makePath = (relativePath) => './' + relativePath.replace(/\\+/g, '/');
40 |
41 | const getPages = (dir, n, getRelative, isUseTs) => {
42 | const dirContent = fs.readdirSync(dir);
43 | const pages = dirContent
44 | .filter(f => htmlFile.test(f))
45 | .reduce((res, f, i) => {
46 | const name = path.basename(f, path.extname(f));
47 | res.push({
48 | name: `p${n += i}`,
49 | dir: getRelative(dir),
50 | html: makePath(getRelative(path.join(dir, f))),
51 | script: dirContent.find(f => new RegExp(`^${name}\.${isUseTs?'t':'j'}s$`, 'i').test(f)),
52 | style: dirContent.find(f => new RegExp(`^${name}\.s(c|a)ss$`, 'i').test(f)),
53 | });
54 | return res;
55 | }, [])
56 | .concat(dirContent
57 | .filter(f => fs.lstatSync(path.resolve(dir, f)).isDirectory())
58 | .reduce((res, f) => [...res, ...getPages(path.resolve(dir, f), n + 1, getRelative, isUseTs)], [])
59 | );
60 |
61 | return pages;
62 | };
63 |
64 | const getEntryPoints = (pages) => pages.reduce((entry, {name, dir, script, style}) => Object.assign(entry,
65 | script ? { [name]: makePath(path.join(dir, script)) } : {},
66 | style ? { [`${name}-styles`]: makePath(path.join(dir, style)) } : {},
67 | ), {});
68 |
69 | const getHtmlPlugins = (pages) => pages.map(({html, name, script, style}) => new HtmlWebpackPlugin({
70 | template: html,
71 | filename: html,
72 | chunks: [ script ? name : null, style ? `${name}-styles` : null ].filter(c => !!c),
73 | }));
74 |
75 | module.exports = ({ development, dirname, isUseTs }) => {
76 | const srcPath = path.resolve(dirname, 'src');
77 | const getRelative = (absolutePath) => path.relative(srcPath, absolutePath);
78 | const pages = getPages(srcPath, 1, getRelative, isUseTs);
79 |
80 | return {
81 | mode: development ? 'development' : 'production',
82 | devtool: development ? 'inline-source-map' : false,
83 | entry: getEntryPoints(pages),
84 | context: srcPath,
85 | output: {
86 | filename: 'js/[name].[contenthash].js',
87 | path: path.resolve(dirname, 'dist'),
88 | assetModuleFilename: '[file]',
89 | },
90 | target: ['web', 'es6'],
91 | module: {
92 | rules: [
93 | ...tsLoader(isUseTs, dirname),
94 | {
95 | test: /\.(?:ico|gif|png|jpg|jpeg|svg|webp)$/i,
96 | type: 'asset/resource',
97 | },
98 | {
99 | test: /\.(?:mp3|wav|ogg|mp4)$/i,
100 | type: 'asset/resource',
101 | },
102 | {
103 | test: /\.(woff(2)?|eot|ttf|otf)$/i,
104 | type: 'asset/resource',
105 | },
106 | {
107 | test: /\.css$/i,
108 | use: [{loader: MiniCssExtractPlugin.loader, options: { publicPath: '../' }}, 'css-loader'],
109 | },
110 | {
111 | test: /\.s[ac]ss$/i,
112 | use: [{loader: MiniCssExtractPlugin.loader, options: { publicPath: '../' }}, 'css-loader', 'sass-loader']
113 | }
114 | ],
115 | },
116 | plugins: [
117 | new MiniCssExtractPlugin({ filename: 'css/[name].[contenthash].css' }),
118 | ...getHtmlPlugins(pages),
119 | new CopyPlugin({
120 | patterns: [
121 | {
122 | from: '**/*',
123 | context: srcPath,
124 | globOptions: {
125 | ignore: [
126 | '**/*.js',
127 | '**/*.ts',
128 | '**/*.scss',
129 | '**/*.sass',
130 | '**/*.html',
131 | ],
132 | },
133 | noErrorOnMissing: true,
134 | force: true,
135 | }
136 | ],
137 | }),
138 | new CleanWebpackPlugin(),
139 | ],
140 | resolve: {
141 | extensions: isUseTs ? ['.ts', '.js'] : ['.js'],
142 | },
143 | ...devServer(development, dirname)
144 | };
145 | };
146 |
--------------------------------------------------------------------------------